stagehand 3.18.0 → 3.20.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.
@@ -148,12 +148,20 @@ module Stagehand
148
148
  end
149
149
  end
150
150
 
151
+ # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
152
+ RFC_3986_NOT_PCHARS = T.let(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/, Regexp)
153
+
151
154
  class << self
152
155
  # @api private
153
156
  sig { params(uri: URI::Generic).returns(String) }
154
157
  def uri_origin(uri)
155
158
  end
156
159
 
160
+ # @api private
161
+ sig { params(path: T.any(String, Integer)).returns(String) }
162
+ def encode_path(path)
163
+ end
164
+
157
165
  # @api private
158
166
  sig { params(path: T.any(String, T::Array[String])).returns(String) }
159
167
  def interpolate_path(path)
@@ -401,13 +401,57 @@ module Stagehand
401
401
  sig { params(use_search: T::Boolean).void }
402
402
  attr_writer :use_search
403
403
 
404
+ # Variables available to the agent via %variableName% syntax in supported tools
405
+ sig do
406
+ returns(
407
+ T.nilable(
408
+ T::Hash[
409
+ Symbol,
410
+ T.any(
411
+ String,
412
+ Float,
413
+ T::Boolean,
414
+ Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3
415
+ )
416
+ ]
417
+ )
418
+ )
419
+ end
420
+ attr_reader :variables
421
+
422
+ sig do
423
+ params(
424
+ variables:
425
+ T::Hash[
426
+ Symbol,
427
+ T.any(
428
+ String,
429
+ Float,
430
+ T::Boolean,
431
+ Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::OrHash
432
+ )
433
+ ]
434
+ ).void
435
+ end
436
+ attr_writer :variables
437
+
404
438
  sig do
405
439
  params(
406
440
  instruction: String,
407
441
  highlight_cursor: T::Boolean,
408
442
  max_steps: Float,
409
443
  tool_timeout: Float,
410
- use_search: T::Boolean
444
+ use_search: T::Boolean,
445
+ variables:
446
+ T::Hash[
447
+ Symbol,
448
+ T.any(
449
+ String,
450
+ Float,
451
+ T::Boolean,
452
+ Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::OrHash
453
+ )
454
+ ]
411
455
  ).returns(T.attached_class)
412
456
  end
413
457
  def self.new(
@@ -420,7 +464,9 @@ module Stagehand
420
464
  # Timeout in milliseconds for each agent tool call
421
465
  tool_timeout: nil,
422
466
  # Whether to enable the web search tool powered by Browserbase Search API
423
- use_search: nil
467
+ use_search: nil,
468
+ # Variables available to the agent via %variableName% syntax in supported tools
469
+ variables: nil
424
470
  )
425
471
  end
426
472
 
@@ -431,12 +477,107 @@ module Stagehand
431
477
  highlight_cursor: T::Boolean,
432
478
  max_steps: Float,
433
479
  tool_timeout: Float,
434
- use_search: T::Boolean
480
+ use_search: T::Boolean,
481
+ variables:
482
+ T::Hash[
483
+ Symbol,
484
+ T.any(
485
+ String,
486
+ Float,
487
+ T::Boolean,
488
+ Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3
489
+ )
490
+ ]
435
491
  }
436
492
  )
437
493
  end
438
494
  def to_hash
439
495
  end
496
+
497
+ module Variable
498
+ extend Stagehand::Internal::Type::Union
499
+
500
+ Variants =
501
+ T.type_alias do
502
+ T.any(
503
+ String,
504
+ Float,
505
+ T::Boolean,
506
+ Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3
507
+ )
508
+ end
509
+
510
+ class UnionMember3 < Stagehand::Internal::Type::BaseModel
511
+ OrHash =
512
+ T.type_alias do
513
+ T.any(
514
+ Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3,
515
+ Stagehand::Internal::AnyHash
516
+ )
517
+ end
518
+
519
+ sig do
520
+ returns(
521
+ Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::Value::Variants
522
+ )
523
+ end
524
+ attr_accessor :value
525
+
526
+ sig { returns(T.nilable(String)) }
527
+ attr_reader :description
528
+
529
+ sig { params(description: String).void }
530
+ attr_writer :description
531
+
532
+ sig do
533
+ params(
534
+ value:
535
+ Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::Value::Variants,
536
+ description: String
537
+ ).returns(T.attached_class)
538
+ end
539
+ def self.new(value:, description: nil)
540
+ end
541
+
542
+ sig do
543
+ override.returns(
544
+ {
545
+ value:
546
+ Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::Value::Variants,
547
+ description: String
548
+ }
549
+ )
550
+ end
551
+ def to_hash
552
+ end
553
+
554
+ module Value
555
+ extend Stagehand::Internal::Type::Union
556
+
557
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
558
+
559
+ sig do
560
+ override.returns(
561
+ T::Array[
562
+ Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::Value::Variants
563
+ ]
564
+ )
565
+ end
566
+ def self.variants
567
+ end
568
+ end
569
+ end
570
+
571
+ sig do
572
+ override.returns(
573
+ T::Array[
574
+ Stagehand::SessionExecuteParams::ExecuteOptions::Variable::Variants
575
+ ]
576
+ )
577
+ end
578
+ def self.variants
579
+ end
580
+ end
440
581
  end
441
582
 
442
583
  # Whether to stream the response via SSE
@@ -111,6 +111,13 @@ module Stagehand
111
111
  )
112
112
  end
113
113
 
114
+ # Selectors for elements and subtrees that should be excluded from extraction
115
+ sig { returns(T.nilable(T::Array[String])) }
116
+ attr_reader :ignore_selectors
117
+
118
+ sig { params(ignore_selectors: T::Array[String]).void }
119
+ attr_writer :ignore_selectors
120
+
114
121
  # Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
115
122
  sig { returns(T.nilable(T.any(Stagehand::ModelConfig, String))) }
116
123
  attr_reader :model
@@ -136,12 +143,15 @@ module Stagehand
136
143
 
137
144
  sig do
138
145
  params(
146
+ ignore_selectors: T::Array[String],
139
147
  model: T.any(Stagehand::ModelConfig::OrHash, String),
140
148
  selector: String,
141
149
  timeout: Float
142
150
  ).returns(T.attached_class)
143
151
  end
144
152
  def self.new(
153
+ # Selectors for elements and subtrees that should be excluded from extraction
154
+ ignore_selectors: nil,
145
155
  # Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
146
156
  model: nil,
147
157
  # CSS selector to scope extraction to a specific element
@@ -154,6 +164,7 @@ module Stagehand
154
164
  sig do
155
165
  override.returns(
156
166
  {
167
+ ignore_selectors: T::Array[String],
157
168
  model: T.any(Stagehand::ModelConfig, String),
158
169
  selector: String,
159
170
  timeout: Float
@@ -680,6 +680,8 @@ module Stagehand
680
680
  sig { params(keep_alive: T::Boolean).void }
681
681
  attr_writer :keep_alive
682
682
 
683
+ # Deprecated. Browserbase API keys are now project-scoped, so this field is no
684
+ # longer required.
683
685
  sig { returns(T.nilable(String)) }
684
686
  attr_reader :project_id
685
687
 
@@ -751,6 +753,8 @@ module Stagehand
751
753
  browser_settings: nil,
752
754
  extension_id: nil,
753
755
  keep_alive: nil,
756
+ # Deprecated. Browserbase API keys are now project-scoped, so this field is no
757
+ # longer required.
754
758
  project_id: nil,
755
759
  proxies: nil,
756
760
  region: nil,
@@ -800,6 +804,18 @@ module Stagehand
800
804
  sig { params(block_ads: T::Boolean).void }
801
805
  attr_writer :block_ads
802
806
 
807
+ sig { returns(T.nilable(String)) }
808
+ attr_reader :captcha_image_selector
809
+
810
+ sig { params(captcha_image_selector: String).void }
811
+ attr_writer :captcha_image_selector
812
+
813
+ sig { returns(T.nilable(String)) }
814
+ attr_reader :captcha_input_selector
815
+
816
+ sig { params(captcha_input_selector: String).void }
817
+ attr_writer :captcha_input_selector
818
+
803
819
  sig do
804
820
  returns(
805
821
  T.nilable(
@@ -846,6 +862,23 @@ module Stagehand
846
862
  sig { params(log_session: T::Boolean).void }
847
863
  attr_writer :log_session
848
864
 
865
+ sig do
866
+ returns(
867
+ T.nilable(
868
+ Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::OrSymbol
869
+ )
870
+ )
871
+ end
872
+ attr_reader :os
873
+
874
+ sig do
875
+ params(
876
+ os:
877
+ Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::OrSymbol
878
+ ).void
879
+ end
880
+ attr_writer :os
881
+
849
882
  sig { returns(T.nilable(T::Boolean)) }
850
883
  attr_reader :record_session
851
884
 
@@ -858,6 +891,12 @@ module Stagehand
858
891
  sig { params(solve_captchas: T::Boolean).void }
859
892
  attr_writer :solve_captchas
860
893
 
894
+ sig { returns(T.nilable(T::Boolean)) }
895
+ attr_reader :verified
896
+
897
+ sig { params(verified: T::Boolean).void }
898
+ attr_writer :verified
899
+
861
900
  sig do
862
901
  returns(
863
902
  T.nilable(
@@ -879,14 +918,19 @@ module Stagehand
879
918
  params(
880
919
  advanced_stealth: T::Boolean,
881
920
  block_ads: T::Boolean,
921
+ captcha_image_selector: String,
922
+ captcha_input_selector: String,
882
923
  context:
883
924
  Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context::OrHash,
884
925
  extension_id: String,
885
926
  fingerprint:
886
927
  Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint::OrHash,
887
928
  log_session: T::Boolean,
929
+ os:
930
+ Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::OrSymbol,
888
931
  record_session: T::Boolean,
889
932
  solve_captchas: T::Boolean,
933
+ verified: T::Boolean,
890
934
  viewport:
891
935
  Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport::OrHash
892
936
  ).returns(T.attached_class)
@@ -894,12 +938,16 @@ module Stagehand
894
938
  def self.new(
895
939
  advanced_stealth: nil,
896
940
  block_ads: nil,
941
+ captcha_image_selector: nil,
942
+ captcha_input_selector: nil,
897
943
  context: nil,
898
944
  extension_id: nil,
899
945
  fingerprint: nil,
900
946
  log_session: nil,
947
+ os: nil,
901
948
  record_session: nil,
902
949
  solve_captchas: nil,
950
+ verified: nil,
903
951
  viewport: nil
904
952
  )
905
953
  end
@@ -909,14 +957,19 @@ module Stagehand
909
957
  {
910
958
  advanced_stealth: T::Boolean,
911
959
  block_ads: T::Boolean,
960
+ captcha_image_selector: String,
961
+ captcha_input_selector: String,
912
962
  context:
913
963
  Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context,
914
964
  extension_id: String,
915
965
  fingerprint:
916
966
  Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint,
917
967
  log_session: T::Boolean,
968
+ os:
969
+ Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::OrSymbol,
918
970
  record_session: T::Boolean,
919
971
  solve_captchas: T::Boolean,
972
+ verified: T::Boolean,
920
973
  viewport:
921
974
  Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport
922
975
  }
@@ -1348,6 +1401,55 @@ module Stagehand
1348
1401
  end
1349
1402
  end
1350
1403
 
1404
+ module Os
1405
+ extend Stagehand::Internal::Type::Enum
1406
+
1407
+ TaggedSymbol =
1408
+ T.type_alias do
1409
+ T.all(
1410
+ Symbol,
1411
+ Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os
1412
+ )
1413
+ end
1414
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1415
+
1416
+ WINDOWS =
1417
+ T.let(
1418
+ :windows,
1419
+ Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol
1420
+ )
1421
+ MAC =
1422
+ T.let(
1423
+ :mac,
1424
+ Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol
1425
+ )
1426
+ LINUX =
1427
+ T.let(
1428
+ :linux,
1429
+ Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol
1430
+ )
1431
+ MOBILE =
1432
+ T.let(
1433
+ :mobile,
1434
+ Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol
1435
+ )
1436
+ TABLET =
1437
+ T.let(
1438
+ :tablet,
1439
+ Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol
1440
+ )
1441
+
1442
+ sig do
1443
+ override.returns(
1444
+ T::Array[
1445
+ Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol
1446
+ ]
1447
+ )
1448
+ end
1449
+ def self.values
1450
+ end
1451
+ end
1452
+
1351
1453
  class Viewport < Stagehand::Internal::Type::BaseModel
1352
1454
  OrHash =
1353
1455
  T.type_alias do
@@ -45,8 +45,12 @@ module Stagehand
45
45
  -> top?
46
46
  } -> top?
47
47
 
48
+ RFC_3986_NOT_PCHARS: Regexp
49
+
48
50
  def self?.uri_origin: (URI::Generic uri) -> String
49
51
 
52
+ def self?.encode_path: (String | Integer path) -> String
53
+
50
54
  def self?.interpolate_path: (String | ::Array[String] path) -> String
51
55
 
52
56
  def self?.decode_query: (String? query) -> ::Hash[String, ::Array[String]]
@@ -163,7 +163,8 @@ module Stagehand
163
163
  highlight_cursor: bool,
164
164
  max_steps: Float,
165
165
  tool_timeout: Float,
166
- use_search: bool
166
+ use_search: bool,
167
+ variables: ::Hash[Symbol, Stagehand::Models::SessionExecuteParams::ExecuteOptions::variable]
167
168
  }
168
169
 
169
170
  class ExecuteOptions < Stagehand::Internal::Type::BaseModel
@@ -185,12 +186,19 @@ module Stagehand
185
186
 
186
187
  def use_search=: (bool) -> bool
187
188
 
189
+ attr_reader variables: ::Hash[Symbol, Stagehand::Models::SessionExecuteParams::ExecuteOptions::variable]?
190
+
191
+ def variables=: (
192
+ ::Hash[Symbol, Stagehand::Models::SessionExecuteParams::ExecuteOptions::variable]
193
+ ) -> ::Hash[Symbol, Stagehand::Models::SessionExecuteParams::ExecuteOptions::variable]
194
+
188
195
  def initialize: (
189
196
  instruction: String,
190
197
  ?highlight_cursor: bool,
191
198
  ?max_steps: Float,
192
199
  ?tool_timeout: Float,
193
- ?use_search: bool
200
+ ?use_search: bool,
201
+ ?variables: ::Hash[Symbol, Stagehand::Models::SessionExecuteParams::ExecuteOptions::variable]
194
202
  ) -> void
195
203
 
196
204
  def to_hash: -> {
@@ -198,8 +206,53 @@ module Stagehand
198
206
  highlight_cursor: bool,
199
207
  max_steps: Float,
200
208
  tool_timeout: Float,
201
- use_search: bool
209
+ use_search: bool,
210
+ variables: ::Hash[Symbol, Stagehand::Models::SessionExecuteParams::ExecuteOptions::variable]
202
211
  }
212
+
213
+ type variable =
214
+ String
215
+ | Float
216
+ | bool
217
+ | Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3
218
+
219
+ module Variable
220
+ extend Stagehand::Internal::Type::Union
221
+
222
+ type union_member3 =
223
+ {
224
+ value: Stagehand::Models::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::value,
225
+ description: String
226
+ }
227
+
228
+ class UnionMember3 < Stagehand::Internal::Type::BaseModel
229
+ attr_accessor value: Stagehand::Models::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::value
230
+
231
+ attr_reader description: String?
232
+
233
+ def description=: (String) -> String
234
+
235
+ def initialize: (
236
+ value: Stagehand::Models::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::value,
237
+ ?description: String
238
+ ) -> void
239
+
240
+ def to_hash: -> {
241
+ value: Stagehand::Models::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::value,
242
+ description: String
243
+ }
244
+
245
+ type value = String | Float | bool
246
+
247
+ module Value
248
+ extend Stagehand::Internal::Type::Union
249
+
250
+ def self?.variants: -> ::Array[Stagehand::Models::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::value]
251
+ end
252
+ end
253
+
254
+ def self?.variants: -> ::Array[Stagehand::Models::SessionExecuteParams::ExecuteOptions::variable]
255
+ end
203
256
  end
204
257
 
205
258
  type x_stream_response = :true | :false
@@ -61,12 +61,17 @@ module Stagehand
61
61
 
62
62
  type options =
63
63
  {
64
+ ignore_selectors: ::Array[String],
64
65
  model: Stagehand::Models::SessionExtractParams::Options::model,
65
66
  selector: String,
66
67
  timeout: Float
67
68
  }
68
69
 
69
70
  class Options < Stagehand::Internal::Type::BaseModel
71
+ attr_reader ignore_selectors: ::Array[String]?
72
+
73
+ def ignore_selectors=: (::Array[String]) -> ::Array[String]
74
+
70
75
  attr_reader model: Stagehand::Models::SessionExtractParams::Options::model?
71
76
 
72
77
  def model=: (
@@ -82,12 +87,14 @@ module Stagehand
82
87
  def timeout=: (Float) -> Float
83
88
 
84
89
  def initialize: (
90
+ ?ignore_selectors: ::Array[String],
85
91
  ?model: Stagehand::Models::SessionExtractParams::Options::model,
86
92
  ?selector: String,
87
93
  ?timeout: Float
88
94
  ) -> void
89
95
 
90
96
  def to_hash: -> {
97
+ ignore_selectors: ::Array[String],
91
98
  model: Stagehand::Models::SessionExtractParams::Options::model,
92
99
  selector: String,
93
100
  timeout: Float
@@ -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
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.18.0
4
+ version: 3.20.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-03-25 00:00:00.000000000 Z
11
+ date: 2026-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi