@bctrl/sdk 1.0.1 → 1.0.3

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 (277) hide show
  1. package/README.md +28 -29
  2. package/dist/bctrl.d.ts +22 -36
  3. package/dist/bctrl.js +40 -75
  4. package/dist/errors.d.ts +49 -43
  5. package/dist/errors.js +83 -120
  6. package/dist/files.d.ts +31 -0
  7. package/dist/files.js +97 -0
  8. package/dist/http.d.ts +18 -0
  9. package/dist/http.js +135 -0
  10. package/dist/index.d.ts +9 -12
  11. package/dist/index.js +7 -23
  12. package/dist/invocations.d.ts +86 -0
  13. package/dist/invocations.js +159 -0
  14. package/dist/pagination.d.ts +2 -0
  15. package/dist/pagination.js +13 -0
  16. package/dist/runs.d.ts +40 -0
  17. package/dist/runs.js +105 -0
  18. package/dist/runtimes.d.ts +69 -0
  19. package/dist/runtimes.js +202 -0
  20. package/dist/spaces.d.ts +40 -0
  21. package/dist/spaces.js +96 -0
  22. package/dist/types.d.ts +413 -0
  23. package/dist/types.js +1 -0
  24. package/dist/utils.d.ts +4 -0
  25. package/dist/utils.js +27 -0
  26. package/dist/version.js +2 -2
  27. package/package.json +4 -21
  28. package/dist/agents/browser-use/index.d.ts +0 -1
  29. package/dist/agents/browser-use/index.js +0 -9
  30. package/dist/agents/browser-use/namespace.d.ts +0 -39
  31. package/dist/agents/browser-use/namespace.js +0 -93
  32. package/dist/agents/index.d.ts +0 -2
  33. package/dist/agents/index.js +0 -17
  34. package/dist/agents/stagehand/core.d.ts +0 -93
  35. package/dist/agents/stagehand/core.js +0 -144
  36. package/dist/agents/stagehand/index.d.ts +0 -3
  37. package/dist/agents/stagehand/index.js +0 -24
  38. package/dist/agents/stagehand/namespace.d.ts +0 -51
  39. package/dist/agents/stagehand/namespace.js +0 -65
  40. package/dist/ai-credentials/client.d.ts +0 -12
  41. package/dist/ai-credentials/client.js +0 -70
  42. package/dist/ai-credentials/index.d.ts +0 -1
  43. package/dist/ai-credentials/index.js +0 -1
  44. package/dist/base/event-binding.d.ts +0 -7
  45. package/dist/base/event-binding.js +0 -23
  46. package/dist/base/types.d.ts +0 -109
  47. package/dist/base/types.js +0 -4
  48. package/dist/browser-extensions/client.d.ts +0 -15
  49. package/dist/browser-extensions/client.js +0 -72
  50. package/dist/browser-extensions/index.d.ts +0 -2
  51. package/dist/browser-extensions/index.js +0 -1
  52. package/dist/browser-profiles/client.d.ts +0 -11
  53. package/dist/browser-profiles/client.js +0 -63
  54. package/dist/browser-profiles/index.d.ts +0 -1
  55. package/dist/browser-profiles/index.js +0 -1
  56. package/dist/captcha/index.d.ts +0 -1
  57. package/dist/captcha/index.js +0 -1
  58. package/dist/captcha/namespace.d.ts +0 -34
  59. package/dist/captcha/namespace.js +0 -41
  60. package/dist/client/index.d.ts +0 -1
  61. package/dist/client/index.js +0 -1
  62. package/dist/client/rpc.d.ts +0 -83
  63. package/dist/client/rpc.js +0 -354
  64. package/dist/config.d.ts +0 -5
  65. package/dist/config.js +0 -28
  66. package/dist/constants/browser.d.ts +0 -2
  67. package/dist/constants/browser.js +0 -1
  68. package/dist/contracts/agent-tools.d.ts +0 -45
  69. package/dist/contracts/agent-tools.js +0 -31
  70. package/dist/contracts/automation.d.ts +0 -265
  71. package/dist/contracts/automation.js +0 -109
  72. package/dist/contracts/browser-management.d.ts +0 -179
  73. package/dist/contracts/browser-management.js +0 -95
  74. package/dist/contracts/browser-use.d.ts +0 -136
  75. package/dist/contracts/browser-use.js +0 -93
  76. package/dist/contracts/captcha.d.ts +0 -114
  77. package/dist/contracts/captcha.js +0 -40
  78. package/dist/contracts/desktop.d.ts +0 -223
  79. package/dist/contracts/desktop.js +0 -121
  80. package/dist/contracts/drivers/playwright.d.ts +0 -2008
  81. package/dist/contracts/drivers/playwright.js +0 -2033
  82. package/dist/contracts/drivers/puppeteer.d.ts +0 -1221
  83. package/dist/contracts/drivers/puppeteer.js +0 -941
  84. package/dist/contracts/drivers/selenium.d.ts +0 -156
  85. package/dist/contracts/drivers/selenium.js +0 -61
  86. package/dist/contracts/drivers/stagehand.d.ts +0 -155
  87. package/dist/contracts/drivers/stagehand.js +0 -7
  88. package/dist/contracts/extensions.d.ts +0 -13
  89. package/dist/contracts/extensions.js +0 -9
  90. package/dist/contracts/index.d.ts +0 -13
  91. package/dist/contracts/index.js +0 -13
  92. package/dist/contracts/public-api.d.ts +0 -360
  93. package/dist/contracts/public-api.js +0 -17
  94. package/dist/contracts/runtime.d.ts +0 -81
  95. package/dist/contracts/runtime.js +0 -16
  96. package/dist/contracts/stagehand.d.ts +0 -253
  97. package/dist/contracts/stagehand.js +0 -145
  98. package/dist/contracts/storage.d.ts +0 -51
  99. package/dist/contracts/storage.js +0 -56
  100. package/dist/contracts/vault.d.ts +0 -119
  101. package/dist/contracts/vault.js +0 -112
  102. package/dist/contracts/version.d.ts +0 -3
  103. package/dist/contracts/version.js +0 -16
  104. package/dist/desktop.d.ts +0 -2
  105. package/dist/desktop.js +0 -3
  106. package/dist/drivers/desktop/index.d.ts +0 -65
  107. package/dist/drivers/desktop/index.js +0 -68
  108. package/dist/drivers/desktop/session.d.ts +0 -313
  109. package/dist/drivers/desktop/session.js +0 -432
  110. package/dist/drivers/playwright/event-emitter.d.ts +0 -160
  111. package/dist/drivers/playwright/event-emitter.js +0 -297
  112. package/dist/drivers/playwright/generated/api-request-context.d.ts +0 -137
  113. package/dist/drivers/playwright/generated/api-request-context.js +0 -154
  114. package/dist/drivers/playwright/generated/api-response.d.ts +0 -119
  115. package/dist/drivers/playwright/generated/api-response.js +0 -123
  116. package/dist/drivers/playwright/generated/browser-context.d.ts +0 -284
  117. package/dist/drivers/playwright/generated/browser-context.js +0 -458
  118. package/dist/drivers/playwright/generated/browser.d.ts +0 -120
  119. package/dist/drivers/playwright/generated/browser.js +0 -151
  120. package/dist/drivers/playwright/generated/clock.d.ts +0 -80
  121. package/dist/drivers/playwright/generated/clock.js +0 -94
  122. package/dist/drivers/playwright/generated/console-message.d.ts +0 -94
  123. package/dist/drivers/playwright/generated/console-message.js +0 -89
  124. package/dist/drivers/playwright/generated/coverage.d.ts +0 -57
  125. package/dist/drivers/playwright/generated/coverage.js +0 -66
  126. package/dist/drivers/playwright/generated/dialog.d.ts +0 -79
  127. package/dist/drivers/playwright/generated/dialog.js +0 -80
  128. package/dist/drivers/playwright/generated/element-handle.d.ts +0 -399
  129. package/dist/drivers/playwright/generated/element-handle.js +0 -501
  130. package/dist/drivers/playwright/generated/frame-locator.d.ts +0 -34
  131. package/dist/drivers/playwright/generated/frame-locator.js +0 -63
  132. package/dist/drivers/playwright/generated/frame.d.ts +0 -557
  133. package/dist/drivers/playwright/generated/frame.js +0 -634
  134. package/dist/drivers/playwright/generated/js-handle.d.ts +0 -72
  135. package/dist/drivers/playwright/generated/js-handle.js +0 -92
  136. package/dist/drivers/playwright/generated/keyboard.d.ts +0 -103
  137. package/dist/drivers/playwright/generated/keyboard.js +0 -113
  138. package/dist/drivers/playwright/generated/locator.d.ts +0 -795
  139. package/dist/drivers/playwright/generated/locator.js +0 -974
  140. package/dist/drivers/playwright/generated/mouse.d.ts +0 -97
  141. package/dist/drivers/playwright/generated/mouse.js +0 -109
  142. package/dist/drivers/playwright/generated/page.d.ts +0 -762
  143. package/dist/drivers/playwright/generated/page.js +0 -988
  144. package/dist/drivers/playwright/generated/touchscreen.d.ts +0 -34
  145. package/dist/drivers/playwright/generated/touchscreen.js +0 -37
  146. package/dist/drivers/playwright/generated/tracing.d.ts +0 -78
  147. package/dist/drivers/playwright/generated/tracing.js +0 -80
  148. package/dist/drivers/playwright/generated/worker.d.ts +0 -53
  149. package/dist/drivers/playwright/generated/worker.js +0 -59
  150. package/dist/drivers/playwright/index.d.ts +0 -19
  151. package/dist/drivers/playwright/index.js +0 -20
  152. package/dist/drivers/playwright/remote-base.d.ts +0 -62
  153. package/dist/drivers/playwright/remote-base.js +0 -86
  154. package/dist/drivers/playwright/types.d.ts +0 -148
  155. package/dist/drivers/playwright/types.js +0 -8
  156. package/dist/drivers/puppeteer/errors.d.ts +0 -50
  157. package/dist/drivers/puppeteer/errors.js +0 -71
  158. package/dist/drivers/puppeteer/event-emitter.d.ts +0 -145
  159. package/dist/drivers/puppeteer/event-emitter.js +0 -259
  160. package/dist/drivers/puppeteer/generated/accessibility.d.ts +0 -77
  161. package/dist/drivers/puppeteer/generated/accessibility.js +0 -74
  162. package/dist/drivers/puppeteer/generated/browser-context.d.ts +0 -116
  163. package/dist/drivers/puppeteer/generated/browser-context.js +0 -168
  164. package/dist/drivers/puppeteer/generated/browser.d.ts +0 -169
  165. package/dist/drivers/puppeteer/generated/browser.js +0 -246
  166. package/dist/drivers/puppeteer/generated/console-message.d.ts +0 -54
  167. package/dist/drivers/puppeteer/generated/console-message.js +0 -69
  168. package/dist/drivers/puppeteer/generated/coverage.d.ts +0 -49
  169. package/dist/drivers/puppeteer/generated/coverage.js +0 -57
  170. package/dist/drivers/puppeteer/generated/dialog.d.ts +0 -46
  171. package/dist/drivers/puppeteer/generated/dialog.js +0 -60
  172. package/dist/drivers/puppeteer/generated/element-handle.d.ts +0 -261
  173. package/dist/drivers/puppeteer/generated/element-handle.js +0 -341
  174. package/dist/drivers/puppeteer/generated/file-chooser.d.ts +0 -34
  175. package/dist/drivers/puppeteer/generated/file-chooser.js +0 -43
  176. package/dist/drivers/puppeteer/generated/frame.d.ts +0 -221
  177. package/dist/drivers/puppeteer/generated/frame.js +0 -302
  178. package/dist/drivers/puppeteer/generated/http-request.d.ts +0 -195
  179. package/dist/drivers/puppeteer/generated/http-request.js +0 -243
  180. package/dist/drivers/puppeteer/generated/http-response.d.ts +0 -142
  181. package/dist/drivers/puppeteer/generated/http-response.js +0 -169
  182. package/dist/drivers/puppeteer/generated/js-handle.d.ts +0 -104
  183. package/dist/drivers/puppeteer/generated/js-handle.js +0 -125
  184. package/dist/drivers/puppeteer/generated/keyboard.d.ts +0 -79
  185. package/dist/drivers/puppeteer/generated/keyboard.js +0 -89
  186. package/dist/drivers/puppeteer/generated/locator.d.ts +0 -141
  187. package/dist/drivers/puppeteer/generated/locator.js +0 -164
  188. package/dist/drivers/puppeteer/generated/mouse.d.ts +0 -74
  189. package/dist/drivers/puppeteer/generated/mouse.js +0 -94
  190. package/dist/drivers/puppeteer/generated/page.d.ts +0 -604
  191. package/dist/drivers/puppeteer/generated/page.js +0 -776
  192. package/dist/drivers/puppeteer/generated/target.d.ts +0 -105
  193. package/dist/drivers/puppeteer/generated/target.js +0 -123
  194. package/dist/drivers/puppeteer/generated/touchscreen.d.ts +0 -87
  195. package/dist/drivers/puppeteer/generated/touchscreen.js +0 -103
  196. package/dist/drivers/puppeteer/generated/tracing.d.ts +0 -38
  197. package/dist/drivers/puppeteer/generated/tracing.js +0 -43
  198. package/dist/drivers/puppeteer/generated/web-worker.d.ts +0 -63
  199. package/dist/drivers/puppeteer/generated/web-worker.js +0 -73
  200. package/dist/drivers/puppeteer/index.d.ts +0 -21
  201. package/dist/drivers/puppeteer/index.js +0 -23
  202. package/dist/drivers/puppeteer/remote-base.d.ts +0 -57
  203. package/dist/drivers/puppeteer/remote-base.js +0 -79
  204. package/dist/drivers/puppeteer/types.d.ts +0 -178
  205. package/dist/drivers/puppeteer/types.js +0 -8
  206. package/dist/drivers/selenium/driver.d.ts +0 -28
  207. package/dist/drivers/selenium/driver.js +0 -169
  208. package/dist/drivers/selenium/element.d.ts +0 -34
  209. package/dist/drivers/selenium/element.js +0 -73
  210. package/dist/drivers/selenium/index.d.ts +0 -3
  211. package/dist/drivers/selenium/index.js +0 -5
  212. package/dist/drivers/selenium/types.d.ts +0 -2
  213. package/dist/drivers/selenium/types.js +0 -12
  214. package/dist/drivers/stagehand/generated/context.d.ts +0 -127
  215. package/dist/drivers/stagehand/generated/context.js +0 -153
  216. package/dist/drivers/stagehand/generated/locator.d.ts +0 -324
  217. package/dist/drivers/stagehand/generated/locator.js +0 -368
  218. package/dist/drivers/stagehand/generated/page.d.ts +0 -377
  219. package/dist/drivers/stagehand/generated/page.js +0 -439
  220. package/dist/drivers/stagehand/generated/response.d.ts +0 -197
  221. package/dist/drivers/stagehand/generated/response.js +0 -232
  222. package/dist/drivers/stagehand/index.d.ts +0 -5
  223. package/dist/drivers/stagehand/index.js +0 -8
  224. package/dist/drivers/stagehand/types.d.ts +0 -1
  225. package/dist/drivers/stagehand/types.js +0 -7
  226. package/dist/extensions/client.d.ts +0 -47
  227. package/dist/extensions/client.js +0 -154
  228. package/dist/extensions/index.d.ts +0 -1
  229. package/dist/extensions/index.js +0 -1
  230. package/dist/internal/dev-client.d.ts +0 -5
  231. package/dist/internal/dev-client.js +0 -9
  232. package/dist/internal/rpc-targets.d.ts +0 -17
  233. package/dist/internal/rpc-targets.js +0 -58
  234. package/dist/internal/serialization.d.ts +0 -32
  235. package/dist/internal/serialization.js +0 -42
  236. package/dist/internal/transport.d.ts +0 -24
  237. package/dist/internal/transport.js +0 -29
  238. package/dist/playwright.d.ts +0 -1
  239. package/dist/playwright.js +0 -2
  240. package/dist/puppeteer.d.ts +0 -1
  241. package/dist/puppeteer.js +0 -2
  242. package/dist/selenium.d.ts +0 -1
  243. package/dist/selenium.js +0 -2
  244. package/dist/stagehand.d.ts +0 -1
  245. package/dist/stagehand.js +0 -2
  246. package/dist/storage/client.d.ts +0 -151
  247. package/dist/storage/client.js +0 -329
  248. package/dist/storage/index.d.ts +0 -2
  249. package/dist/storage/index.js +0 -4
  250. package/dist/telemetry.d.ts +0 -18
  251. package/dist/telemetry.js +0 -93
  252. package/dist/updates/client.d.ts +0 -8
  253. package/dist/updates/client.js +0 -128
  254. package/dist/updates/index.d.ts +0 -1
  255. package/dist/updates/index.js +0 -1
  256. package/dist/utils/http.d.ts +0 -39
  257. package/dist/utils/http.js +0 -88
  258. package/dist/utils/index.d.ts +0 -4
  259. package/dist/utils/index.js +0 -4
  260. package/dist/utils/logger.d.ts +0 -27
  261. package/dist/utils/logger.js +0 -74
  262. package/dist/utils/schema.d.ts +0 -17
  263. package/dist/utils/schema.js +0 -31
  264. package/dist/utils/url.d.ts +0 -5
  265. package/dist/utils/url.js +0 -7
  266. package/dist/vault/client.d.ts +0 -43
  267. package/dist/vault/client.js +0 -123
  268. package/dist/vault/index.d.ts +0 -1
  269. package/dist/vault/index.js +0 -1
  270. package/dist/workspaces/browser-runtime.d.ts +0 -251
  271. package/dist/workspaces/browser-runtime.js +0 -1025
  272. package/dist/workspaces/client.d.ts +0 -48
  273. package/dist/workspaces/client.js +0 -222
  274. package/dist/workspaces/index.d.ts +0 -2
  275. package/dist/workspaces/index.js +0 -2
  276. package/dist/workspaces/runtime-event-pump.d.ts +0 -65
  277. package/dist/workspaces/runtime-event-pump.js +0 -716
