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
@@ -54,6 +54,7 @@ module Stagehand
54
54
 
55
55
  type options =
56
56
  {
57
+ ignore_selectors: ::Array[String],
57
58
  model: Stagehand::Models::SessionObserveParams::Options::model,
58
59
  selector: String,
59
60
  timeout: Float,
@@ -61,6 +62,10 @@ module Stagehand
61
62
  }
62
63
 
63
64
  class Options < Stagehand::Internal::Type::BaseModel
65
+ attr_reader ignore_selectors: ::Array[String]?
66
+
67
+ def ignore_selectors=: (::Array[String]) -> ::Array[String]
68
+
64
69
  attr_reader model: Stagehand::Models::SessionObserveParams::Options::model?
65
70
 
66
71
  def model=: (
@@ -82,6 +87,7 @@ module Stagehand
82
87
  ) -> ::Hash[Symbol, Stagehand::Models::SessionObserveParams::Options::variable]
83
88
 
84
89
  def initialize: (
90
+ ?ignore_selectors: ::Array[String],
85
91
  ?model: Stagehand::Models::SessionObserveParams::Options::model,
86
92
  ?selector: String,
87
93
  ?timeout: Float,
@@ -89,17 +95,341 @@ module Stagehand
89
95
  ) -> void
90
96
 
91
97
  def to_hash: -> {
98
+ ignore_selectors: ::Array[String],
92
99
  model: Stagehand::Models::SessionObserveParams::Options::model,
93
100
  selector: String,
94
101
  timeout: Float,
95
102
  variables: ::Hash[Symbol, Stagehand::Models::SessionObserveParams::Options::variable]
96
103
  }
97
104
 
98
- type model = Stagehand::ModelConfig | String
105
+ type model =
106
+ Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject
107
+ | Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject
108
+ | String
99
109
 
100
110
  module Model
101
111
  extend Stagehand::Internal::Type::Union
102
112
 
113
+ type vertex_model_config_object =
114
+ {
115
+ auth: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth,
116
+ model_name: String,
117
+ provider: :vertex,
118
+ provider_options: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions,
119
+ api_key: String,
120
+ base_url: String,
121
+ headers: ::Hash[Symbol, String]
122
+ }
123
+
124
+ class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel
125
+ attr_accessor auth: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth
126
+
127
+ attr_accessor model_name: String
128
+
129
+ attr_accessor provider: :vertex
130
+
131
+ attr_accessor provider_options: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions
132
+
133
+ attr_reader api_key: String?
134
+
135
+ def api_key=: (String) -> String
136
+
137
+ attr_reader base_url: String?
138
+
139
+ def base_url=: (String) -> String
140
+
141
+ attr_reader headers: ::Hash[Symbol, String]?
142
+
143
+ def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
144
+
145
+ def initialize: (
146
+ auth: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth,
147
+ model_name: String,
148
+ provider_options: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions,
149
+ ?api_key: String,
150
+ ?base_url: String,
151
+ ?headers: ::Hash[Symbol, String],
152
+ ?provider: :vertex
153
+ ) -> void
154
+
155
+ def to_hash: -> {
156
+ auth: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth,
157
+ model_name: String,
158
+ provider: :vertex,
159
+ provider_options: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions,
160
+ api_key: String,
161
+ base_url: String,
162
+ headers: ::Hash[Symbol, String]
163
+ }
164
+
165
+ type auth =
166
+ {
167
+ credentials: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials,
168
+ type: :googleServiceAccount,
169
+ project_id: String,
170
+ scopes: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes,
171
+ universe_domain: String
172
+ }
173
+
174
+ class Auth < Stagehand::Internal::Type::BaseModel
175
+ attr_accessor credentials: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials
176
+
177
+ attr_accessor type: :googleServiceAccount
178
+
179
+ attr_reader project_id: String?
180
+
181
+ def project_id=: (String) -> String
182
+
183
+ attr_reader scopes: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes?
184
+
185
+ def scopes=: (
186
+ Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes
187
+ ) -> Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes
188
+
189
+ attr_reader universe_domain: String?
190
+
191
+ def universe_domain=: (String) -> String
192
+
193
+ def initialize: (
194
+ credentials: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials,
195
+ ?project_id: String,
196
+ ?scopes: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes,
197
+ ?universe_domain: String,
198
+ ?type: :googleServiceAccount
199
+ ) -> void
200
+
201
+ def to_hash: -> {
202
+ credentials: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials,
203
+ type: :googleServiceAccount,
204
+ project_id: String,
205
+ scopes: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes,
206
+ universe_domain: String
207
+ }
208
+
209
+ type credentials =
210
+ {
211
+ client_email: String,
212
+ private_key: String,
213
+ :auth_provider_x509_cert_url => String,
214
+ auth_uri: String,
215
+ client_id: String,
216
+ :client_x509_cert_url => String,
217
+ private_key_id: String,
218
+ project_id: String,
219
+ token_uri: String,
220
+ type: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_,
221
+ universe_domain: String
222
+ }
223
+
224
+ class Credentials < Stagehand::Internal::Type::BaseModel
225
+ attr_accessor client_email: String
226
+
227
+ attr_accessor private_key: String
228
+
229
+ attr_reader auth_provider_x509_cert_url: String?
230
+
231
+ def auth_provider_x509_cert_url=: (String) -> String
232
+
233
+ attr_reader auth_uri: String?
234
+
235
+ def auth_uri=: (String) -> String
236
+
237
+ attr_reader client_id: String?
238
+
239
+ def client_id=: (String) -> String
240
+
241
+ attr_reader client_x509_cert_url: String?
242
+
243
+ def client_x509_cert_url=: (String) -> String
244
+
245
+ attr_reader private_key_id: String?
246
+
247
+ def private_key_id=: (String) -> String
248
+
249
+ attr_reader project_id: String?
250
+
251
+ def project_id=: (String) -> String
252
+
253
+ attr_reader token_uri: String?
254
+
255
+ def token_uri=: (String) -> String
256
+
257
+ attr_reader type: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_?
258
+
259
+ def type=: (
260
+ Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_
261
+ ) -> Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_
262
+
263
+ attr_reader universe_domain: String?
264
+
265
+ def universe_domain=: (String) -> String
266
+
267
+ def initialize: (
268
+ client_email: String,
269
+ private_key: String,
270
+ ?auth_provider_x509_cert_url: String,
271
+ ?auth_uri: String,
272
+ ?client_id: String,
273
+ ?client_x509_cert_url: String,
274
+ ?private_key_id: String,
275
+ ?project_id: String,
276
+ ?token_uri: String,
277
+ ?type: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_,
278
+ ?universe_domain: String
279
+ ) -> void
280
+
281
+ def to_hash: -> {
282
+ client_email: String,
283
+ private_key: String,
284
+ :auth_provider_x509_cert_url => String,
285
+ auth_uri: String,
286
+ client_id: String,
287
+ :client_x509_cert_url => String,
288
+ private_key_id: String,
289
+ project_id: String,
290
+ token_uri: String,
291
+ type: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_,
292
+ universe_domain: String
293
+ }
294
+
295
+ type type_ = :service_account
296
+
297
+ module Type
298
+ extend Stagehand::Internal::Type::Enum
299
+
300
+ SERVICE_ACCOUNT: :service_account
301
+
302
+ def self?.values: -> ::Array[Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_]
303
+ end
304
+ end
305
+
306
+ type scopes = String | ::Array[String]
307
+
308
+ module Scopes
309
+ extend Stagehand::Internal::Type::Union
310
+
311
+ def self?.variants: -> ::Array[Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes]
312
+
313
+ StringArray: Stagehand::Internal::Type::Converter
314
+ end
315
+ end
316
+
317
+ type provider_options =
318
+ {
319
+ vertex: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex
320
+ }
321
+
322
+ class ProviderOptions < Stagehand::Internal::Type::BaseModel
323
+ attr_accessor vertex: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex
324
+
325
+ def initialize: (
326
+ vertex: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex
327
+ ) -> void
328
+
329
+ def to_hash: -> {
330
+ vertex: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex
331
+ }
332
+
333
+ type vertex =
334
+ {
335
+ location: String,
336
+ project: String,
337
+ base_url: String,
338
+ headers: ::Hash[Symbol, String]
339
+ }
340
+
341
+ class Vertex < Stagehand::Internal::Type::BaseModel
342
+ attr_accessor location: String
343
+
344
+ attr_accessor project: String
345
+
346
+ attr_reader base_url: String?
347
+
348
+ def base_url=: (String) -> String
349
+
350
+ attr_reader headers: ::Hash[Symbol, String]?
351
+
352
+ def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
353
+
354
+ def initialize: (
355
+ location: String,
356
+ project: String,
357
+ ?base_url: String,
358
+ ?headers: ::Hash[Symbol, String]
359
+ ) -> void
360
+
361
+ def to_hash: -> {
362
+ location: String,
363
+ project: String,
364
+ base_url: String,
365
+ headers: ::Hash[Symbol, String]
366
+ }
367
+ end
368
+ end
369
+ end
370
+
371
+ type generic_model_config_object =
372
+ {
373
+ model_name: String,
374
+ api_key: String,
375
+ base_url: String,
376
+ headers: ::Hash[Symbol, String],
377
+ provider: Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider
378
+ }
379
+
380
+ class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel
381
+ attr_accessor model_name: String
382
+
383
+ attr_reader api_key: String?
384
+
385
+ def api_key=: (String) -> String
386
+
387
+ attr_reader base_url: String?
388
+
389
+ def base_url=: (String) -> String
390
+
391
+ attr_reader headers: ::Hash[Symbol, String]?
392
+
393
+ def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
394
+
395
+ attr_reader provider: Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider?
396
+
397
+ def provider=: (
398
+ Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider
399
+ ) -> Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider
400
+
401
+ def initialize: (
402
+ model_name: String,
403
+ ?api_key: String,
404
+ ?base_url: String,
405
+ ?headers: ::Hash[Symbol, String],
406
+ ?provider: Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider
407
+ ) -> void
408
+
409
+ def to_hash: -> {
410
+ model_name: String,
411
+ api_key: String,
412
+ base_url: String,
413
+ headers: ::Hash[Symbol, String],
414
+ provider: Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider
415
+ }
416
+
417
+ type provider =
418
+ :openai | :anthropic | :google | :microsoft | :bedrock
419
+
420
+ module Provider
421
+ extend Stagehand::Internal::Type::Enum
422
+
423
+ OPENAI: :openai
424
+ ANTHROPIC: :anthropic
425
+ GOOGLE: :google
426
+ MICROSOFT: :microsoft
427
+ BEDROCK: :bedrock
428
+
429
+ def self?.values: -> ::Array[Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider]
430
+ end
431
+ end
432
+
103
433
  def self?.variants: -> ::Array[Stagehand::Models::SessionObserveParams::Options::model]
