stagehand 0.0.4 → 3.6.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 (148) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +193 -0
  4. data/README.md +403 -31
  5. data/SECURITY.md +23 -0
  6. data/lib/stagehand/client.rb +123 -4
  7. data/lib/stagehand/errors.rb +228 -0
  8. data/lib/stagehand/file_part.rb +58 -0
  9. data/lib/stagehand/internal/stream.rb +56 -0
  10. data/lib/stagehand/internal/transport/base_client.rb +575 -0
  11. data/lib/stagehand/internal/transport/pooled_net_requester.rb +210 -0
  12. data/lib/stagehand/internal/type/array_of.rb +168 -0
  13. data/lib/stagehand/internal/type/base_model.rb +531 -0
  14. data/lib/stagehand/internal/type/base_page.rb +55 -0
  15. data/lib/stagehand/internal/type/base_stream.rb +83 -0
  16. data/lib/stagehand/internal/type/boolean.rb +77 -0
  17. data/lib/stagehand/internal/type/converter.rb +327 -0
  18. data/lib/stagehand/internal/type/enum.rb +131 -0
  19. data/lib/stagehand/internal/type/file_input.rb +111 -0
  20. data/lib/stagehand/internal/type/hash_of.rb +188 -0
  21. data/lib/stagehand/internal/type/request_parameters.rb +42 -0
  22. data/lib/stagehand/internal/type/union.rb +237 -0
  23. data/lib/stagehand/internal/type/unknown.rb +81 -0
  24. data/lib/stagehand/internal/util.rb +920 -0
  25. data/lib/stagehand/internal.rb +20 -0
  26. data/lib/stagehand/local.rb +439 -0
  27. data/lib/stagehand/models/action.rb +50 -0
  28. data/lib/stagehand/models/model_config.rb +55 -0
  29. data/lib/stagehand/models/session_act_params.rb +112 -0
  30. data/lib/stagehand/models/session_act_response.rb +127 -0
  31. data/lib/stagehand/models/session_end_params.rb +33 -0
  32. data/lib/stagehand/models/session_end_response.rb +17 -0
  33. data/lib/stagehand/models/session_execute_params.rb +212 -0
  34. data/lib/stagehand/models/session_execute_response.rb +212 -0
  35. data/lib/stagehand/models/session_extract_params.rb +107 -0
  36. data/lib/stagehand/models/session_extract_response.rb +46 -0
  37. data/lib/stagehand/models/session_navigate_params.rb +107 -0
  38. data/lib/stagehand/models/session_navigate_response.rb +44 -0
  39. data/lib/stagehand/models/session_observe_params.rb +99 -0
  40. data/lib/stagehand/models/session_observe_response.rb +91 -0
  41. data/lib/stagehand/models/session_replay_params.rb +33 -0
  42. data/lib/stagehand/models/session_replay_response.rb +142 -0
  43. data/lib/stagehand/models/session_start_params.rb +762 -0
  44. data/lib/stagehand/models/session_start_response.rb +55 -0
  45. data/lib/stagehand/models/stream_event.rb +120 -0
  46. data/lib/stagehand/models.rb +63 -0
  47. data/lib/stagehand/request_options.rb +77 -0
  48. data/lib/stagehand/resources/sessions.rb +488 -0
  49. data/lib/stagehand/version.rb +3 -1
  50. data/lib/stagehand.rb +74 -29
  51. data/manifest.yaml +17 -0
  52. data/rbi/stagehand/client.rbi +89 -0
  53. data/rbi/stagehand/errors.rbi +205 -0
  54. data/rbi/stagehand/file_part.rbi +37 -0
  55. data/rbi/stagehand/internal/stream.rbi +20 -0
  56. data/rbi/stagehand/internal/transport/base_client.rbi +314 -0
  57. data/rbi/stagehand/internal/transport/pooled_net_requester.rbi +83 -0
  58. data/rbi/stagehand/internal/type/array_of.rbi +104 -0
  59. data/rbi/stagehand/internal/type/base_model.rbi +308 -0
  60. data/rbi/stagehand/internal/type/base_page.rbi +42 -0
  61. data/rbi/stagehand/internal/type/base_stream.rbi +75 -0
  62. data/rbi/stagehand/internal/type/boolean.rbi +58 -0
  63. data/rbi/stagehand/internal/type/converter.rbi +216 -0
  64. data/rbi/stagehand/internal/type/enum.rbi +82 -0
  65. data/rbi/stagehand/internal/type/file_input.rbi +59 -0
  66. data/rbi/stagehand/internal/type/hash_of.rbi +104 -0
  67. data/rbi/stagehand/internal/type/request_parameters.rbi +29 -0
  68. data/rbi/stagehand/internal/type/union.rbi +128 -0
  69. data/rbi/stagehand/internal/type/unknown.rbi +58 -0
  70. data/rbi/stagehand/internal/util.rbi +487 -0
  71. data/rbi/stagehand/internal.rbi +18 -0
  72. data/rbi/stagehand/models/action.rbi +77 -0
  73. data/rbi/stagehand/models/model_config.rbi +94 -0
  74. data/rbi/stagehand/models/session_act_params.rbi +204 -0
  75. data/rbi/stagehand/models/session_act_response.rbi +250 -0
  76. data/rbi/stagehand/models/session_end_params.rbi +87 -0
  77. data/rbi/stagehand/models/session_end_response.rbi +30 -0
  78. data/rbi/stagehand/models/session_execute_params.rbi +440 -0
  79. data/rbi/stagehand/models/session_execute_response.rbi +414 -0
  80. data/rbi/stagehand/models/session_extract_params.rbi +209 -0
  81. data/rbi/stagehand/models/session_extract_response.rbi +91 -0
  82. data/rbi/stagehand/models/session_navigate_params.rbi +240 -0
  83. data/rbi/stagehand/models/session_navigate_response.rbi +91 -0
  84. data/rbi/stagehand/models/session_observe_params.rbi +198 -0
  85. data/rbi/stagehand/models/session_observe_response.rbi +184 -0
  86. data/rbi/stagehand/models/session_replay_params.rbi +89 -0
  87. data/rbi/stagehand/models/session_replay_response.rbi +303 -0
  88. data/rbi/stagehand/models/session_start_params.rbi +1703 -0
  89. data/rbi/stagehand/models/session_start_response.rbi +102 -0
  90. data/rbi/stagehand/models/stream_event.rbi +237 -0
  91. data/rbi/stagehand/models.rbi +25 -0
  92. data/rbi/stagehand/request_options.rbi +59 -0
  93. data/rbi/stagehand/resources/sessions.rbi +421 -0
  94. data/rbi/stagehand/version.rbi +5 -0
  95. data/sig/stagehand/client.rbs +41 -0
  96. data/sig/stagehand/errors.rbs +117 -0
  97. data/sig/stagehand/file_part.rbs +21 -0
  98. data/sig/stagehand/internal/stream.rbs +9 -0
  99. data/sig/stagehand/internal/transport/base_client.rbs +133 -0
  100. data/sig/stagehand/internal/transport/pooled_net_requester.rbs +48 -0
  101. data/sig/stagehand/internal/type/array_of.rbs +48 -0
  102. data/sig/stagehand/internal/type/base_model.rbs +102 -0
  103. data/sig/stagehand/internal/type/base_page.rbs +24 -0
  104. data/sig/stagehand/internal/type/base_stream.rbs +38 -0
  105. data/sig/stagehand/internal/type/boolean.rbs +26 -0
  106. data/sig/stagehand/internal/type/converter.rbs +79 -0
  107. data/sig/stagehand/internal/type/enum.rbs +32 -0
  108. data/sig/stagehand/internal/type/file_input.rbs +25 -0
  109. data/sig/stagehand/internal/type/hash_of.rbs +48 -0
  110. data/sig/stagehand/internal/type/request_parameters.rbs +19 -0
  111. data/sig/stagehand/internal/type/union.rbs +52 -0
  112. data/sig/stagehand/internal/type/unknown.rbs +26 -0
  113. data/sig/stagehand/internal/util.rbs +185 -0
  114. data/sig/stagehand/internal.rbs +9 -0
  115. data/sig/stagehand/models/action.rbs +46 -0
  116. data/sig/stagehand/models/model_config.rbs +56 -0
  117. data/sig/stagehand/models/session_act_params.rbs +111 -0
  118. data/sig/stagehand/models/session_act_response.rbs +121 -0
  119. data/sig/stagehand/models/session_end_params.rbs +41 -0
  120. data/sig/stagehand/models/session_end_response.rbs +13 -0
  121. data/sig/stagehand/models/session_execute_params.rbs +193 -0
  122. data/sig/stagehand/models/session_execute_response.rbs +215 -0
  123. data/sig/stagehand/models/session_extract_params.rbs +112 -0
  124. data/sig/stagehand/models/session_extract_response.rbs +36 -0
  125. data/sig/stagehand/models/session_navigate_params.rbs +114 -0
  126. data/sig/stagehand/models/session_navigate_response.rbs +36 -0
  127. data/sig/stagehand/models/session_observe_params.rbs +105 -0
  128. data/sig/stagehand/models/session_observe_response.rbs +89 -0
  129. data/sig/stagehand/models/session_replay_params.rbs +41 -0
  130. data/sig/stagehand/models/session_replay_response.rbs +166 -0
  131. data/sig/stagehand/models/session_start_params.rbs +866 -0
  132. data/sig/stagehand/models/session_start_response.rbs +44 -0
  133. data/sig/stagehand/models/stream_event.rbs +109 -0
  134. data/sig/stagehand/models.rbs +23 -0
  135. data/sig/stagehand/request_options.rbs +34 -0
  136. data/sig/stagehand/resources/sessions.rbs +121 -0
  137. data/sig/stagehand/version.rbs +3 -0
  138. metadata +170 -54
  139. data/.gitignore +0 -16
  140. data/Gemfile +0 -4
  141. data/Rakefile +0 -10
  142. data/lib/stagehand/client/oauth.rb +0 -32
  143. data/lib/stagehand/client/user.rb +0 -10
  144. data/lib/stagehand/rack/middleware.rb +0 -33
  145. data/lib/stagehand/railtie.rb +0 -19
  146. data/spec/spec_helper.rb +0 -7
  147. data/spec/stagehand_spec.rb +0 -44
  148. data/stagehand.gemspec +0 -25
@@ -0,0 +1,89 @@
1
+ # typed: strong
2
+
3
+ module Stagehand
4
+ module Models
5
+ class SessionReplayParams < 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::SessionReplayParams, Stagehand::Internal::AnyHash)
12
+ end
13
+
14
+ # Whether to stream the response via SSE
15
+ sig do
16
+ returns(
17
+ T.nilable(Stagehand::SessionReplayParams::XStreamResponse::OrSymbol)
18
+ )
19
+ end
20
+ attr_reader :x_stream_response
21
+
22
+ sig do
23
+ params(
24
+ x_stream_response:
25
+ Stagehand::SessionReplayParams::XStreamResponse::OrSymbol
26
+ ).void
27
+ end
28
+ attr_writer :x_stream_response
29
+
30
+ sig do
31
+ params(
32
+ x_stream_response:
33
+ Stagehand::SessionReplayParams::XStreamResponse::OrSymbol,
34
+ request_options: Stagehand::RequestOptions::OrHash
35
+ ).returns(T.attached_class)
36
+ end
37
+ def self.new(
38
+ # Whether to stream the response via SSE
39
+ x_stream_response: nil,
40
+ request_options: {}
41
+ )
42
+ end
43
+
44
+ sig do
45
+ override.returns(
46
+ {
47
+ x_stream_response:
48
+ Stagehand::SessionReplayParams::XStreamResponse::OrSymbol,
49
+ request_options: Stagehand::RequestOptions
50
+ }
51
+ )
52
+ end
53
+ def to_hash
54
+ end
55
+
56
+ # Whether to stream the response via SSE
57
+ module XStreamResponse
58
+ extend Stagehand::Internal::Type::Enum
59
+
60
+ TaggedSymbol =
61
+ T.type_alias do
62
+ T.all(Symbol, Stagehand::SessionReplayParams::XStreamResponse)
63
+ end
64
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
65
+
66
+ TRUE =
67
+ T.let(
68
+ :true,
69
+ Stagehand::SessionReplayParams::XStreamResponse::TaggedSymbol
70
+ )
71
+ FALSE =
72
+ T.let(
73
+ :false,
74
+ Stagehand::SessionReplayParams::XStreamResponse::TaggedSymbol
75
+ )
76
+
77
+ sig do
78
+ override.returns(
79
+ T::Array[
80
+ Stagehand::SessionReplayParams::XStreamResponse::TaggedSymbol
81
+ ]
82
+ )
83
+ end
84
+ def self.values
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,303 @@
1
+ # typed: strong
2
+
3
+ module Stagehand
4
+ module Models
5
+ class SessionReplayResponse < Stagehand::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Stagehand::Models::SessionReplayResponse,
10
+ Stagehand::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(Stagehand::Models::SessionReplayResponse::Data) }
15
+ attr_reader :data
16
+
17
+ sig do
18
+ params(
19
+ data: Stagehand::Models::SessionReplayResponse::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::SessionReplayResponse::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::SessionReplayResponse::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::SessionReplayResponse::Data,
57
+ Stagehand::Internal::AnyHash
58
+ )
59
+ end
60
+
61
+ sig do
62
+ returns(
63
+ T::Array[Stagehand::Models::SessionReplayResponse::Data::Page]
64
+ )
65
+ end
66
+ attr_accessor :pages
67
+
68
+ sig { returns(T.nilable(String)) }
69
+ attr_reader :client_language
70
+
71
+ sig { params(client_language: String).void }
72
+ attr_writer :client_language
73
+
74
+ sig do
75
+ params(
76
+ pages:
77
+ T::Array[
78
+ Stagehand::Models::SessionReplayResponse::Data::Page::OrHash
79
+ ],
80
+ client_language: String
81
+ ).returns(T.attached_class)
82
+ end
83
+ def self.new(pages:, client_language: nil)
84
+ end
85
+
86
+ sig do
87
+ override.returns(
88
+ {
89
+ pages:
90
+ T::Array[Stagehand::Models::SessionReplayResponse::Data::Page],
91
+ client_language: String
92
+ }
93
+ )
94
+ end
95
+ def to_hash
96
+ end
97
+
98
+ class Page < Stagehand::Internal::Type::BaseModel
99
+ OrHash =
100
+ T.type_alias do
101
+ T.any(
102
+ Stagehand::Models::SessionReplayResponse::Data::Page,
103
+ Stagehand::Internal::AnyHash
104
+ )
105
+ end
106
+
107
+ sig do
108
+ returns(
109
+ T::Array[
110
+ Stagehand::Models::SessionReplayResponse::Data::Page::Action
111
+ ]
112
+ )
113
+ end
114
+ attr_accessor :actions
115
+
116
+ sig { returns(Float) }
117
+ attr_accessor :duration
118
+
119
+ sig { returns(Float) }
120
+ attr_accessor :timestamp
121
+
122
+ sig { returns(String) }
123
+ attr_accessor :url
124
+
125
+ sig do
126
+ params(
127
+ actions:
128
+ T::Array[
129
+ Stagehand::Models::SessionReplayResponse::Data::Page::Action::OrHash
130
+ ],
131
+ duration: Float,
132
+ timestamp: Float,
133
+ url: String
134
+ ).returns(T.attached_class)
135
+ end
136
+ def self.new(actions:, duration:, timestamp:, url:)
137
+ end
138
+
139
+ sig do
140
+ override.returns(
141
+ {
142
+ actions:
143
+ T::Array[
144
+ Stagehand::Models::SessionReplayResponse::Data::Page::Action
145
+ ],
146
+ duration: Float,
147
+ timestamp: Float,
148
+ url: String
149
+ }
150
+ )
151
+ end
152
+ def to_hash
153
+ end
154
+
155
+ class Action < Stagehand::Internal::Type::BaseModel
156
+ OrHash =
157
+ T.type_alias do
158
+ T.any(
159
+ Stagehand::Models::SessionReplayResponse::Data::Page::Action,
160
+ Stagehand::Internal::AnyHash
161
+ )
162
+ end
163
+
164
+ sig { returns(String) }
165
+ attr_accessor :method_
166
+
167
+ sig { returns(T::Hash[Symbol, T.anything]) }
168
+ attr_accessor :parameters
169
+
170
+ sig { returns(T::Hash[Symbol, T.anything]) }
171
+ attr_accessor :result
172
+
173
+ sig { returns(Float) }
174
+ attr_accessor :timestamp
175
+
176
+ sig { returns(T.nilable(Float)) }
177
+ attr_reader :end_time
178
+
179
+ sig { params(end_time: Float).void }
180
+ attr_writer :end_time
181
+
182
+ sig do
183
+ returns(
184
+ T.nilable(
185
+ Stagehand::Models::SessionReplayResponse::Data::Page::Action::TokenUsage
186
+ )
187
+ )
188
+ end
189
+ attr_reader :token_usage
190
+
191
+ sig do
192
+ params(
193
+ token_usage:
194
+ Stagehand::Models::SessionReplayResponse::Data::Page::Action::TokenUsage::OrHash
195
+ ).void
196
+ end
197
+ attr_writer :token_usage
198
+
199
+ sig do
200
+ params(
201
+ method_: String,
202
+ parameters: T::Hash[Symbol, T.anything],
203
+ result: T::Hash[Symbol, T.anything],
204
+ timestamp: Float,
205
+ end_time: Float,
206
+ token_usage:
207
+ Stagehand::Models::SessionReplayResponse::Data::Page::Action::TokenUsage::OrHash
208
+ ).returns(T.attached_class)
209
+ end
210
+ def self.new(
211
+ method_:,
212
+ parameters:,
213
+ result:,
214
+ timestamp:,
215
+ end_time: nil,
216
+ token_usage: nil
217
+ )
218
+ end
219
+
220
+ sig do
221
+ override.returns(
222
+ {
223
+ method_: String,
224
+ parameters: T::Hash[Symbol, T.anything],
225
+ result: T::Hash[Symbol, T.anything],
226
+ timestamp: Float,
227
+ end_time: Float,
228
+ token_usage:
229
+ Stagehand::Models::SessionReplayResponse::Data::Page::Action::TokenUsage
230
+ }
231
+ )
232
+ end
233
+ def to_hash
234
+ end
235
+
236
+ class TokenUsage < Stagehand::Internal::Type::BaseModel
237
+ OrHash =
238
+ T.type_alias do
239
+ T.any(
240
+ Stagehand::Models::SessionReplayResponse::Data::Page::Action::TokenUsage,
241
+ Stagehand::Internal::AnyHash
242
+ )
243
+ end
244
+
245
+ sig { returns(T.nilable(Float)) }
246
+ attr_reader :cost
247
+
248
+ sig { params(cost: Float).void }
249
+ attr_writer :cost
250
+
251
+ sig { returns(T.nilable(Float)) }
252
+ attr_reader :input_tokens
253
+
254
+ sig { params(input_tokens: Float).void }
255
+ attr_writer :input_tokens
256
+
257
+ sig { returns(T.nilable(Float)) }
258
+ attr_reader :output_tokens
259
+
260
+ sig { params(output_tokens: Float).void }
261
+ attr_writer :output_tokens
262
+
263
+ sig { returns(T.nilable(Float)) }
264
+ attr_reader :time_ms
265
+
266
+ sig { params(time_ms: Float).void }
267
+ attr_writer :time_ms
268
+
269
+ sig do
270
+ params(
271
+ cost: Float,
272
+ input_tokens: Float,
273
+ output_tokens: Float,
274
+ time_ms: Float
275
+ ).returns(T.attached_class)
276
+ end
277
+ def self.new(
278
+ cost: nil,
279
+ input_tokens: nil,
280
+ output_tokens: nil,
281
+ time_ms: nil
282
+ )
283
+ end
284
+
285
+ sig do
286
+ override.returns(
287
+ {
288
+ cost: Float,
289
+ input_tokens: Float,
290
+ output_tokens: Float,
291
+ time_ms: Float
292
+ }
293
+ )
294
+ end
295
+ def to_hash
296
+ end
297
+ end
298
+ end
299
+ end
300
+ end
301
+ end
302
+ end
303
+ end