stagehand 0.0.4 → 3.5.2
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 +7 -0
- data/.ignore +2 -0
- data/CHANGELOG.md +185 -0
- data/README.md +394 -31
- data/SECURITY.md +23 -0
- data/lib/stagehand/client.rb +123 -4
- data/lib/stagehand/errors.rb +228 -0
- data/lib/stagehand/file_part.rb +58 -0
- data/lib/stagehand/internal/stream.rb +56 -0
- data/lib/stagehand/internal/transport/base_client.rb +575 -0
- data/lib/stagehand/internal/transport/pooled_net_requester.rb +210 -0
- data/lib/stagehand/internal/type/array_of.rb +168 -0
- data/lib/stagehand/internal/type/base_model.rb +531 -0
- data/lib/stagehand/internal/type/base_page.rb +55 -0
- data/lib/stagehand/internal/type/base_stream.rb +83 -0
- data/lib/stagehand/internal/type/boolean.rb +77 -0
- data/lib/stagehand/internal/type/converter.rb +327 -0
- data/lib/stagehand/internal/type/enum.rb +131 -0
- data/lib/stagehand/internal/type/file_input.rb +111 -0
- data/lib/stagehand/internal/type/hash_of.rb +188 -0
- data/lib/stagehand/internal/type/request_parameters.rb +42 -0
- data/lib/stagehand/internal/type/union.rb +237 -0
- data/lib/stagehand/internal/type/unknown.rb +81 -0
- data/lib/stagehand/internal/util.rb +920 -0
- data/lib/stagehand/internal.rb +20 -0
- data/lib/stagehand/local.rb +439 -0
- data/lib/stagehand/models/action.rb +50 -0
- data/lib/stagehand/models/model_config.rb +55 -0
- data/lib/stagehand/models/session_act_params.rb +112 -0
- data/lib/stagehand/models/session_act_response.rb +127 -0
- data/lib/stagehand/models/session_end_params.rb +33 -0
- data/lib/stagehand/models/session_end_response.rb +17 -0
- data/lib/stagehand/models/session_execute_params.rb +212 -0
- data/lib/stagehand/models/session_execute_response.rb +212 -0
- data/lib/stagehand/models/session_extract_params.rb +107 -0
- data/lib/stagehand/models/session_extract_response.rb +46 -0
- data/lib/stagehand/models/session_navigate_params.rb +107 -0
- data/lib/stagehand/models/session_navigate_response.rb +44 -0
- data/lib/stagehand/models/session_observe_params.rb +99 -0
- data/lib/stagehand/models/session_observe_response.rb +91 -0
- data/lib/stagehand/models/session_replay_params.rb +33 -0
- data/lib/stagehand/models/session_replay_response.rb +100 -0
- data/lib/stagehand/models/session_start_params.rb +762 -0
- data/lib/stagehand/models/session_start_response.rb +55 -0
- data/lib/stagehand/models/stream_event.rb +120 -0
- data/lib/stagehand/models.rb +63 -0
- data/lib/stagehand/request_options.rb +77 -0
- data/lib/stagehand/resources/sessions.rb +488 -0
- data/lib/stagehand/version.rb +3 -1
- data/lib/stagehand.rb +74 -29
- data/manifest.yaml +17 -0
- data/rbi/stagehand/client.rbi +89 -0
- data/rbi/stagehand/errors.rbi +205 -0
- data/rbi/stagehand/file_part.rbi +37 -0
- data/rbi/stagehand/internal/stream.rbi +20 -0
- data/rbi/stagehand/internal/transport/base_client.rbi +314 -0
- data/rbi/stagehand/internal/transport/pooled_net_requester.rbi +83 -0
- data/rbi/stagehand/internal/type/array_of.rbi +104 -0
- data/rbi/stagehand/internal/type/base_model.rbi +308 -0
- data/rbi/stagehand/internal/type/base_page.rbi +42 -0
- data/rbi/stagehand/internal/type/base_stream.rbi +75 -0
- data/rbi/stagehand/internal/type/boolean.rbi +58 -0
- data/rbi/stagehand/internal/type/converter.rbi +216 -0
- data/rbi/stagehand/internal/type/enum.rbi +82 -0
- data/rbi/stagehand/internal/type/file_input.rbi +59 -0
- data/rbi/stagehand/internal/type/hash_of.rbi +104 -0
- data/rbi/stagehand/internal/type/request_parameters.rbi +29 -0
- data/rbi/stagehand/internal/type/union.rbi +128 -0
- data/rbi/stagehand/internal/type/unknown.rbi +58 -0
- data/rbi/stagehand/internal/util.rbi +487 -0
- data/rbi/stagehand/internal.rbi +18 -0
- data/rbi/stagehand/models/action.rbi +77 -0
- data/rbi/stagehand/models/model_config.rbi +94 -0
- data/rbi/stagehand/models/session_act_params.rbi +204 -0
- data/rbi/stagehand/models/session_act_response.rbi +250 -0
- data/rbi/stagehand/models/session_end_params.rbi +87 -0
- data/rbi/stagehand/models/session_end_response.rbi +30 -0
- data/rbi/stagehand/models/session_execute_params.rbi +440 -0
- data/rbi/stagehand/models/session_execute_response.rbi +414 -0
- data/rbi/stagehand/models/session_extract_params.rbi +209 -0
- data/rbi/stagehand/models/session_extract_response.rbi +91 -0
- data/rbi/stagehand/models/session_navigate_params.rbi +240 -0
- data/rbi/stagehand/models/session_navigate_response.rbi +91 -0
- data/rbi/stagehand/models/session_observe_params.rbi +198 -0
- data/rbi/stagehand/models/session_observe_response.rbi +184 -0
- data/rbi/stagehand/models/session_replay_params.rbi +89 -0
- data/rbi/stagehand/models/session_replay_response.rbi +286 -0
- data/rbi/stagehand/models/session_start_params.rbi +1703 -0
- data/rbi/stagehand/models/session_start_response.rbi +102 -0
- data/rbi/stagehand/models/stream_event.rbi +237 -0
- data/rbi/stagehand/models.rbi +25 -0
- data/rbi/stagehand/request_options.rbi +59 -0
- data/rbi/stagehand/resources/sessions.rbi +421 -0
- data/rbi/stagehand/version.rbi +5 -0
- data/sig/stagehand/client.rbs +41 -0
- data/sig/stagehand/errors.rbs +117 -0
- data/sig/stagehand/file_part.rbs +21 -0
- data/sig/stagehand/internal/stream.rbs +9 -0
- data/sig/stagehand/internal/transport/base_client.rbs +133 -0
- data/sig/stagehand/internal/transport/pooled_net_requester.rbs +48 -0
- data/sig/stagehand/internal/type/array_of.rbs +48 -0
- data/sig/stagehand/internal/type/base_model.rbs +102 -0
- data/sig/stagehand/internal/type/base_page.rbs +24 -0
- data/sig/stagehand/internal/type/base_stream.rbs +38 -0
- data/sig/stagehand/internal/type/boolean.rbs +26 -0
- data/sig/stagehand/internal/type/converter.rbs +79 -0
- data/sig/stagehand/internal/type/enum.rbs +32 -0
- data/sig/stagehand/internal/type/file_input.rbs +25 -0
- data/sig/stagehand/internal/type/hash_of.rbs +48 -0
- data/sig/stagehand/internal/type/request_parameters.rbs +19 -0
- data/sig/stagehand/internal/type/union.rbs +52 -0
- data/sig/stagehand/internal/type/unknown.rbs +26 -0
- data/sig/stagehand/internal/util.rbs +185 -0
- data/sig/stagehand/internal.rbs +9 -0
- data/sig/stagehand/models/action.rbs +46 -0
- data/sig/stagehand/models/model_config.rbs +56 -0
- data/sig/stagehand/models/session_act_params.rbs +111 -0
- data/sig/stagehand/models/session_act_response.rbs +121 -0
- data/sig/stagehand/models/session_end_params.rbs +41 -0
- data/sig/stagehand/models/session_end_response.rbs +13 -0
- data/sig/stagehand/models/session_execute_params.rbs +193 -0
- data/sig/stagehand/models/session_execute_response.rbs +215 -0
- data/sig/stagehand/models/session_extract_params.rbs +112 -0
- data/sig/stagehand/models/session_extract_response.rbs +36 -0
- data/sig/stagehand/models/session_navigate_params.rbs +114 -0
- data/sig/stagehand/models/session_navigate_response.rbs +36 -0
- data/sig/stagehand/models/session_observe_params.rbs +105 -0
- data/sig/stagehand/models/session_observe_response.rbs +89 -0
- data/sig/stagehand/models/session_replay_params.rbs +41 -0
- data/sig/stagehand/models/session_replay_response.rbs +137 -0
- data/sig/stagehand/models/session_start_params.rbs +866 -0
- data/sig/stagehand/models/session_start_response.rbs +44 -0
- data/sig/stagehand/models/stream_event.rbs +109 -0
- data/sig/stagehand/models.rbs +23 -0
- data/sig/stagehand/request_options.rbs +34 -0
- data/sig/stagehand/resources/sessions.rbs +121 -0
- data/sig/stagehand/version.rbs +3 -0
- metadata +170 -54
- data/.gitignore +0 -16
- data/Gemfile +0 -4
- data/Rakefile +0 -10
- data/lib/stagehand/client/oauth.rb +0 -32
- data/lib/stagehand/client/user.rb +0 -10
- data/lib/stagehand/rack/middleware.rb +0 -33
- data/lib/stagehand/railtie.rb +0 -19
- data/spec/spec_helper.rb +0 -7
- data/spec/stagehand_spec.rb +0 -44
- data/stagehand.gemspec +0 -25
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Stagehand
|
|
4
|
+
module Models
|
|
5
|
+
class SessionNavigateParams < Stagehand::Internal::Type::BaseModel
|
|
6
|
+
extend Stagehand::Internal::Type::RequestParameters::Converter
|
|
7
|
+
include Stagehand::Internal::Type::RequestParameters
|
|
8
|
+
|
|
9
|
+
OrHash =
|
|
10
|
+
T.type_alias do
|
|
11
|
+
T.any(Stagehand::SessionNavigateParams, Stagehand::Internal::AnyHash)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# URL to navigate to
|
|
15
|
+
sig { returns(String) }
|
|
16
|
+
attr_accessor :url
|
|
17
|
+
|
|
18
|
+
# Target frame ID for the navigation
|
|
19
|
+
sig { returns(T.nilable(String)) }
|
|
20
|
+
attr_accessor :frame_id
|
|
21
|
+
|
|
22
|
+
sig { returns(T.nilable(Stagehand::SessionNavigateParams::Options)) }
|
|
23
|
+
attr_reader :options
|
|
24
|
+
|
|
25
|
+
sig do
|
|
26
|
+
params(options: Stagehand::SessionNavigateParams::Options::OrHash).void
|
|
27
|
+
end
|
|
28
|
+
attr_writer :options
|
|
29
|
+
|
|
30
|
+
# Whether to stream the response via SSE
|
|
31
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
32
|
+
attr_reader :stream_response
|
|
33
|
+
|
|
34
|
+
sig { params(stream_response: T::Boolean).void }
|
|
35
|
+
attr_writer :stream_response
|
|
36
|
+
|
|
37
|
+
# Whether to stream the response via SSE
|
|
38
|
+
sig do
|
|
39
|
+
returns(
|
|
40
|
+
T.nilable(Stagehand::SessionNavigateParams::XStreamResponse::OrSymbol)
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
attr_reader :x_stream_response
|
|
44
|
+
|
|
45
|
+
sig do
|
|
46
|
+
params(
|
|
47
|
+
x_stream_response:
|
|
48
|
+
Stagehand::SessionNavigateParams::XStreamResponse::OrSymbol
|
|
49
|
+
).void
|
|
50
|
+
end
|
|
51
|
+
attr_writer :x_stream_response
|
|
52
|
+
|
|
53
|
+
sig do
|
|
54
|
+
params(
|
|
55
|
+
url: String,
|
|
56
|
+
frame_id: T.nilable(String),
|
|
57
|
+
options: Stagehand::SessionNavigateParams::Options::OrHash,
|
|
58
|
+
stream_response: T::Boolean,
|
|
59
|
+
x_stream_response:
|
|
60
|
+
Stagehand::SessionNavigateParams::XStreamResponse::OrSymbol,
|
|
61
|
+
request_options: Stagehand::RequestOptions::OrHash
|
|
62
|
+
).returns(T.attached_class)
|
|
63
|
+
end
|
|
64
|
+
def self.new(
|
|
65
|
+
# URL to navigate to
|
|
66
|
+
url:,
|
|
67
|
+
# Target frame ID for the navigation
|
|
68
|
+
frame_id: nil,
|
|
69
|
+
options: nil,
|
|
70
|
+
# Whether to stream the response via SSE
|
|
71
|
+
stream_response: nil,
|
|
72
|
+
# Whether to stream the response via SSE
|
|
73
|
+
x_stream_response: nil,
|
|
74
|
+
request_options: {}
|
|
75
|
+
)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
sig do
|
|
79
|
+
override.returns(
|
|
80
|
+
{
|
|
81
|
+
url: String,
|
|
82
|
+
frame_id: T.nilable(String),
|
|
83
|
+
options: Stagehand::SessionNavigateParams::Options,
|
|
84
|
+
stream_response: T::Boolean,
|
|
85
|
+
x_stream_response:
|
|
86
|
+
Stagehand::SessionNavigateParams::XStreamResponse::OrSymbol,
|
|
87
|
+
request_options: Stagehand::RequestOptions
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
end
|
|
91
|
+
def to_hash
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
class Options < Stagehand::Internal::Type::BaseModel
|
|
95
|
+
OrHash =
|
|
96
|
+
T.type_alias do
|
|
97
|
+
T.any(
|
|
98
|
+
Stagehand::SessionNavigateParams::Options,
|
|
99
|
+
Stagehand::Internal::AnyHash
|
|
100
|
+
)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Referer header to send with the request
|
|
104
|
+
sig { returns(T.nilable(String)) }
|
|
105
|
+
attr_reader :referer
|
|
106
|
+
|
|
107
|
+
sig { params(referer: String).void }
|
|
108
|
+
attr_writer :referer
|
|
109
|
+
|
|
110
|
+
# Timeout in ms for the navigation
|
|
111
|
+
sig { returns(T.nilable(Float)) }
|
|
112
|
+
attr_reader :timeout
|
|
113
|
+
|
|
114
|
+
sig { params(timeout: Float).void }
|
|
115
|
+
attr_writer :timeout
|
|
116
|
+
|
|
117
|
+
# When to consider navigation complete
|
|
118
|
+
sig do
|
|
119
|
+
returns(
|
|
120
|
+
T.nilable(
|
|
121
|
+
Stagehand::SessionNavigateParams::Options::WaitUntil::OrSymbol
|
|
122
|
+
)
|
|
123
|
+
)
|
|
124
|
+
end
|
|
125
|
+
attr_reader :wait_until
|
|
126
|
+
|
|
127
|
+
sig do
|
|
128
|
+
params(
|
|
129
|
+
wait_until:
|
|
130
|
+
Stagehand::SessionNavigateParams::Options::WaitUntil::OrSymbol
|
|
131
|
+
).void
|
|
132
|
+
end
|
|
133
|
+
attr_writer :wait_until
|
|
134
|
+
|
|
135
|
+
sig do
|
|
136
|
+
params(
|
|
137
|
+
referer: String,
|
|
138
|
+
timeout: Float,
|
|
139
|
+
wait_until:
|
|
140
|
+
Stagehand::SessionNavigateParams::Options::WaitUntil::OrSymbol
|
|
141
|
+
).returns(T.attached_class)
|
|
142
|
+
end
|
|
143
|
+
def self.new(
|
|
144
|
+
# Referer header to send with the request
|
|
145
|
+
referer: nil,
|
|
146
|
+
# Timeout in ms for the navigation
|
|
147
|
+
timeout: nil,
|
|
148
|
+
# When to consider navigation complete
|
|
149
|
+
wait_until: nil
|
|
150
|
+
)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
sig do
|
|
154
|
+
override.returns(
|
|
155
|
+
{
|
|
156
|
+
referer: String,
|
|
157
|
+
timeout: Float,
|
|
158
|
+
wait_until:
|
|
159
|
+
Stagehand::SessionNavigateParams::Options::WaitUntil::OrSymbol
|
|
160
|
+
}
|
|
161
|
+
)
|
|
162
|
+
end
|
|
163
|
+
def to_hash
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# When to consider navigation complete
|
|
167
|
+
module WaitUntil
|
|
168
|
+
extend Stagehand::Internal::Type::Enum
|
|
169
|
+
|
|
170
|
+
TaggedSymbol =
|
|
171
|
+
T.type_alias do
|
|
172
|
+
T.all(
|
|
173
|
+
Symbol,
|
|
174
|
+
Stagehand::SessionNavigateParams::Options::WaitUntil
|
|
175
|
+
)
|
|
176
|
+
end
|
|
177
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
178
|
+
|
|
179
|
+
LOAD =
|
|
180
|
+
T.let(
|
|
181
|
+
:load,
|
|
182
|
+
Stagehand::SessionNavigateParams::Options::WaitUntil::TaggedSymbol
|
|
183
|
+
)
|
|
184
|
+
DOMCONTENTLOADED =
|
|
185
|
+
T.let(
|
|
186
|
+
:domcontentloaded,
|
|
187
|
+
Stagehand::SessionNavigateParams::Options::WaitUntil::TaggedSymbol
|
|
188
|
+
)
|
|
189
|
+
NETWORKIDLE =
|
|
190
|
+
T.let(
|
|
191
|
+
:networkidle,
|
|
192
|
+
Stagehand::SessionNavigateParams::Options::WaitUntil::TaggedSymbol
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
sig do
|
|
196
|
+
override.returns(
|
|
197
|
+
T::Array[
|
|
198
|
+
Stagehand::SessionNavigateParams::Options::WaitUntil::TaggedSymbol
|
|
199
|
+
]
|
|
200
|
+
)
|
|
201
|
+
end
|
|
202
|
+
def self.values
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
# Whether to stream the response via SSE
|
|
208
|
+
module XStreamResponse
|
|
209
|
+
extend Stagehand::Internal::Type::Enum
|
|
210
|
+
|
|
211
|
+
TaggedSymbol =
|
|
212
|
+
T.type_alias do
|
|
213
|
+
T.all(Symbol, Stagehand::SessionNavigateParams::XStreamResponse)
|
|
214
|
+
end
|
|
215
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
216
|
+
|
|
217
|
+
TRUE =
|
|
218
|
+
T.let(
|
|
219
|
+
:true,
|
|
220
|
+
Stagehand::SessionNavigateParams::XStreamResponse::TaggedSymbol
|
|
221
|
+
)
|
|
222
|
+
FALSE =
|
|
223
|
+
T.let(
|
|
224
|
+
:false,
|
|
225
|
+
Stagehand::SessionNavigateParams::XStreamResponse::TaggedSymbol
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
sig do
|
|
229
|
+
override.returns(
|
|
230
|
+
T::Array[
|
|
231
|
+
Stagehand::SessionNavigateParams::XStreamResponse::TaggedSymbol
|
|
232
|
+
]
|
|
233
|
+
)
|
|
234
|
+
end
|
|
235
|
+
def self.values
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Stagehand
|
|
4
|
+
module Models
|
|
5
|
+
class SessionNavigateResponse < Stagehand::Internal::Type::BaseModel
|
|
6
|
+
OrHash =
|
|
7
|
+
T.type_alias do
|
|
8
|
+
T.any(
|
|
9
|
+
Stagehand::Models::SessionNavigateResponse,
|
|
10
|
+
Stagehand::Internal::AnyHash
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
sig { returns(Stagehand::Models::SessionNavigateResponse::Data) }
|
|
15
|
+
attr_reader :data
|
|
16
|
+
|
|
17
|
+
sig do
|
|
18
|
+
params(
|
|
19
|
+
data: Stagehand::Models::SessionNavigateResponse::Data::OrHash
|
|
20
|
+
).void
|
|
21
|
+
end
|
|
22
|
+
attr_writer :data
|
|
23
|
+
|
|
24
|
+
# Indicates whether the request was successful
|
|
25
|
+
sig { returns(T::Boolean) }
|
|
26
|
+
attr_accessor :success
|
|
27
|
+
|
|
28
|
+
sig do
|
|
29
|
+
params(
|
|
30
|
+
data: Stagehand::Models::SessionNavigateResponse::Data::OrHash,
|
|
31
|
+
success: T::Boolean
|
|
32
|
+
).returns(T.attached_class)
|
|
33
|
+
end
|
|
34
|
+
def self.new(
|
|
35
|
+
data:,
|
|
36
|
+
# Indicates whether the request was successful
|
|
37
|
+
success:
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
sig do
|
|
42
|
+
override.returns(
|
|
43
|
+
{
|
|
44
|
+
data: Stagehand::Models::SessionNavigateResponse::Data,
|
|
45
|
+
success: T::Boolean
|
|
46
|
+
}
|
|
47
|
+
)
|
|
48
|
+
end
|
|
49
|
+
def to_hash
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
class Data < Stagehand::Internal::Type::BaseModel
|
|
53
|
+
OrHash =
|
|
54
|
+
T.type_alias do
|
|
55
|
+
T.any(
|
|
56
|
+
Stagehand::Models::SessionNavigateResponse::Data,
|
|
57
|
+
Stagehand::Internal::AnyHash
|
|
58
|
+
)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Navigation response (Playwright Response object or null)
|
|
62
|
+
sig { returns(T.anything) }
|
|
63
|
+
attr_accessor :result
|
|
64
|
+
|
|
65
|
+
# Action ID for tracking
|
|
66
|
+
sig { returns(T.nilable(String)) }
|
|
67
|
+
attr_reader :action_id
|
|
68
|
+
|
|
69
|
+
sig { params(action_id: String).void }
|
|
70
|
+
attr_writer :action_id
|
|
71
|
+
|
|
72
|
+
sig do
|
|
73
|
+
params(result: T.anything, action_id: String).returns(
|
|
74
|
+
T.attached_class
|
|
75
|
+
)
|
|
76
|
+
end
|
|
77
|
+
def self.new(
|
|
78
|
+
# Navigation response (Playwright Response object or null)
|
|
79
|
+
result:,
|
|
80
|
+
# Action ID for tracking
|
|
81
|
+
action_id: nil
|
|
82
|
+
)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
sig { override.returns({ result: T.anything, action_id: String }) }
|
|
86
|
+
def to_hash
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Stagehand
|
|
4
|
+
module Models
|
|
5
|
+
class SessionObserveParams < Stagehand::Internal::Type::BaseModel
|
|
6
|
+
extend Stagehand::Internal::Type::RequestParameters::Converter
|
|
7
|
+
include Stagehand::Internal::Type::RequestParameters
|
|
8
|
+
|
|
9
|
+
OrHash =
|
|
10
|
+
T.type_alias do
|
|
11
|
+
T.any(Stagehand::SessionObserveParams, Stagehand::Internal::AnyHash)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Target frame ID for the observation
|
|
15
|
+
sig { returns(T.nilable(String)) }
|
|
16
|
+
attr_accessor :frame_id
|
|
17
|
+
|
|
18
|
+
# Natural language instruction for what actions to find
|
|
19
|
+
sig { returns(T.nilable(String)) }
|
|
20
|
+
attr_reader :instruction
|
|
21
|
+
|
|
22
|
+
sig { params(instruction: String).void }
|
|
23
|
+
attr_writer :instruction
|
|
24
|
+
|
|
25
|
+
sig { returns(T.nilable(Stagehand::SessionObserveParams::Options)) }
|
|
26
|
+
attr_reader :options
|
|
27
|
+
|
|
28
|
+
sig do
|
|
29
|
+
params(options: Stagehand::SessionObserveParams::Options::OrHash).void
|
|
30
|
+
end
|
|
31
|
+
attr_writer :options
|
|
32
|
+
|
|
33
|
+
# Whether to stream the response via SSE
|
|
34
|
+
sig do
|
|
35
|
+
returns(
|
|
36
|
+
T.nilable(Stagehand::SessionObserveParams::XStreamResponse::OrSymbol)
|
|
37
|
+
)
|
|
38
|
+
end
|
|
39
|
+
attr_reader :x_stream_response
|
|
40
|
+
|
|
41
|
+
sig do
|
|
42
|
+
params(
|
|
43
|
+
x_stream_response:
|
|
44
|
+
Stagehand::SessionObserveParams::XStreamResponse::OrSymbol
|
|
45
|
+
).void
|
|
46
|
+
end
|
|
47
|
+
attr_writer :x_stream_response
|
|
48
|
+
|
|
49
|
+
sig do
|
|
50
|
+
params(
|
|
51
|
+
frame_id: T.nilable(String),
|
|
52
|
+
instruction: String,
|
|
53
|
+
options: Stagehand::SessionObserveParams::Options::OrHash,
|
|
54
|
+
x_stream_response:
|
|
55
|
+
Stagehand::SessionObserveParams::XStreamResponse::OrSymbol,
|
|
56
|
+
request_options: Stagehand::RequestOptions::OrHash
|
|
57
|
+
).returns(T.attached_class)
|
|
58
|
+
end
|
|
59
|
+
def self.new(
|
|
60
|
+
# Target frame ID for the observation
|
|
61
|
+
frame_id: nil,
|
|
62
|
+
# Natural language instruction for what actions to find
|
|
63
|
+
instruction: nil,
|
|
64
|
+
options: nil,
|
|
65
|
+
# Whether to stream the response via SSE
|
|
66
|
+
x_stream_response: nil,
|
|
67
|
+
request_options: {}
|
|
68
|
+
)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
sig do
|
|
72
|
+
override.returns(
|
|
73
|
+
{
|
|
74
|
+
frame_id: T.nilable(String),
|
|
75
|
+
instruction: String,
|
|
76
|
+
options: Stagehand::SessionObserveParams::Options,
|
|
77
|
+
x_stream_response:
|
|
78
|
+
Stagehand::SessionObserveParams::XStreamResponse::OrSymbol,
|
|
79
|
+
request_options: Stagehand::RequestOptions
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
end
|
|
83
|
+
def to_hash
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
class Options < Stagehand::Internal::Type::BaseModel
|
|
87
|
+
OrHash =
|
|
88
|
+
T.type_alias do
|
|
89
|
+
T.any(
|
|
90
|
+
Stagehand::SessionObserveParams::Options,
|
|
91
|
+
Stagehand::Internal::AnyHash
|
|
92
|
+
)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
|
|
96
|
+
sig { returns(T.nilable(T.any(Stagehand::ModelConfig, String))) }
|
|
97
|
+
attr_reader :model
|
|
98
|
+
|
|
99
|
+
sig do
|
|
100
|
+
params(model: T.any(Stagehand::ModelConfig::OrHash, String)).void
|
|
101
|
+
end
|
|
102
|
+
attr_writer :model
|
|
103
|
+
|
|
104
|
+
# CSS selector to scope observation to a specific element
|
|
105
|
+
sig { returns(T.nilable(String)) }
|
|
106
|
+
attr_reader :selector
|
|
107
|
+
|
|
108
|
+
sig { params(selector: String).void }
|
|
109
|
+
attr_writer :selector
|
|
110
|
+
|
|
111
|
+
# Timeout in ms for the observation
|
|
112
|
+
sig { returns(T.nilable(Float)) }
|
|
113
|
+
attr_reader :timeout
|
|
114
|
+
|
|
115
|
+
sig { params(timeout: Float).void }
|
|
116
|
+
attr_writer :timeout
|
|
117
|
+
|
|
118
|
+
sig do
|
|
119
|
+
params(
|
|
120
|
+
model: T.any(Stagehand::ModelConfig::OrHash, String),
|
|
121
|
+
selector: String,
|
|
122
|
+
timeout: Float
|
|
123
|
+
).returns(T.attached_class)
|
|
124
|
+
end
|
|
125
|
+
def self.new(
|
|
126
|
+
# Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
|
|
127
|
+
model: nil,
|
|
128
|
+
# CSS selector to scope observation to a specific element
|
|
129
|
+
selector: nil,
|
|
130
|
+
# Timeout in ms for the observation
|
|
131
|
+
timeout: nil
|
|
132
|
+
)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
sig do
|
|
136
|
+
override.returns(
|
|
137
|
+
{
|
|
138
|
+
model: T.any(Stagehand::ModelConfig, String),
|
|
139
|
+
selector: String,
|
|
140
|
+
timeout: Float
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
end
|
|
144
|
+
def to_hash
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
|
|
148
|
+
module Model
|
|
149
|
+
extend Stagehand::Internal::Type::Union
|
|
150
|
+
|
|
151
|
+
Variants = T.type_alias { T.any(Stagehand::ModelConfig, String) }
|
|
152
|
+
|
|
153
|
+
sig do
|
|
154
|
+
override.returns(
|
|
155
|
+
T::Array[
|
|
156
|
+
Stagehand::SessionObserveParams::Options::Model::Variants
|
|
157
|
+
]
|
|
158
|
+
)
|
|
159
|
+
end
|
|
160
|
+
def self.variants
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Whether to stream the response via SSE
|
|
166
|
+
module XStreamResponse
|
|
167
|
+
extend Stagehand::Internal::Type::Enum
|
|
168
|
+
|
|
169
|
+
TaggedSymbol =
|
|
170
|
+
T.type_alias do
|
|
171
|
+
T.all(Symbol, Stagehand::SessionObserveParams::XStreamResponse)
|
|
172
|
+
end
|
|
173
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
174
|
+
|
|
175
|
+
TRUE =
|
|
176
|
+
T.let(
|
|
177
|
+
:true,
|
|
178
|
+
Stagehand::SessionObserveParams::XStreamResponse::TaggedSymbol
|
|
179
|
+
)
|
|
180
|
+
FALSE =
|
|
181
|
+
T.let(
|
|
182
|
+
:false,
|
|
183
|
+
Stagehand::SessionObserveParams::XStreamResponse::TaggedSymbol
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
sig do
|
|
187
|
+
override.returns(
|
|
188
|
+
T::Array[
|
|
189
|
+
Stagehand::SessionObserveParams::XStreamResponse::TaggedSymbol
|
|
190
|
+
]
|
|
191
|
+
)
|
|
192
|
+
end
|
|
193
|
+
def self.values
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Stagehand
|
|
4
|
+
module Models
|
|
5
|
+
class SessionObserveResponse < Stagehand::Internal::Type::BaseModel
|
|
6
|
+
OrHash =
|
|
7
|
+
T.type_alias do
|
|
8
|
+
T.any(
|
|
9
|
+
Stagehand::Models::SessionObserveResponse,
|
|
10
|
+
Stagehand::Internal::AnyHash
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
sig { returns(Stagehand::Models::SessionObserveResponse::Data) }
|
|
15
|
+
attr_reader :data
|
|
16
|
+
|
|
17
|
+
sig do
|
|
18
|
+
params(
|
|
19
|
+
data: Stagehand::Models::SessionObserveResponse::Data::OrHash
|
|
20
|
+
).void
|
|
21
|
+
end
|
|
22
|
+
attr_writer :data
|
|
23
|
+
|
|
24
|
+
# Indicates whether the request was successful
|
|
25
|
+
sig { returns(T::Boolean) }
|
|
26
|
+
attr_accessor :success
|
|
27
|
+
|
|
28
|
+
sig do
|
|
29
|
+
params(
|
|
30
|
+
data: Stagehand::Models::SessionObserveResponse::Data::OrHash,
|
|
31
|
+
success: T::Boolean
|
|
32
|
+
).returns(T.attached_class)
|
|
33
|
+
end
|
|
34
|
+
def self.new(
|
|
35
|
+
data:,
|
|
36
|
+
# Indicates whether the request was successful
|
|
37
|
+
success:
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
sig do
|
|
42
|
+
override.returns(
|
|
43
|
+
{
|
|
44
|
+
data: Stagehand::Models::SessionObserveResponse::Data,
|
|
45
|
+
success: T::Boolean
|
|
46
|
+
}
|
|
47
|
+
)
|
|
48
|
+
end
|
|
49
|
+
def to_hash
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
class Data < Stagehand::Internal::Type::BaseModel
|
|
53
|
+
OrHash =
|
|
54
|
+
T.type_alias do
|
|
55
|
+
T.any(
|
|
56
|
+
Stagehand::Models::SessionObserveResponse::Data,
|
|
57
|
+
Stagehand::Internal::AnyHash
|
|
58
|
+
)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
sig do
|
|
62
|
+
returns(
|
|
63
|
+
T::Array[Stagehand::Models::SessionObserveResponse::Data::Result]
|
|
64
|
+
)
|
|
65
|
+
end
|
|
66
|
+
attr_accessor :result
|
|
67
|
+
|
|
68
|
+
# Action ID for tracking
|
|
69
|
+
sig { returns(T.nilable(String)) }
|
|
70
|
+
attr_reader :action_id
|
|
71
|
+
|
|
72
|
+
sig { params(action_id: String).void }
|
|
73
|
+
attr_writer :action_id
|
|
74
|
+
|
|
75
|
+
sig do
|
|
76
|
+
params(
|
|
77
|
+
result:
|
|
78
|
+
T::Array[
|
|
79
|
+
Stagehand::Models::SessionObserveResponse::Data::Result::OrHash
|
|
80
|
+
],
|
|
81
|
+
action_id: String
|
|
82
|
+
).returns(T.attached_class)
|
|
83
|
+
end
|
|
84
|
+
def self.new(
|
|
85
|
+
result:,
|
|
86
|
+
# Action ID for tracking
|
|
87
|
+
action_id: nil
|
|
88
|
+
)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
sig do
|
|
92
|
+
override.returns(
|
|
93
|
+
{
|
|
94
|
+
result:
|
|
95
|
+
T::Array[
|
|
96
|
+
Stagehand::Models::SessionObserveResponse::Data::Result
|
|
97
|
+
],
|
|
98
|
+
action_id: String
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
end
|
|
102
|
+
def to_hash
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
class Result < Stagehand::Internal::Type::BaseModel
|
|
106
|
+
OrHash =
|
|
107
|
+
T.type_alias do
|
|
108
|
+
T.any(
|
|
109
|
+
Stagehand::Models::SessionObserveResponse::Data::Result,
|
|
110
|
+
Stagehand::Internal::AnyHash
|
|
111
|
+
)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Human-readable description of the action
|
|
115
|
+
sig { returns(String) }
|
|
116
|
+
attr_accessor :description
|
|
117
|
+
|
|
118
|
+
# CSS selector or XPath for the element
|
|
119
|
+
sig { returns(String) }
|
|
120
|
+
attr_accessor :selector
|
|
121
|
+
|
|
122
|
+
# Arguments to pass to the method
|
|
123
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
124
|
+
attr_reader :arguments
|
|
125
|
+
|
|
126
|
+
sig { params(arguments: T::Array[String]).void }
|
|
127
|
+
attr_writer :arguments
|
|
128
|
+
|
|
129
|
+
# Backend node ID for the element
|
|
130
|
+
sig { returns(T.nilable(Float)) }
|
|
131
|
+
attr_reader :backend_node_id
|
|
132
|
+
|
|
133
|
+
sig { params(backend_node_id: Float).void }
|
|
134
|
+
attr_writer :backend_node_id
|
|
135
|
+
|
|
136
|
+
# The method to execute (click, fill, etc.)
|
|
137
|
+
sig { returns(T.nilable(String)) }
|
|
138
|
+
attr_reader :method_
|
|
139
|
+
|
|
140
|
+
sig { params(method_: String).void }
|
|
141
|
+
attr_writer :method_
|
|
142
|
+
|
|
143
|
+
# Action object returned by observe and used by act
|
|
144
|
+
sig do
|
|
145
|
+
params(
|
|
146
|
+
description: String,
|
|
147
|
+
selector: String,
|
|
148
|
+
arguments: T::Array[String],
|
|
149
|
+
backend_node_id: Float,
|
|
150
|
+
method_: String
|
|
151
|
+
).returns(T.attached_class)
|
|
152
|
+
end
|
|
153
|
+
def self.new(
|
|
154
|
+
# Human-readable description of the action
|
|
155
|
+
description:,
|
|
156
|
+
# CSS selector or XPath for the element
|
|
157
|
+
selector:,
|
|
158
|
+
# Arguments to pass to the method
|
|
159
|
+
arguments: nil,
|
|
160
|
+
# Backend node ID for the element
|
|
161
|
+
backend_node_id: nil,
|
|
162
|
+
# The method to execute (click, fill, etc.)
|
|
163
|
+
method_: nil
|
|
164
|
+
)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
sig do
|
|
168
|
+
override.returns(
|
|
169
|
+
{
|
|
170
|
+
description: String,
|
|
171
|
+
selector: String,
|
|
172
|
+
arguments: T::Array[String],
|
|
173
|
+
backend_node_id: Float,
|
|
174
|
+
method_: String
|
|
175
|
+
}
|
|
176
|
+
)
|
|
177
|
+
end
|
|
178
|
+
def to_hash
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
end
|