104
434
  end
105
435
 
@@ -450,12 +450,16 @@ module Stagehand
450
450
  {
451
451
  advanced_stealth: bool,
452
452
  block_ads: bool,
453
+ captcha_image_selector: String,
454
+ captcha_input_selector: String,
453
455
  context: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context,
454
456
  extension_id: String,
455
457
  fingerprint: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint,
456
458
  log_session: bool,
459
+ os: Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os,
457
460
  record_session: bool,
458
461
  solve_captchas: bool,
462
+ verified: bool,
459
463
  viewport: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport
460
464
  }
461
465
 
@@ -468,6 +472,14 @@ module Stagehand
468
472
 
469
473
  def block_ads=: (bool) -> bool
470
474
 
475
+ attr_reader captcha_image_selector: String?
476
+
477
+ def captcha_image_selector=: (String) -> String
478
+
479
+ attr_reader captcha_input_selector: String?
480
+
481
+ def captcha_input_selector=: (String) -> String
482
+
471
483
  attr_reader context: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context?
472
484
 
473
485
  def context=: (
@@ -488,6 +500,12 @@ module Stagehand
488
500
 
489
501
  def log_session=: (bool) -> bool
490
502
 
503
+ attr_reader os: Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os?
504
+
505
+ def os=: (
506
+ Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os
507
+ ) -> Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os
508
+
491
509
  attr_reader record_session: bool?
492
510
 
493
511
  def record_session=: (bool) -> bool
@@ -496,6 +514,10 @@ module Stagehand
496
514
 
497
515
  def solve_captchas=: (bool) -> bool
498
516
 
517
+ attr_reader verified: bool?
518
+
519
+ def verified=: (bool) -> bool
520
+
499
521
  attr_reader viewport: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport?
500
522
 
501
523
  def viewport=: (
@@ -505,24 +527,32 @@ module Stagehand
505
527
  def initialize: (
506
528
  ?advanced_stealth: bool,
507
529
  ?block_ads: bool,
530
+ ?captcha_image_selector: String,
531
+ ?captcha_input_selector: String,
508
532
  ?context: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context,
509
533
  ?extension_id: String,
510
534
  ?fingerprint: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint,
511
535
  ?log_session: bool,
536
+ ?os: Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os,
512
537
  ?record_session: bool,
513
538
  ?solve_captchas: bool,
539
+ ?verified: bool,
514
540
  ?viewport: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport
515
541
  ) -> void
516
542
 
517
543
  def to_hash: -> {
518
544
  advanced_stealth: bool,
519
545
  block_ads: bool,
546
+ captcha_image_selector: String,
547
+ captcha_input_selector: String,
520
548
  context: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context,
521
549
  extension_id: String,
522
550
  fingerprint: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint,
523
551
  log_session: bool,
552
+ os: Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os,
524
553
  record_session: bool,
525
554
  solve_captchas: bool,
555
+ verified: bool,
526
556
  viewport: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport
527
557
  }
528
558
 
@@ -693,6 +723,20 @@ module Stagehand
693
723
  end
694
724
  end
695
725
 
726
+ type os = :windows | :mac | :linux | :mobile | :tablet
727
+
728
+ module Os
729
+ extend Stagehand::Internal::Type::Enum
730
+
731
+ WINDOWS: :windows
732
+ MAC: :mac
733
+ LINUX: :linux
734
+ MOBILE: :mobile
735
+ TABLET: :tablet
736
+
737
+ def self?.values: -> ::Array[Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os]
738
+ end
739
+
696
740
  type viewport = { height: Float, width: Float }
697
741
 
698
742
  class Viewport < Stagehand::Internal::Type::BaseModel
@@ -1,7 +1,7 @@
1
1
  module Stagehand
2
2
  class Action = Stagehand::Models::Action
3
3
 
4
- class ModelConfig = Stagehand::Models::ModelConfig
4
+ module ModelConfig = Stagehand::Models::ModelConfig
5
5
 
6
6
  class SessionActParams = Stagehand::Models::SessionActParams
7
7
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stagehand
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.19.3
4
+ version: 3.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stagehand
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-04-03 00:00:00.000000000 Z
11
+ date: 2026-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi