stagehand 3.19.3 → 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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -0
  3. data/README.md +2 -3
  4. data/lib/stagehand/client.rb +25 -13
  5. data/lib/stagehand/internal/transport/base_client.rb +2 -0
  6. data/lib/stagehand/internal/type/union.rb +11 -0
  7. data/lib/stagehand/internal/util.rb +3 -1
  8. data/lib/stagehand/local.rb +3 -12
  9. data/lib/stagehand/models/model_config.rb +326 -56
  10. data/lib/stagehand/models/session_act_params.rb +331 -4
  11. data/lib/stagehand/models/session_execute_params.rb +719 -9
  12. data/lib/stagehand/models/session_extract_params.rb +352 -5
  13. data/lib/stagehand/models/session_observe_params.rb +340 -5
  14. data/lib/stagehand/models/session_start_params.rb +56 -2
  15. data/lib/stagehand/resources/sessions.rb +16 -4
  16. data/lib/stagehand/version.rb +1 -1
  17. data/rbi/stagehand/client.rbi +6 -6
  18. data/rbi/stagehand/models/model_config.rbi +644 -69
  19. data/rbi/stagehand/models/session_act_params.rbi +707 -5
  20. data/rbi/stagehand/models/session_execute_params.rbi +1556 -13
  21. data/rbi/stagehand/models/session_extract_params.rbi +731 -5
  22. data/rbi/stagehand/models/session_observe_params.rbi +718 -5
  23. data/rbi/stagehand/models/session_start_params.rbi +102 -0
  24. data/sig/stagehand/models/model_config.rbs +310 -42
  25. data/sig/stagehand/models/session_act_params.rbs +324 -1
  26. data/sig/stagehand/models/session_execute_params.rbs +704 -5
  27. data/sig/stagehand/models/session_extract_params.rbs +338 -1
  28. data/sig/stagehand/models/session_observe_params.rbs +331 -1
  29. data/sig/stagehand/models/session_start_params.rbs +44 -0
  30. data/sig/stagehand/models.rbs +1 -1
  31. metadata +2 -2
@@ -60,12 +60,25 @@ module Stagehand
60
60
  # @param request_options [Stagehand::RequestOptions, Hash{Symbol=>Object}]
61
61
 
62
62
  class Options < Stagehand::Internal::Type::BaseModel
63
+ # @!attribute ignore_selectors
64
+ # Selectors for elements and subtrees that should be excluded from extraction
65
+ #
66
+ # @return [Array<String>, nil]
67
+ optional :ignore_selectors, Stagehand::Internal::Type::ArrayOf[String], api_name: :ignoreSelectors
68
+
63
69
  # @!attribute model
64
70
  # Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
65
71
  #
66
- # @return [Stagehand::Models::ModelConfig, String, nil]
72
+ # @return [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject, String, nil]
67
73
  optional :model, union: -> { Stagehand::SessionExtractParams::Options::Model }
68
74
 
75
+ # @!attribute screenshot
76
+ # When true, include a screenshot of the current viewport in the extraction LLM
77
+ # call. Defaults to false.
78
+ #
79
+ # @return [Boolean, nil]
80
+ optional :screenshot, Stagehand::Internal::Type::Boolean
81
+
69
82
  # @!attribute selector
70
83
  # CSS selector to scope extraction to a specific element
71
84
  #
@@ -78,8 +91,15 @@ module Stagehand
78
91
  # @return [Float, nil]
79
92
  optional :timeout, Float
80
93
 
81
- # @!method initialize(model: nil, selector: nil, timeout: nil)
82
- # @param model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
94
+ # @!method initialize(ignore_selectors: nil, model: nil, screenshot: nil, selector: nil, timeout: nil)
95
+ # Some parameter documentations has been truncated, see
96
+ # {Stagehand::Models::SessionExtractParams::Options} for more details.
97
+ #
98
+ # @param ignore_selectors [Array<String>] Selectors for elements and subtrees that should be excluded from extraction
99
+ #
100
+ # @param model [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
101
+ #
102
+ # @param screenshot [Boolean] When true, include a screenshot of the current viewport in the extraction LLM ca
83
103
  #
84
104
  # @param selector [String] CSS selector to scope extraction to a specific element
85
105
  #
@@ -91,12 +111,339 @@ module Stagehand
91
111
  module Model
92
112
  extend Stagehand::Internal::Type::Union
93
113
 
94
- variant -> { Stagehand::ModelConfig }
114
+ variant -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject }
115
+
116
+ variant -> { Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject }
95
117
 
96
118
  variant String
97
119
 
120
+ class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel
121
+ # @!attribute auth
122
+ # Vertex provider authentication configuration
123
+ #
124
+ # @return [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth]
125
+ required :auth, -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth }
126
+
127
+ # @!attribute model_name
128
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
129
+ #
130
+ # @return [String]
131
+ required :model_name, String, api_name: :modelName
132
+
133
+ # @!attribute provider
134
+ # Vertex AI model provider
135
+ #
136
+ # @return [Symbol, :vertex]
137
+ required :provider, const: :vertex
138
+
139
+ # @!attribute provider_options
140
+ # Vertex provider-specific model configuration
141
+ #
142
+ # @return [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions]
143
+ required :provider_options,
144
+ -> {
145
+ Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions
146
+ },
147
+ api_name: :providerOptions
148
+
149
+ # @!attribute api_key
150
+ # API key for the model provider
151
+ #
152
+ # @return [String, nil]
153
+ optional :api_key, String, api_name: :apiKey
154
+
155
+ # @!attribute base_url
156
+ # Base URL for the model provider
157
+ #
158
+ # @return [String, nil]
159
+ optional :base_url, String, api_name: :baseURL
160
+
161
+ # @!attribute headers
162
+ # Custom headers sent with every request to the model provider
163
+ #
164
+ # @return [Hash{Symbol=>String}, nil]
165
+ optional :headers, Stagehand::Internal::Type::HashOf[String]
166
+
167
+ # @!method initialize(auth:, model_name:, provider_options:, api_key: nil, base_url: nil, headers: nil, provider: :vertex)
168
+ # @param auth [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth] Vertex provider authentication configuration
169
+ #
170
+ # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
171
+ #
172
+ # @param provider_options [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions] Vertex provider-specific model configuration
173
+ #
174
+ # @param api_key [String] API key for the model provider
175
+ #
176
+ # @param base_url [String] Base URL for the model provider
177
+ #
178
+ # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider
179
+ #
180
+ # @param provider [Symbol, :vertex] Vertex AI model provider
181
+
182
+ # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject#auth
183
+ class Auth < Stagehand::Internal::Type::BaseModel
184
+ # @!attribute credentials
185
+ # Google Cloud service account credentials
186
+ #
187
+ # @return [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials]
188
+ required :credentials,
189
+ -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials }
190
+
191
+ # @!attribute type
192
+ # Use inline Google Cloud service account credentials for provider authentication
193
+ #
194
+ # @return [Symbol, :googleServiceAccount]
195
+ required :type, const: :googleServiceAccount
196
+
197
+ # @!attribute project_id
198
+ # Google Cloud project ID used by google-auth-library
199
+ #
200
+ # @return [String, nil]
201
+ optional :project_id, String, api_name: :projectId
202
+
203
+ # @!attribute scopes
204
+ # Google auth scopes for the desired API request
205
+ #
206
+ # @return [String, Array<String>, nil]
207
+ optional :scopes,
208
+ union: -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes }
209
+
210
+ # @!attribute universe_domain
211
+ # Google Cloud universe domain
212
+ #
213
+ # @return [String, nil]
214
+ optional :universe_domain, String, api_name: :universeDomain
215
+
216
+ # @!method initialize(credentials:, project_id: nil, scopes: nil, universe_domain: nil, type: :googleServiceAccount)
217
+ # Vertex provider authentication configuration
218
+ #
219
+ # @param credentials [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials] Google Cloud service account credentials
220
+ #
221
+ # @param project_id [String] Google Cloud project ID used by google-auth-library
222
+ #
223
+ # @param scopes [String, Array<String>] Google auth scopes for the desired API request
224
+ #
225
+ # @param universe_domain [String] Google Cloud universe domain
226
+ #
227
+ # @param type [Symbol, :googleServiceAccount] Use inline Google Cloud service account credentials for provider authentication
228
+
229
+ # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth#credentials
230
+ class Credentials < Stagehand::Internal::Type::BaseModel
231
+ # @!attribute client_email
232
+ #
233
+ # @return [String]
234
+ required :client_email, String
235
+
236
+ # @!attribute private_key
237
+ #
238
+ # @return [String]
239
+ required :private_key, String
240
+
241
+ # @!attribute auth_provider_x509_cert_url
242
+ #
243
+ # @return [String, nil]
244
+ optional :auth_provider_x509_cert_url, String
245
+
246
+ # @!attribute auth_uri
247
+ #
248
+ # @return [String, nil]
249
+ optional :auth_uri, String
250
+
251
+ # @!attribute client_id
252
+ #
253
+ # @return [String, nil]
254
+ optional :client_id, String
255
+
256
+ # @!attribute client_x509_cert_url
257
+ #
258
+ # @return [String, nil]
259
+ optional :client_x509_cert_url, String
260
+
261
+ # @!attribute private_key_id
262
+ #
263
+ # @return [String, nil]
264
+ optional :private_key_id, String
265
+
266
+ # @!attribute project_id
267
+ #
268
+ # @return [String, nil]
269
+ optional :project_id, String
270
+
271
+ # @!attribute token_uri
272
+ #
273
+ # @return [String, nil]
274
+ optional :token_uri, String
275
+
276
+ # @!attribute type
277
+ #
278
+ # @return [Symbol, Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type, nil]
279
+ optional :type,
280
+ enum: -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type }
281
+
282
+ # @!attribute universe_domain
283
+ #
284
+ # @return [String, nil]
285
+ optional :universe_domain, String
286
+
287
+ # @!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)
288
+ # Google Cloud service account credentials
289
+ #
290
+ # @param client_email [String]
291
+ # @param private_key [String]
292
+ # @param auth_provider_x509_cert_url [String]
293
+ # @param auth_uri [String]
294
+ # @param client_id [String]
295
+ # @param client_x509_cert_url [String]
296
+ # @param private_key_id [String]
297
+ # @param project_id [String]
298
+ # @param token_uri [String]
299
+ # @param type [Symbol, Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type]
300
+ # @param universe_domain [String]
301
+
302
+ # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials#type
303
+ module Type
304
+ extend Stagehand::Internal::Type::Enum
305
+
306
+ SERVICE_ACCOUNT = :service_account
307
+
308
+ # @!method self.values
309
+ # @return [Array<Symbol>]
310
+ end
311
+ end
312
+
313
+ # Google auth scopes for the desired API request
314
+ #
315
+ # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth#scopes
316
+ module Scopes
317
+ extend Stagehand::Internal::Type::Union
318
+
319
+ variant String
320
+
321
+ variant -> { Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::StringArray }
322
+
323
+ # @!method self.variants
324
+ # @return [Array(String, Array<String>)]
325
+
326
+ # @type [Stagehand::Internal::Type::Converter]
327
+ StringArray = Stagehand::Internal::Type::ArrayOf[String]
328
+ end
329
+ end
330
+
331
+ # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject#provider_options
332
+ class ProviderOptions < Stagehand::Internal::Type::BaseModel
333
+ # @!attribute vertex
334
+ # Vertex AI provider-specific settings
335
+ #
336
+ # @return [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex]
337
+ required :vertex,
338
+ -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex }
339
+
340
+ # @!method initialize(vertex:)
341
+ # Vertex provider-specific model configuration
342
+ #
343
+ # @param vertex [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex] Vertex AI provider-specific settings
344
+
345
+ # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions#vertex
346
+ class Vertex < Stagehand::Internal::Type::BaseModel
347
+ # @!attribute location
348
+ # Google Cloud location for Vertex AI models
349
+ #
350
+ # @return [String]
351
+ required :location, String
352
+
353
+ # @!attribute project
354
+ # Google Cloud project ID for Vertex AI models
355
+ #
356
+ # @return [String]
357
+ required :project, String
358
+
359
+ # @!attribute base_url
360
+ # Base URL for the Vertex AI provider
361
+ #
362
+ # @return [String, nil]
363
+ optional :base_url, String, api_name: :baseURL
364
+
365
+ # @!attribute headers
366
+ # Custom headers sent with every request to the Vertex AI provider
367
+ #
368
+ # @return [Hash{Symbol=>String}, nil]
369
+ optional :headers, Stagehand::Internal::Type::HashOf[String]
370
+
371
+ # @!method initialize(location:, project:, base_url: nil, headers: nil)
372
+ # Vertex AI provider-specific settings
373
+ #
374
+ # @param location [String] Google Cloud location for Vertex AI models
375
+ #
376
+ # @param project [String] Google Cloud project ID for Vertex AI models
377
+ #
378
+ # @param base_url [String] Base URL for the Vertex AI provider
379
+ #
380
+ # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the Vertex AI provider
381
+ end
382
+ end
383
+ end
384
+
385
+ class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel
386
+ # @!attribute model_name
387
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
388
+ #
389
+ # @return [String]
390
+ required :model_name, String, api_name: :modelName
391
+
392
+ # @!attribute api_key
393
+ # API key for the model provider
394
+ #
395
+ # @return [String, nil]
396
+ optional :api_key, String, api_name: :apiKey
397
+
398
+ # @!attribute base_url
399
+ # Base URL for the model provider
400
+ #
401
+ # @return [String, nil]
402
+ optional :base_url, String, api_name: :baseURL
403
+
404
+ # @!attribute headers
405
+ # Custom headers sent with every request to the model provider
406
+ #
407
+ # @return [Hash{Symbol=>String}, nil]
408
+ optional :headers, Stagehand::Internal::Type::HashOf[String]
409
+
410
+ # @!attribute provider
411
+ # AI provider for the model (or provide a baseURL endpoint instead)
412
+ #
413
+ # @return [Symbol, Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider, nil]
414
+ optional :provider,
415
+ enum: -> { Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider }
416
+
417
+ # @!method initialize(model_name:, api_key: nil, base_url: nil, headers: nil, provider: nil)
418
+ # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
419
+ #
420
+ # @param api_key [String] API key for the model provider
421
+ #
422
+ # @param base_url [String] Base URL for the model provider
423
+ #
424
+ # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider
425
+ #
426
+ # @param provider [Symbol, Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider] AI provider for the model (or provide a baseURL endpoint instead)
427
+
428
+ # AI provider for the model (or provide a baseURL endpoint instead)
429
+ #
430
+ # @see Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject#provider
431
+ module Provider
432
+ extend Stagehand::Internal::Type::Enum
433
+
434
+ OPENAI = :openai
435
+ ANTHROPIC = :anthropic
436
+ GOOGLE = :google
437
+ MICROSOFT = :microsoft
438
+ BEDROCK = :bedrock
439
+
440
+ # @!method self.values
441
+ # @return [Array<Symbol>]
442
+ end
443
+ end
444
+
98
445
  # @!method self.variants
99
- # @return [Array(Stagehand::Models::ModelConfig, String)]
446
+ # @return [Array(Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject, String)]
100
447
  end
101
448
  end
102
449