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.
Files changed (148) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +185 -0
  4. data/README.md +394 -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 +100 -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 +286 -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 +137 -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,107 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#extract
6
+ #
7
+ # @see Stagehand::Resources::Sessions#extract_streaming
8
+ class SessionExtractParams < Stagehand::Internal::Type::BaseModel
9
+ extend Stagehand::Internal::Type::RequestParameters::Converter
10
+ include Stagehand::Internal::Type::RequestParameters
11
+
12
+ # @!attribute frame_id
13
+ # Target frame ID for the extraction
14
+ #
15
+ # @return [String, nil]
16
+ optional :frame_id, String, api_name: :frameId, nil?: true
17
+
18
+ # @!attribute instruction
19
+ # Natural language instruction for what to extract
20
+ #
21
+ # @return [String, nil]
22
+ optional :instruction, String
23
+
24
+ # @!attribute options
25
+ #
26
+ # @return [Stagehand::Models::SessionExtractParams::Options, nil]
27
+ optional :options, -> { Stagehand::SessionExtractParams::Options }
28
+
29
+ # @!attribute schema
30
+ # JSON Schema defining the structure of data to extract
31
+ #
32
+ # @return [Hash{Symbol=>Object}, nil]
33
+ optional :schema, Stagehand::Internal::Type::HashOf[Stagehand::Internal::Type::Unknown]
34
+
35
+ # @!attribute x_stream_response
36
+ # Whether to stream the response via SSE
37
+ #
38
+ # @return [Symbol, Stagehand::Models::SessionExtractParams::XStreamResponse, nil]
39
+ optional :x_stream_response, enum: -> { Stagehand::SessionExtractParams::XStreamResponse }
40
+
41
+ # @!method initialize(frame_id: nil, instruction: nil, options: nil, schema: nil, x_stream_response: nil, request_options: {})
42
+ # @param frame_id [String, nil] Target frame ID for the extraction
43
+ #
44
+ # @param instruction [String] Natural language instruction for what to extract
45
+ #
46
+ # @param options [Stagehand::Models::SessionExtractParams::Options]
47
+ #
48
+ # @param schema [Hash{Symbol=>Object}] JSON Schema defining the structure of data to extract
49
+ #
50
+ # @param x_stream_response [Symbol, Stagehand::Models::SessionExtractParams::XStreamResponse] Whether to stream the response via SSE
51
+ #
52
+ # @param request_options [Stagehand::RequestOptions, Hash{Symbol=>Object}]
53
+
54
+ class Options < Stagehand::Internal::Type::BaseModel
55
+ # @!attribute model
56
+ # Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
57
+ #
58
+ # @return [Stagehand::Models::ModelConfig, String, nil]
59
+ optional :model, union: -> { Stagehand::SessionExtractParams::Options::Model }
60
+
61
+ # @!attribute selector
62
+ # CSS selector to scope extraction to a specific element
63
+ #
64
+ # @return [String, nil]
65
+ optional :selector, String
66
+
67
+ # @!attribute timeout
68
+ # Timeout in ms for the extraction
69
+ #
70
+ # @return [Float, nil]
71
+ optional :timeout, Float
72
+
73
+ # @!method initialize(model: nil, selector: nil, timeout: nil)
74
+ # @param model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
75
+ #
76
+ # @param selector [String] CSS selector to scope extraction to a specific element
77
+ #
78
+ # @param timeout [Float] Timeout in ms for the extraction
79
+
80
+ # Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
81
+ #
82
+ # @see Stagehand::Models::SessionExtractParams::Options#model
83
+ module Model
84
+ extend Stagehand::Internal::Type::Union
85
+
86
+ variant -> { Stagehand::ModelConfig }
87
+
88
+ variant String
89
+
90
+ # @!method self.variants
91
+ # @return [Array(Stagehand::Models::ModelConfig, String)]
92
+ end
93
+ end
94
+
95
+ # Whether to stream the response via SSE
96
+ module XStreamResponse
97
+ extend Stagehand::Internal::Type::Enum
98
+
99
+ TRUE = :true
100
+ FALSE = :false
101
+
102
+ # @!method self.values
103
+ # @return [Array<Symbol>]
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#extract
6
+ #
7
+ # @see Stagehand::Resources::Sessions#extract_streaming
8
+ class SessionExtractResponse < Stagehand::Internal::Type::BaseModel
9
+ # @!attribute data
10
+ #
11
+ # @return [Stagehand::Models::SessionExtractResponse::Data]
12
+ required :data, -> { Stagehand::Models::SessionExtractResponse::Data }
13
+
14
+ # @!attribute success
15
+ # Indicates whether the request was successful
16
+ #
17
+ # @return [Boolean]
18
+ required :success, Stagehand::Internal::Type::Boolean
19
+
20
+ # @!method initialize(data:, success:)
21
+ # @param data [Stagehand::Models::SessionExtractResponse::Data]
22
+ #
23
+ # @param success [Boolean] Indicates whether the request was successful
24
+
25
+ # @see Stagehand::Models::SessionExtractResponse#data
26
+ class Data < Stagehand::Internal::Type::BaseModel
27
+ # @!attribute result
28
+ # Extracted data matching the requested schema
29
+ #
30
+ # @return [Object]
31
+ required :result, Stagehand::Internal::Type::Unknown
32
+
33
+ # @!attribute action_id
34
+ # Action ID for tracking
35
+ #
36
+ # @return [String, nil]
37
+ optional :action_id, String, api_name: :actionId
38
+
39
+ # @!method initialize(result:, action_id: nil)
40
+ # @param result [Object] Extracted data matching the requested schema
41
+ #
42
+ # @param action_id [String] Action ID for tracking
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,107 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#navigate
6
+ class SessionNavigateParams < Stagehand::Internal::Type::BaseModel
7
+ extend Stagehand::Internal::Type::RequestParameters::Converter
8
+ include Stagehand::Internal::Type::RequestParameters
9
+
10
+ # @!attribute url
11
+ # URL to navigate to
12
+ #
13
+ # @return [String]
14
+ required :url, String
15
+
16
+ # @!attribute frame_id
17
+ # Target frame ID for the navigation
18
+ #
19
+ # @return [String, nil]
20
+ optional :frame_id, String, api_name: :frameId, nil?: true
21
+
22
+ # @!attribute options
23
+ #
24
+ # @return [Stagehand::Models::SessionNavigateParams::Options, nil]
25
+ optional :options, -> { Stagehand::SessionNavigateParams::Options }
26
+
27
+ # @!attribute stream_response
28
+ # Whether to stream the response via SSE
29
+ #
30
+ # @return [Boolean, nil]
31
+ optional :stream_response, Stagehand::Internal::Type::Boolean, api_name: :streamResponse
32
+
33
+ # @!attribute x_stream_response
34
+ # Whether to stream the response via SSE
35
+ #
36
+ # @return [Symbol, Stagehand::Models::SessionNavigateParams::XStreamResponse, nil]
37
+ optional :x_stream_response, enum: -> { Stagehand::SessionNavigateParams::XStreamResponse }
38
+
39
+ # @!method initialize(url:, frame_id: nil, options: nil, stream_response: nil, x_stream_response: nil, request_options: {})
40
+ # @param url [String] URL to navigate to
41
+ #
42
+ # @param frame_id [String, nil] Target frame ID for the navigation
43
+ #
44
+ # @param options [Stagehand::Models::SessionNavigateParams::Options]
45
+ #
46
+ # @param stream_response [Boolean] Whether to stream the response via SSE
47
+ #
48
+ # @param x_stream_response [Symbol, Stagehand::Models::SessionNavigateParams::XStreamResponse] Whether to stream the response via SSE
49
+ #
50
+ # @param request_options [Stagehand::RequestOptions, Hash{Symbol=>Object}]
51
+
52
+ class Options < Stagehand::Internal::Type::BaseModel
53
+ # @!attribute referer
54
+ # Referer header to send with the request
55
+ #
56
+ # @return [String, nil]
57
+ optional :referer, String
58
+
59
+ # @!attribute timeout
60
+ # Timeout in ms for the navigation
61
+ #
62
+ # @return [Float, nil]
63
+ optional :timeout, Float
64
+
65
+ # @!attribute wait_until
66
+ # When to consider navigation complete
67
+ #
68
+ # @return [Symbol, Stagehand::Models::SessionNavigateParams::Options::WaitUntil, nil]
69
+ optional :wait_until,
70
+ enum: -> { Stagehand::SessionNavigateParams::Options::WaitUntil },
71
+ api_name: :waitUntil
72
+
73
+ # @!method initialize(referer: nil, timeout: nil, wait_until: nil)
74
+ # @param referer [String] Referer header to send with the request
75
+ #
76
+ # @param timeout [Float] Timeout in ms for the navigation
77
+ #
78
+ # @param wait_until [Symbol, Stagehand::Models::SessionNavigateParams::Options::WaitUntil] When to consider navigation complete
79
+
80
+ # When to consider navigation complete
81
+ #
82
+ # @see Stagehand::Models::SessionNavigateParams::Options#wait_until
83
+ module WaitUntil
84
+ extend Stagehand::Internal::Type::Enum
85
+
86
+ LOAD = :load
87
+ DOMCONTENTLOADED = :domcontentloaded
88
+ NETWORKIDLE = :networkidle
89
+
90
+ # @!method self.values
91
+ # @return [Array<Symbol>]
92
+ end
93
+ end
94
+
95
+ # Whether to stream the response via SSE
96
+ module XStreamResponse
97
+ extend Stagehand::Internal::Type::Enum
98
+
99
+ TRUE = :true
100
+ FALSE = :false
101
+
102
+ # @!method self.values
103
+ # @return [Array<Symbol>]
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#navigate
6
+ class SessionNavigateResponse < Stagehand::Internal::Type::BaseModel
7
+ # @!attribute data
8
+ #
9
+ # @return [Stagehand::Models::SessionNavigateResponse::Data]
10
+ required :data, -> { Stagehand::Models::SessionNavigateResponse::Data }
11
+
12
+ # @!attribute success
13
+ # Indicates whether the request was successful
14
+ #
15
+ # @return [Boolean]
16
+ required :success, Stagehand::Internal::Type::Boolean
17
+
18
+ # @!method initialize(data:, success:)
19
+ # @param data [Stagehand::Models::SessionNavigateResponse::Data]
20
+ #
21
+ # @param success [Boolean] Indicates whether the request was successful
22
+
23
+ # @see Stagehand::Models::SessionNavigateResponse#data
24
+ class Data < Stagehand::Internal::Type::BaseModel
25
+ # @!attribute result
26
+ # Navigation response (Playwright Response object or null)
27
+ #
28
+ # @return [Object]
29
+ required :result, Stagehand::Internal::Type::Unknown
30
+
31
+ # @!attribute action_id
32
+ # Action ID for tracking
33
+ #
34
+ # @return [String, nil]
35
+ optional :action_id, String, api_name: :actionId
36
+
37
+ # @!method initialize(result:, action_id: nil)
38
+ # @param result [Object] Navigation response (Playwright Response object or null)
39
+ #
40
+ # @param action_id [String] Action ID for tracking
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#observe
6
+ #
7
+ # @see Stagehand::Resources::Sessions#observe_streaming
8
+ class SessionObserveParams < Stagehand::Internal::Type::BaseModel
9
+ extend Stagehand::Internal::Type::RequestParameters::Converter
10
+ include Stagehand::Internal::Type::RequestParameters
11
+
12
+ # @!attribute frame_id
13
+ # Target frame ID for the observation
14
+ #
15
+ # @return [String, nil]
16
+ optional :frame_id, String, api_name: :frameId, nil?: true
17
+
18
+ # @!attribute instruction
19
+ # Natural language instruction for what actions to find
20
+ #
21
+ # @return [String, nil]
22
+ optional :instruction, String
23
+
24
+ # @!attribute options
25
+ #
26
+ # @return [Stagehand::Models::SessionObserveParams::Options, nil]
27
+ optional :options, -> { Stagehand::SessionObserveParams::Options }
28
+
29
+ # @!attribute x_stream_response
30
+ # Whether to stream the response via SSE
31
+ #
32
+ # @return [Symbol, Stagehand::Models::SessionObserveParams::XStreamResponse, nil]
33
+ optional :x_stream_response, enum: -> { Stagehand::SessionObserveParams::XStreamResponse }
34
+
35
+ # @!method initialize(frame_id: nil, instruction: nil, options: nil, x_stream_response: nil, request_options: {})
36
+ # @param frame_id [String, nil] Target frame ID for the observation
37
+ #
38
+ # @param instruction [String] Natural language instruction for what actions to find
39
+ #
40
+ # @param options [Stagehand::Models::SessionObserveParams::Options]
41
+ #
42
+ # @param x_stream_response [Symbol, Stagehand::Models::SessionObserveParams::XStreamResponse] Whether to stream the response via SSE
43
+ #
44
+ # @param request_options [Stagehand::RequestOptions, Hash{Symbol=>Object}]
45
+
46
+ class Options < Stagehand::Internal::Type::BaseModel
47
+ # @!attribute model
48
+ # Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
49
+ #
50
+ # @return [Stagehand::Models::ModelConfig, String, nil]
51
+ optional :model, union: -> { Stagehand::SessionObserveParams::Options::Model }
52
+
53
+ # @!attribute selector
54
+ # CSS selector to scope observation to a specific element
55
+ #
56
+ # @return [String, nil]
57
+ optional :selector, String
58
+
59
+ # @!attribute timeout
60
+ # Timeout in ms for the observation
61
+ #
62
+ # @return [Float, nil]
63
+ optional :timeout, Float
64
+
65
+ # @!method initialize(model: nil, selector: nil, timeout: nil)
66
+ # @param model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
67
+ #
68
+ # @param selector [String] CSS selector to scope observation to a specific element
69
+ #
70
+ # @param timeout [Float] Timeout in ms for the observation
71
+
72
+ # Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
73
+ #
74
+ # @see Stagehand::Models::SessionObserveParams::Options#model
75
+ module Model
76
+ extend Stagehand::Internal::Type::Union
77
+
78
+ variant -> { Stagehand::ModelConfig }
79
+
80
+ variant String
81
+
82
+ # @!method self.variants
83
+ # @return [Array(Stagehand::Models::ModelConfig, String)]
84
+ end
85
+ end
86
+
87
+ # Whether to stream the response via SSE
88
+ module XStreamResponse
89
+ extend Stagehand::Internal::Type::Enum
90
+
91
+ TRUE = :true
92
+ FALSE = :false
93
+
94
+ # @!method self.values
95
+ # @return [Array<Symbol>]
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#observe
6
+ #
7
+ # @see Stagehand::Resources::Sessions#observe_streaming
8
+ class SessionObserveResponse < Stagehand::Internal::Type::BaseModel
9
+ # @!attribute data
10
+ #
11
+ # @return [Stagehand::Models::SessionObserveResponse::Data]
12
+ required :data, -> { Stagehand::Models::SessionObserveResponse::Data }
13
+
14
+ # @!attribute success
15
+ # Indicates whether the request was successful
16
+ #
17
+ # @return [Boolean]
18
+ required :success, Stagehand::Internal::Type::Boolean
19
+
20
+ # @!method initialize(data:, success:)
21
+ # @param data [Stagehand::Models::SessionObserveResponse::Data]
22
+ #
23
+ # @param success [Boolean] Indicates whether the request was successful
24
+
25
+ # @see Stagehand::Models::SessionObserveResponse#data
26
+ class Data < Stagehand::Internal::Type::BaseModel
27
+ # @!attribute result
28
+ #
29
+ # @return [Array<Stagehand::Models::SessionObserveResponse::Data::Result>]
30
+ required :result,
31
+ -> { Stagehand::Internal::Type::ArrayOf[Stagehand::Models::SessionObserveResponse::Data::Result] }
32
+
33
+ # @!attribute action_id
34
+ # Action ID for tracking
35
+ #
36
+ # @return [String, nil]
37
+ optional :action_id, String, api_name: :actionId
38
+
39
+ # @!method initialize(result:, action_id: nil)
40
+ # @param result [Array<Stagehand::Models::SessionObserveResponse::Data::Result>]
41
+ #
42
+ # @param action_id [String] Action ID for tracking
43
+
44
+ class Result < Stagehand::Internal::Type::BaseModel
45
+ # @!attribute description
46
+ # Human-readable description of the action
47
+ #
48
+ # @return [String]
49
+ required :description, String
50
+
51
+ # @!attribute selector
52
+ # CSS selector or XPath for the element
53
+ #
54
+ # @return [String]
55
+ required :selector, String
56
+
57
+ # @!attribute arguments
58
+ # Arguments to pass to the method
59
+ #
60
+ # @return [Array<String>, nil]
61
+ optional :arguments, Stagehand::Internal::Type::ArrayOf[String]
62
+
63
+ # @!attribute backend_node_id
64
+ # Backend node ID for the element
65
+ #
66
+ # @return [Float, nil]
67
+ optional :backend_node_id, Float, api_name: :backendNodeId
68
+
69
+ # @!attribute method_
70
+ # The method to execute (click, fill, etc.)
71
+ #
72
+ # @return [String, nil]
73
+ optional :method_, String, api_name: :method
74
+
75
+ # @!method initialize(description:, selector:, arguments: nil, backend_node_id: nil, method_: nil)
76
+ # Action object returned by observe and used by act
77
+ #
78
+ # @param description [String] Human-readable description of the action
79
+ #
80
+ # @param selector [String] CSS selector or XPath for the element
81
+ #
82
+ # @param arguments [Array<String>] Arguments to pass to the method
83
+ #
84
+ # @param backend_node_id [Float] Backend node ID for the element
85
+ #
86
+ # @param method_ [String] The method to execute (click, fill, etc.)
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#replay
6
+ class SessionReplayParams < Stagehand::Internal::Type::BaseModel
7
+ extend Stagehand::Internal::Type::RequestParameters::Converter
8
+ include Stagehand::Internal::Type::RequestParameters
9
+
10
+ # @!attribute x_stream_response
11
+ # Whether to stream the response via SSE
12
+ #
13
+ # @return [Symbol, Stagehand::Models::SessionReplayParams::XStreamResponse, nil]
14
+ optional :x_stream_response, enum: -> { Stagehand::SessionReplayParams::XStreamResponse }
15
+
16
+ # @!method initialize(x_stream_response: nil, request_options: {})
17
+ # @param x_stream_response [Symbol, Stagehand::Models::SessionReplayParams::XStreamResponse] Whether to stream the response via SSE
18
+ #
19
+ # @param request_options [Stagehand::RequestOptions, Hash{Symbol=>Object}]
20
+
21
+ # Whether to stream the response via SSE
22
+ module XStreamResponse
23
+ extend Stagehand::Internal::Type::Enum
24
+
25
+ TRUE = :true
26
+ FALSE = :false
27
+
28
+ # @!method self.values
29
+ # @return [Array<Symbol>]
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#replay
6
+ class SessionReplayResponse < Stagehand::Internal::Type::BaseModel
7
+ # @!attribute data
8
+ #
9
+ # @return [Stagehand::Models::SessionReplayResponse::Data]
10
+ required :data, -> { Stagehand::Models::SessionReplayResponse::Data }
11
+
12
+ # @!attribute success
13
+ # Indicates whether the request was successful
14
+ #
15
+ # @return [Boolean]
16
+ required :success, Stagehand::Internal::Type::Boolean
17
+
18
+ # @!method initialize(data:, success:)
19
+ # @param data [Stagehand::Models::SessionReplayResponse::Data]
20
+ #
21
+ # @param success [Boolean] Indicates whether the request was successful
22
+
23
+ # @see Stagehand::Models::SessionReplayResponse#data
24
+ class Data < Stagehand::Internal::Type::BaseModel
25
+ # @!attribute pages
26
+ #
27
+ # @return [Array<Stagehand::Models::SessionReplayResponse::Data::Page>, nil]
28
+ optional :pages,
29
+ -> { Stagehand::Internal::Type::ArrayOf[Stagehand::Models::SessionReplayResponse::Data::Page] }
30
+
31
+ # @!method initialize(pages: nil)
32
+ # @param pages [Array<Stagehand::Models::SessionReplayResponse::Data::Page>]
33
+
34
+ class Page < Stagehand::Internal::Type::BaseModel
35
+ # @!attribute actions
36
+ #
37
+ # @return [Array<Stagehand::Models::SessionReplayResponse::Data::Page::Action>, nil]
38
+ optional :actions,
39
+ -> { Stagehand::Internal::Type::ArrayOf[Stagehand::Models::SessionReplayResponse::Data::Page::Action] }
40
+
41
+ # @!method initialize(actions: nil)
42
+ # @param actions [Array<Stagehand::Models::SessionReplayResponse::Data::Page::Action>]
43
+
44
+ class Action < Stagehand::Internal::Type::BaseModel
45
+ # @!attribute method_
46
+ #
47
+ # @return [String, nil]
48
+ optional :method_, String, api_name: :method
49
+
50
+ # @!attribute token_usage
51
+ #
52
+ # @return [Stagehand::Models::SessionReplayResponse::Data::Page::Action::TokenUsage, nil]
53
+ optional :token_usage,
54
+ -> { Stagehand::Models::SessionReplayResponse::Data::Page::Action::TokenUsage },
55
+ api_name: :tokenUsage
56
+
57
+ # @!method initialize(method_: nil, token_usage: nil)
58
+ # @param method_ [String]
59
+ # @param token_usage [Stagehand::Models::SessionReplayResponse::Data::Page::Action::TokenUsage]
60
+
61
+ # @see Stagehand::Models::SessionReplayResponse::Data::Page::Action#token_usage
62
+ class TokenUsage < Stagehand::Internal::Type::BaseModel
63
+ # @!attribute cached_input_tokens
64
+ #
65
+ # @return [Float, nil]
66
+ optional :cached_input_tokens, Float, api_name: :cachedInputTokens
67
+
68
+ # @!attribute input_tokens
69
+ #
70
+ # @return [Float, nil]
71
+ optional :input_tokens, Float, api_name: :inputTokens
72
+
73
+ # @!attribute output_tokens
74
+ #
75
+ # @return [Float, nil]
76
+ optional :output_tokens, Float, api_name: :outputTokens
77
+
78
+ # @!attribute reasoning_tokens
79
+ #
80
+ # @return [Float, nil]
81
+ optional :reasoning_tokens, Float, api_name: :reasoningTokens
82
+
83
+ # @!attribute time_ms
84
+ #
85
+ # @return [Float, nil]
86
+ optional :time_ms, Float, api_name: :timeMs
87
+
88
+ # @!method initialize(cached_input_tokens: nil, input_tokens: nil, output_tokens: nil, reasoning_tokens: nil, time_ms: nil)
89
+ # @param cached_input_tokens [Float]
90
+ # @param input_tokens [Float]
91
+ # @param output_tokens [Float]
92
+ # @param reasoning_tokens [Float]
93
+ # @param time_ms [Float]
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end