@@ -0,0 +1,413 @@
1
+ export type JsonPrimitive = string | number | boolean | null;
2
+ export type JsonValue = JsonPrimitive | JsonObject | JsonValue[];
3
+ export type JsonObject = {
4
+ [key: string]: JsonValue;
5
+ };
6
+ export interface V1ListEnvelope<T> {
7
+ data: T[];
8
+ nextCursor: string | null;
9
+ }
10
+ export interface V1PageQuery {
11
+ cursor?: string;
12
+ limit?: number;
13
+ }
14
+ export interface V1SpaceCreateRequest {
15
+ name: string;
16
+ region: string;
17
+ subaccountId?: string | null;
18
+ }
19
+ export interface V1SpaceUpdateRequest {
20
+ name?: string;
21
+ }
22
+ export interface V1Space {
23
+ id: string;
24
+ name: string;
25
+ region: string;
26
+ subaccountId?: string | null;
27
+ createdAt: string;
28
+ updatedAt: string;
29
+ }
30
+ export interface V1SpaceEnvironment {
31
+ spaceId: string;
32
+ mounts: JsonObject;
33
+ updatedAt: string;
34
+ }
35
+ export interface V1SpaceEnvironmentUpdateRequest {
36
+ mounts: JsonObject;
37
+ }
38
+ export type V1RuntimeType = 'browser';
39
+ export type V1RuntimeStatus = 'active' | 'stopped' | 'failed';
40
+ export type V1BrowserStealth = 'medium' | 'high' | 'ultra';
41
+ export type V1ProxyInput = {
42
+ mode: 'custom';
43
+ protocol: string;
44
+ host: string;
45
+ port: number;
46
+ username?: string;
47
+ password?: string;
48
+ } | {
49
+ mode: 'saved';
50
+ id: string;
51
+ overrides?: JsonObject;
52
+ };
53
+ export interface V1RuntimeFingerprintCreateConfig {
54
+ browser?: string;
55
+ locale?: string;
56
+ }
57
+ export interface V1RuntimeLifecycleConfig {
58
+ idleTimeoutMinutes?: number;
59
+ }
60
+ export interface V1BrowserRuntimeCreateConfig {
61
+ browser?: {
62
+ profile?: boolean;
63
+ };
64
+ stealth?: V1BrowserStealth;
65
+ proxy?: V1ProxyInput | null;
66
+ fingerprint?: V1RuntimeFingerprintCreateConfig;
67
+ extensions?: string[];
68
+ lifecycle?: V1RuntimeLifecycleConfig;
69
+ }
70
+ export interface V1RuntimeCreateRequest {
71
+ spaceId: string;
72
+ type: V1RuntimeType;
73
+ name?: string;
74
+ metadata?: JsonObject;
75
+ config?: V1BrowserRuntimeCreateConfig;
76
+ }
77
+ export type V1SpaceRuntimeCreateRequest = Omit<V1RuntimeCreateRequest, 'spaceId'>;
78
+ export interface V1RuntimeListQuery {
79
+ spaceId?: string;
80
+ status?: string | string[];
81
+ limit?: number;
82
+ }
83
+ export interface V1RuntimeSummary {
84
+ id: string;
85
+ name: string;
86
+ type: V1RuntimeType;
87
+ status: V1RuntimeStatus;
88
+ activeRunId: string | null;
89
+ createdAt: string;
90
+ updatedAt: string;
91
+ }
92
+ export interface V1Runtime extends V1RuntimeSummary {
93
+ config?: JsonObject;
94
+ metadata?: JsonObject | null;
95
+ }
96
+ export type V1ConnectionProtocol = 'cdp' | 'cua' | 'rdp' | 'vnc' | 'mcp' | 'http';
97
+ export type V1ConnectionEndpoint = {
98
+ type: 'websocket';
99
+ url: string;
100
+ } | {
101
+ type: 'http';
102
+ baseUrl: string;
103
+ } | {
104
+ type: 'rdp';
105
+ host: string;
106
+ port: number;
107
+ username: string;
108
+ password: string;
109
+ } | {
110
+ type: 'composite';
111
+ endpoints: Record<string, string>;
112
+ };
113
+ export interface V1RuntimeConnectionCreateRequest {
114
+ protocol: 'cdp';
115
+ options?: JsonObject;
116
+ }
117
+ export type V1RuntimeConnectionCreateOptions = Partial<V1RuntimeConnectionCreateRequest>;
118
+ export interface V1RuntimeConnection {
119
+ id: string;
120
+ protocol: V1ConnectionProtocol;
121
+ status: string;
122
+ runId: string;
123
+ createdAt: string;
124
+ expiresAt: string | null;
125
+ closedAt?: string | null;
126
+ revokedAt?: string | null;
127
+ }
128
+ export interface V1RuntimeConnectionCreateResponse extends V1RuntimeConnection {
129
+ endpoint: V1ConnectionEndpoint;
130
+ }
131
+ export interface V1RuntimeStartResponse {
132
+ runtime: V1Runtime;
133
+ run: V1Run;
134
+ }
135
+ export interface V1RunListQuery extends V1PageQuery {
136
+ status?: string | string[];
137
+ spaceId?: string;
138
+ runtimeId?: string;
139
+ }
140
+ export type V1RuntimeRunListQuery = Omit<V1RunListQuery, 'spaceId' | 'runtimeId'>;
141
+ export interface V1RunSummary {
142
+ id: string;
143
+ status: string;
144
+ createdAt: string;
145
+ startedAt: string;
146
+ finishedAt?: string | null;
147
+ }
148
+ export interface V1Run extends V1RunSummary {
149
+ spaceId: string;
150
+ runtimeId: string;
151
+ runtimeType: string;
152
+ durationMs?: number | null;
153
+ lastSeenAt?: string | null;
154
+ endedReason?: string | null;
155
+ failureReason?: string | null;
156
+ }
157
+ export interface V1RunUsage {
158
+ runId: string;
159
+ runtimeId: string;
160
+ runtimeType: string;
161
+ status: string;
162
+ computedAt: string;
163
+ usage: {
164
+ runtime: {
165
+ seconds: number | null;
166
+ billingClass: string | null;
167
+ };
168
+ aiTokens: {
169
+ input: number | null;
170
+ output: number | null;
171
+ total: number | null;
172
+ };
173
+ proxyBytes: number | null;
174
+ captchaSolves: number;
175
+ files: {
176
+ count: number;
177
+ bytes: number;
178
+ };
179
+ invocations: number;
180
+ toolCalls: number;
181
+ };
182
+ billing: {
183
+ status: 'pending' | 'settled' | 'unavailable';
184
+ creditCost: number | null;
185
+ breakdown: {
186
+ runtime: number | null;
187
+ ai: number | null;
188
+ proxy: number | null;
189
+ captcha: number | null;
190
+ files: number | null;
191
+ };
192
+ };
193
+ }
194
+ export interface V1RunEvent {
195
+ id: string;
196
+ runId: string;
197
+ runtimeId: string;
198
+ runtimeType: string;
199
+ type: string;
200
+ category: string;
201
+ time: string;
202
+ status?: string;
203
+ connectionId?: string;
204
+ commandId?: string;
205
+ invocationId?: string;
206
+ toolCallId?: string;
207
+ fileId?: string;
208
+ name?: string;
209
+ data?: JsonObject;
210
+ }
211
+ export interface V1RunEventsListQuery extends V1PageQuery {
212
+ type?: string | string[];
213
+ category?: string | string[];
214
+ connectionId?: string;
215
+ }
216
+ export interface V1RunEventsWaitRequest {
217
+ cursor?: string;
218
+ timeoutMs?: number;
219
+ type?: string[];
220
+ category?: string[];
221
+ connectionId?: string;
222
+ }
223
+ export interface V1RunEventsWaitResponse {
224
+ data: V1RunEvent | null;
225
+ cursor: string | null;
226
+ timedOut: boolean;
227
+ }
228
+ export type V1RunCommand = V1RunEvent & {
229
+ category: 'command';
230
+ };
231
+ export interface V1RunCommandsListQuery extends V1PageQuery {
232
+ type?: string | string[];
233
+ connectionId?: string;
234
+ }
235
+ export interface V1RunLiveRequest {
236
+ control?: string;
237
+ expiresInSeconds?: number;
238
+ }
239
+ export interface V1RunLiveResponse {
240
+ iframeUrl: string;
241
+ expiresAt: string;
242
+ }
243
+ export interface V1RunRecordingRequest {
244
+ expiresInSeconds?: number;
245
+ }
246
+ export interface V1RunRecordingResponse {
247
+ iframeUrl: string;
248
+ status: string;
249
+ durationMs?: number;
250
+ expiresAt: string;
251
+ }
252
+ export interface V1Invocation {
253
+ id: string;
254
+ runId: string;
255
+ spaceId: string;
256
+ runtimeId: string;
257
+ runtimeType: string;
258
+ type: string;
259
+ status: string;
260
+ result?: JsonValue | null;
261
+ error?: JsonObject | null;
262
+ progress?: JsonObject | null;
263
+ artifactCount: number;
264
+ createdAt: string;
265
+ startedAt?: string | null;
266
+ finishedAt?: string | null;
267
+ durationMs?: number | null;
268
+ metadata?: JsonObject | null;
269
+ }
270
+ export interface V1InvocationResponse {
271
+ data: V1Invocation;
272
+ }
273
+ export interface V1InvocationWaitRequest {
274
+ timeoutMs?: number;
275
+ }
276
+ export interface V1InvocationWaitResponse {
277
+ data: V1Invocation;
278
+ timedOut: boolean;
279
+ }
280
+ export type V1RuntimeInvocationFileInput = {
281
+ storagePath: string;
282
+ name?: string;
283
+ } | {
284
+ fileId: string;
285
+ name?: string;
286
+ };
287
+ interface V1RuntimeInvocationAgentFields {
288
+ target?: JsonObject;
289
+ idempotencyKey?: string;
290
+ outputSchema?: JsonObject;
291
+ toolsetId?: string;
292
+ metadata?: JsonObject;
293
+ files?: V1RuntimeInvocationFileInput[];
294
+ }
295
+ export type V1RuntimeInvocationCreateRequest = {
296
+ provider: 'stagehand';
297
+ method: 'act' | 'observe';
298
+ target?: JsonObject;
299
+ input: JsonObject;
300
+ idempotencyKey?: string;
301
+ metadata?: JsonObject;
302
+ } | {
303
+ provider: 'stagehand';
304
+ method: 'extract';
305
+ target?: JsonObject;
306
+ input?: JsonObject;
307
+ outputSchema?: JsonObject;
308
+ idempotencyKey?: string;
309
+ metadata?: JsonObject;
310
+ } | (V1RuntimeInvocationAgentFields & {
311
+ provider: 'stagehand';
312
+ method: 'agent';
313
+ input: JsonObject;
314
+ config?: JsonObject;
315
+ options?: JsonObject;
316
+ }) | (V1RuntimeInvocationAgentFields & {
317
+ provider: 'browserUse';
318
+ method: 'agent';
319
+ input: JsonObject;
320
+ config?: JsonObject;
321
+ options?: JsonObject;
322
+ }) | {
323
+ provider: 'bctrl';
324
+ method: 'solveCaptcha';
325
+ target?: JsonObject;
326
+ input?: JsonObject;
327
+ idempotencyKey?: string;
328
+ metadata?: JsonObject;
329
+ };
330
+ export interface V1File {
331
+ id: string;
332
+ type: string;
333
+ source: 'upload' | 'runtime' | 'system';
334
+ name: string;
335
+ path: string;
336
+ contentType: string;
337
+ sizeBytes: number;
338
+ spaceId?: string;
339
+ runtimeId?: string | null;
340
+ runId?: string | null;
341
+ metadata?: JsonObject | null;
342
+ createdAt: string;
343
+ expiresAt?: string | null;
344
+ downloadUrl?: string;
345
+ }
346
+ export interface V1FilesListQuery extends V1PageQuery {
347
+ spaceId: string;
348
+ source?: 'upload' | 'runtime' | 'system';
349
+ path?: string;
350
+ prefix?: string;
351
+ query?: string;
352
+ contentType?: string;
353
+ }
354
+ export interface V1FileUpdateRequest {
355
+ name?: string;
356
+ metadata?: JsonObject | null;
357
+ }
358
+ export interface V1FileDeleteResponse {
359
+ success: true;
360
+ }
361
+ export interface V1FileUploadRequest {
362
+ spaceId: string;
363
+ file: Blob;
364
+ name?: string;
365
+ path?: string;
366
+ metadata?: JsonObject;
367
+ }
368
+ export interface V1RunFilesListQuery extends V1PageQuery {
369
+ type?: string | string[];
370
+ }
371
+ export interface V1RunFilesExportRequest {
372
+ format: 'zip';
373
+ name: string;
374
+ filter?: {
375
+ type?: string[];
376
+ };
377
+ }
378
+ export type V1RuntimeFileStageRequest = {
379
+ storagePath: string;
380
+ name?: string;
381
+ } | {
382
+ fileId: string;
383
+ name?: string;
384
+ };
385
+ export interface V1RuntimeStagedFile {
386
+ id: string;
387
+ runtimeId: string;
388
+ runtimePath: string;
389
+ name: string;
390
+ sizeBytes: number;
391
+ expiresAt: string | null;
392
+ }
393
+ export interface V1RuntimeFileUploadRequest {
394
+ file: Blob;
395
+ name?: string;
396
+ storagePath?: string;
397
+ metadata?: JsonObject;
398
+ }
399
+ export interface V1RuntimeFileUploadResponse {
400
+ file: V1File;
401
+ staged: V1RuntimeStagedFile;
402
+ }
403
+ export interface V1RuntimeFileCollectRequest {
404
+ path: string;
405
+ storagePath?: string;
406
+ name?: string;
407
+ artifact?: {
408
+ kind?: string;
409
+ name?: string;
410
+ metadata?: JsonObject;
411
+ };
412
+ }
413
+ export {};
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export declare const BCTRL_PRODUCTION_ORIGIN = "https://api.bctrl.ai";
2
+ export declare function stripTrailingSlash(value: string): string;
3
+ export declare function resolveApiKey(apiKey: string): string;
4
+ export declare function fetchWithTimeout(input: RequestInfo | URL, init?: RequestInit, timeoutMs?: number): Promise<Response>;
package/dist/utils.js ADDED
@@ -0,0 +1,27 @@
1
+ export const BCTRL_PRODUCTION_ORIGIN = 'https://api.bctrl.ai';
2
+ export function stripTrailingSlash(value) {
3
+ return value.replace(/\/+$/, '');
4
+ }
5
+ export function resolveApiKey(apiKey) {
6
+ const trimmed = apiKey.trim();
7
+ if (!trimmed) {
8
+ throw new Error('BCTRL_API_KEY is required. Pass apiKey or set BCTRL_API_KEY.');
9
+ }
10
+ return trimmed;
11
+ }
12
+ export async function fetchWithTimeout(input, init = {}, timeoutMs) {
13
+ if (!timeoutMs) {
14
+ return fetch(input, init);
15
+ }
16
+ const controller = new AbortController();
17
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
18
+ try {
19
+ return await fetch(input, {
20
+ ...init,
21
+ signal: init.signal ?? controller.signal,
22
+ });
23
+ }
24
+ finally {
25
+ clearTimeout(timeout);
26
+ }
27
+ }
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { createRequire } from 'node:module';
2
2
  const require = createRequire(import.meta.url);
