Skip to content

Commit 0bcedba

Browse files
feat(api): manual updates
1 parent 431fa72 commit 0bcedba

10 files changed

Lines changed: 136 additions & 256 deletions

File tree

.stats.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 7
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-09064f4021f94fb1b1bd86ce496d998318276b61bbc24de4728ecdb5763847ef.yml
3-
openapi_spec_hash: 911d0631010b372890f98545a038cfb5
4-
config_hash: bb7561632c1f66c2b9efca06f438f904
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-6a22863a7da4fa45f904657a4cb8fc1a28e236925f03dc94fca25fd8271ca6db.yml
3+
openapi_spec_hash: d5c6108942ad79f39ea4ff1bee9b7996
4+
config_hash: 2f1ec44e7e07906e07bdc6e075763da9

README.md

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ stagehand = Stagehand::Client.new(
3333
environment: "dev" # or "production" | "local"; defaults to "production"
3434
)
3535

36-
response = stagehand.sessions.start(env: "LOCAL")
36+
response = stagehand.sessions.act("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", input: "click the first link on the page")
3737

38-
puts(response.available)
38+
puts(response.actions)
3939
```
4040

4141
### Handling errors
@@ -44,7 +44,10 @@ When the library is unable to connect to the API, or if the API returns a non-su
4444

4545
```ruby
4646
begin
47-
session = stagehand.sessions.start(env: "LOCAL")
47+
session = stagehand.sessions.start(
48+
browserbase_api_key: "BROWSERBASE_API_KEY",
49+
browserbase_project_id: "BROWSERBASE_PROJECT_ID"
50+
)
4851
rescue Stagehand::Errors::APIConnectionError => e
4952
puts("The server could not be reached")
5053
puts(e.cause) # an underlying Exception, likely raised within `net/http`
@@ -87,7 +90,11 @@ stagehand = Stagehand::Client.new(
8790
)
8891

8992
# Or, configure per-request:
90-
stagehand.sessions.start(env: "LOCAL", request_options: {max_retries: 5})
93+
stagehand.sessions.start(
94+
browserbase_api_key: "BROWSERBASE_API_KEY",
95+
browserbase_project_id: "BROWSERBASE_PROJECT_ID",
96+
request_options: {max_retries: 5}
97+
)
9198
```
9299

93100
### Timeouts
@@ -101,7 +108,11 @@ stagehand = Stagehand::Client.new(
101108
)
102109

103110
# Or, configure per-request:
104-
stagehand.sessions.start(env: "LOCAL", request_options: {timeout: 5})
111+
stagehand.sessions.start(
112+
browserbase_api_key: "BROWSERBASE_API_KEY",
113+
browserbase_project_id: "BROWSERBASE_PROJECT_ID",
114+
request_options: {timeout: 5}
115+
)
105116
```
106117

107118
On timeout, `Stagehand::Errors::APITimeoutError` is raised.
@@ -133,7 +144,8 @@ Note: the `extra_` parameters of the same name overrides the documented paramete
133144
```ruby
134145
response =
135146
stagehand.sessions.start(
136-
env: "LOCAL",
147+
browserbase_api_key: "BROWSERBASE_API_KEY",
148+
browserbase_project_id: "BROWSERBASE_PROJECT_ID",
137149
request_options: {
138150
extra_query: {my_query_parameter: value},
139151
extra_body: {my_body_parameter: value},
@@ -179,18 +191,18 @@ This library provides comprehensive [RBI](https://sorbet.org/docs/rbi) definitio
179191
You can provide typesafe request parameters like so:
180192

181193
```ruby
182-
stagehand.sessions.start(env: "LOCAL")
194+
stagehand.sessions.act("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", input: "click the first link on the page")
183195
```
184196

185197
Or, equivalently:
186198

187199
```ruby
188200
# Hashes work, but are not typesafe:
189-
stagehand.sessions.start(env: "LOCAL")
201+
stagehand.sessions.act("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", input: "click the first link on the page")
190202

