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
@@ -52,10 +52,16 @@ module Stagehand
52
52
  # @param request_options [Stagehand::RequestOptions, Hash{Symbol=>Object}]
53
53
 
54
54
  class Options < Stagehand::Internal::Type::BaseModel
55
+ # @!attribute ignore_selectors
56
+ # Selectors for elements and subtrees that should be excluded from observation
57
+ #
58
+ # @return [Array<String>, nil]
59
+ optional :ignore_selectors, Stagehand::Internal::Type::ArrayOf[String], api_name: :ignoreSelectors
60
+
55
61
  # @!attribute model
56
62
  # Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
57
63
  #
58
- # @return [Stagehand::Models::ModelConfig, String, nil]
64
+ # @return [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject, String, nil]
59
65
  optional :model, union: -> { Stagehand::SessionObserveParams::Options::Model }
60
66
 
61
67
  # @!attribute selector
@@ -79,11 +85,13 @@ module Stagehand
79
85
  optional :variables,
80
86
  -> { Stagehand::Internal::Type::HashOf[union: Stagehand::SessionObserveParams::Options::Variable] }
81
87
 
82
- # @!method initialize(model: nil, selector: nil, timeout: nil, variables: nil)
88
+ # @!method initialize(ignore_selectors: nil, model: nil, selector: nil, timeout: nil, variables: nil)
83
89
  # Some parameter documentations has been truncated, see
84
90
  # {Stagehand::Models::SessionObserveParams::Options} for more details.
85
91
  #
86
- # @param model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
92
+ # @param ignore_selectors [Array<String>] Selectors for elements and subtrees that should be excluded from observation
93
+ #
94
+ # @param model [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
87
95
  #
88
96
  # @param selector [String] CSS selector to scope observation to a specific element
89
97
  #
@@ -97,12 +105,339 @@ module Stagehand
97
105
  module Model
98
106
  extend Stagehand::Internal::Type::Union
99
107
 
100
- variant -> { Stagehand::ModelConfig }
108
+ variant -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject }
109
+
110
+ variant -> { Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject }
101
111
 
102
112
  variant String
103
113
 
114
+ class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel
115
+ # @!attribute auth
116
+ # Vertex provider authentication configuration
117
+ #
118
+ # @return [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth]
119
+ required :auth, -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth }
120
+
121
+ # @!attribute model_name
122
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
123
+ #
124
+ # @return [String]
125
+ required :model_name, String, api_name: :modelName
126
+
127
+ # @!attribute provider
128
+ # Vertex AI model provider
129
+ #
130
+ # @return [Symbol, :vertex]
131
+ required :provider, const: :vertex
132
+
133
+ # @!attribute provider_options
134
+ # Vertex provider-specific model configuration
135
+ #
136
+ # @return [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions]
137
+ required :provider_options,
138
+ -> {
139
+ Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions
140
+ },
141
+ api_name: :providerOptions
142
+
143
+ # @!attribute api_key
144
+ # API key for the model provider
145
+ #
146
+ # @return [String, nil]
147
+ optional :api_key, String, api_name: :apiKey
148
+
149
+ # @!attribute base_url
150
+ # Base URL for the model provider
151
+ #
152
+ # @return [String, nil]
153
+ optional :base_url, String, api_name: :baseURL
154
+
155
+ # @!attribute headers
156
+ # Custom headers sent with every request to the model provider
157
+ #
158
+ # @return [Hash{Symbol=>String}, nil]
159
+ optional :headers, Stagehand::Internal::Type::HashOf[String]
160
+
161
+ # @!method initialize(auth:, model_name:, provider_options:, api_key: nil, base_url: nil, headers: nil, provider: :vertex)
162
+ # @param auth [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth] Vertex provider authentication configuration
163
+ #
164
+ # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
165
+ #
166
+ # @param provider_options [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions] Vertex provider-specific model configuration
167
+ #
168
+ # @param api_key [String] API key for the model provider
169
+ #
170
+ # @param base_url [String] Base URL for the model provider
171
+ #
172
+ # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider
173
+ #
174
+ # @param provider [Symbol, :vertex] Vertex AI model provider
175
+
176
+ # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject#auth
177
+ class Auth < Stagehand::Internal::Type::BaseModel
178
+ # @!attribute credentials
179
+ # Google Cloud service account credentials
180
+ #
181
+ # @return [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials]
182
+ required :credentials,
183
+ -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials }
184
+
185
+ # @!attribute type
186
+ # Use inline Google Cloud service account credentials for provider authentication
187
+ #
188
+ # @return [Symbol, :googleServiceAccount]
189
+ required :type, const: :googleServiceAccount
190
+
191
+ # @!attribute project_id
192
+ # Google Cloud project ID used by google-auth-library
193
+ #
194
+ # @return [String, nil]
195
+ optional :project_id, String, api_name: :projectId
196
+
197
+ # @!attribute scopes
198
+ # Google auth scopes for the desired API request
199
+ #
200
+ # @return [String, Array<String>, nil]
201
+ optional :scopes,
202
+ union: -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Scopes }
203
+
204
+ # @!attribute universe_domain
205
+ # Google Cloud universe domain
206
+ #
207
+ # @return [String, nil]
208
+ optional :universe_domain, String, api_name: :universeDomain
209
+
210
+ # @!method initialize(credentials:, project_id: nil, scopes: nil, universe_domain: nil, type: :googleServiceAccount)
211
+ # Vertex provider authentication configuration
212
+ #
213
+ # @param credentials [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials] Google Cloud service account credentials
214
+ #
215
+ # @param project_id [String] Google Cloud project ID used by google-auth-library
216
+ #
217
+ # @param scopes [String, Array<String>] Google auth scopes for the desired API request
218
+ #
219
+ # @param universe_domain [String] Google Cloud universe domain
220
+ #
221
+ # @param type [Symbol, :googleServiceAccount] Use inline Google Cloud service account credentials for provider authentication
222
+
223
+ # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth#credentials
224
+ class Credentials < Stagehand::Internal::Type::BaseModel
225
+ # @!attribute client_email
226
+ #
227
+ # @return [String]
228
+ required :client_email, String
229
+
230
+ # @!attribute private_key
231
+ #
232
+ # @return [String]
233
+ required :private_key, String
234
+
235
+ # @!attribute auth_provider_x509_cert_url
236
+ #
237
+ # @return [String, nil]
238
+ optional :auth_provider_x509_cert_url, String
239
+
240
+ # @!attribute auth_uri
241
+ #
242
+ # @return [String, nil]
243
+ optional :auth_uri, String
244
+
245
+ # @!attribute client_id
246
+ #
247
+ # @return [String, nil]
248
+ optional :client_id, String
249
+
250
+ # @!attribute client_x509_cert_url
251
+ #
252
+ # @return [String, nil]
253
+ optional :client_x509_cert_url, String
254
+
255
+ # @!attribute private_key_id
256
+ #
257
+ # @return [String, nil]
258
+ optional :private_key_id, String
259
+
260
+ # @!attribute project_id
261
+ #
262
+ # @return [String, nil]
263
+ optional :project_id, String
264
+
265
+ # @!attribute token_uri
266
+ #
267
+ # @return [String, nil]
268
+ optional :token_uri, String
269
+
270
+ # @!attribute type
271
+ #
272
+ # @return [Symbol, Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type, nil]
273
+ optional :type,
274
+ enum: -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type }
275
+
276
+ # @!attribute universe_domain
277
+ #
278
+ # @return [String, nil]
279
+ optional :universe_domain, String
280
+
281
+ # @!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)
282
+ # Google Cloud service account credentials
283
+ #
284
+ # @param client_email [String]
285
+ # @param private_key [String]
286
+ # @param auth_provider_x509_cert_url [String]
287
+ # @param auth_uri [String]
288
+ # @param client_id [String]
289
+ # @param client_x509_cert_url [String]
290
+ # @param private_key_id [String]
291
+ # @param project_id [String]
292
+ # @param token_uri [String]
293
+ # @param type [Symbol, Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type]
294
+ # @param universe_domain [String]
295
+
296
+ # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials#type
297
+ module Type
298
+ extend Stagehand::Internal::Type::Enum
299
+
300
+ SERVICE_ACCOUNT = :service_account
301
+
302
+ # @!method self.values
303
+ # @return [Array<Symbol>]
304
+ end
305
+ end
306
+
307
+ # Google auth scopes for the desired API request
308
+ #
309
+ # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth#scopes
310
+ module Scopes
311
+ extend Stagehand::Internal::Type::Union
312
+
313
+ variant String
314
+
315
+ variant -> { Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Scopes::StringArray }
316
+
317
+ # @!method self.variants
318
+ # @return [Array(String, Array<String>)]
319
+
320
+ # @type [Stagehand::Internal::Type::Converter]
321
+ StringArray = Stagehand::Internal::Type::ArrayOf[String]
322
+ end
323
+ end
324
+
325
+ # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject#provider_options
326
+ class ProviderOptions < Stagehand::Internal::Type::BaseModel
327
+ # @!attribute vertex
328
+ # Vertex AI provider-specific settings
329
+ #
330
+ # @return [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex]
331
+ required :vertex,
332
+ -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex }
333
+
334
+ # @!method initialize(vertex:)
335
+ # Vertex provider-specific model configuration
336
+ #
337
+ # @param vertex [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex] Vertex AI provider-specific settings
338
+
339
+ # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions#vertex
340
+ class Vertex < Stagehand::Internal::Type::BaseModel
341
+ # @!attribute location
342
+ # Google Cloud location for Vertex AI models
343
+ #
344
+ # @return [String]
345
+ required :location, String
346
+
347
+ # @!attribute project
348
+ # Google Cloud project ID for Vertex AI models
349
+ #
350
+ # @return [String]
351
+ required :project, String
352
+
353
+ # @!attribute base_url
354
+ # Base URL for the Vertex AI provider
355
+ #
356
+ # @return [String, nil]
357
+ optional :base_url, String, api_name: :baseURL
358
+
359
+ # @!attribute headers
360
+ # Custom headers sent with every request to the Vertex AI provider
361
+ #
362
+ # @return [Hash{Symbol=>String}, nil]
363
+ optional :headers, Stagehand::Internal::Type::HashOf[String]
364
+
365
+ # @!method initialize(location:, project:, base_url: nil, headers: nil)
366
+ # Vertex AI provider-specific settings
367
+ #
368
+ # @param location [String] Google Cloud location for Vertex AI models
369
+ #
370
+ # @param project [String] Google Cloud project ID for Vertex AI models
371
+ #
372
+ # @param base_url [String] Base URL for the Vertex AI provider
373
+ #
374
+ # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the Vertex AI provider
375
+ end
376
+ end
377
+ end
378
+
379
+ class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel
380
+ # @!attribute model_name
381
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
382
+ #
383
+ # @return [String]
384
+ required :model_name, String, api_name: :modelName
385
+
386
+ # @!attribute api_key
387
+ # API key for the model provider
388
+ #
389
+ # @return [String, nil]
390
+ optional :api_key, String, api_name: :apiKey
391
+
392
+ # @!attribute base_url
393
+ # Base URL for the model provider
394
+ #
395
+ # @return [String, nil]
396
+ optional :base_url, String, api_name: :baseURL
397
+
398
+ # @!attribute headers
399
+ # Custom headers sent with every request to the model provider
400
+ #
401
+ # @return [Hash{Symbol=>String}, nil]
402
+ optional :headers, Stagehand::Internal::Type::HashOf[String]
403
+
404
+ # @!attribute provider
405
+ # AI provider for the model (or provide a baseURL endpoint instead)
406
+ #
407
+ # @return [Symbol, Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider, nil]
408
+ optional :provider,
409
+ enum: -> { Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider }
410
+
411
+ # @!method initialize(model_name:, api_key: nil, base_url: nil, headers: nil, provider: nil)
412
+ # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
413
+ #
414
+ # @param api_key [String] API key for the model provider
415
+ #
416
+ # @param base_url [String] Base URL for the model provider
417
+ #
418
+ # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider
419
+ #
420
+ # @param provider [Symbol, Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider] AI provider for the model (or provide a baseURL endpoint instead)
421
+
422
+ # AI provider for the model (or provide a baseURL endpoint instead)
423
+ #
424
+ # @see Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject#provider
425
+ module Provider
426
+ extend Stagehand::Internal::Type::Enum
427
+
428
+ OPENAI = :openai
429
+ ANTHROPIC = :anthropic
430
+ GOOGLE = :google
431
+ MICROSOFT = :microsoft
432
+ BEDROCK = :bedrock
433
+
434
+ # @!method self.values
435
+ # @return [Array<Symbol>]
436
+ end
437
+ end
438
+
104
439
  # @!method self.variants
105
- # @return [Array(Stagehand::Models::ModelConfig, String)]
440
+ # @return [Array(Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject, String)]
106
441
  end
107
442
 
108
443
  module Variable
@@ -353,6 +353,10 @@ module Stagehand
353
353
  optional :keep_alive, Stagehand::Internal::Type::Boolean, api_name: :keepAlive
354
354
 
355
355
  # @!attribute project_id
356
+ # @deprecated
357
+ #
358
+ # Deprecated. Browserbase API keys are now project-scoped, so this field is no
359
+ # longer required.
356
360
  #
357
361
  # @return [String, nil]
358
362
  optional :project_id, String, api_name: :projectId
@@ -380,13 +384,24 @@ module Stagehand
380
384
  api_name: :userMetadata
381
385
 
382
386
  # @!method initialize(browser_settings: nil, extension_id: nil, keep_alive: nil, project_id: nil, proxies: nil, region: nil, timeout: nil, user_metadata: nil)
387
+ # Some parameter documentations has been truncated, see
388
+ # {Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams} for more
389
+ # details.
390
+ #
383
391
  # @param browser_settings [Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings]
392
+ #
384
393
  # @param extension_id [String]
394
+ #
385
395
  # @param keep_alive [Boolean]
386
- # @param project_id [String]
396
+ #
397
+ # @param project_id [String] Deprecated. Browserbase API keys are now project-scoped, so this field is no lon
398
+ #
387
399
  # @param proxies [Boolean, Array<Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::Proxies::ProxyConfigList::Browserbase, Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::Proxies::ProxyConfigList::External>]
400
+ #
388
401
  # @param region [Symbol, Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::Region]
402
+ #
389
403
  # @param timeout [Float]
404
+ #
390
405
  # @param user_metadata [Hash{Symbol=>Object}]
391
406
 
392
407
  # @see Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams#browser_settings
@@ -401,6 +416,16 @@ module Stagehand
401
416
  # @return [Boolean, nil]
402
417
  optional :block_ads, Stagehand::Internal::Type::Boolean, api_name: :blockAds
403
418
 
419
+ # @!attribute captcha_image_selector
420
+ #
421
+ # @return [String, nil]
422
+ optional :captcha_image_selector, String, api_name: :captchaImageSelector
423
+
424
+ # @!attribute captcha_input_selector
425
+ #
426
+ # @return [String, nil]
427
+ optional :captcha_input_selector, String, api_name: :captchaInputSelector
428
+
404
429
  # @!attribute context
405
430
  #
406
431
  # @return [Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context, nil]
@@ -423,6 +448,12 @@ module Stagehand
423
448
  # @return [Boolean, nil]
424
449
  optional :log_session, Stagehand::Internal::Type::Boolean, api_name: :logSession
425
450
 
451
+ # @!attribute os
452
+ #
453
+ # @return [Symbol, Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os, nil]
454
+ optional :os,
455
+ enum: -> { Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os }
456
+
426
457
  # @!attribute record_session
427
458
  #
428
459
  # @return [Boolean, nil]
@@ -433,21 +464,30 @@ module Stagehand
433
464
  # @return [Boolean, nil]
434
465
  optional :solve_captchas, Stagehand::Internal::Type::Boolean, api_name: :solveCaptchas
435
466
 
467
+ # @!attribute verified
468
+ #
469
+ # @return [Boolean, nil]
470
+ optional :verified, Stagehand::Internal::Type::Boolean
471
+
436
472
  # @!attribute viewport
437
473
  #
438
474
  # @return [Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport, nil]
439
475
  optional :viewport,
440
476
  -> { Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport }
441
477
 
442
- # @!method initialize(advanced_stealth: nil, block_ads: nil, context: nil, extension_id: nil, fingerprint: nil, log_session: nil, record_session: nil, solve_captchas: nil, viewport: nil)
478
+ # @!method initialize(advanced_stealth: nil, block_ads: nil, captcha_image_selector: nil, captcha_input_selector: nil, context: nil, extension_id: nil, fingerprint: nil, log_session: nil, os: nil, record_session: nil, solve_captchas: nil, verified: nil, viewport: nil)
443
479
  # @param advanced_stealth [Boolean]
444
480
  # @param block_ads [Boolean]
481
+ # @param captcha_image_selector [String]
482
+ # @param captcha_input_selector [String]
445
483
  # @param context [Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context]
446
484
  # @param extension_id [String]
447
485
  # @param fingerprint [Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint]
448
486
  # @param log_session [Boolean]
487
+ # @param os [Symbol, Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os]
449
488
  # @param record_session [Boolean]
450
489
  # @param solve_captchas [Boolean]
490
+ # @param verified [Boolean]
451
491
  # @param viewport [Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport]
452
492
 
453
493
  # @see Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings#context
@@ -596,6 +636,20 @@ module Stagehand
596
636
  end
597
637
  end
598
638
 
639
+ # @see Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings#os
640
+ module Os
641
+ extend Stagehand::Internal::Type::Enum
642
+
643
+ WINDOWS = :windows
644
+ MAC = :mac
645
+ LINUX = :linux
646
+ MOBILE = :mobile
647
+ TABLET = :tablet
648
+
649
+ # @!method self.values
650
+ # @return [Array<Symbol>]
651
+ end
652
+
599
653
  # @see Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings#viewport
600
654
  class Viewport < Stagehand::Internal::Type::BaseModel
601
655
  # @!attribute height
@@ -77,8 +77,11 @@ module Stagehand
77
77
  path: ["v1/sessions/%1$s/act", id],
78
78
  headers: {
79
79
  "accept" => "text/event-stream",
80
+ "accept-encoding" => "identity",
80
81
  **parsed.slice(*header_params.keys)
81
- }.transform_keys(header_params),
82
+ }.transform_keys(
83
+ header_params
84
+ ),
82
85
  body: parsed.except(*header_params.keys),
83
86
  stream: Stagehand::Internal::Stream,
84
87
  model: Stagehand::StreamEvent,
@@ -193,8 +196,11 @@ module Stagehand
193
196
  path: ["v1/sessions/%1$s/agentExecute", id],
194
197
  headers: {
195
198
  "accept" => "text/event-stream",
199
+ "accept-encoding" => "identity",
196
200
  **parsed.slice(*header_params.keys)
197
- }.transform_keys(header_params),
201
+ }.transform_keys(
202
+ header_params
203
+ ),
198
204
  body: parsed.except(*header_params.keys),
199
205
  stream: Stagehand::Internal::Stream,
200
206
  model: Stagehand::StreamEvent,
@@ -279,8 +285,11 @@ module Stagehand
279
285
  path: ["v1/sessions/%1$s/extract", id],
280
286
  headers: {
281
287
  "accept" => "text/event-stream",
288
+ "accept-encoding" => "identity",
282
289
  **parsed.slice(*header_params.keys)
283
- }.transform_keys(header_params),
290
+ }.transform_keys(
291
+ header_params
292
+ ),
284
293
  body: parsed.except(*header_params.keys),
285
294
  stream: Stagehand::Internal::Stream,
286
295
  model: Stagehand::StreamEvent,
@@ -397,8 +406,11 @@ module Stagehand
397
406
  path: ["v1/sessions/%1$s/observe", id],
398
407
  headers: {
399
408
  "accept" => "text/event-stream",
409
+ "accept-encoding" => "identity",
400
410
  **parsed.slice(*header_params.keys)
401
- }.transform_keys(header_params),
411
+ }.transform_keys(
412
+ header_params
413
+ ),
402
414
  body: parsed.except(*header_params.keys),
403
415
  stream: Stagehand::Internal::Stream,
404
416
  model: Stagehand::StreamEvent,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stagehand
4
- VERSION = "3.19.3"
4
+ VERSION = "3.21.0"
5
5
  end
@@ -14,7 +14,7 @@ module Stagehand
14
14
  sig { returns(String) }
15
15
  attr_reader :browserbase_api_key
16
16
 
17
- # Your [Browserbase Project ID](https://www.browserbase.com/settings)
17
+ # Deprecated. Browserbase API keys are now project-scoped, so this value is accepted for backwards compatibility and ignored.
18
18
  sig { returns(String) }
19
19
  attr_reader :browserbase_project_id
20
20
 
@@ -63,17 +63,17 @@ module Stagehand
63
63
  # Your [Browserbase API Key](https://www.browserbase.com/settings) Defaults to
64
64
  # `ENV["BROWSERBASE_API_KEY"]`
65
65
  browserbase_api_key: ENV["BROWSERBASE_API_KEY"],
66
- # Your [Browserbase Project ID](https://www.browserbase.com/settings) Defaults to
67
- # `ENV["BROWSERBASE_PROJECT_ID"]`
68
- browserbase_project_id: ENV["BROWSERBASE_PROJECT_ID"],
66
+ # Deprecated. Browserbase API keys are now project-scoped, so this value is accepted for backwards compatibility and ignored.
67
+ browserbase_project_id: nil,
69
68
  # Your LLM provider API key (e.g. OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.)
70
69
  # Defaults to `ENV["MODEL_API_KEY"]`
71
70
  model_api_key: ENV["MODEL_API_KEY"],
72
71
  # Server mode to use ("remote" or "local"). Defaults to "remote"
73
72
  server: "remote",
74
73
  # Override the default base URL for the API, e.g.,
75
- # `"https://api.example.com/v2/"`. Defaults to `ENV["STAGEHAND_BASE_URL"]`
76
- base_url: ENV["STAGEHAND_BASE_URL"],
74
+ # `"https://api.example.com/v2/"`. Defaults to `ENV["STAGEHAND_API_URL"]`,
75
+ # then `ENV["STAGEHAND_BASE_URL"]`
76
+ base_url: ENV["STAGEHAND_API_URL"] || ENV["STAGEHAND_BASE_URL"],
77
77
  # Max number of retries to attempt after a failed retryable request.
78
78
  max_retries: Stagehand::Client::DEFAULT_MAX_RETRIES,
79
79
  timeout: Stagehand::Client::DEFAULT_TIMEOUT_IN_SECONDS,