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,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ # @see Stagehand::Resources::Sessions#start
6
+ class SessionStartResponse < Stagehand::Internal::Type::BaseModel
7
+ # @!attribute data
8
+ #
9
+ # @return [Stagehand::Models::SessionStartResponse::Data]
10
+ required :data, -> { Stagehand::Models::SessionStartResponse::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::SessionStartResponse::Data]
20
+ #
21
+ # @param success [Boolean] Indicates whether the request was successful
22
+
23
+ # @see Stagehand::Models::SessionStartResponse#data
24
+ class Data < Stagehand::Internal::Type::BaseModel
25
+ # @!attribute available
26
+ #
27
+ # @return [Boolean]
28
+ required :available, Stagehand::Internal::Type::Boolean
29
+
30
+ # @!attribute session_id
31
+ # Unique Browserbase session identifier
32
+ #
33
+ # @return [String]
34
+ required :session_id, String, api_name: :sessionId
35
+
36
+ # @!attribute cdp_url
37
+ # CDP WebSocket URL for connecting to the Browserbase cloud browser (present when
38
+ # available)
39
+ #
40
+ # @return [String, nil]
41
+ optional :cdp_url, String, api_name: :cdpUrl, nil?: true
42
+
43
+ # @!method initialize(available:, session_id:, cdp_url: nil)
44
+ # Some parameter documentations has been truncated, see
45
+ # {Stagehand::Models::SessionStartResponse::Data} for more details.
46
+ #
47
+ # @param available [Boolean]
48
+ #
49
+ # @param session_id [String] Unique Browserbase session identifier
50
+ #
51
+ # @param cdp_url [String, nil] CDP WebSocket URL for connecting to the Browserbase cloud browser (present when
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ module Models
5
+ class StreamEvent < Stagehand::Internal::Type::BaseModel
6
+ # @!attribute id
7
+ # Unique identifier for this event
8
+ #
9
+ # @return [String]
10
+ required :id, String
11
+
12
+ # @!attribute data
13
+ #
14
+ # @return [Stagehand::Models::StreamEvent::Data::StreamEventSystemDataOutput, Stagehand::Models::StreamEvent::Data::StreamEventLogDataOutput]
15
+ required :data, union: -> { Stagehand::StreamEvent::Data }
16
+
17
+ # @!attribute type
18
+ # Type of stream event - system events or log messages
19
+ #
20
+ # @return [Symbol, Stagehand::Models::StreamEvent::Type]
21
+ required :type, enum: -> { Stagehand::StreamEvent::Type }
22
+
23
+ # @!method initialize(id:, data:, type:)
24
+ # Server-Sent Event emitted during streaming responses. Events are sent as
25
+ # `data: <JSON>\n\n`. Key order: data (with status first), type, id.
26
+ #
27
+ # @param id [String] Unique identifier for this event
28
+ #
29
+ # @param data [Stagehand::Models::StreamEvent::Data::StreamEventSystemDataOutput, Stagehand::Models::StreamEvent::Data::StreamEventLogDataOutput]
30
+ #
31
+ # @param type [Symbol, Stagehand::Models::StreamEvent::Type] Type of stream event - system events or log messages
32
+
33
+ # @see Stagehand::Models::StreamEvent#data
34
+ module Data
35
+ extend Stagehand::Internal::Type::Union
36
+
37
+ variant -> { Stagehand::StreamEvent::Data::StreamEventSystemDataOutput }
38
+
39
+ variant -> { Stagehand::StreamEvent::Data::StreamEventLogDataOutput }
40
+
41
+ class StreamEventSystemDataOutput < Stagehand::Internal::Type::BaseModel
42
+ # @!attribute status
43
+ # Current status of the streaming operation
44
+ #
45
+ # @return [Symbol, Stagehand::Models::StreamEvent::Data::StreamEventSystemDataOutput::Status]
46
+ required :status, enum: -> { Stagehand::StreamEvent::Data::StreamEventSystemDataOutput::Status }
47
+
48
+ # @!attribute error
49
+ # Error message (present when status is 'error')
50
+ #
51
+ # @return [String, nil]
52
+ optional :error, String
53
+
54
+ # @!attribute result
55
+ # Operation result (present when status is 'finished')
56
+ #
57
+ # @return [Object, nil]
58
+ optional :result, Stagehand::Internal::Type::Unknown
59
+
60
+ # @!method initialize(status:, error: nil, result: nil)
61
+ # @param status [Symbol, Stagehand::Models::StreamEvent::Data::StreamEventSystemDataOutput::Status] Current status of the streaming operation
62
+ #
63
+ # @param error [String] Error message (present when status is 'error')
64
+ #
65
+ # @param result [Object] Operation result (present when status is 'finished')
66
+
67
+ # Current status of the streaming operation
68
+ #
69
+ # @see Stagehand::Models::StreamEvent::Data::StreamEventSystemDataOutput#status
70
+ module Status
71
+ extend Stagehand::Internal::Type::Enum
72
+
73
+ STARTING = :starting
74
+ CONNECTED = :connected
75
+ RUNNING = :running
76
+ FINISHED = :finished
77
+ ERROR = :error
78
+
79
+ # @!method self.values
80
+ # @return [Array<Symbol>]
81
+ end
82
+ end
83
+
84
+ class StreamEventLogDataOutput < Stagehand::Internal::Type::BaseModel
85
+ # @!attribute message
86
+ # Log message from the operation
87
+ #
88
+ # @return [String]
89
+ required :message, String
90
+
91
+ # @!attribute status
92
+ #
93
+ # @return [Symbol, :running]
94
+ required :status, const: :running
95
+
96
+ # @!method initialize(message:, status: :running)
97
+ # @param message [String] Log message from the operation
98
+ #
99
+ # @param status [Symbol, :running]
100
+ end
101
+
102
+ # @!method self.variants
103
+ # @return [Array(Stagehand::Models::StreamEvent::Data::StreamEventSystemDataOutput, Stagehand::Models::StreamEvent::Data::StreamEventLogDataOutput)]
104
+ end
105
+
106
+ # Type of stream event - system events or log messages
107
+ #
108
+ # @see Stagehand::Models::StreamEvent#type
109
+ module Type
110
+ extend Stagehand::Internal::Type::Enum
111
+
112
+ SYSTEM = :system
113
+ LOG = :log
114
+
115
+ # @!method self.values
116
+ # @return [Array<Symbol>]
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ [Stagehand::Internal::Type::BaseModel, *Stagehand::Internal::Type::BaseModel.subclasses].each do |cls|
5
+ cls.define_sorbet_constant!(:OrHash) { T.type_alias { T.any(cls, Stagehand::Internal::AnyHash) } }
6
+ end
7
+
8
+ Stagehand::Internal::Util.walk_namespaces(Stagehand::Models).each do |mod|
9
+ case mod
10
+ in Stagehand::Internal::Type::Enum | Stagehand::Internal::Type::Union
11
+ mod.constants.each do |name|
12
+ case mod.const_get(name)
13
+ in true | false
14
+ mod.define_sorbet_constant!(:TaggedBoolean) { T.type_alias { T::Boolean } }
15
+ mod.define_sorbet_constant!(:OrBoolean) { T.type_alias { T::Boolean } }
16
+ in Integer
17
+ mod.define_sorbet_constant!(:TaggedInteger) { T.type_alias { Integer } }
18
+ mod.define_sorbet_constant!(:OrInteger) { T.type_alias { Integer } }
19
+ in Float
20
+ mod.define_sorbet_constant!(:TaggedFloat) { T.type_alias { Float } }
21
+ mod.define_sorbet_constant!(:OrFloat) { T.type_alias { Float } }
22
+ in Symbol
23
+ mod.define_sorbet_constant!(:TaggedSymbol) { T.type_alias { Symbol } }
24
+ mod.define_sorbet_constant!(:OrSymbol) { T.type_alias { T.any(Symbol, String) } }
25
+ else
26
+ end
27
+ end
28
+ else
29
+ end
30
+ end
31
+
32
+ Stagehand::Internal::Util.walk_namespaces(Stagehand::Models)
33
+ .lazy
34
+ .grep(Stagehand::Internal::Type::Union)
35
+ .each do |mod|
36
+ const = :Variants
37
+ next if mod.sorbet_constant_defined?(const)
38
+
39
+ mod.define_sorbet_constant!(const) { T.type_alias { mod.to_sorbet_type } }
40
+ end
41
+
42
+ Action = Stagehand::Models::Action
43
+
44
+ ModelConfig = Stagehand::Models::ModelConfig
45
+
46
+ SessionActParams = Stagehand::Models::SessionActParams
47
+
48
+ SessionEndParams = Stagehand::Models::SessionEndParams
49
+
50
+ SessionExecuteParams = Stagehand::Models::SessionExecuteParams
51
+
52
+ SessionExtractParams = Stagehand::Models::SessionExtractParams
53
+
54
+ SessionNavigateParams = Stagehand::Models::SessionNavigateParams
55
+
56
+ SessionObserveParams = Stagehand::Models::SessionObserveParams
57
+
58
+ SessionReplayParams = Stagehand::Models::SessionReplayParams
59
+
60
+ SessionStartParams = Stagehand::Models::SessionStartParams
61
+
62
+ StreamEvent = Stagehand::Models::StreamEvent
63
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stagehand
4
+ # Specify HTTP behaviour to use for a specific request. These options supplement
5
+ # or override those provided at the client level.
6
+ #
7
+ # When making a request, you can pass an actual {RequestOptions} instance, or
8
+ # simply pass a Hash with symbol keys matching the attributes on this class.
9
+ class RequestOptions < Stagehand::Internal::Type::BaseModel
10
+ # @api private
11
+ #
12
+ # @param opts [Stagehand::RequestOptions, Hash{Symbol=>Object}]
13
+ #
14
+ # @raise [ArgumentError]
15
+ def self.validate!(opts)
16
+ case opts
17
+ in Stagehand::RequestOptions | Hash
18
+ opts.to_h.each_key do |k|
19
+ unless fields.include?(k)
20
+ raise ArgumentError.new("Request `opts` keys must be one of #{fields.keys}, got #{k.inspect}")
21
+ end
22
+ end
23
+ else
24
+ raise ArgumentError.new("Request `opts` must be a Hash or RequestOptions, got #{opts.inspect}")
25
+ end
26
+ end
27
+
28
+ # @!attribute idempotency_key
29
+ # Idempotency key to send with request and all associated retries. Will only be
30
+ # sent for write requests.
31
+ #
32
+ # @return [String, nil]
33
+ optional :idempotency_key, String
34
+
35
+ # @!attribute extra_query
36
+ # Extra query params to send with the request. These are `.merge`’d into any
37
+ # `query` given at the client level.
38
+ #
39
+ # @return [Hash{String=>Array<String>, String, nil}, nil]
40
+ optional :extra_query, Stagehand::Internal::Type::HashOf[Stagehand::Internal::Type::ArrayOf[String]]
41
+
42
+ # @!attribute extra_headers
43
+ # Extra headers to send with the request. These are `.merged`’d into any
44
+ # `extra_headers` given at the client level.
45
+ #
46
+ # @return [Hash{String=>String, nil}, nil]
47
+ optional :extra_headers, Stagehand::Internal::Type::HashOf[String, nil?: true]
48
+
49
+ # @!attribute extra_body
50
+ # Extra data to send with the request. These are deep merged into any data
51
+ # generated as part of the normal request.
52
+ #
53
+ # @return [Object, nil]
54
+ optional :extra_body, Stagehand::Internal::Type::HashOf[Stagehand::Internal::Type::Unknown]
55
+
56
+ # @!attribute max_retries
57
+ # Maximum number of retries to attempt after a failed initial request.
58
+ #
59
+ # @return [Integer, nil]
60
+ optional :max_retries, Integer
61
+
62
+ # @!attribute timeout
63
+ # Request timeout in seconds.
64
+ #
65
+ # @return [Float, nil]
66
+ optional :timeout, Float
67
+
68
+ # @!method initialize(values = {})
69
+ # Returns a new instance of RequestOptions.
70
+ #
71
+ # @param values [Hash{Symbol=>Object}]
72
+
73
+ define_sorbet_constant!(:OrHash) do
74
+ T.type_alias { T.any(Stagehand::RequestOptions, Stagehand::Internal::AnyHash) }
75
+ end
76
+ end
77
+ end