stagehand 3.19.3 → 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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +25 -0
- data/README.md +2 -3
- data/lib/stagehand/client.rb +25 -13
- data/lib/stagehand/internal/util.rb +3 -1
- data/lib/stagehand/local.rb +3 -12
- data/lib/stagehand/models/session_execute_params.rb +56 -1
- data/lib/stagehand/models/session_extract_params.rb +9 -1
- data/lib/stagehand/models/session_start_params.rb +56 -2
- data/lib/stagehand/resources/sessions.rb +16 -4
- data/lib/stagehand/version.rb +1 -1
- data/rbi/stagehand/client.rbi +6 -6
- data/rbi/stagehand/models/session_execute_params.rbi +144 -3
- data/rbi/stagehand/models/session_extract_params.rbi +11 -0
- data/rbi/stagehand/models/session_start_params.rbi +102 -0
- data/sig/stagehand/models/session_execute_params.rbs +56 -3
- data/sig/stagehand/models/session_extract_params.rbs +7 -0
- data/sig/stagehand/models/session_start_params.rbs +44 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d63d07d6d72284d6745a7f938ec12a7153c43a8cc9baba9e6bbf2559fd77b1e3
|
|
4
|
+
data.tar.gz: 8aa6950f119f872fddbb4d047e3ddb17253363c016c4be81bd573cd6a53b7bb0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f8281b0509afbe153829b60b77e259c98339f348654ed58e216a8d43003cf99aadba760de930518c62e1350ae37cb31fcab4a2e5fe6b5dbbfad07e94fc29ce62
|
|
7
|
+
data.tar.gz: 295b43fd779e909fd5c8b78e42b6a5b6b1f45686a47392136a08e4860c16e7382a203caaa9b8806e341a96dc4ca2789ee5a92e1c3606169516848ac577e2d31d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.20.0 (2026-05-06)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v3.19.3...v3.20.0](https://github.com/browserbase/stagehand-ruby/compare/v3.19.3...v3.20.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* [feat]: add `ignoreSelectors` to `extract()` ([db24a9a](https://github.com/browserbase/stagehand-ruby/commit/db24a9ab45dc464d2ad88f9b50d39952c4c76801))
|
|
10
|
+
* [STG-1798] feat: support Browserbase verified sessions ([9647eb3](https://github.com/browserbase/stagehand-ruby/commit/9647eb3a4df86cc9d7aedb2f0a9ddd0babd39565))
|
|
11
|
+
* [STG-1808] Deprecate Browserbase project ID ([7af1c21](https://github.com/browserbase/stagehand-ruby/commit/7af1c21a07e7163ffb0b86f6c199989b750e0365))
|
|
12
|
+
* Bedrock auth passthrough ([5cb6ecb](https://github.com/browserbase/stagehand-ruby/commit/5cb6ecbe621e894dc6c5aec379fdca1183eec4fc))
|
|
13
|
+
* remove experimental requirement on agent variables ([#2079](https://github.com/browserbase/stagehand-ruby/issues/2079)) ([6f106d7](https://github.com/browserbase/stagehand-ruby/commit/6f106d74feb1b3f036433ec67dda5e4c395f434e))
|
|
14
|
+
* Revert "[STG-1573] Add providerOptions for extensible model auth ([#1822](https://github.com/browserbase/stagehand-ruby/issues/1822))" ([0c83a09](https://github.com/browserbase/stagehand-ruby/commit/0c83a0978116f8fc11a4edf78586f3d61b8af5e8))
|
|
15
|
+
* support setting headers via env ([5515959](https://github.com/browserbase/stagehand-ruby/commit/5515959505685e62f9324aebf470a295dd6d8292))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* avoid gzip buffering during streaming ([23c3eef](https://github.com/browserbase/stagehand-ruby/commit/23c3eef17497edbf3ec03049d12c548607112c8d))
|
|
21
|
+
* multipart encoding for file arrays ([149b303](https://github.com/browserbase/stagehand-ruby/commit/149b303eb54f4c9af037a5e073a2d6c92d959b44))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Chores
|
|
25
|
+
|
|
26
|
+
* **internal:** more robust bootstrap script ([69c050a](https://github.com/browserbase/stagehand-ruby/commit/69c050a467b5fcab904331bd30bd18d46cee8cae))
|
|
27
|
+
|
|
3
28
|
## 3.19.3 (2026-04-03)
|
|
4
29
|
|
|
5
30
|
Full Changelog: [v3.18.0...v3.19.3](https://github.com/browserbase/stagehand-ruby/compare/v3.18.0...v3.19.3)
|
data/README.md
CHANGED
|
@@ -90,7 +90,6 @@ require "playwright"
|
|
|
90
90
|
|
|
91
91
|
client = Stagehand::Client.new(
|
|
92
92
|
browserbase_api_key: ENV["BROWSERBASE_API_KEY"],
|
|
93
|
-
browserbase_project_id: ENV["BROWSERBASE_PROJECT_ID"],
|
|
94
93
|
model_api_key: ENV["MODEL_API_KEY"],
|
|
95
94
|
server: "remote"
|
|
96
95
|
)
|
|
@@ -162,10 +161,10 @@ client.sessions.end_(session_id)
|
|
|
162
161
|
|
|
163
162
|
Set your environment variables (from `examples/.env.example`):
|
|
164
163
|
|
|
165
|
-
- `STAGEHAND_API_URL`
|
|
166
164
|
- `MODEL_API_KEY`
|
|
167
165
|
- `BROWSERBASE_API_KEY`
|
|
168
|
-
|
|
166
|
+
|
|
167
|
+
`STAGEHAND_API_URL` is optional and defaults to the hosted Stagehand API. `STAGEHAND_BASE_URL` remains supported as a deprecated fallback when `STAGEHAND_API_URL` is unset.
|
|
169
168
|
|
|
170
169
|
```bash
|
|
171
170
|
cp examples/.env.example examples/.env
|
data/lib/stagehand/client.rb
CHANGED
|
@@ -19,7 +19,8 @@ module Stagehand
|
|
|
19
19
|
# @return [String]
|
|
20
20
|
attr_reader :browserbase_api_key
|
|
21
21
|
|
|
22
|
-
#
|
|
22
|
+
# Deprecated. Browserbase API keys are now project-scoped, so this value is accepted for
|
|
23
|
+
# backwards compatibility and ignored.
|
|
23
24
|
# @return [String]
|
|
24
25
|
attr_reader :browserbase_project_id
|
|
25
26
|
|
|
@@ -34,7 +35,7 @@ module Stagehand
|
|
|
34
35
|
#
|
|
35
36
|
# @return [Hash{String=>String}]
|
|
36
37
|
private def auth_headers
|
|
37
|
-
{**bb_api_key_auth, **
|
|
38
|
+
{**bb_api_key_auth, **llm_model_api_key_auth}
|
|
38
39
|
end
|
|
39
40
|
|
|
40
41
|
# @api private
|
|
@@ -48,7 +49,7 @@ module Stagehand
|
|
|
48
49
|
#
|
|
49
50
|
# @return [Hash{String=>String}]
|
|
50
51
|
private def bb_project_id_auth
|
|
51
|
-
{
|
|
52
|
+
{}
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
# @api private
|
|
@@ -63,8 +64,8 @@ module Stagehand
|
|
|
63
64
|
# @param browserbase_api_key [String, nil] Your [Browserbase API Key](https://www.browserbase.com/settings) Defaults to
|
|
64
65
|
# `ENV["BROWSERBASE_API_KEY"]`
|
|
65
66
|
#
|
|
66
|
-
# @param browserbase_project_id [String, nil]
|
|
67
|
-
#
|
|
67
|
+
# @param browserbase_project_id [String, nil] Deprecated. Browserbase API keys are now project-scoped, so
|
|
68
|
+
# this value is accepted for backwards compatibility and ignored.
|
|
68
69
|
#
|
|
69
70
|
# @param model_api_key [String, nil] Your LLM provider API key (e.g. OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.)
|
|
70
71
|
# Defaults to `ENV["MODEL_API_KEY"]`
|
|
@@ -72,7 +73,8 @@ module Stagehand
|
|
|
72
73
|
# @param server [String] Server mode to use ("remote" or "local"). Defaults to "remote"
|
|
73
74
|
#
|
|
74
75
|
# @param base_url [String, nil] Override the default base URL for the API, e.g.,
|
|
75
|
-
# `"https://api.example.com/v2/"`. Defaults to `ENV["
|
|
76
|
+
# `"https://api.example.com/v2/"`. Defaults to `ENV["STAGEHAND_API_URL"]`,
|
|
77
|
+
# then `ENV["STAGEHAND_BASE_URL"]`
|
|
76
78
|
#
|
|
77
79
|
# @param max_retries [Integer] Max number of retries to attempt after a failed retryable request.
|
|
78
80
|
#
|
|
@@ -83,10 +85,10 @@ module Stagehand
|
|
|
83
85
|
# @param max_retry_delay [Float]
|
|
84
86
|
def initialize(
|
|
85
87
|
browserbase_api_key: ENV["BROWSERBASE_API_KEY"],
|
|
86
|
-
browserbase_project_id:
|
|
88
|
+
browserbase_project_id: nil,
|
|
87
89
|
model_api_key: ENV["MODEL_API_KEY"],
|
|
88
90
|
server: "remote",
|
|
89
|
-
base_url: ENV["STAGEHAND_BASE_URL"],
|
|
91
|
+
base_url: ENV["STAGEHAND_API_URL"] || ENV["STAGEHAND_BASE_URL"],
|
|
90
92
|
max_retries: self.class::DEFAULT_MAX_RETRIES,
|
|
91
93
|
timeout: self.class::DEFAULT_TIMEOUT_IN_SECONDS,
|
|
92
94
|
initial_retry_delay: self.class::DEFAULT_INITIAL_RETRY_DELAY,
|
|
@@ -99,15 +101,24 @@ module Stagehand
|
|
|
99
101
|
raise ArgumentError,
|
|
100
102
|
"browserbase_api_key is required, and can be set via environ: \"BROWSERBASE_API_KEY\""
|
|
101
103
|
end
|
|
102
|
-
if browserbase_project_id.nil?
|
|
103
|
-
raise ArgumentError,
|
|
104
|
-
"browserbase_project_id is required, and can be set via environ: \"BROWSERBASE_PROJECT_ID\""
|
|
105
|
-
end
|
|
106
104
|
if model_api_key.nil?
|
|
107
105
|
raise ArgumentError,
|
|
108
106
|
"model_api_key is required, and can be set via environ: \"MODEL_API_KEY\""
|
|
109
107
|
end
|
|
110
108
|
|
|
109
|
+
headers = {}
|
|
110
|
+
custom_headers_env = ENV["STAGEHAND_CUSTOM_HEADERS"]
|
|
111
|
+
unless custom_headers_env.nil?
|
|
112
|
+
parsed = {}
|
|
113
|
+
custom_headers_env.split("\n").each do |line|
|
|
114
|
+
colon = line.index(":")
|
|
115
|
+
unless colon.nil?
|
|
116
|
+
parsed[line[0...colon].strip] = line[(colon + 1)..].strip
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
headers = parsed.merge(headers)
|
|
120
|
+
end
|
|
121
|
+
|
|
111
122
|
@browserbase_api_key = browserbase_api_key.to_s
|
|
112
123
|
@browserbase_project_id = browserbase_project_id.to_s
|
|
113
124
|
@model_api_key = model_api_key.to_s
|
|
@@ -117,7 +128,8 @@ module Stagehand
|
|
|
117
128
|
timeout: timeout,
|
|
118
129
|
max_retries: max_retries,
|
|
119
130
|
initial_retry_delay: initial_retry_delay,
|
|
120
|
-
max_retry_delay: max_retry_delay
|
|
131
|
+
max_retry_delay: max_retry_delay,
|
|
132
|
+
headers: headers
|
|
121
133
|
)
|
|
122
134
|
|
|
123
135
|
@sessions = Stagehand::Resources::Sessions.new(client: self)
|
|
@@ -610,6 +610,7 @@ module Stagehand
|
|
|
610
610
|
#
|
|
611
611
|
# @return [Array(String, Enumerable<String>)]
|
|
612
612
|
private def encode_multipart_streaming(body)
|
|
613
|
+
# rubocop:disable Style/CaseEquality
|
|
613
614
|
# RFC 1521 Section 7.2.1 says we should have 70 char maximum for boundary length
|
|
614
615
|
boundary = SecureRandom.urlsafe_base64(46)
|
|
615
616
|
|
|
@@ -619,7 +620,7 @@ module Stagehand
|
|
|
619
620
|
in Hash
|
|
620
621
|
body.each do |key, val|
|
|
621
622
|
case val
|
|
622
|
-
in Array if val.all? { primitive?(_1) }
|
|
623
|
+
in Array if val.all? { primitive?(_1) || Stagehand::Internal::Type::FileInput === _1 }
|
|
623
624
|
val.each do |v|
|
|
624
625
|
write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
|
|
625
626
|
end
|
|
@@ -635,6 +636,7 @@ module Stagehand
|
|
|
635
636
|
|
|
636
637
|
fused_io = fused_enum(strio) { closing.each(&:call) }
|
|
637
638
|
[boundary, fused_io]
|
|
639
|
+
# rubocop:enable Style/CaseEquality
|
|
638
640
|
end
|
|
639
641
|
|
|
640
642
|
# @api private
|
data/lib/stagehand/local.rb
CHANGED
|
@@ -50,7 +50,6 @@ module Stagehand
|
|
|
50
50
|
|
|
51
51
|
missing = []
|
|
52
52
|
missing << "browserbase_api_key" if client.browserbase_api_key.to_s.empty?
|
|
53
|
-
missing << "browserbase_project_id" if client.browserbase_project_id.to_s.empty?
|
|
54
53
|
return if missing.empty?
|
|
55
54
|
|
|
56
55
|
message =
|
|
@@ -213,10 +212,9 @@ module Stagehand
|
|
|
213
212
|
end
|
|
214
213
|
|
|
215
214
|
class ServerManager
|
|
216
|
-
def initialize(model_api_key:, browserbase_api_key
|
|
215
|
+
def initialize(model_api_key:, browserbase_api_key:)
|
|
217
216
|
@model_api_key = model_api_key
|
|
218
217
|
@browserbase_api_key = browserbase_api_key
|
|
219
|
-
@browserbase_project_id = browserbase_project_id
|
|
220
218
|
@host = DEFAULT_HOST
|
|
221
219
|
@port = 0
|
|
222
220
|
@mutex = Mutex.new
|
|
@@ -335,9 +333,6 @@ module Stagehand
|
|
|
335
333
|
if @browserbase_api_key.to_s != ""
|
|
336
334
|
env["BROWSERBASE_API_KEY"] = @browserbase_api_key
|
|
337
335
|
end
|
|
338
|
-
if @browserbase_project_id.to_s != ""
|
|
339
|
-
env["BROWSERBASE_PROJECT_ID"] = @browserbase_project_id
|
|
340
|
-
end
|
|
341
336
|
env
|
|
342
337
|
end
|
|
343
338
|
|
|
@@ -376,8 +371,6 @@ module Stagehand
|
|
|
376
371
|
kwargs[:base_url] = base_url.nil? ? "http://#{DEFAULT_HOST}" : base_url
|
|
377
372
|
kwargs[:browserbase_api_key] =
|
|
378
373
|
kwargs[:browserbase_api_key] || ENV["BROWSERBASE_API_KEY"] || ""
|
|
379
|
-
kwargs[:browserbase_project_id] =
|
|
380
|
-
kwargs[:browserbase_project_id] || ENV["BROWSERBASE_PROJECT_ID"] || ""
|
|
381
374
|
end
|
|
382
375
|
|
|
383
376
|
super(**kwargs)
|
|
@@ -386,8 +379,7 @@ module Stagehand
|
|
|
386
379
|
|
|
387
380
|
@local_server_manager = Stagehand::Local::ServerManager.new(
|
|
388
381
|
model_api_key: @model_api_key,
|
|
389
|
-
browserbase_api_key: @browserbase_api_key
|
|
390
|
-
browserbase_project_id: @browserbase_project_id
|
|
382
|
+
browserbase_api_key: @browserbase_api_key
|
|
391
383
|
)
|
|
392
384
|
end
|
|
393
385
|
|
|
@@ -421,8 +413,7 @@ module Stagehand
|
|
|
421
413
|
end
|
|
422
414
|
|
|
423
415
|
def bb_project_id_auth
|
|
424
|
-
|
|
425
|
-
super
|
|
416
|
+
{}
|
|
426
417
|
end
|
|
427
418
|
end
|
|
428
419
|
|
|
@@ -210,7 +210,14 @@ module Stagehand
|
|
|
210
210
|
# @return [Boolean, nil]
|
|
211
211
|
optional :use_search, Stagehand::Internal::Type::Boolean, api_name: :useSearch
|
|
212
212
|
|
|
213
|
-
# @!
|
|
213
|
+
# @!attribute variables
|
|
214
|
+
# Variables available to the agent via %variableName% syntax in supported tools
|
|
215
|
+
#
|
|
216
|
+
# @return [Hash{Symbol=>String, Float, Boolean, Stagehand::Models::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3}, nil]
|
|
217
|
+
optional :variables,
|
|
218
|
+
-> { Stagehand::Internal::Type::HashOf[union: Stagehand::SessionExecuteParams::ExecuteOptions::Variable] }
|
|
219
|
+
|
|
220
|
+
# @!method initialize(instruction:, highlight_cursor: nil, max_steps: nil, tool_timeout: nil, use_search: nil, variables: nil)
|
|
214
221
|
# @param instruction [String] Natural language instruction for the agent
|
|
215
222
|
#
|
|
216
223
|
# @param highlight_cursor [Boolean] Whether to visually highlight the cursor during execution
|
|
@@ -220,6 +227,54 @@ module Stagehand
|
|
|
220
227
|
# @param tool_timeout [Float] Timeout in milliseconds for each agent tool call
|
|
221
228
|
#
|
|
222
229
|
# @param use_search [Boolean] Whether to enable the web search tool powered by Browserbase Search API
|
|
230
|
+
#
|
|
231
|
+
# @param variables [Hash{Symbol=>String, Float, Boolean, Stagehand::Models::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3}] Variables available to the agent via %variableName% syntax in supported tools
|
|
232
|
+
|
|
233
|
+
module Variable
|
|
234
|
+
extend Stagehand::Internal::Type::Union
|
|
235
|
+
|
|
236
|
+
variant String
|
|
237
|
+
|
|
238
|
+
variant Float
|
|
239
|
+
|
|
240
|
+
variant Stagehand::Internal::Type::Boolean
|
|
241
|
+
|
|
242
|
+
variant -> { Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3 }
|
|
243
|
+
|
|
244
|
+
class UnionMember3 < Stagehand::Internal::Type::BaseModel
|
|
245
|
+
# @!attribute value
|
|
246
|
+
#
|
|
247
|
+
# @return [String, Float, Boolean]
|
|
248
|
+
required :value,
|
|
249
|
+
union: -> { Stagehand::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3::Value }
|
|
250
|
+
|
|
251
|
+
# @!attribute description
|
|
252
|
+
#
|
|
253
|
+
# @return [String, nil]
|
|
254
|
+
optional :description, String
|
|
255
|
+
|
|
256
|
+
# @!method initialize(value:, description: nil)
|
|
257
|
+
# @param value [String, Float, Boolean]
|
|
258
|
+
# @param description [String]
|
|
259
|
+
|
|
260
|
+
# @see Stagehand::Models::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3#value
|
|
261
|
+
module Value
|
|
262
|
+
extend Stagehand::Internal::Type::Union
|
|
263
|
+
|
|
264
|
+
variant String
|
|
265
|
+
|
|
266
|
+
variant Float
|
|
267
|
+
|
|
268
|
+
variant Stagehand::Internal::Type::Boolean
|
|
269
|
+
|
|
270
|
+
# @!method self.variants
|
|
271
|
+
# @return [Array(String, Float, Boolean)]
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
# @!method self.variants
|
|
276
|
+
# @return [Array(String, Float, Boolean, Stagehand::Models::SessionExecuteParams::ExecuteOptions::Variable::UnionMember3)]
|
|
277
|
+
end
|
|
223
278
|
end
|
|
224
279
|
|
|
225
280
|
# Whether to stream the response via SSE
|
|
@@ -60,6 +60,12 @@ 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
|
#
|
|
@@ -78,7 +84,9 @@ module Stagehand
|
|
|
78
84
|
# @return [Float, nil]
|
|
79
85
|
optional :timeout, Float
|
|
80
86
|
|
|
81
|
-
# @!method initialize(model: nil, selector: nil, timeout: nil)
|
|
87
|
+
# @!method initialize(ignore_selectors: nil, model: nil, selector: nil, timeout: nil)
|
|
88
|
+
# @param ignore_selectors [Array<String>] Selectors for elements and subtrees that should be excluded from extraction
|
|
89
|
+
#
|
|
82
90
|
# @param model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
|
|
83
91
|
#
|
|
84
92
|
# @param selector [String] CSS selector to scope extraction to a specific element
|
|
@@ -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
|
-
#
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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,
|
data/lib/stagehand/version.rb
CHANGED
data/rbi/stagehand/client.rbi
CHANGED
|
@@ -14,7 +14,7 @@ module Stagehand
|
|
|
14
14
|
sig { returns(String) }
|
|
15
15
|
attr_reader :browserbase_api_key
|
|
16
16
|
|
|
17
|
-
#
|
|
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
|
-
#
|
|
67
|
-
|
|
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["
|
|
76
|
-
|
|
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,
|
|
@@ -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
|
|
@@ -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.
|
|
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-
|
|
11
|
+
date: 2026-05-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: cgi
|