3
- const pkg = require('../package.json');
4
- export const SDK_VERSION = pkg.version;
3
+ const manifest = require('../package.json');
4
+ export const SDK_VERSION = manifest.version ?? '0.0.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bctrl/sdk",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "BCTRL SDK - Remote browser automation",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -9,22 +9,6 @@
9
9
  ".": {
10
10
  "types": "./dist/index.d.ts",
11
11
  "import": "./dist/index.js"
12
- },
13
- "./puppeteer": {
14
- "types": "./dist/puppeteer.d.ts",
15
- "import": "./dist/puppeteer.js"
16
- },
17
- "./playwright": {
18
- "types": "./dist/playwright.d.ts",
19
- "import": "./dist/playwright.js"
20
- },
21
- "./stagehand": {
22
- "types": "./dist/stagehand.d.ts",
23
- "import": "./dist/stagehand.js"
24
- },
25
- "./selenium": {
26
- "types": "./dist/selenium.d.ts",
27
- "import": "./dist/selenium.js"
28
12
  }
29
13
  },
30
14
  "scripts": {
@@ -32,6 +16,9 @@
32
16
  "build": "pnpm run clean && tsc -p tsconfig.json",
33
17
  "prepack": "pnpm run build",
34
18
  "dev": "tsc --watch",
19
+ "test": "tsx --test tests/v1/*.test.ts tests/v1/e2e/*.test.ts",
20
+ "test:v1": "tsx --test tests/v1/*.test.ts tests/v1/e2e/*.test.ts",
21
+ "test:v1:e2e": "BCTRL_E2E=1 tsx --test tests/v1/e2e/**/*.test.ts",
35
22
  "typecheck": "tsc --noEmit"
36
23
  },
