Skip to content

Commit 5793fef

Browse files
feat(api): manual updates
1 parent 88bc3ea commit 5793fef

6 files changed

Lines changed: 59 additions & 67 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: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,19 @@ func main() {
5757
option.WithAPIKey("My API Key"), // defaults to os.LookupEnv("STAGEHAND_API_KEY")
5858
option.WithEnvironmentDev(), // or option.WithEnvironmentProduction() | option.WithEnvironmentLocal(); defaults to option.WithEnvironmentProduction()
5959
)
60-
response, err := client.Sessions.Start(context.TODO(), stagehand.SessionStartParams{
61-
Env: stagehand.SessionStartParamsEnvLocal,
62-
})
60+
response, err := client.Sessions.Act(
61+
context.TODO(),
62+
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
63+
stagehand.SessionActParams{
64+
Input: stagehand.SessionActParamsInputUnion{
65+
OfString: stagehand.String("click the first link on the page"),
66+
},
67+
},
68+
)
6369
if err != nil {
6470
panic(err.Error())
6571
}
66-
fmt.Printf("%+v\n", response.Available)
72+
fmt.Printf("%+v\n", response.Actions)
6773
}
6874

6975
```
@@ -301,7 +307,8 @@ To handle errors, we recommend that you use the `errors.As` pattern:
301307

302308
```go
303309
_, err := client.Sessions.Start(context.TODO(), stagehand.SessionStartParams{
304-
Env: stagehand.SessionStartParamsEnvLocal,
310+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
311+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
305312
})
306313
if err != nil {
307314
var apierr *stagehand.Error
@@ -330,7 +337,8 @@ defer cancel()
330337
client.Sessions.Start(
331338
ctx,
332339
stagehand.SessionStartParams{
333-
Env: stagehand.SessionStartParamsEnvLocal,
340+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
341+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
334342
},
335343
// This sets the per-retry timeout
336344
option.WithRequestTimeout(20*time.Second),
@@ -368,7 +376,8 @@ client := stagehand.NewClient(
368376
client.Sessions.Start(
369377
context.TODO(),
370378
stagehand.SessionStartParams{
371-
Env: stagehand.SessionStartParamsEnvLocal,
379+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
380+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
372381
},
373382
option.WithMaxRetries(5),
374383
)
@@ -385,7 +394,8 @@ var response *http.Response
385394
response, err := client.Sessions.Start(
386395
context.TODO(),
387396
stagehand.SessionStartParams{
388-
Env: stagehand.SessionStartParamsEnvLocal,
397+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
398+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
389399
},
390400
option.WithResponseInto(&response),
391401
)

client_test.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ func TestUserAgentHeader(t *testing.T) {
3939
}),
4040
)
4141
client.Sessions.Start(context.Background(), stagehand.SessionStartParams{
42-
Env: stagehand.SessionStartParamsEnvLocal,
42+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
43+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
4344
})
4445
if userAgent != fmt.Sprintf("Stagehand/Go %s", internal.PackageVersion) {
4546
t.Errorf("Expected User-Agent to be correct, but got: %#v", userAgent)
@@ -65,7 +66,8 @@ func TestRetryAfter(t *testing.T) {
6566
}),
6667
)
6768
_, err := client.Sessions.Start(context.Background(), stagehand.SessionStartParams{
68-
Env: stagehand.SessionStartParamsEnvLocal,
69+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
70+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
6971
})
7072
if err == nil {
7173
t.Error("Expected there to be a cancel error")
@@ -102,7 +104,8 @@ func TestDeleteRetryCountHeader(t *testing.T) {
102104
option.WithHeaderDel("X-Stainless-Retry-Count"),
103105
)
104106
_, err := client.Sessions.Start(context.Background(), stagehand.SessionStartParams{
105-
Env: stagehand.SessionStartParamsEnvLocal,
107+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
108+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
106109
})
107110
if err == nil {
108111
t.Error("Expected there to be a cancel error")
@@ -134,7 +137,8 @@ func TestOverwriteRetryCountHeader(t *testing.T) {
134137
option.WithHeader("X-Stainless-Retry-Count", "42"),
135138
)
136139
_, err := client.Sessions.Start(context.Background(), stagehand.SessionStartParams{
137-
Env: stagehand.SessionStartParamsEnvLocal,
140+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
141+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
138142
})
139143
if err == nil {
140144
t.Error("Expected there to be a cancel error")
@@ -165,7 +169,8 @@ func TestRetryAfterMs(t *testing.T) {
165169
}),
166170
)
167171
_, err := client.Sessions.Start(context.Background(), stagehand.SessionStartParams{
168-
Env: stagehand.SessionStartParamsEnvLocal,
172+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
173+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
169174
})
170175
if err == nil {
171176
t.Error("Expected there to be a cancel error")
@@ -190,7 +195,8 @@ func TestContextCancel(t *testing.T) {
190195
cancelCtx, cancel := context.WithCancel(context.Background())
191196
cancel()
192197
_, err := client.Sessions.Start(cancelCtx, stagehand.SessionStartParams{
193-
Env: stagehand.SessionStartParamsEnvLocal,
198+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
199+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
194200
})
195201
if err == nil {
196202
t.Error("Expected there to be a cancel error")
@@ -212,7 +218,8 @@ func TestContextCancelDelay(t *testing.T) {
212218
cancelCtx, cancel := context.WithTimeout(context.Background(), 2*time.Millisecond)
213219
defer cancel()
214220
_, err := client.Sessions.Start(cancelCtx, stagehand.SessionStartParams{
215-
Env: stagehand.SessionStartParamsEnvLocal,
221+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
222+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
216223
})
217224
if err == nil {
218225
t.Error("expected there to be a cancel error")
@@ -240,7 +247,8 @@ func TestContextDeadline(t *testing.T) {
240247
}),
241248
)
242249
_, err := client.Sessions.Start(deadlineCtx, stagehand.SessionStartParams{
243-
Env: stagehand.SessionStartParamsEnvLocal,
250+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
251+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
244252
})
245253
if err == nil {
246254
t.Error("expected there to be a deadline error")

session.go

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -672,26 +672,20 @@ const (
672672
)
673673

674674
type SessionStartParams struct {
675-
// Environment to run the browser in
676-
//
677-
// Any of "LOCAL", "BROWSERBASE".
678-
Env SessionStartParamsEnv `json:"env,omitzero,required"`
679-
// API key for Browserbase (required when env=BROWSERBASE)
680-
APIKey param.Opt[string] `json:"apiKey,omitzero"`
675+
// API key for Browserbase Cloud
676+
BrowserbaseAPIKey string `json:"BROWSERBASE_API_KEY,required"`
677+
// Project ID for Browserbase
678+
BrowserbaseProjectID string `json:"BROWSERBASE_PROJECT_ID,required"`
681679
// Timeout in ms to wait for DOM to settle
682680
DomSettleTimeout param.Opt[int64] `json:"domSettleTimeout,omitzero"`
683-
// AI model to use for actions
681+
// AI model to use for actions (must be prefixed with provider/)
684682
Model param.Opt[string] `json:"model,omitzero"`
685-
// Project ID for Browserbase (required when env=BROWSERBASE)
686-
ProjectID param.Opt[string] `json:"projectId,omitzero"`
687683
// Enable self-healing for failed actions
688684
SelfHeal param.Opt[bool] `json:"selfHeal,omitzero"`
689685
// Custom system prompt for AI actions
690686
SystemPrompt param.Opt[string] `json:"systemPrompt,omitzero"`
691687
// Logging verbosity level
692688
Verbose param.Opt[int64] `json:"verbose,omitzero"`
693-
// Options for local browser launch
694-
LocalBrowserLaunchOptions SessionStartParamsLocalBrowserLaunchOptions `json:"localBrowserLaunchOptions,omitzero"`
695689
paramObj
696690
}
697691

@@ -702,25 +696,3 @@ func (r SessionStartParams) MarshalJSON() (data []byte, err error) {
702696
func (r *SessionStartParams) UnmarshalJSON(data []byte) error {
703697
return apijson.UnmarshalRoot(data, r)
704698
}
705-
706-
// Environment to run the browser in
707-
type SessionStartParamsEnv string
708-
709-
const (
710-
SessionStartParamsEnvLocal SessionStartParamsEnv = "LOCAL"
711-
SessionStartParamsEnvBrowserbase SessionStartParamsEnv = "BROWSERBASE"
712-
)
713-
714-
// Options for local browser launch
715-
type SessionStartParamsLocalBrowserLaunchOptions struct {
716-
Headless param.Opt[bool] `json:"headless,omitzero"`
717-
paramObj
718-
}
719-
720-
func (r SessionStartParamsLocalBrowserLaunchOptions) MarshalJSON() (data []byte, err error) {
721-
type shadow SessionStartParamsLocalBrowserLaunchOptions
722-
return param.MarshalObject(r, (*shadow)(&r))
723-
}
724-
func (r *SessionStartParamsLocalBrowserLaunchOptions) UnmarshalJSON(data []byte) error {
725-
return apijson.UnmarshalRoot(data, r)
726-
}

session_test.go

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -257,17 +257,13 @@ func TestSessionStartWithOptionalParams(t *testing.T) {
257257
option.WithAPIKey("My API Key"),
258258
)
259259
_, err := client.Sessions.Start(context.TODO(), stagehand.SessionStartParams{
260-
Env: stagehand.SessionStartParamsEnvLocal,
261-
APIKey: stagehand.String("apiKey"),
262-
DomSettleTimeout: stagehand.Int(0),
263-
LocalBrowserLaunchOptions: stagehand.SessionStartParamsLocalBrowserLaunchOptions{
264-
Headless: stagehand.Bool(true),
265-
},
266-
Model: stagehand.String("openai/gpt-4o"),
267-
ProjectID: stagehand.String("projectId"),
268-
SelfHeal: stagehand.Bool(true),
269-
SystemPrompt: stagehand.String("systemPrompt"),
270-
Verbose: stagehand.Int(1),
260+
BrowserbaseAPIKey: "BROWSERBASE_API_KEY",
261+
BrowserbaseProjectID: "BROWSERBASE_PROJECT_ID",
262+
DomSettleTimeout: stagehand.Int(0),
263+
Model: stagehand.String("openai/gpt-4o"),
264+
SelfHeal: stagehand.Bool(true),
265+
SystemPrompt: stagehand.String("systemPrompt"),
266+
Verbose: stagehand.Int(1),
271267
})
272268
if err != nil {
273269
var apierr *stagehand.Error

usage_test.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,17 @@ func TestUsage(t *testing.T) {
2424
option.WithBaseURL(baseURL),
2525
option.WithAPIKey("My API Key"),
2626
)
27-
response, err := client.Sessions.Start(context.TODO(), stagehand.SessionStartParams{
28-
Env: stagehand.SessionStartParamsEnvLocal,
29-
})
27+
response, err := client.Sessions.Act(
28+
context.TODO(),
29+
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
30+
stagehand.SessionActParams{
31+
Input: stagehand.SessionActParamsInputUnion{
32+
OfString: stagehand.String("click the first link on the page"),
33+
},
34+
},
35+
)
3036
if err != nil {
3137
t.Fatalf("err should be nil: %s", err.Error())
3238
}
33-
t.Logf("%+v\n", response.Available)
39+
t.Logf("%+v\n", response.Actions)
3440
}

0 commit comments

Comments
 (0)