191203
# You can also splat a full Params class:
192-
params = Stagehand::SessionStartParams.new(env: "LOCAL")
193-
stagehand.sessions.start(**params)
204+
params = Stagehand::SessionActParams.new(input: "click the first link on the page")
205+
stagehand.sessions.act("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", **params)
194206
```
195207

196208
### Enums

lib/stagehand/models/session_start_params.rb

Lines changed: 13 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -7,44 +7,30 @@ class SessionStartParams < Stagehand::Internal::Type::BaseModel
77
extend Stagehand::Internal::Type::RequestParameters::Converter
88
include Stagehand::Internal::Type::RequestParameters
99

10-
# @!attribute env
11-
# Environment to run the browser in
10+
# @!attribute browserbase_api_key
11+
# API key for Browserbase Cloud
1212
#
13-
# @return [Symbol, Stagehand::Models::SessionStartParams::Env]
14-
required :env, enum: -> { Stagehand::SessionStartParams::Env }
13+
# @return [String]
14+
required :browserbase_api_key, String, api_name: :BROWSERBASE_API_KEY
1515

16-
# @!attribute api_key
17-
# API key for Browserbase (required when env=BROWSERBASE)
16+
# @!attribute browserbase_project_id
17+
# Project ID for Browserbase
1818
#
19-
# @return [String, nil]
20-
optional :api_key, String, api_name: :apiKey
19+
# @return [String]
20+
required :browserbase_project_id, String, api_name: :BROWSERBASE_PROJECT_ID
2121

2222
# @!attribute dom_settle_timeout
2323
# Timeout in ms to wait for DOM to settle
2424
#
2525
# @return [Integer, nil]
2626
optional :dom_settle_timeout, Integer, api_name: :domSettleTimeout
2727

28-
# @!attribute local_browser_launch_options
29-
# Options for local browser launch
30-
#
31-
# @return [Stagehand::Models::SessionStartParams::LocalBrowserLaunchOptions, nil]
32-
optional :local_browser_launch_options,
33-
-> { Stagehand::SessionStartParams::LocalBrowserLaunchOptions },
34-
api_name: :localBrowserLaunchOptions
35-
3628
# @!attribute model
37-
# AI model to use for actions
29+
# AI model to use for actions (must be prefixed with provider/)
3830
#
3931
# @return [String, nil]
4032
optional :model, String
4133

42-
# @!attribute project_id
43-
# Project ID for Browserbase (required when env=BROWSERBASE)
44-
#
45-
# @return [String, nil]
46-
optional :project_id, String, api_name: :projectId
47-
4834
# @!attribute self_heal
4935
# Enable self-healing for failed actions
5036
#
@@ -63,18 +49,14 @@ class SessionStartParams < Stagehand::Internal::Type::BaseModel
6349
# @return [Integer, nil]
6450
optional :verbose, Integer
6551

66-
# @!method initialize(env:, api_key: nil, dom_settle_timeout: nil, local_browser_launch_options: nil, model: nil, project_id: nil, self_heal: nil, system_prompt: nil, verbose: nil, request_options: {})
67-
# @param env [Symbol, Stagehand::Models::SessionStartParams::Env] Environment to run the browser in
52+
# @!method initialize(browserbase_api_key:, browserbase_project_id:, dom_settle_timeout: nil, model: nil, self_heal: nil, system_prompt: nil, verbose: nil, request_options: {})
53+
# @param browserbase_api_key [String] API key for Browserbase Cloud
6854
#
69-
# @param api_key [String] API key for Browserbase (required when env=BROWSERBASE)
55+
# @param browserbase_project_id [String] Project ID for Browserbase
7056
#
7157
# @param dom_settle_timeout [Integer] Timeout in ms to wait for DOM to settle
7258
#
73-
# @param local_browser_launch_options [Stagehand::Models::SessionStartParams::LocalBrowserLaunchOptions] Options for local browser launch
74-
#
75-
# @param model [String] AI model to use for actions
76-
#
77-
# @param project_id [String] Project ID for Browserbase (required when env=BROWSERBASE)
59+
# @param model [String] AI model to use for actions (must be prefixed with provider/)
7860
#
7961
# @param self_heal [Boolean] Enable self-healing for failed actions
8062
#
@@ -83,29 +65,6 @@ class SessionStartParams < Stagehand::Internal::Type::BaseModel
8365
# @param verbose [Integer] Logging verbosity level
8466
#
8567
# @param request_options [Stagehand::RequestOptions, Hash{Symbol=>Object}]
86-
87-
# Environment to run the browser in
88-
module Env
89-
extend Stagehand::Internal::Type::Enum
90-
91-
LOCAL = :LOCAL
92-
BROWSERBASE = :BROWSERBASE
93-
94-
# @!method self.values
95-
# @return [Array<Symbol>]
96-
end
97-
98-
class LocalBrowserLaunchOptions < Stagehand::Internal::Type::BaseModel
99-
# @!attribute headless
100-
#
101-
# @return [Boolean, nil]
102-
optional :headless, Stagehand::Internal::Type::Boolean
103-
104-
# @!method initialize(headless: nil)
105-
# Options for local browser launch
106-
#
107-
# @param headless [Boolean]
108-
end
10968
end
11069
end
11170
end

lib/stagehand/resources/sessions.rb

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -192,19 +192,15 @@ def observe(session_id, params = {})
192192
# Initializes a new Stagehand session with a browser instance. Returns a session
193193
# ID that must be used for all subsequent requests.
194194
#
195-
# @overload start(env:, api_key: nil, dom_settle_timeout: nil, local_browser_launch_options: nil, model: nil, project_id: nil, self_heal: nil, system_prompt: nil, verbose: nil, request_options: {})
195+
# @overload start(browserbase_api_key:, browserbase_project_id:, dom_settle_timeout: nil, model: nil, self_heal: nil, system_prompt: nil, verbose: nil, request_options: {})
196196
#
197-
# @param env [Symbol, Stagehand::Models::SessionStartParams::Env] Environment to run the browser in
197+
# @param browserbase_api_key [String] API key for Browserbase Cloud
198198
#
199-
# @param api_key [String] API key for Browserbase (required when env=BROWSERBASE)
199+
# @param browserbase_project_id [String] Project ID for Browserbase
200200
#
201201
# @param dom_settle_timeout [Integer] Timeout in ms to wait for DOM to settle
202202
#
203-
# @param local_browser_launch_options [Stagehand::Models::SessionStartParams::LocalBrowserLaunchOptions] Options for local browser launch
204-
#
205-
# @param model [String] AI model to use for actions
206-
#
207-
# @param project_id [String] Project ID for Browserbase (required when env=BROWSERBASE)
203+
# @param model [String] AI model to use for actions (must be prefixed with provider/)
208204
#
209205
# @param self_heal [Boolean] Enable self-healing for failed actions
210206
#

rbi/stagehand/models/session_start_params.rbi

Lines changed: 16 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,13 @@ module Stagehand
1111
T.any(Stagehand::SessionStartParams, Stagehand::Internal::AnyHash)
1212
end
1313

14-
# Environment to run the browser in
15-
sig { returns(Stagehand::SessionStartParams::Env::OrSymbol) }
16-
attr_accessor :env
14+
# API key for Browserbase Cloud
15+
sig { returns(String) }
16+
attr_accessor :browserbase_api_key
1717

18-
# API key for Browserbase (required when env=BROWSERBASE)
19-
sig { returns(T.nilable(String)) }
20-
attr_reader :api_key
21-
22-
sig { params(api_key: String).void }
23-
attr_writer :api_key
18+
# Project ID for Browserbase
19+
sig { returns(String) }
20+
attr_accessor :browserbase_project_id
2421

2522
# Timeout in ms to wait for DOM to settle
2623
sig { returns(T.nilable(Integer)) }
@@ -29,36 +26,13 @@ module Stagehand
2926
sig { params(dom_settle_timeout: Integer).void }
3027
attr_writer :dom_settle_timeout
3128

32-
# Options for local browser launch
33-
sig do
34-
returns(
35-
T.nilable(Stagehand::SessionStartParams::LocalBrowserLaunchOptions)
36-
)
37-
end
38-
attr_reader :local_browser_launch_options
39-
40-
sig do
41-
params(
42-
local_browser_launch_options:
43-
Stagehand::SessionStartParams::LocalBrowserLaunchOptions::OrHash
44-
).void
45-
end
46-
attr_writer :local_browser_launch_options
47-
48-
# AI model to use for actions
29+
# AI model to use for actions (must be prefixed with provider/)
4930
sig { returns(T.nilable(String)) }
5031
attr_reader :model
5132

5233
sig { params(model: String).void }
5334
attr_writer :model
5435

55-
# Project ID for Browserbase (required when env=BROWSERBASE)
56-
sig { returns(T.nilable(String)) }
57-
attr_reader :project_id
58-
59-
sig { params(project_id: String).void }
60-
attr_writer :project_id
61-
6236
# Enable self-healing for failed actions
6337
sig { returns(T.nilable(T::Boolean)) }
6438
attr_reader :self_heal
@@ -82,32 +56,25 @@ module Stagehand
8256

8357
sig do
8458
params(
85-
env: Stagehand::SessionStartParams::Env::OrSymbol,
86-
api_key: String,
59+
browserbase_api_key: String,
60+
browserbase_project_id: String,
8761
dom_settle_timeout: Integer,
88-
local_browser_launch_options:
89-
Stagehand::SessionStartParams::LocalBrowserLaunchOptions::OrHash,
9062
model: String,
91-
project_id: String,
9263
self_heal: T::Boolean,
9364
system_prompt: String,
9465
verbose: Integer,
9566
request_options: Stagehand::RequestOptions::OrHash
9667
).returns(T.attached_class)
9768
end
9869
def self.new(
99-
# Environment to run the browser in
100-
env:,
101-
# API key for Browserbase (required when env=BROWSERBASE)
102-
api_key: nil,
70+
# API key for Browserbase Cloud
71+
browserbase_api_key:,
72+
# Project ID for Browserbase
73+
browserbase_project_id:,
10374
# Timeout in ms to wait for DOM to settle
10475
dom_settle_timeout: nil,
105-
# Options for local browser launch
106-
local_browser_launch_options: nil,
107-
# AI model to use for actions
76+
# AI model to use for actions (must be prefixed with provider/)
10877
model: nil,
109-
# Project ID for Browserbase (required when env=BROWSERBASE)
110-
project_id: nil,
11178
# Enable self-healing for failed actions
11279
self_heal: nil,
11380
# Custom system prompt for AI actions
@@ -121,13 +88,10 @@ module Stagehand
12188
sig do
12289
override.returns(
12390
{
124-
env: Stagehand::SessionStartParams::Env::OrSymbol,
125-
api_key: String,
91+
browserbase_api_key: String,
92+
browserbase_project_id: String,
12693
dom_settle_timeout: Integer,
127-
local_browser_launch_options:
128-
Stagehand::SessionStartParams::LocalBrowserLaunchOptions,
12994
model: String,
130-
project_id: String,
13195
self_heal: T::Boolean,
13296
system_prompt: String,
13397
verbose: Integer,
@@ -137,52 +101,6 @@ module Stagehand
137101
end
138102
def to_hash
139103
end
140-
141-
# Environment to run the browser in
142-
module Env
143-
extend Stagehand::Internal::Type::Enum
144-
145-
TaggedSymbol =
146-
T.type_alias { T.all(Symbol, Stagehand::SessionStartParams::Env) }
147-
OrSymbol = T.type_alias { T.any(Symbol, String) }
148-
149-
LOCAL = T.let(:LOCAL, Stagehand::SessionStartParams::Env::TaggedSymbol)
150-
BROWSERBASE =
151-
T.let(:BROWSERBASE, Stagehand::SessionStartParams::Env::TaggedSymbol)
152-
153-
sig do
154-
override.returns(
155-
T::Array[Stagehand::SessionStartParams::Env::TaggedSymbol]
156-
)
157-
end
158-
def self.values
159-
end
160-
end
161-
162-
class LocalBrowserLaunchOptions < Stagehand::Internal::Type::BaseModel
163-
OrHash =
164-
T.type_alias do
165-
T.any(
166-
Stagehand::SessionStartParams::LocalBrowserLaunchOptions,
167-
Stagehand::Internal::AnyHash
168-
)
169-
end
170-
171-
sig { returns(T.nilable(T::Boolean)) }
172-
attr_reader :headless
173-
174-
sig { params(headless: T::Boolean).void }
175-
attr_writer :headless
176-
177-
# Options for local browser launch
178-
sig { params(headless: T::Boolean).returns(T.attached_class) }
179-
def self.new(headless: nil)
180-
end
181-
182-
sig { override.returns({ headless: T::Boolean }) }
183-
def to_hash
184-
end
185-
end
186104
end
187105
end
188106
end

0 commit comments

Comments
 (0)