37
24
  "keywords": [],
@@ -46,10 +33,6 @@
46
33
  "tsx": "^4.21.0",
47
34
  "typescript": "^5.9.3"
48
35
  },
49
- "dependencies": {
50
- "@sentry/node": "^10.38.0",
51
- "zod": "^4.2.1"
52
- },
53
36
  "files": [
54
37
  "dist"
55
38
  ]
@@ -1 +0,0 @@
1
- export { BrowserUseNamespace } from './namespace.js';
@@ -1,9 +0,0 @@
1
- // ============================================================================
2
- // Browser-use Agent - Autonomous browser automation
3
- // ============================================================================
4
- //
5
- // This module provides the browser-use agent integration for bctrl.
6
- // Browser-use agents can autonomously complete tasks using natural language.
7
- //
8
- // ============================================================================
9
- export { BrowserUseNamespace } from './namespace.js';
@@ -1,39 +0,0 @@
1
- import type { BrowserUseAgentConfig, BrowserUseCodeAgentConfig, BrowserUseAPI, BrowserUseAgent, BrowserUseCodeAgent } from '../../contracts/browser-use.js';
2
- import type { RpcSender } from '../../internal/transport.js';
3
- /**
4
- * Browser-use namespace - provides agent and codeAgent factory methods.
5
- */
6
- export declare class BrowserUseNamespace implements BrowserUseAPI {
7
- private sendRpc;
8
- private getActivePageId;
9
- constructor(sendRpc: RpcSender, getActivePageId: () => string | undefined);
10
- /**
11
- * Create a reusable agent for natural language task execution.
12
- * The agent can be used multiple times with different tasks.
13
- *
14
- * @example
15
- * const agent = session.browserUse.agent({
16
- * llm: "gpt-4o",
17
- * useVision: true,
18
- * maxSteps: 20,
19
- * });
20
- *
21
- * // Execute multiple tasks with the same agent
22
- * const result1 = await agent.execute("Search for latest AI news");
23
- * const result2 = await agent.execute("Find pricing information", { maxSteps: 10 });
24
- */
25
- agent(config?: BrowserUseAgentConfig): BrowserUseAgent;
26
- /**
27
- * Create a reusable code agent for code-based automation.
28
- * Code agents generate and execute code to accomplish tasks.
29
- *
30
- * @example
31
- * const codeAgent = session.browserUse.codeAgent({
32
- * llm: "gpt-4o",
33
- * });
34
- *
35
- * // Execute tasks with the code agent
36
- * const result = await codeAgent.execute("Fill out the registration form");
37
- */
38
- codeAgent(config?: BrowserUseCodeAgentConfig): BrowserUseCodeAgent;
39
- }
@@ -1,93 +0,0 @@
1
- // ============================================================================
2
- // BrowserUseNamespace - Shared Browser-use agent methods for all drivers
3
- // ============================================================================
4
- //
5
- // This class provides the `.browserUse` namespace on driver sessions.
6
- // It creates Browser-use agents that can autonomously complete tasks.
7
- //
8
- // Usage (consistent with Stagehand agent pattern):
9
- // const session = await bctrl.browser('my-scraper').connect.puppeteer();
10
- //
11
- // // Create a reusable agent with configuration
12
- // const agent = session.browserUse.agent({
13
- // llm: "gpt-4o",
14
- // useVision: true,
15
- // });
16
- //
17
- // // Execute tasks with the agent
18
- // const result = await agent.execute("Search for AI news and summarize");
19
- // const result2 = await agent.execute("Find pricing information", { maxSteps: 10 });
20
- //
21
- // // Code agent works similarly
22
- // const codeAgent = session.browserUse.codeAgent({ llm: "gpt-4o" });
23
- // const codeResult = await codeAgent.execute("Fill out the form with test data");
24
- //
25
- // ============================================================================
26
- /**
27
- * Browser-use namespace - provides agent and codeAgent factory methods.
28
- */
29
- export class BrowserUseNamespace {
30
- sendRpc;
31
- getActivePageId;
32
- constructor(sendRpc, getActivePageId) {
33
- this.sendRpc = sendRpc;
34
- this.getActivePageId = getActivePageId;
35
- }
36
- /**
37
- * Create a reusable agent for natural language task execution.
38
- * The agent can be used multiple times with different tasks.
39
- *
40
- * @example
41
- * const agent = session.browserUse.agent({
42
- * llm: "gpt-4o",
43
- * useVision: true,
44
- * maxSteps: 20,
45
- * });
46
- *
47
- * // Execute multiple tasks with the same agent
48
- * const result1 = await agent.execute("Search for latest AI news");
49
- * const result2 = await agent.execute("Find pricing information", { maxSteps: 10 });
50
- */
51
- agent(config) {
52
- const agentConfig = config || {};
53
- const pageId = agentConfig.pageId || this.getActivePageId();
54
- const rpc = this.sendRpc;
55
- return {
56
- execute: async (task, options) => {
57
- const executeOptions = {
58
- task,
59
- ...(options?.maxSteps !== undefined ? { maxSteps: options.maxSteps } : {}),
60
- ...(options?.tools !== undefined ? { tools: options.tools } : {}),
61
- };
62
- return rpc('browserUse', 'agent.execute', [agentConfig, executeOptions], { pageId });
63
- },
64
- };
65
- }
66
- /**
67
- * Create a reusable code agent for code-based automation.
68
- * Code agents generate and execute code to accomplish tasks.
69
- *
70
- * @example
71
- * const codeAgent = session.browserUse.codeAgent({
72
- * llm: "gpt-4o",
73
- * });
74
- *
75
- * // Execute tasks with the code agent
76
- * const result = await codeAgent.execute("Fill out the registration form");
77
- */
78
- codeAgent(config) {
79
- const agentConfig = config || {};
80
- const pageId = agentConfig.pageId || this.getActivePageId();
81
- const rpc = this.sendRpc;
82
- return {
83
- execute: async (task, options) => {
84
- const executeOptions = {
85
- task,
86
- ...(options?.maxSteps !== undefined ? { maxSteps: options.maxSteps } : {}),
87
- ...(options?.tools !== undefined ? { tools: options.tools } : {}),
88
- };
89
- return rpc('browserUse', 'codeAgent.execute', [agentConfig, executeOptions], { pageId });
90
- },
91
- };
92
- }
93
- }
@@ -1,2 +0,0 @@
1
- export { StagehandNamespace, StagehandAgent } from './stagehand/index.js';
2
- export { BrowserUseNamespace } from './browser-use/index.js';
@@ -1,17 +0,0 @@
1
- // ============================================================================
2
- // AI Agents - Unified AI-powered browser automation
3
- // ============================================================================
4
- //
5
- // This module provides all AI agent integrations for bctrl:
6
- //
7
- // - Stagehand: AI-powered browser automation with act, extract, observe
8
- // - Browser-use: Autonomous agents for natural language task execution
9
- //
10
- // These agents work across all drivers (Puppeteer, Playwright, Selenium, Stagehand)
11
- // through the `.stagehand` and `.browserUse` namespaces on sessions.
12
- //
13
- // ============================================================================
14
- // Stagehand AI exports
15
- export { StagehandNamespace, StagehandAgent } from './stagehand/index.js';
16
- // Browser-use exports
17
- export { BrowserUseNamespace } from './browser-use/index.js';