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
@@ -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
@@ -1,64 +1,332 @@
1
1
  module Stagehand
2
2
  module Models
3
3
  type model_config =
4
- {
5
- model_name: String,
6
- api_key: String,
7
- base_url: String,
8
- headers: ::Hash[Symbol, String],
9
- provider: Stagehand::Models::ModelConfig::provider
10
- }
4
+ Stagehand::ModelConfig::VertexModelConfigObject
5
+ | Stagehand::ModelConfig::GenericModelConfigObject
11
6
 
12
- class ModelConfig < Stagehand::Internal::Type::BaseModel
13
- attr_accessor model_name: String
7
+ module ModelConfig
8
+ extend Stagehand::Internal::Type::Union
14
9
 
15
- attr_reader api_key: String?
10
+ type vertex_model_config_object =
11
+ {
12
+ auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth,
13
+ model_name: String,
14
+ provider: :vertex,
15
+ provider_options: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions,
16
+ api_key: String,
17
+ base_url: String,
18
+ headers: ::Hash[Symbol, String]
19
+ }
16
20
 
17
- def api_key=: (String) -> String
21
+ class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel
22
+ attr_accessor auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth
18
23
 
19
- attr_reader base_url: String?
24
+ attr_accessor model_name: String
20
25
 
21
- def base_url=: (String) -> String
26
+ attr_accessor provider: :vertex
22
27
 
23
- attr_reader headers: ::Hash[Symbol, String]?
28
+ attr_accessor provider_options: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions
24
29
 
25
- def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
30
+ attr_reader api_key: String?
26
31
 
27
- attr_reader provider: Stagehand::Models::ModelConfig::provider?
32
+ def api_key=: (String) -> String
28
33
 
29
- def provider=: (
30
- Stagehand::Models::ModelConfig::provider
31
- ) -> Stagehand::Models::ModelConfig::provider
34
+ attr_reader base_url: String?
32
35
 
33
- def initialize: (
34
- model_name: String,
35
- ?api_key: String,
36
- ?base_url: String,
37
- ?headers: ::Hash[Symbol, String],
38
- ?provider: Stagehand::Models::ModelConfig::provider
39
- ) -> void
36
+ def base_url=: (String) -> String
40
37
 
41
- def to_hash: -> {
42
- model_name: String,
43
- api_key: String,
44
- base_url: String,
45
- headers: ::Hash[Symbol, String],
46
- provider: Stagehand::Models::ModelConfig::provider
47
- }
38
+ attr_reader headers: ::Hash[Symbol, String]?
48
39
 
49
- type provider = :openai | :anthropic | :google | :microsoft | :bedrock
40
+ def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
50
41
 
51
- module Provider
52
- extend Stagehand::Internal::Type::Enum
42
+ def initialize: (
43
+ auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth,
44
+ model_name: String,
45
+ provider_options: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions,
46
+ ?api_key: String,
47
+ ?base_url: String,
48
+ ?headers: ::Hash[Symbol, String],
49
+ ?provider: :vertex
50
+ ) -> void
53
51
 
54
- OPENAI: :openai
55
- ANTHROPIC: :anthropic
56
- GOOGLE: :google
57
- MICROSOFT: :microsoft
58
- BEDROCK: :bedrock
52
+ def to_hash: -> {
53
+ auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth,
54
+ model_name: String,
55
+ provider: :vertex,
56
+ provider_options: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions,
57
+ api_key: String,
58
+ base_url: String,
59
+ headers: ::Hash[Symbol, String]
60
+ }
59
61
 
