-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Expand file tree
/
Copy pathstainless.yml
More file actions
284 lines (267 loc) · 9.05 KB
/
stainless.yml
File metadata and controls
284 lines (267 loc) · 9.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
# yaml-language-server: $schema=https://app.stainless.com/config-internal.schema.json
##########################################################################
############ DO NOT EDIT THIS FILE IN THE STAINLESS STUDIO UI ############
############ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ############
############ ONLY EDIT IN browserbase/stagehand/stainless.yml ############
##########################################################################
edition: 2025-10-10
organization:
name: stagehand
docs: https://docs.stagehand.dev
contact: ""
targets:
python:
edition: python.2025-11-20
package_name: stagehand
project_name: stagehand
production_repo: browserbase/stagehand-python
publish:
pypi: true
go:
edition: go.2025-10-08
package_name: stagehand
production_repo: browserbase/stagehand-go
options:
enable_v2: true
java:
edition: java.2025-10-08
reverse_domain: com.browserbase.api
package_name: stagehand
production_repo: browserbase/stagehand-java
publish:
maven:
sonatype_platform: portal
kotlin:
edition: kotlin.2025-10-08
reverse_domain: com.browserbase.api
package_name: stagehand
production_repo: browserbase/stagehand-kotlin
publish:
maven:
sonatype_platform: portal
ruby:
edition: ruby.2025-10-08
gem_name: stagehand
production_repo: browserbase/stagehand-ruby
publish:
rubygems: false
typescript:
edition: typescript.2025-10-10
package_name: stagehand-sdk
production_repo: null
publish:
npm: false
options:
mcp_server: false
php:
edition: php.2025-10-08
package_name: stagehand
production_repo: browserbase/stagehand-php
composer_package_name: browserbase/stagehand
publish:
packagist: true
csharp:
edition: csharp.2025-10-08
package_name: stagehand
production_repo: browserbase/stagehand-net
publish:
nuget: true
# cli:
# edition: cli.2025-10-08
# binary_name: stagehand
# production_repo: browserbase/stagehand-cli
# `environments` are a map of the name of the environment (e.g. "sandbox",
# "production") to the corresponding url to use.
environments:
production: https://api.stagehand.browserbase.com
# dev: https://api.stagehand.dev.browserbase.com
# local: http://stagehand-api.localhost
# OpenAPI transforms applied by Stainless during SDK generation.
# This keeps the generated `packages/server-v3/openapi.v3.yaml` faithful to the Fastify+Zod source,
# while still producing a Stainless-compatible spec for codegen.
openapi:
code_samples: mintlify
transforms:
# Stainless doesn't support `propertyNames` (emitted by some JSON Schema generators).
- command: remove
reason: Remove unsupported JSON Schema keyword
args:
target: "$..propertyNames"
# Empty-schema `additionalProperties: {}` is equivalent to `true`, and avoids Stainless issues.
- command: update
reason: Treat record value schema as any
args:
target: "$.components.schemas.BrowserbaseSessionCreateParams.properties.userMetadata.additionalProperties"
value: true
- command: update
reason: Treat record value schema as any
args:
target: "$.components.schemas.BrowserbaseSessionCreateParamsOutput.properties.userMetadata.additionalProperties"
value: true
- command: update
reason: Treat record value schema as any
args:
target: "$.components.schemas.ExtractRequest.properties.schema.additionalProperties"
value: true
- command: update
reason: Treat record value schema as any
args:
target: "$.components.schemas.AgentResultData.properties.metadata.additionalProperties"
value: true
- command: update
reason: Treat record value schema as any
args:
target: "$.components.schemas.AgentResultDataOutput.properties.metadata.additionalProperties"
value: true
- command: update
reason: Treat passthrough schema as any
args:
target: "$.components.schemas.AgentAction.additionalProperties"
value: true
# Add a stable title to help Stainless infer a consistent name for this anonymous array schema.
- command: merge
reason: Improve name inference for anonymous arrays
args:
target: '$.components.schemas.BrowserbaseSessionCreateParams.properties.proxies.anyOf[?(@.type == "array")]'
value:
title: ProxyConfigList
- command: merge
reason: Improve name inference for anonymous arrays
args:
target: '$.components.schemas.BrowserbaseSessionCreateParamsOutput.properties.proxies.anyOf[?(@.type == "array")]'
value:
title: ProxyConfigList
# `result` is intentionally untyped and should be treated as `any` in Stainless.
- command: merge
reason: Treat StreamEventSystemData.result as any
args:
target: "$.components.schemas.StreamEventSystemData.properties.result"
value:
x-stainless-any: true
- command: merge
reason: Treat StreamEventSystemDataOutput.result as any
args:
target: "$.components.schemas.StreamEventSystemDataOutput.properties.result"
value:
x-stainless-any: true
# `resources` define the structure and organization for your API, such as how
# methods and models are grouped together and accessed. See the [configuration
# guide] for more information.
#
# [configuration guide]: https://www.stainless.com/docs/guides/configure#resources
resources:
sessions:
models:
action: "#/components/schemas/Action"
model_config: "#/components/schemas/ModelConfig"
stream_event: "#/components/schemas/StreamEvent"
methods:
start: post /v1/sessions/start
act:
endpoint: post /v1/sessions/{id}/act
type: http
streaming:
param_discriminator: streamResponse
stream_event_model: sessions.stream_event
params_type_name: streamResponse
extract:
endpoint: post /v1/sessions/{id}/extract
type: http
streaming:
param_discriminator: streamResponse
stream_event_model: sessions.stream_event
params_type_name: streamResponse
observe:
endpoint: post /v1/sessions/{id}/observe
type: http
streaming:
param_discriminator: streamResponse
stream_event_model: sessions.stream_event
params_type_name: streamResponse
execute:
endpoint: post /v1/sessions/{id}/agentExecute
type: http
streaming:
param_discriminator: streamResponse
stream_event_model: sessions.stream_event
params_type_name: streamResponse
navigate: post /v1/sessions/{id}/navigate
replay: get /v1/sessions/{id}/replay
end: post /v1/sessions/{id}/end
streaming:
on_event:
- data_starts_with: '{"data":{"status":"finished"'
handle: done
- data_starts_with: error
handle: error
- event_type: null
handle: yield
settings:
# All generated integration tests that hit the prism mock http server are marked
# as skipped. Removing this setting or setting it to false enables tests, but
# doing so may result in test failures due to bugs in the test server.
#
# [prism mock http server]: https://stoplight.io/open-source/prism
disable_mock_tests: true
license: MIT
# `client_settings` define settings for the API client, such as extra constructor
# arguments (used for authentication), retry behavior, idempotency, etc.
client_settings:
opts:
BROWSERBASE_API_KEY:
type: string
read_env: BROWSERBASE_API_KEY
description: Your [Browserbase API Key](https://www.browserbase.com/settings)
nullable: false
auth:
security_scheme: BBApiKeyAuth
BROWSERBASE_PROJECT_ID:
type: string
read_env: BROWSERBASE_PROJECT_ID
description: Your [Browserbase Project ID](https://www.browserbase.com/settings)
nullable: false
auth:
security_scheme: BBProjectIdAuth
MODEL_API_KEY:
type: string
read_env: MODEL_API_KEY
description: Your LLM provider API key (e.g. OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.)
nullable: false
auth:
security_scheme: LLMModelApiKeyAuth
security_schemes:
BBApiKeyAuth:
type: apiKey
in: header
name: x-bb-api-key
BBProjectIdAuth:
type: apiKey
in: header
name: x-bb-project-id
LLMModelApiKeyAuth:
type: apiKey
in: header
name: x-model-api-key
security:
- BBApiKeyAuth: []
BBProjectIdAuth: []
LLMModelApiKeyAuth: []
# `readme` is used to configure the code snippets that will be rendered in the
# README.md of various SDKs.
readme:
example_requests:
default:
type: request
endpoint: post /v1/sessions/start
params:
modelName: "openai/gpt-5-nano"
headline:
type: request
endpoint: post /v1/sessions/{id}/act
params:
input: "click the first link on the page"
id: "00000000-your-session-id-000000000000"
diagnostics:
ignored:
Ruby/NameNotAllowed: true
Ruby/NameShadowedBuiltin: true