stagehand 3.20.0 → 3.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d63d07d6d72284d6745a7f938ec12a7153c43a8cc9baba9e6bbf2559fd77b1e3
4
- data.tar.gz: 8aa6950f119f872fddbb4d047e3ddb17253363c016c4be81bd573cd6a53b7bb0
3
+ metadata.gz: 6323bad966eabb92ea6461cf51513992a9a5ab53a20c2c59a3c926a09db69f58
4
+ data.tar.gz: 93e96e355f774540da45305016f480d525d8efd500fa7f72d997591db6460d92
5
5
  SHA512:
6
- metadata.gz: f8281b0509afbe153829b60b77e259c98339f348654ed58e216a8d43003cf99aadba760de930518c62e1350ae37cb31fcab4a2e5fe6b5dbbfad07e94fc29ce62
7
- data.tar.gz: 295b43fd779e909fd5c8b78e42b6a5b6b1f45686a47392136a08e4860c16e7382a203caaa9b8806e341a96dc4ca2789ee5a92e1c3606169516848ac577e2d31d
6
+ metadata.gz: 2f7d789b0cb10ef1cec433e586e00612c8c2597ee9061369214d116277ad0cac52ff35e0cebb13b96e91398e2e6380354c713479f07384ad64cdd581b8a4e8c2
7
+ data.tar.gz: ccb32a0e15484d6ccdd7142cd711734d386a42ee68eaa02f69225f5541df166fcb7e79682dd4c47933de4407588e9688027adb2ce3644daa599305a89ed4146b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.21.0 (2026-05-27)
4
+
5
+ Full Changelog: [v3.20.0...v3.21.0](https://github.com/browserbase/stagehand-ruby/compare/v3.20.0...v3.21.0)
6
+
7
+ ### Features
8
+
9
+ * [feat]: add `ignoreSelectors` to `observe()` ([0acc093](https://github.com/browserbase/stagehand-ruby/commit/0acc093944e72ee488393ec1fb73dc16450cc825))
10
+ * [STG-1756] forward Vertex model config ([f9752bc](https://github.com/browserbase/stagehand-ruby/commit/f9752bc3297bb9feef4d4b46d7faeac2a5e73335))
11
+ * Add `screenshot` option to Extract ([7b65ca7](https://github.com/browserbase/stagehand-ruby/commit/7b65ca776e1e13c489f13991b012fa24aecc60e6))
12
+ * STG-1756 add Vertex auth params to Stagehand spec ([4b65f22](https://github.com/browserbase/stagehand-ruby/commit/4b65f221055c7d0d3d7426845fbd0e49ba13d2df))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **client:** elide content type header on requests without body ([6149c11](https://github.com/browserbase/stagehand-ruby/commit/6149c11d9ab60a0cac69f1e26e3a2f42425ad616))
18
+
3
19
  ## 3.20.0 (2026-05-06)
4
20
 
5
21
  Full Changelog: [v3.19.3...v3.20.0](https://github.com/browserbase/stagehand-ruby/compare/v3.19.3...v3.20.0)
@@ -306,6 +306,8 @@ module Stagehand
306
306
  Stagehand::Internal::Util.deep_merge(*[req[:body], opts[:extra_body]].compact)
307
307
  end
308
308
 
309
+ headers.delete("content-type") if body.nil?
310
+
309
311
  url = Stagehand::Internal::Util.join_parsed_uri(
310
312
  @base_url_components,
311
313
  {**req, path: path, query: query}
@@ -4,6 +4,17 @@ module Stagehand
4
4
  module Internal
5
5
  module Type
6
6
  # @api private
7
+ #
8
+ # @example
9
+ # # `model_config` is a `Stagehand::ModelConfig`
10
+ # case model_config
11
+ # when Stagehand::ModelConfig::VertexModelConfigObject
12
+ # puts(model_config.auth)
13
+ # when Stagehand::ModelConfig::GenericModelConfigObject
14
+ # puts(model_config.model_name)
15
+ # else
16
+ # puts(model_config)
17
+ # end
7
18
  module Union
8
19
  include Stagehand::Internal::Type::Converter
9
20
  include Stagehand::Internal::Util::SorbetRuntimeSupport
@@ -2,63 +2,333 @@
2
2
 
3
3
  module Stagehand
4
4
  module Models
5
- class ModelConfig < Stagehand::Internal::Type::BaseModel
6
- # @!attribute model_name
7
- # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
8
- #
9
- # @return [String]
10
- required :model_name, String, api_name: :modelName
11
-
12
- # @!attribute api_key
13
- # API key for the model provider
14
- #
15
- # @return [String, nil]
16
- optional :api_key, String, api_name: :apiKey
17
-
18
- # @!attribute base_url
19
- # Base URL for the model provider
20
- #
21
- # @return [String, nil]
22
- optional :base_url, String, api_name: :baseURL
23
-
24
- # @!attribute headers
25
- # Custom headers sent with every request to the model provider
26
- #
27
- # @return [Hash{Symbol=>String}, nil]
28
- optional :headers, Stagehand::Internal::Type::HashOf[String]
29
-
30
- # @!attribute provider
31
- # AI provider for the model (or provide a baseURL endpoint instead)
32
- #
33
- # @return [Symbol, Stagehand::Models::ModelConfig::Provider, nil]
34
- optional :provider, enum: -> { Stagehand::ModelConfig::Provider }
35
-
36
- # @!method initialize(model_name:, api_key: nil, base_url: nil, headers: nil, provider: nil)
37
- # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
38
- #
39
- # @param api_key [String] API key for the model provider
40
- #
41
- # @param base_url [String] Base URL for the model provider
42
- #
43
- # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider
44
- #
45
- # @param provider [Symbol, Stagehand::Models::ModelConfig::Provider] AI provider for the model (or provide a baseURL endpoint instead)
46
-
47
- # AI provider for the model (or provide a baseURL endpoint instead)
48
- #
49
- # @see Stagehand::Models::ModelConfig#provider
50
- module Provider
51
- extend Stagehand::Internal::Type::Enum
52
-
53
- OPENAI = :openai
54
- ANTHROPIC = :anthropic
55
- GOOGLE = :google
56
- MICROSOFT = :microsoft
57
- BEDROCK = :bedrock
58
-
59
- # @!method self.values
60
- # @return [Array<Symbol>]
5
+ module ModelConfig
6
+ extend Stagehand::Internal::Type::Union
7
+
8
+ variant -> { Stagehand::ModelConfig::VertexModelConfigObject }
9
+
10
+ variant -> { Stagehand::ModelConfig::GenericModelConfigObject }
11
+
12
+ class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel
13
+ # @!attribute auth
14
+ # Vertex provider authentication configuration
15
+ #
16
+ # @return [Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth]
17
+ required :auth, -> { Stagehand::ModelConfig::VertexModelConfigObject::Auth }
18
+
19
+ # @!attribute model_name
20
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
21
+ #
22
+ # @return [String]
23
+ required :model_name, String, api_name: :modelName
24
+
25
+ # @!attribute provider
26
+ # Vertex AI model provider
27
+ #
28
+ # @return [Symbol, :vertex]
29
+ required :provider, const: :vertex
30
+
31
+ # @!attribute provider_options
32
+ # Vertex provider-specific model configuration
33
+ #
34
+ # @return [Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions]
35
+ required :provider_options,
36
+ -> { Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions },
37
+ api_name: :providerOptions
38
+
39
+ # @!attribute api_key
40
+ # API key for the model provider
41
+ #
42
+ # @return [String, nil]
43
+ optional :api_key, String, api_name: :apiKey
44
+
45
+ # @!attribute base_url
46
+ # Base URL for the model provider
47
+ #
48
+ # @return [String, nil]
49
+ optional :base_url, String, api_name: :baseURL
50
+
51
+ # @!attribute headers
52
+ # Custom headers sent with every request to the model provider
53
+ #
54
+ # @return [Hash{Symbol=>String}, nil]
55
+ optional :headers, Stagehand::Internal::Type::HashOf[String]
56
+
57
+ # @!method initialize(auth:, model_name:, provider_options:, api_key: nil, base_url: nil, headers: nil, provider: :vertex)
58
+ # @param auth [Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth] Vertex provider authentication configuration
59
+ #
60
+ # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
61
+ #
62
+ # @param provider_options [Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions] Vertex provider-specific model configuration
63
+ #
64
+ # @param api_key [String] API key for the model provider
65
+ #
66
+ # @param base_url [String] Base URL for the model provider
67
+ #
68
+ # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider
69
+ #
70
+ # @param provider [Symbol, :vertex] Vertex AI model provider
71
+
72
+ # @see Stagehand::Models::ModelConfig::VertexModelConfigObject#auth
73
+ class Auth < Stagehand::Internal::Type::BaseModel
74
+ # @!attribute credentials
75
+ # Google Cloud service account credentials
76
+ #
77
+ # @return [Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials]
78
+ required :credentials, -> { Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials }
79
+
80
+ # @!attribute type
81
+ # Use inline Google Cloud service account credentials for provider authentication
82
+ #
83
+ # @return [Symbol, :googleServiceAccount]
84
+ required :type, const: :googleServiceAccount
85
+
86
+ # @!attribute project_id
87
+ # Google Cloud project ID used by google-auth-library
88
+ #
89
+ # @return [String, nil]
90
+ optional :project_id, String, api_name: :projectId
91
+
92
+ # @!attribute scopes
93
+ # Google auth scopes for the desired API request
94
+ #
95
+ # @return [String, Array<String>, nil]
96
+ optional :scopes, union: -> { Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes }
97
+
98
+ # @!attribute universe_domain
99
+ # Google Cloud universe domain
100
+ #
101
+ # @return [String, nil]
102
+ optional :universe_domain, String, api_name: :universeDomain
103
+
104
+ # @!method initialize(credentials:, project_id: nil, scopes: nil, universe_domain: nil, type: :googleServiceAccount)
105
+ # Vertex provider authentication configuration
106
+ #
107
+ # @param credentials [Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials] Google Cloud service account credentials
108
+ #
109
+ # @param project_id [String] Google Cloud project ID used by google-auth-library
110
+ #
111
+ # @param scopes [String, Array<String>] Google auth scopes for the desired API request
112
+ #
113
+ # @param universe_domain [String] Google Cloud universe domain
114
+ #
115
+ # @param type [Symbol, :googleServiceAccount] Use inline Google Cloud service account credentials for provider authentication
116
+
117
+ # @see Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth#credentials
118
+ class Credentials < Stagehand::Internal::Type::BaseModel
119
+ # @!attribute client_email
120
+ #
121
+ # @return [String]
122
+ required :client_email, String
123
+
124
+ # @!attribute private_key
125
+ #
126
+ # @return [String]
127
+ required :private_key, String
128
+
129
+ # @!attribute auth_provider_x509_cert_url
130
+ #
131
+ # @return [String, nil]
132
+ optional :auth_provider_x509_cert_url, String
133
+
134
+ # @!attribute auth_uri
135
+ #
136
+ # @return [String, nil]
137
+ optional :auth_uri, String
138
+
139
+ # @!attribute client_id
140
+ #
141
+ # @return [String, nil]
142
+ optional :client_id, String
143
+
144
+ # @!attribute client_x509_cert_url
145
+ #
146
+ # @return [String, nil]
147
+ optional :client_x509_cert_url, String
148
+
149
+ # @!attribute private_key_id
150
+ #
151
+ # @return [String, nil]
152
+ optional :private_key_id, String
153
+
154
+ # @!attribute project_id
155
+ #
156
+ # @return [String, nil]
157
+ optional :project_id, String
158
+
159
+ # @!attribute token_uri
160
+ #
161
+ # @return [String, nil]
162
+ optional :token_uri, String
163
+
164
+ # @!attribute type
165
+ #
166
+ # @return [Symbol, Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type, nil]
167
+ optional :type, enum: -> { Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type }
168
+
169
+ # @!attribute universe_domain
170
+ #
171
+ # @return [String, nil]
172
+ optional :universe_domain, String
173
+
174
+ # @!method initialize(client_email:, private_key:, auth_provider_x509_cert_url: nil, auth_uri: nil, client_id: nil, client_x509_cert_url: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil)
175
+ # Google Cloud service account credentials
176
+ #
177
+ # @param client_email [String]
178
+ # @param private_key [String]
179
+ # @param auth_provider_x509_cert_url [String]
180
+ # @param auth_uri [String]
181
+ # @param client_id [String]
182
+ # @param client_x509_cert_url [String]
183
+ # @param private_key_id [String]
184
+ # @param project_id [String]
185
+ # @param token_uri [String]
186
+ # @param type [Symbol, Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type]
187
+ # @param universe_domain [String]
188
+
189
+ # @see Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials#type
190
+ module Type
191
+ extend Stagehand::Internal::Type::Enum
192
+
193
+ SERVICE_ACCOUNT = :service_account
194
+
195
+ # @!method self.values
196
+ # @return [Array<Symbol>]
197
+ end
198
+ end
199
+
200
+ # Google auth scopes for the desired API request
201
+ #
202
+ # @see Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth#scopes
203
+ module Scopes
204
+ extend Stagehand::Internal::Type::Union
205
+
206
+ variant String
207
+
208
+ variant -> { Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Scopes::StringArray }
209
+
210
+ # @!method self.variants
211
+ # @return [Array(String, Array<String>)]
212
+
213
+ # @type [Stagehand::Internal::Type::Converter]
214
+ StringArray = Stagehand::Internal::Type::ArrayOf[String]
215
+ end
216
+ end
217
+
218
+ # @see Stagehand::Models::ModelConfig::VertexModelConfigObject#provider_options
219
+ class ProviderOptions < Stagehand::Internal::Type::BaseModel
220
+ # @!attribute vertex
221
+ # Vertex AI provider-specific settings
222
+ #
223
+ # @return [Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex]
224
+ required :vertex, -> { Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex }
225
+
226
+ # @!method initialize(vertex:)
227
+ # Vertex provider-specific model configuration
228
+ #
229
+ # @param vertex [Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex] Vertex AI provider-specific settings
230
+
231
+ # @see Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions#vertex
232
+ class Vertex < Stagehand::Internal::Type::BaseModel
233
+ # @!attribute location
234
+ # Google Cloud location for Vertex AI models
235
+ #
236
+ # @return [String]
237
+ required :location, String
238
+
239
+ # @!attribute project
240
+ # Google Cloud project ID for Vertex AI models
241
+ #
242
+ # @return [String]
243
+ required :project, String
244
+
245
+ # @!attribute base_url
246
+ # Base URL for the Vertex AI provider
247
+ #
248
+ # @return [String, nil]
249
+ optional :base_url, String, api_name: :baseURL
250
+
251
+ # @!attribute headers
252
+ # Custom headers sent with every request to the Vertex AI provider
253
+ #
254
+ # @return [Hash{Symbol=>String}, nil]
255
+ optional :headers, Stagehand::Internal::Type::HashOf[String]
256
+
257
+ # @!method initialize(location:, project:, base_url: nil, headers: nil)
258
+ # Vertex AI provider-specific settings
259
+ #
260
+ # @param location [String] Google Cloud location for Vertex AI models
261
+ #
262
+ # @param project [String] Google Cloud project ID for Vertex AI models
263
+ #
264
+ # @param base_url [String] Base URL for the Vertex AI provider
265
+ #
266
+ # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the Vertex AI provider
267
+ end
268
+ end
61
269
  end
270
+
271
+ class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel
272
+ # @!attribute model_name
273
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
274
+ #
275
+ # @return [String]
276
+ required :model_name, String, api_name: :modelName
277
+
278
+ # @!attribute api_key
279
+ # API key for the model provider
280
+ #
281
+ # @return [String, nil]
282
+ optional :api_key, String, api_name: :apiKey
283
+
284
+ # @!attribute base_url
285
+ # Base URL for the model provider
286
+ #
287
+ # @return [String, nil]
288
+ optional :base_url, String, api_name: :baseURL
289
+
290
+ # @!attribute headers
291
+ # Custom headers sent with every request to the model provider
292
+ #
293
+ # @return [Hash{Symbol=>String}, nil]
294
+ optional :headers, Stagehand::Internal::Type::HashOf[String]
295
+
296
+ # @!attribute provider
297
+ # AI provider for the model (or provide a baseURL endpoint instead)
298
+ #
299
+ # @return [Symbol, Stagehand::Models::ModelConfig::GenericModelConfigObject::Provider, nil]
300
+ optional :provider, enum: -> { Stagehand::ModelConfig::GenericModelConfigObject::Provider }
301
+
302
+ # @!method initialize(model_name:, api_key: nil, base_url: nil, headers: nil, provider: nil)
303
+ # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
304
+ #
305
+ # @param api_key [String] API key for the model provider
306
+ #
307
+ # @param base_url [String] Base URL for the model provider
308
+ #
309
+ # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider
310
+ #
311
+ # @param provider [Symbol, Stagehand::Models::ModelConfig::GenericModelConfigObject::Provider] AI provider for the model (or provide a baseURL endpoint instead)
312
+
313
+ # AI provider for the model (or provide a baseURL endpoint instead)
314
+ #
315
+ # @see Stagehand::Models::ModelConfig::GenericModelConfigObject#provider
316
+ module Provider
317
+ extend Stagehand::Internal::Type::Enum
318
+
319
+ OPENAI = :openai
320
+ ANTHROPIC = :anthropic
321
+ GOOGLE = :google
322
+ MICROSOFT = :microsoft
323
+ BEDROCK = :bedrock
324
+
325
+ # @!method self.values
326
+ # @return [Array<Symbol>]
327
+ end
328
+ end
329
+
330
+ # @!method self.variants
331
+ # @return [Array(Stagehand::Models::ModelConfig::VertexModelConfigObject, Stagehand::Models::ModelConfig::GenericModelConfigObject)]
62
332
  end
63
333
  end
64
334
  end