stagehand 3.7.0 → 3.18.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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -0
  3. data/README.md +2 -0
  4. data/lib/stagehand/internal/stream.rb +2 -11
  5. data/lib/stagehand/internal/util.rb +31 -0
  6. data/lib/stagehand/local.rb +5 -5
  7. data/lib/stagehand/models/model_config.rb +9 -1
  8. data/lib/stagehand/models/session_act_params.rb +63 -5
  9. data/lib/stagehand/models/session_end_params.rb +9 -1
  10. data/lib/stagehand/models/session_execute_params.rb +26 -2
  11. data/lib/stagehand/models/session_extract_params.rb +9 -1
  12. data/lib/stagehand/models/session_navigate_params.rb +9 -1
  13. data/lib/stagehand/models/session_observe_params.rb +69 -2
  14. data/lib/stagehand/models/session_replay_params.rb +9 -1
  15. data/lib/stagehand/models/session_start_params.rb +7 -1
  16. data/lib/stagehand/models/stream_event.rb +2 -1
  17. data/lib/stagehand/version.rb +1 -1
  18. data/rbi/stagehand/internal/util.rbi +20 -0
  19. data/rbi/stagehand/models/model_config.rbi +11 -0
  20. data/rbi/stagehand/models/session_act_params.rbi +144 -6
  21. data/rbi/stagehand/models/session_end_params.rbi +8 -0
  22. data/rbi/stagehand/models/session_execute_params.rbi +33 -3
  23. data/rbi/stagehand/models/session_extract_params.rbi +8 -0
  24. data/rbi/stagehand/models/session_navigate_params.rbi +8 -0
  25. data/rbi/stagehand/models/session_observe_params.rbi +156 -3
  26. data/rbi/stagehand/models/session_replay_params.rbi +8 -0
  27. data/rbi/stagehand/models/session_start_params.rbi +9 -0
  28. data/rbi/stagehand/models/stream_event.rbi +2 -1
  29. data/sig/stagehand/internal/util.rbs +10 -0
  30. data/sig/stagehand/models/model_config.rbs +7 -0
  31. data/sig/stagehand/models/session_act_params.rbs +56 -5
  32. data/sig/stagehand/models/session_end_params.rbs +5 -0
  33. data/sig/stagehand/models/session_execute_params.rbs +26 -3
  34. data/sig/stagehand/models/session_extract_params.rbs +5 -0
  35. data/sig/stagehand/models/session_navigate_params.rbs +5 -0
  36. data/sig/stagehand/models/session_observe_params.rbs +61 -3
  37. data/sig/stagehand/models/session_replay_params.rbs +5 -0
  38. data/sig/stagehand/models/session_start_params.rbs +7 -0
  39. metadata +2 -2
@@ -106,6 +106,16 @@ module Stagehand
106
106
  JSON_CONTENT: Regexp
107
107
  JSONL_CONTENT: Regexp
108
108
 
109
+ def encode_query_params: (
110
+ ::Hash[Symbol, top] query
111
+ ) -> ::Hash[Symbol, top]
112
+
113
+ private def write_query_param_element!: (
114
+ ::Hash[Symbol, top] collection,
115
+ String key,
116
+ top element
117
+ ) -> nil
118
+
109
119
  def self?.write_multipart_content: (
110
120
  Enumerator::Yielder y,
111
121
  val: top,
@@ -5,6 +5,7 @@ module Stagehand
5
5
  model_name: String,
6
6
  api_key: String,
7
7
  base_url: String,
8
+ headers: ::Hash[Symbol, String],
8
9
  provider: Stagehand::Models::ModelConfig::provider
9
10
  }
10
11
 
@@ -19,6 +20,10 @@ module Stagehand
19
20
 
20
21
  def base_url=: (String) -> String
21
22
 
23
+ attr_reader headers: ::Hash[Symbol, String]?
24
+
25
+ def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
26
+
22
27
  attr_reader provider: Stagehand::Models::ModelConfig::provider?
23
28
 
24
29
  def provider=: (
@@ -29,6 +34,7 @@ module Stagehand
29
34
  model_name: String,
30
35
  ?api_key: String,
31
36
  ?base_url: String,
37
+ ?headers: ::Hash[Symbol, String],
32
38
  ?provider: Stagehand::Models::ModelConfig::provider
33
39
  ) -> void
34
40
 
@@ -36,6 +42,7 @@ module Stagehand
36
42
  model_name: String,
37
43
  api_key: String,
38
44
  base_url: String,
45
+ headers: ::Hash[Symbol, String],
39
46
  provider: Stagehand::Models::ModelConfig::provider
40
47
  }
41
48
 
@@ -2,6 +2,7 @@ module Stagehand
2
2
  module Models
3
3
  type session_act_params =
4
4
  {
5
+ id: String,
5
6
  input: Stagehand::Models::SessionActParams::input,
6
7
  frame_id: String?,
7
8
  options: Stagehand::SessionActParams::Options,
@@ -13,6 +14,8 @@ module Stagehand
13
14
  extend Stagehand::Internal::Type::RequestParameters::Converter
14
15
  include Stagehand::Internal::Type::RequestParameters
15
16
 
17
+ attr_accessor id: String
18
+
16
19
  attr_accessor input: Stagehand::Models::SessionActParams::input
17
20
 
18
21
  attr_accessor frame_id: String?
@@ -30,6 +33,7 @@ module Stagehand
30
33
  ) -> Stagehand::Models::SessionActParams::x_stream_response
31
34
 
32
35
  def initialize: (
36
+ id: String,
33
37
  input: Stagehand::Models::SessionActParams::input,
34
38
  ?frame_id: String?,
35
39
  ?options: Stagehand::SessionActParams::Options,
@@ -38,6 +42,7 @@ module Stagehand
38
42
  ) -> void
39
43
 