60
- def self?.values: -> ::Array[Stagehand::Models::ModelConfig::provider]
62
+ type auth =
63
+ {
64
+ credentials: Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials,
65
+ type: :googleServiceAccount,
66
+ project_id: String,
67
+ scopes: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes,
68
+ universe_domain: String
69
+ }
70
+
71
+ class Auth < Stagehand::Internal::Type::BaseModel
72
+ attr_accessor credentials: Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials
73
+
74
+ attr_accessor type: :googleServiceAccount
75
+
76
+ attr_reader project_id: String?
77
+
78
+ def project_id=: (String) -> String
79
+
80
+ attr_reader scopes: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes?
81
+
82
+ def scopes=: (
83
+ Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes
84
+ ) -> Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes
85
+
86
+ attr_reader universe_domain: String?
87
+
88
+ def universe_domain=: (String) -> String
89
+
90
+ def initialize: (
91
+ credentials: Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials,
92
+ ?project_id: String,
93
+ ?scopes: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes,
94
+ ?universe_domain: String,
95
+ ?type: :googleServiceAccount
96
+ ) -> void
97
+
98
+ def to_hash: -> {
99
+ credentials: Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials,
100
+ type: :googleServiceAccount,
101
+ project_id: String,
102
+ scopes: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes,
103
+ universe_domain: String
104
+ }
105
+
106
+ type credentials =
107
+ {
108
+ client_email: String,
109
+ private_key: String,
110
+ :auth_provider_x509_cert_url => String,
111
+ auth_uri: String,
112
+ client_id: String,
113
+ :client_x509_cert_url => String,
114
+ private_key_id: String,
115
+ project_id: String,
116
+ token_uri: String,
117
+ type: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_,
118
+ universe_domain: String
119
+ }
120
+
121
+ class Credentials < Stagehand::Internal::Type::BaseModel
122
+ attr_accessor client_email: String
123
+
124
+ attr_accessor private_key: String
125
+
126
+ attr_reader auth_provider_x509_cert_url: String?
127
+
128
+ def auth_provider_x509_cert_url=: (String) -> String
129
+
130
+ attr_reader auth_uri: String?
131
+
132
+ def auth_uri=: (String) -> String
133
+
134
+ attr_reader client_id: String?
135
+
136
+ def client_id=: (String) -> String
137
+
138
+ attr_reader client_x509_cert_url: String?
139
+
140
+ def client_x509_cert_url=: (String) -> String
141
+
142
+ attr_reader private_key_id: String?
143
+
144
+ def private_key_id=: (String) -> String
145
+
146
+ attr_reader project_id: String?
147
+
148
+ def project_id=: (String) -> String
149
+
150
+ attr_reader token_uri: String?
151
+
152
+ def token_uri=: (String) -> String
153
+
154
+ attr_reader type: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_?
155
+
156
+ def type=: (
157
+ Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_
158
+ ) -> Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_
159
+
160
+ attr_reader universe_domain: String?
161
+
162
+ def universe_domain=: (String) -> String
163
+
164
+ def initialize: (
165
+ client_email: String,
166
+ private_key: String,
167
+ ?auth_provider_x509_cert_url: String,
168
+ ?auth_uri: String,
169
+ ?client_id: String,
170
+ ?client_x509_cert_url: String,
171
+ ?private_key_id: String,
172
+ ?project_id: String,
173
+ ?token_uri: String,
174
+ ?type: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_,
175
+ ?universe_domain: String
176
+ ) -> void
177
+
178
+ def to_hash: -> {
179
+ client_email: String,
180
+ private_key: String,
181
+ :auth_provider_x509_cert_url => String,
182
+ auth_uri: String,
183
+ client_id: String,
184
+ :client_x509_cert_url => String,
185
+ private_key_id: String,
186
+ project_id: String,
187
+ token_uri: String,
188
+ type: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_,
189
+ universe_domain: String
190
+ }
191
+
192
+ type type_ = :service_account
193
+
194
+ module Type
195
+ extend Stagehand::Internal::Type::Enum
196
+
197
+ SERVICE_ACCOUNT: :service_account
198
+
199
+ def self?.values: -> ::Array[Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_]
200
+ end
201
+ end
202
+
203
+ type scopes = String | ::Array[String]
204
+
205
+ module Scopes
206
+ extend Stagehand::Internal::Type::Union
207
+
208
+ def self?.variants: -> ::Array[Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes]
209
+
210
+ StringArray: Stagehand::Internal::Type::Converter
211
+ end
212
+ end
213
+
214
+ type provider_options =
215
+ {
216
+ vertex: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex
217
+ }
218
+
219
+ class ProviderOptions < Stagehand::Internal::Type::BaseModel
220
+ attr_accessor vertex: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex
221
+
222
+ def initialize: (
223
+ vertex: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex
224
+ ) -> void
225
+
226
+ def to_hash: -> {
227
+ vertex: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex
228
+ }
229
+
230
+ type vertex =
231
+ {
232
+ location: String,
233
+ project: String,
234
+ base_url: String,
235
+ headers: ::Hash[Symbol, String]
236
+ }
237
+
238
+ class Vertex < Stagehand::Internal::Type::BaseModel
239
+ attr_accessor location: String
240
+
241
+ attr_accessor project: String
242
+
243
+ attr_reader base_url: String?
244
+
245
+ def base_url=: (String) -> String
246
+
247
+ attr_reader headers: ::Hash[Symbol, String]?
248
+
249
+ def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
250
+
251
+ def initialize: (
252
+ location: String,
253
+ project: String,
254
+ ?base_url: String,
255
+ ?headers: ::Hash[Symbol, String]
256
+ ) -> void
257
+
258
+ def to_hash: -> {
259
+ location: String,
260
+ project: String,
261
+ base_url: String,
262
+ headers: ::Hash[Symbol, String]
263
+ }
264
+ end
265
+ end
61
266
  end
267
+
268
+ type generic_model_config_object =
269
+ {
270
+ model_name: String,
271
+ api_key: String,
272
+ base_url: String,
273
+ headers: ::Hash[Symbol, String],
274
+ provider: Stagehand::Models::ModelConfig::GenericModelConfigObject::provider
275
+ }
276
+
277
+ class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel
278
+ attr_accessor model_name: String
279
+
280
+ attr_reader api_key: String?
281
+
282
+ def api_key=: (String) -> String
283
+
284
+ attr_reader base_url: String?
285
+
286
+ def base_url=: (String) -> String
287
+
288
+ attr_reader headers: ::Hash[Symbol, String]?
289
+
290
+ def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
291
+
292
+ attr_reader provider: Stagehand::Models::ModelConfig::GenericModelConfigObject::provider?
293
+
294
+ def provider=: (
295
+ Stagehand::Models::ModelConfig::GenericModelConfigObject::provider
296
+ ) -> Stagehand::Models::ModelConfig::GenericModelConfigObject::provider
297
+
298
+ def initialize: (
299
+ model_name: String,
300
+ ?api_key: String,
301
+ ?base_url: String,
302
+ ?headers: ::Hash[Symbol, String],
303
+ ?provider: Stagehand::Models::ModelConfig::GenericModelConfigObject::provider
304
+ ) -> void
305
+
306
+ def to_hash: -> {
307
+ model_name: String,
308
+ api_key: String,
309
+ base_url: String,
310
+ headers: ::Hash[Symbol, String],
311
+ provider: Stagehand::Models::ModelConfig::GenericModelConfigObject::provider
312
+ }
313
+
314
+ type provider = :openai | :anthropic | :google | :microsoft | :bedrock
315
+
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
+ def self?.values: -> ::Array[Stagehand::Models::ModelConfig::GenericModelConfigObject::provider]
326
+ end
327
+ end
328
+
329
+ def self?.variants: -> ::Array[Stagehand::Models::model_config]
62
330
  end
63
331
  end
64
332
  end