stagehand 0.0.3 → 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 (145) 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 +126 -0
  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 -21
  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 +173 -42
  139. data/.gitignore +0 -16
  140. data/Gemfile +0 -4
  141. data/Rakefile +0 -10
  142. data/lib/stagehand/railtie.rb +0 -14
  143. data/spec/spec_helper.rb +0 -7
  144. data/spec/stagehand_spec.rb +0 -15
  145. data/stagehand.gemspec +0 -24
@@ -0,0 +1,127 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#act
6
+ #
7
+ # @see Stagehand::Resources::Sessions#act_streaming
8
+ class SessionActResponse < Stagehand::Internal::Type::BaseModel
9
+ # @!attribute data
10
+ #
11
+ # @return [Stagehand::Models::SessionActResponse::Data]
12
+ required :data, -> { Stagehand::Models::SessionActResponse::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::SessionActResponse::Data]
22
+ #
23
+ # @param success [Boolean] Indicates whether the request was successful
24
+
25
+ # @see Stagehand::Models::SessionActResponse#data
26
+ class Data < Stagehand::Internal::Type::BaseModel
27
+ # @!attribute result
28
+ #
29
+ # @return [Stagehand::Models::SessionActResponse::Data::Result]
30
+ required :result, -> { Stagehand::Models::SessionActResponse::Data::Result }
31
+
32
+ # @!attribute action_id
33
+ # Action ID for tracking
34
+ #
35
+ # @return [String, nil]
36
+ optional :action_id, String, api_name: :actionId
37
+
38
+ # @!method initialize(result:, action_id: nil)
39
+ # @param result [Stagehand::Models::SessionActResponse::Data::Result]
40
+ #
41
+ # @param action_id [String] Action ID for tracking
42
+
43
+ # @see Stagehand::Models::SessionActResponse::Data#result
44
+ class Result < Stagehand::Internal::Type::BaseModel
45
+ # @!attribute action_description
46
+ # Description of the action that was performed
47
+ #
48
+ # @return [String]
49
+ required :action_description, String, api_name: :actionDescription
50
+
51
+ # @!attribute actions
52
+ # List of actions that were executed
53
+ #
54
+ # @return [Array<Stagehand::Models::SessionActResponse::Data::Result::Action>]
55
+ required :actions,
56
+ -> { Stagehand::Internal::Type::ArrayOf[Stagehand::Models::SessionActResponse::Data::Result::Action] }
57
+
58
+ # @!attribute message
59
+ # Human-readable result message
60
+ #
61
+ # @return [String]
62
+ required :message, String
63
+
64
+ # @!attribute success
65
+ # Whether the action completed successfully
66
+ #
67
+ # @return [Boolean]
68
+ required :success, Stagehand::Internal::Type::Boolean
69
+
70
+ # @!method initialize(action_description:, actions:, message:, success:)
71
+ # @param action_description [String] Description of the action that was performed
72
+ #
73
+ # @param actions [Array<Stagehand::Models::SessionActResponse::Data::Result::Action>] List of actions that were executed
74
+ #
75
+ # @param message [String] Human-readable result message
76
+ #
77
+ # @param success [Boolean] Whether the action completed successfully
78
+
79
+ class Action < Stagehand::Internal::Type::BaseModel
80
+ # @!attribute description
81
+ # Human-readable description of the action
82
+ #
83
+ # @return [String]
84
+ required :description, String
85
+
86
+ # @!attribute selector
87
+ # CSS selector or XPath for the element
88
+ #
89
+ # @return [String]
90
+ required :selector, String
91
+
92
+ # @!attribute arguments
93
+ # Arguments to pass to the method
94
+ #
95
+ # @return [Array<String>, nil]
96
+ optional :arguments, Stagehand::Internal::Type::ArrayOf[String]
97
+
98
+ # @!attribute backend_node_id
99
+ # Backend node ID for the element
100
+ #
101
+ # @return [Float, nil]
102
+ optional :backend_node_id, Float, api_name: :backendNodeId
103
+
104
+ # @!attribute method_
105
+ # The method to execute (click, fill, etc.)
106
+ #
107
+ # @return [String, nil]
108
+ optional :method_, String, api_name: :method
109
+
110
+ # @!method initialize(description:, selector:, arguments: nil, backend_node_id: nil, method_: nil)
111
+ # Action object returned by observe and used by act
112
+ #
113
+ # @param description [String] Human-readable description of the action
114
+ #
115
+ # @param selector [String] CSS selector or XPath for the element
116
+ #
117
+ # @param arguments [Array<String>] Arguments to pass to the method
118
+ #
119
+ # @param backend_node_id [Float] Backend node ID for the element
120
+ #
121
+ # @param method_ [String] The method to execute (click, fill, etc.)
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#end_
6
+ class SessionEndParams < 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::SessionEndParams::XStreamResponse, nil]
14
+ optional :x_stream_response, enum: -> { Stagehand::SessionEndParams::XStreamResponse }
15
+
16
+ # @!method initialize(x_stream_response: nil, request_options: {})
17
+ # @param x_stream_response [Symbol, Stagehand::Models::SessionEndParams::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,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#end_
6
+ class SessionEndResponse < Stagehand::Internal::Type::BaseModel
7
+ # @!attribute success
8
+ # Indicates whether the request was successful
9
+ #
10
+ # @return [Boolean]
11
+ required :success, Stagehand::Internal::Type::Boolean
12
+
13
+ # @!method initialize(success:)
14
+ # @param success [Boolean] Indicates whether the request was successful
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,212 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#execute
6
+ #
7
+ # @see Stagehand::Resources::Sessions#execute_streaming
8
+ class SessionExecuteParams < Stagehand::Internal::Type::BaseModel
9
+ extend Stagehand::Internal::Type::RequestParameters::Converter
10
+ include Stagehand::Internal::Type::RequestParameters
11
+
12
+ # @!attribute agent_config
13
+ #
14
+ # @return [Stagehand::Models::SessionExecuteParams::AgentConfig]
15
+ required :agent_config, -> { Stagehand::SessionExecuteParams::AgentConfig }, api_name: :agentConfig
16
+
17
+ # @!attribute execute_options
18
+ #
19
+ # @return [Stagehand::Models::SessionExecuteParams::ExecuteOptions]
20
+ required :execute_options,
21
+ -> { Stagehand::SessionExecuteParams::ExecuteOptions },
22
+ api_name: :executeOptions
23
+
24
+ # @!attribute frame_id
25
+ # Target frame ID for the agent
26
+ #
27
+ # @return [String, nil]
28
+ optional :frame_id, String, api_name: :frameId, nil?: true
29
+
30
+ # @!attribute should_cache
31
+ # If true, the server captures a cache entry and returns it to the client
32
+ #
33
+ # @return [Boolean, nil]
34
+ optional :should_cache, Stagehand::Internal::Type::Boolean, api_name: :shouldCache
35
+
36
+ # @!attribute x_stream_response
37
+ # Whether to stream the response via SSE
38
+ #
39
+ # @return [Symbol, Stagehand::Models::SessionExecuteParams::XStreamResponse, nil]
40
+ optional :x_stream_response, enum: -> { Stagehand::SessionExecuteParams::XStreamResponse }
41
+
42
+ # @!method initialize(agent_config:, execute_options:, frame_id: nil, should_cache: nil, x_stream_response: nil, request_options: {})
43
+ # @param agent_config [Stagehand::Models::SessionExecuteParams::AgentConfig]
44
+ #
45
+ # @param execute_options [Stagehand::Models::SessionExecuteParams::ExecuteOptions]
46
+ #
47
+ # @param frame_id [String, nil] Target frame ID for the agent
48
+ #
49
+ # @param should_cache [Boolean] If true, the server captures a cache entry and returns it to the client
50
+ #
51
+ # @param x_stream_response [Symbol, Stagehand::Models::SessionExecuteParams::XStreamResponse] Whether to stream the response via SSE
52
+ #
53
+ # @param request_options [Stagehand::RequestOptions, Hash{Symbol=>Object}]
54
+
55
+ class AgentConfig < Stagehand::Internal::Type::BaseModel
56
+ # @!attribute cua
57
+ # Deprecated. Use mode: 'cua' instead. If both are provided, mode takes
58
+ # precedence.
59
+ #
60
+ # @return [Boolean, nil]
61
+ optional :cua, Stagehand::Internal::Type::Boolean
62
+
63
+ # @!attribute execution_model
64
+ # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') for
65
+ # tool execution (observe/act calls within agent tools). If not specified,
66
+ # inherits from the main model configuration.
67
+ #
68
+ # @return [Stagehand::Models::ModelConfig, String, nil]
69
+ optional :execution_model,
70
+ union: -> { Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel },
71
+ api_name: :executionModel
72
+
73
+ # @!attribute mode
74
+ # Tool mode for the agent (dom, hybrid, cua). If set, overrides cua.
75
+ #
76
+ # @return [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Mode, nil]
77
+ optional :mode, enum: -> { Stagehand::SessionExecuteParams::AgentConfig::Mode }
78
+
79
+ # @!attribute model
80
+ # Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
81
+ #
82
+ # @return [Stagehand::Models::ModelConfig, String, nil]
83
+ optional :model, union: -> { Stagehand::SessionExecuteParams::AgentConfig::Model }
84
+
85
+ # @!attribute provider
86
+ # AI provider for the agent (legacy, use model: openai/gpt-5-nano instead)
87
+ #
88
+ # @return [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Provider, nil]
89
+ optional :provider, enum: -> { Stagehand::SessionExecuteParams::AgentConfig::Provider }
90
+
91
+ # @!attribute system_prompt
92
+ # Custom system prompt for the agent
93
+ #
94
+ # @return [String, nil]
95
+ optional :system_prompt, String, api_name: :systemPrompt
96
+
97
+ # @!method initialize(cua: nil, execution_model: nil, mode: nil, model: nil, provider: nil, system_prompt: nil)
98
+ # Some parameter documentations has been truncated, see
99
+ # {Stagehand::Models::SessionExecuteParams::AgentConfig} for more details.
100
+ #
101
+ # @param cua [Boolean] Deprecated. Use mode: 'cua' instead. If both are provided, mode takes precedence
102
+ #
103
+ # @param execution_model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') for
104
+ #
105
+ # @param mode [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Mode] Tool mode for the agent (dom, hybrid, cua). If set, overrides cua.
106
+ #
107
+ # @param model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
108
+ #
109
+ # @param provider [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Provider] AI provider for the agent (legacy, use model: openai/gpt-5-nano instead)
110
+ #
111
+ # @param system_prompt [String] Custom system prompt for the agent
112
+
113
+ # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') for
114
+ # tool execution (observe/act calls within agent tools). If not specified,
115
+ # inherits from the main model configuration.
116
+ #
117
+ # @see Stagehand::Models::SessionExecuteParams::AgentConfig#execution_model
118
+ module ExecutionModel
119
+ extend Stagehand::Internal::Type::Union
120
+
121
+ variant -> { Stagehand::ModelConfig }
122
+
123
+ variant String
124
+
125
+ # @!method self.variants
126
+ # @return [Array(Stagehand::Models::ModelConfig, String)]
127
+ end
128
+
129
+ # Tool mode for the agent (dom, hybrid, cua). If set, overrides cua.
130
+ #
131
+ # @see Stagehand::Models::SessionExecuteParams::AgentConfig#mode
132
+ module Mode
133
+ extend Stagehand::Internal::Type::Enum
134
+
135
+ DOM = :dom
136
+ HYBRID = :hybrid
137
+ CUA = :cua
138
+
139
+ # @!method self.values
140
+ # @return [Array<Symbol>]
141
+ end
142
+
143
+ # Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
144
+ #
145
+ # @see Stagehand::Models::SessionExecuteParams::AgentConfig#model
146
+ module Model
147
+ extend Stagehand::Internal::Type::Union
148
+
149
+ variant -> { Stagehand::ModelConfig }
150
+
151
+ variant String
152
+
153
+ # @!method self.variants
154
+ # @return [Array(Stagehand::Models::ModelConfig, String)]
155
+ end
156
+
157
+ # AI provider for the agent (legacy, use model: openai/gpt-5-nano instead)
158
+ #
159
+ # @see Stagehand::Models::SessionExecuteParams::AgentConfig#provider
160
+ module Provider
161
+ extend Stagehand::Internal::Type::Enum
162
+
163
+ OPENAI = :openai
164
+ ANTHROPIC = :anthropic
165
+ GOOGLE = :google
166
+ MICROSOFT = :microsoft
167
+
168
+ # @!method self.values
169
+ # @return [Array<Symbol>]
170
+ end
171
+ end
172
+
173
+ class ExecuteOptions < Stagehand::Internal::Type::BaseModel
174
+ # @!attribute instruction
175
+ # Natural language instruction for the agent
176
+ #
177
+ # @return [String]
178
+ required :instruction, String
179
+
180
+ # @!attribute highlight_cursor
181
+ # Whether to visually highlight the cursor during execution
182
+ #
183
+ # @return [Boolean, nil]
184
+ optional :highlight_cursor, Stagehand::Internal::Type::Boolean, api_name: :highlightCursor
185
+
186
+ # @!attribute max_steps
187
+ # Maximum number of steps the agent can take
188
+ #
189
+ # @return [Float, nil]
190
+ optional :max_steps, Float, api_name: :maxSteps
191
+
192
+ # @!method initialize(instruction:, highlight_cursor: nil, max_steps: nil)
193
+ # @param instruction [String] Natural language instruction for the agent
194
+ #
195
+ # @param highlight_cursor [Boolean] Whether to visually highlight the cursor during execution
196
+ #
197
+ # @param max_steps [Float] Maximum number of steps the agent can take
198
+ end
199
+
200
+ # Whether to stream the response via SSE
201
+ module XStreamResponse
202
+ extend Stagehand::Internal::Type::Enum
203
+
204
+ TRUE = :true
205
+ FALSE = :false
206
+
207
+ # @!method self.values
208
+ # @return [Array<Symbol>]
209
+ end
210
+ end
211
+ end
212
+ end
@@ -0,0 +1,212 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#execute
6
+ #
7
+ # @see Stagehand::Resources::Sessions#execute_streaming
8
+ class SessionExecuteResponse < Stagehand::Internal::Type::BaseModel
9
+ # @!attribute data
10
+ #
11
+ # @return [Stagehand::Models::SessionExecuteResponse::Data]
12
+ required :data, -> { Stagehand::Models::SessionExecuteResponse::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::SessionExecuteResponse::Data]
22
+ #
23
+ # @param success [Boolean] Indicates whether the request was successful
24
+
25
+ # @see Stagehand::Models::SessionExecuteResponse#data
26
+ class Data < Stagehand::Internal::Type::BaseModel
27
+ # @!attribute result
28
+ #
29
+ # @return [Stagehand::Models::SessionExecuteResponse::Data::Result]
30
+ required :result, -> { Stagehand::Models::SessionExecuteResponse::Data::Result }
31
+
32
+ # @!attribute cache_entry
33
+ #
34
+ # @return [Stagehand::Models::SessionExecuteResponse::Data::CacheEntry, nil]
35
+ optional :cache_entry,
36
+ -> { Stagehand::Models::SessionExecuteResponse::Data::CacheEntry },
37
+ api_name: :cacheEntry
38
+
39
+ # @!method initialize(result:, cache_entry: nil)
40
+ # @param result [Stagehand::Models::SessionExecuteResponse::Data::Result]
41
+ # @param cache_entry [Stagehand::Models::SessionExecuteResponse::Data::CacheEntry]
42
+
43
+ # @see Stagehand::Models::SessionExecuteResponse::Data#result
44
+ class Result < Stagehand::Internal::Type::BaseModel
45
+ # @!attribute actions
46
+ #
47
+ # @return [Array<Stagehand::Models::SessionExecuteResponse::Data::Result::Action>]
48
+ required :actions,
49
+ -> { Stagehand::Internal::Type::ArrayOf[Stagehand::Models::SessionExecuteResponse::Data::Result::Action] }
50
+
51
+ # @!attribute completed
52
+ # Whether the agent finished its task
53
+ #
54
+ # @return [Boolean]
55
+ required :completed, Stagehand::Internal::Type::Boolean
56
+
57
+ # @!attribute message
58
+ # Summary of what the agent accomplished
59
+ #
60
+ # @return [String]
61
+ required :message, String
62
+
63
+ # @!attribute success
64
+ # Whether the agent completed successfully
65
+ #
66
+ # @return [Boolean]
67
+ required :success, Stagehand::Internal::Type::Boolean
68
+
69
+ # @!attribute metadata
70
+ #
71
+ # @return [Hash{Symbol=>Object}, nil]
72
+ optional :metadata, Stagehand::Internal::Type::HashOf[Stagehand::Internal::Type::Unknown]
73
+
74
+ # @!attribute usage
75
+ #
76
+ # @return [Stagehand::Models::SessionExecuteResponse::Data::Result::Usage, nil]
77
+ optional :usage, -> { Stagehand::Models::SessionExecuteResponse::Data::Result::Usage }
78
+
79
+ # @!method initialize(actions:, completed:, message:, success:, metadata: nil, usage: nil)
80
+ # @param actions [Array<Stagehand::Models::SessionExecuteResponse::Data::Result::Action>]
81
+ #
82
+ # @param completed [Boolean] Whether the agent finished its task
83
+ #
84
+ # @param message [String] Summary of what the agent accomplished
85
+ #
86
+ # @param success [Boolean] Whether the agent completed successfully
87
+ #
88
+ # @param metadata [Hash{Symbol=>Object}]
89
+ #
90
+ # @param usage [Stagehand::Models::SessionExecuteResponse::Data::Result::Usage]
91
+
92
+ class Action < Stagehand::Internal::Type::BaseModel
93
+ # @!attribute type
94
+ # Type of action taken
95
+ #
96
+ # @return [String]
97
+ required :type, String
98
+
99
+ # @!attribute action
100
+ #
101
+ # @return [String, nil]
102
+ optional :action, String
103
+
104
+ # @!attribute instruction
105
+ #
106
+ # @return [String, nil]
107
+ optional :instruction, String
108
+
109
+ # @!attribute page_text
110
+ #
111
+ # @return [String, nil]
112
+ optional :page_text, String, api_name: :pageText
113
+
114
+ # @!attribute page_url
115
+ #
116
+ # @return [String, nil]
117
+ optional :page_url, String, api_name: :pageUrl
118
+
119
+ # @!attribute reasoning
120
+ # Agent's reasoning for taking this action
121
+ #
122
+ # @return [String, nil]
123
+ optional :reasoning, String
124
+
125
+ # @!attribute task_completed
126
+ #
127
+ # @return [Boolean, nil]
128
+ optional :task_completed, Stagehand::Internal::Type::Boolean, api_name: :taskCompleted
129
+
130
+ # @!attribute time_ms
131
+ # Time taken for this action in ms
132
+ #
133
+ # @return [Float, nil]
134
+ optional :time_ms, Float, api_name: :timeMs
135
+
136
+ # @!method initialize(type:, action: nil, instruction: nil, page_text: nil, page_url: nil, reasoning: nil, task_completed: nil, time_ms: nil)
137
+ # @param type [String] Type of action taken
138
+ #
139
+ # @param action [String]
140
+ #
141
+ # @param instruction [String]
142
+ #
143
+ # @param page_text [String]
144
+ #
145
+ # @param page_url [String]
146
+ #
147
+ # @param reasoning [String] Agent's reasoning for taking this action
148
+ #
149
+ # @param task_completed [Boolean]
150
+ #
151
+ # @param time_ms [Float] Time taken for this action in ms
152
+ end
153
+
154
+ # @see Stagehand::Models::SessionExecuteResponse::Data::Result#usage
155
+ class Usage < Stagehand::Internal::Type::BaseModel
156
+ # @!attribute inference_time_ms
157
+ #
158
+ # @return [Float]
159
+ required :inference_time_ms, Float
160
+
161
+ # @!attribute input_tokens
162
+ #
163
+ # @return [Float]
164
+ required :input_tokens, Float
165
+
166
+ # @!attribute output_tokens
167
+ #
168
+ # @return [Float]
169
+ required :output_tokens, Float
170
+
171
+ # @!attribute cached_input_tokens
172
+ #
173
+ # @return [Float, nil]
174
+ optional :cached_input_tokens, Float
175
+
176
+ # @!attribute reasoning_tokens
177
+ #
178
+ # @return [Float, nil]
179
+ optional :reasoning_tokens, Float
180
+
181
+ # @!method initialize(inference_time_ms:, input_tokens:, output_tokens:, cached_input_tokens: nil, reasoning_tokens: nil)
182
+ # @param inference_time_ms [Float]
183
+ # @param input_tokens [Float]
184
+ # @param output_tokens [Float]
185
+ # @param cached_input_tokens [Float]
186
+ # @param reasoning_tokens [Float]
187
+ end
188
+ end
189
+
190
+ # @see Stagehand::Models::SessionExecuteResponse::Data#cache_entry
191
+ class CacheEntry < Stagehand::Internal::Type::BaseModel
192
+ # @!attribute cache_key
193
+ # Opaque cache identifier computed from instruction, URL, options, and config
194
+ #
195
+ # @return [String]
196
+ required :cache_key, String, api_name: :cacheKey
197
+
198
+ # @!attribute entry
199
+ # Serialized cache entry that can be written to disk
200
+ #
201
+ # @return [Object]
202
+ required :entry, Stagehand::Internal::Type::Unknown
203
+
204
+ # @!method initialize(cache_key:, entry:)
205
+ # @param cache_key [String] Opaque cache identifier computed from instruction, URL, options, and config
206
+ #
207
+ # @param entry [Object] Serialized cache entry that can be written to disk
208
+ end
209
+ end
210
+ end
211
+ end
212
+ end