40
44
  def to_hash: -> {
45
+ id: String,
41
46
  input: Stagehand::Models::SessionActParams::input,
42
47
  frame_id: String?,
43
48
  options: Stagehand::SessionActParams::Options,
@@ -57,7 +62,7 @@ module Stagehand
57
62
  {
58
63
  model: Stagehand::Models::SessionActParams::Options::model,
59
64
  timeout: Float,
60
- variables: ::Hash[Symbol, String]
65
+ variables: ::Hash[Symbol, Stagehand::Models::SessionActParams::Options::variable]
61
66
  }
62
67
 
63
68
  class Options < Stagehand::Internal::Type::BaseModel
@@ -71,20 +76,22 @@ module Stagehand
71
76
 
72
77
  def timeout=: (Float) -> Float
73
78
 
74
- attr_reader variables: ::Hash[Symbol, String]?
79
+ attr_reader variables: ::Hash[Symbol, Stagehand::Models::SessionActParams::Options::variable]?
75
80
 
76
- def variables=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
81
+ def variables=: (
82
+ ::Hash[Symbol, Stagehand::Models::SessionActParams::Options::variable]
83
+ ) -> ::Hash[Symbol, Stagehand::Models::SessionActParams::Options::variable]
77
84
 
78
85
  def initialize: (
79
86
  ?model: Stagehand::Models::SessionActParams::Options::model,
80
87
  ?timeout: Float,
81
- ?variables: ::Hash[Symbol, String]
88
+ ?variables: ::Hash[Symbol, Stagehand::Models::SessionActParams::Options::variable]
82
89
  ) -> void
83
90
 
84
91
  def to_hash: -> {
85
92
  model: Stagehand::Models::SessionActParams::Options::model,
86
93
  timeout: Float,
87
- variables: ::Hash[Symbol, String]
94
+ variables: ::Hash[Symbol, Stagehand::Models::SessionActParams::Options::variable]
88
95
  }
89
96
 
90
97
  type model = Stagehand::ModelConfig | String
@@ -94,6 +101,50 @@ module Stagehand
94
101
 
95
102
  def self?.variants: -> ::Array[Stagehand::Models::SessionActParams::Options::model]
96
103
  end
104
+
105
+ type variable =
106
+ String
107
+ | Float
108
+ | bool
109
+ | Stagehand::SessionActParams::Options::Variable::UnionMember3
110
+
111
+ module Variable
112
+ extend Stagehand::Internal::Type::Union
113
+
114
+ type union_member3 =
115
+ {
116
+ value: Stagehand::Models::SessionActParams::Options::Variable::UnionMember3::value,
117
+ description: String
118
+ }
119
+
120
+ class UnionMember3 < Stagehand::Internal::Type::BaseModel
121
+ attr_accessor value: Stagehand::Models::SessionActParams::Options::Variable::UnionMember3::value
122
+
123
+ attr_reader description: String?
124
+
125
+ def description=: (String) -> String
126
+
127
+ def initialize: (
128
+ value: Stagehand::Models::SessionActParams::Options::Variable::UnionMember3::value,
129
+ ?description: String
130
+ ) -> void
131
+
132
+ def to_hash: -> {
133
+ value: Stagehand::Models::SessionActParams::Options::Variable::UnionMember3::value,
134
+ description: String
135
+ }
136
+
137
+ type value = String | Float | bool
138
+
139
+ module Value
140
+ extend Stagehand::Internal::Type::Union
141
+
142
+ def self?.variants: -> ::Array[Stagehand::Models::SessionActParams::Options::Variable::UnionMember3::value]
143
+ end
144
+ end
145
+
146
+ def self?.variants: -> ::Array[Stagehand::Models::SessionActParams::Options::variable]
147
+ end
97
148
  end
98
149
 
99
150
  type x_stream_response = :true | :false
@@ -2,6 +2,7 @@ module Stagehand
2
2
  module Models
3
3
  type session_end_params =
4
4
  {
5
+ id: String,
5
6
  x_stream_response: Stagehand::Models::SessionEndParams::x_stream_response
6
7
  }
7
8
  & Stagehand::Internal::Type::request_parameters
@@ -10,6 +11,8 @@ module Stagehand
10
11
  extend Stagehand::Internal::Type::RequestParameters::Converter
11
12
  include Stagehand::Internal::Type::RequestParameters
12
13
 
14
+ attr_accessor id: String
15
+
13
16
  attr_reader x_stream_response: Stagehand::Models::SessionEndParams::x_stream_response?
14
17
 
15
18
  def x_stream_response=: (
@@ -17,11 +20,13 @@ module Stagehand
17
20
  ) -> Stagehand::Models::SessionEndParams::x_stream_response
18
21
 
19
22
  def initialize: (
23
+ id: String,
20
24
  ?x_stream_response: Stagehand::Models::SessionEndParams::x_stream_response,
21
25
  ?request_options: Stagehand::request_opts
22
26
  ) -> void
23
27
 
24
28
  def to_hash: -> {
29
+ id: String,
25
30
  x_stream_response: Stagehand::Models::SessionEndParams::x_stream_response,
26
31
  request_options: Stagehand::RequestOptions
27
32
  }
@@ -2,6 +2,7 @@ module Stagehand
2
2
  module Models
3
3
  type session_execute_params =
4
4
  {
5
+ id: String,
5
6
  agent_config: Stagehand::SessionExecuteParams::AgentConfig,
6
7
  execute_options: Stagehand::SessionExecuteParams::ExecuteOptions,
7
8
  frame_id: String?,
@@ -14,6 +15,8 @@ module Stagehand
14
15
  extend Stagehand::Internal::Type::RequestParameters::Converter
15
16
  include Stagehand::Internal::Type::RequestParameters
16
17
 
18
+ attr_accessor id: String
19
+
17
20
  attr_accessor agent_config: Stagehand::SessionExecuteParams::AgentConfig
18
21
 
19
22
  attr_accessor execute_options: Stagehand::SessionExecuteParams::ExecuteOptions
@@ -31,6 +34,7 @@ module Stagehand
31
34
  ) -> Stagehand::Models::SessionExecuteParams::x_stream_response
32
35
 
33
36
  def initialize: (
37
+ id: String,
34
38
  agent_config: Stagehand::SessionExecuteParams::AgentConfig,
35
39
  execute_options: Stagehand::SessionExecuteParams::ExecuteOptions,
36
40
  ?frame_id: String?,
@@ -40,6 +44,7 @@ module Stagehand
40
44
  ) -> void
41
45
 
42
46
  def to_hash: -> {
47
+ id: String,
43
48
  agent_config: Stagehand::SessionExecuteParams::AgentConfig,
44
49
  execute_options: Stagehand::SessionExecuteParams::ExecuteOptions,
45
50
  frame_id: String?,
@@ -153,7 +158,13 @@ module Stagehand
153
158
  end
154
159
 
155
160
  type execute_options =
156
- { instruction: String, highlight_cursor: bool, max_steps: Float }
161
+ {
162
+ instruction: String,
163
+ highlight_cursor: bool,
164
+ max_steps: Float,
165
+ tool_timeout: Float,
166
+ use_search: bool
167
+ }
157
168
 
158
169
  class ExecuteOptions < Stagehand::Internal::Type::BaseModel
159
170
  attr_accessor instruction: String
@@ -166,16 +177,28 @@ module Stagehand
166
177
 
167
178
  def max_steps=: (Float) -> Float
168
179
 
180
+ attr_reader tool_timeout: Float?
181
+
182
+ def tool_timeout=: (Float) -> Float
183
+
184
+ attr_reader use_search: bool?
185
+
186
+ def use_search=: (bool) -> bool
187
+
169
188
  def initialize: (
170
189
  instruction: String,
171
190
  ?highlight_cursor: bool,
172
- ?max_steps: Float
191
+ ?max_steps: Float,
192
+ ?tool_timeout: Float,
193
+ ?use_search: bool
173
194
  ) -> void
174
195
 
175
196
  def to_hash: -> {
176
197
  instruction: String,
177
198
  highlight_cursor: bool,
178
- max_steps: Float
199
+ max_steps: Float,
200
+ tool_timeout: Float,
201
+ use_search: bool
179
202
  }
180
203
  end
181
204
 
@@ -2,6 +2,7 @@ module Stagehand
2
2
  module Models
3
3
  type session_extract_params =
4
4
  {
5
+ id: String,
5
6
  frame_id: String?,
6
7
  instruction: String,
7
8
  options: Stagehand::SessionExtractParams::Options,
@@ -14,6 +15,8 @@ module Stagehand
14
15
  extend Stagehand::Internal::Type::RequestParameters::Converter
15
16
  include Stagehand::Internal::Type::RequestParameters
16
17
 
18
+ attr_accessor id: String
19
+
17
20
  attr_accessor frame_id: String?
18
21
 
19
22
  attr_reader instruction: String?
@@ -37,6 +40,7 @@ module Stagehand
37
40
  ) -> Stagehand::Models::SessionExtractParams::x_stream_response
38
41
 
39
42
  def initialize: (
43
+ id: String,
40
44
  ?frame_id: String?,
41
45
  ?instruction: String,
42
46
  ?options: Stagehand::SessionExtractParams::Options,
@@ -46,6 +50,7 @@ module Stagehand
46
50
  ) -> void
47
51
 
48
52
  def to_hash: -> {
53
+ id: String,
49
54
  frame_id: String?,
50
55
  instruction: String,
51
56
  options: Stagehand::SessionExtractParams::Options,
@@ -2,6 +2,7 @@ module Stagehand
2
2
  module Models
3
3
  type session_navigate_params =
4
4
  {
5
+ id: String,
5
6
  url: String,
6
7
  frame_id: String?,
7
8
  options: Stagehand::SessionNavigateParams::Options,
@@ -14,6 +15,8 @@ module Stagehand
14
15
  extend Stagehand::Internal::Type::RequestParameters::Converter
15
16
  include Stagehand::Internal::Type::RequestParameters
16
17
 
18
+ attr_accessor id: String
19
+
17
20
  attr_accessor url: String
18
21
 
19
22
  attr_accessor frame_id: String?
@@ -35,6 +38,7 @@ module Stagehand
35
38
  ) -> Stagehand::Models::SessionNavigateParams::x_stream_response
36
39
 
37
40
  def initialize: (
41
+ id: String,
38
42
  url: String,
39
43
  ?frame_id: String?,
40
44
  ?options: Stagehand::SessionNavigateParams::Options,
@@ -44,6 +48,7 @@ module Stagehand
44
48
  ) -> void
45
49
 
46
50
  def to_hash: -> {
51
+ id: String,
47
52
  url: String,
48
53
  frame_id: String?,
49
54
  options: Stagehand::SessionNavigateParams::Options,
@@ -2,6 +2,7 @@ module Stagehand
2
2
  module Models
3
3
  type session_observe_params =
4
4
  {
5
+ id: String,
5
6
  frame_id: String?,
6
7
  instruction: String,
7
8
  options: Stagehand::SessionObserveParams::Options,
@@ -13,6 +14,8 @@ module Stagehand
13
14
  extend Stagehand::Internal::Type::RequestParameters::Converter
14
15
  include Stagehand::Internal::Type::RequestParameters
15
16
 
17
+ attr_accessor id: String
18
+
16
19
  attr_accessor frame_id: String?
17
20
 
18
21
  attr_reader instruction: String?
@@ -32,6 +35,7 @@ module Stagehand
32
35
  ) -> Stagehand::Models::SessionObserveParams::x_stream_response
33
36
 
34
37
  def initialize: (
38
+ id: String,
35
39
  ?frame_id: String?,
36
40
  ?instruction: String,
37
41
  ?options: Stagehand::SessionObserveParams::Options,
@@ -40,6 +44,7 @@ module Stagehand
40
44
  ) -> void
41
45
 
42
46
  def to_hash: -> {
47
+ id: String,
43
48
  frame_id: String?,
44
49
  instruction: String,
45
50
  options: Stagehand::SessionObserveParams::Options,
@@ -51,7 +56,8 @@ module Stagehand
51
56
  {
52
57
  model: Stagehand::Models::SessionObserveParams::Options::model,
53
58
  selector: String,
54
- timeout: Float
59
+ timeout: Float,
60
+ variables: ::Hash[Symbol, Stagehand::Models::SessionObserveParams::Options::variable]
55
61
  }
56
62
 
57
63
  class Options < Stagehand::Internal::Type::BaseModel
@@ -69,16 +75,24 @@ module Stagehand
69
75
 
70
76
  def timeout=: (Float) -> Float
71
77
 
78
+ attr_reader variables: ::Hash[Symbol, Stagehand::Models::SessionObserveParams::Options::variable]?
79
+
80
+ def variables=: (
81
+ ::Hash[Symbol, Stagehand::Models::SessionObserveParams::Options::variable]
82
+ ) -> ::Hash[Symbol, Stagehand::Models::SessionObserveParams::Options::variable]
83
+
72
84
  def initialize: (
73
85
  ?model: Stagehand::Models::SessionObserveParams::Options::model,
74
86
  ?selector: String,
75
- ?timeout: Float
87
+ ?timeout: Float,
88
+ ?variables: ::Hash[Symbol, Stagehand::Models::SessionObserveParams::Options::variable]
76
89
  ) -> void
77
90
 
78
91
  def to_hash: -> {
79
92
  model: Stagehand::Models::SessionObserveParams::Options::model,
80
93
  selector: String,
81
- timeout: Float
94
+ timeout: Float,
95
+ variables: ::Hash[Symbol, Stagehand::Models::SessionObserveParams::Options::variable]
82
96
  }
83
97
 
84
98
  type model = Stagehand::ModelConfig | String
@@ -88,6 +102,50 @@ module Stagehand
88
102
 
89
103
  def self?.variants: -> ::Array[Stagehand::Models::SessionObserveParams::Options::model]
90
104
  end
105
+
106
+ type variable =
107
+ String
108
+ | Float
109
+ | bool
110
+ | Stagehand::SessionObserveParams::Options::Variable::UnionMember3
111
+
112
+ module Variable
113
+ extend Stagehand::Internal::Type::Union
114
+
115
+ type union_member3 =
116
+ {
117
+ value: Stagehand::Models::SessionObserveParams::Options::Variable::UnionMember3::value,
118
+ description: String
119
+ }
120
+
121
+ class UnionMember3 < Stagehand::Internal::Type::BaseModel
122
+ attr_accessor value: Stagehand::Models::SessionObserveParams::Options::Variable::UnionMember3::value
123
+
124
+ attr_reader description: String?
125
+
126
+ def description=: (String) -> String
127
+
128
+ def initialize: (
129
+ value: Stagehand::Models::SessionObserveParams::Options::Variable::UnionMember3::value,
130
+ ?description: String
131
+ ) -> void
132
+
133
+ def to_hash: -> {
134
+ value: Stagehand::Models::SessionObserveParams::Options::Variable::UnionMember3::value,
135
+ description: String
136
+ }
137
+
138
+ type value = String | Float | bool
139
+
140
+ module Value
141
+ extend Stagehand::Internal::Type::Union
142
+
143
+ def self?.variants: -> ::Array[Stagehand::Models::SessionObserveParams::Options::Variable::UnionMember3::value]
144
+ end
145
+ end
146
+
147
+ def self?.variants: -> ::Array[Stagehand::Models::SessionObserveParams::Options::variable]
148
+ end
91
149
  end
92
150
 
93
151
  type x_stream_response = :true | :false
@@ -2,6 +2,7 @@ module Stagehand
2
2
  module Models
3
3
  type session_replay_params =
4
4
  {
5
+ id: String,
5
6
  x_stream_response: Stagehand::Models::SessionReplayParams::x_stream_response
6
7
  }
7
8
  & Stagehand::Internal::Type::request_parameters
@@ -10,6 +11,8 @@ module Stagehand
10
11
  extend Stagehand::Internal::Type::RequestParameters::Converter
11
12
  include Stagehand::Internal::Type::RequestParameters
12
13
 
14
+ attr_accessor id: String
15
+
13
16
  attr_reader x_stream_response: Stagehand::Models::SessionReplayParams::x_stream_response?
14
17
 
15
18
  def x_stream_response=: (
@@ -17,11 +20,13 @@ module Stagehand
17
20
  ) -> Stagehand::Models::SessionReplayParams::x_stream_response
18
21
 
19
22
  def initialize: (
23
+ id: String,
20
24
  ?x_stream_response: Stagehand::Models::SessionReplayParams::x_stream_response,
21
25
  ?request_options: Stagehand::request_opts
22
26
  ) -> void
23
27
 
24
28
  def to_hash: -> {
29
+ id: String,
25
30
  x_stream_response: Stagehand::Models::SessionReplayParams::x_stream_response,
26
31
  request_options: Stagehand::RequestOptions
27
32
  }
@@ -147,6 +147,7 @@ module Stagehand
147
147
  {
148
148
  accept_downloads: bool,
149
149
  args: ::Array[String],
150
+ cdp_headers: ::Hash[Symbol, String],
150
151
  cdp_url: String,
151
152
  chromium_sandbox: bool,
152
153
  connect_timeout_ms: Float,
@@ -175,6 +176,10 @@ module Stagehand
175
176
 
176
177
  def args=: (::Array[String]) -> ::Array[String]
177
178
 
179
+ attr_reader cdp_headers: ::Hash[Symbol, String]?
180
+
181
+ def cdp_headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
182
+
178
183
  attr_reader cdp_url: String?
179
184
 
180
185
  def cdp_url=: (String) -> String
@@ -252,6 +257,7 @@ module Stagehand
252
257
  def initialize: (
253
258
  ?accept_downloads: bool,
254
259
  ?args: ::Array[String],
260
+ ?cdp_headers: ::Hash[Symbol, String],
255
261
  ?cdp_url: String,
256
262
  ?chromium_sandbox: bool,
257
263
  ?connect_timeout_ms: Float,
@@ -274,6 +280,7 @@ module Stagehand
274
280
  def to_hash: -> {
275
281
  accept_downloads: bool,
276
282
  args: ::Array[String],
283
+ cdp_headers: ::Hash[Symbol, String],
277
284
  cdp_url: String,
278
285
  chromium_sandbox: bool,
279
286
  connect_timeout_ms: Float,
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.7.0
4
+ version: 3.18.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-02-25 00:00:00.000000000 Z
11
+ date: 2026-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi