@bctrl/sdk 1.0.1 → 1.0.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.
- package/README.md +24 -29
- package/dist/bctrl.d.ts +22 -36
- package/dist/bctrl.js +40 -75
- package/dist/browsers.d.ts +24 -0
- package/dist/browsers.js +82 -0
- package/dist/errors.d.ts +49 -43
- package/dist/errors.js +83 -120
- package/dist/files.d.ts +31 -0
- package/dist/files.js +97 -0
- package/dist/http.d.ts +18 -0
- package/dist/http.js +135 -0
- package/dist/index.d.ts +9 -12
- package/dist/index.js +8 -23
- package/dist/invocations.d.ts +24 -0
- package/dist/invocations.js +66 -0
- package/dist/pagination.d.ts +2 -0
- package/dist/pagination.js +13 -0
- package/dist/runs.d.ts +38 -0
- package/dist/runs.js +99 -0
- package/dist/runtimes.d.ts +73 -0
- package/dist/runtimes.js +205 -0
- package/dist/spaces.d.ts +41 -0
- package/dist/spaces.js +96 -0
- package/dist/types.d.ts +386 -0
- package/dist/types.js +1 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +27 -0
- package/dist/version.js +2 -2
- package/package.json +12 -31
- package/dist/agents/browser-use/index.d.ts +0 -1
- package/dist/agents/browser-use/index.js +0 -9
- package/dist/agents/browser-use/namespace.d.ts +0 -39
- package/dist/agents/browser-use/namespace.js +0 -93
- package/dist/agents/index.d.ts +0 -2
- package/dist/agents/index.js +0 -17
- package/dist/agents/stagehand/core.d.ts +0 -93
- package/dist/agents/stagehand/core.js +0 -144
- package/dist/agents/stagehand/index.d.ts +0 -3
- package/dist/agents/stagehand/index.js +0 -24
- package/dist/agents/stagehand/namespace.d.ts +0 -51
- package/dist/agents/stagehand/namespace.js +0 -65
- package/dist/ai-credentials/client.d.ts +0 -12
- package/dist/ai-credentials/client.js +0 -70
- package/dist/ai-credentials/index.d.ts +0 -1
- package/dist/ai-credentials/index.js +0 -1
- package/dist/base/event-binding.d.ts +0 -7
- package/dist/base/event-binding.js +0 -23
- package/dist/base/types.d.ts +0 -109
- package/dist/base/types.js +0 -4
- package/dist/browser-extensions/client.d.ts +0 -15
- package/dist/browser-extensions/client.js +0 -72
- package/dist/browser-extensions/index.d.ts +0 -2
- package/dist/browser-extensions/index.js +0 -1
- package/dist/browser-profiles/client.d.ts +0 -11
- package/dist/browser-profiles/client.js +0 -63
- package/dist/browser-profiles/index.d.ts +0 -1
- package/dist/browser-profiles/index.js +0 -1
- package/dist/captcha/index.d.ts +0 -1
- package/dist/captcha/index.js +0 -1
- package/dist/captcha/namespace.d.ts +0 -34
- package/dist/captcha/namespace.js +0 -41
- package/dist/client/index.d.ts +0 -1
- package/dist/client/index.js +0 -1
- package/dist/client/rpc.d.ts +0 -83
- package/dist/client/rpc.js +0 -354
- package/dist/config.d.ts +0 -5
- package/dist/config.js +0 -28
- package/dist/constants/browser.d.ts +0 -2
- package/dist/constants/browser.js +0 -1
- package/dist/contracts/agent-tools.d.ts +0 -45
- package/dist/contracts/agent-tools.js +0 -31
- package/dist/contracts/automation.d.ts +0 -265
- package/dist/contracts/automation.js +0 -109
- package/dist/contracts/browser-management.d.ts +0 -179
- package/dist/contracts/browser-management.js +0 -95
- package/dist/contracts/browser-use.d.ts +0 -136
- package/dist/contracts/browser-use.js +0 -93
- package/dist/contracts/captcha.d.ts +0 -114
- package/dist/contracts/captcha.js +0 -40
- package/dist/contracts/desktop.d.ts +0 -223
- package/dist/contracts/desktop.js +0 -121
- package/dist/contracts/drivers/playwright.d.ts +0 -2008
- package/dist/contracts/drivers/playwright.js +0 -2033
- package/dist/contracts/drivers/puppeteer.d.ts +0 -1221
- package/dist/contracts/drivers/puppeteer.js +0 -941
- package/dist/contracts/drivers/selenium.d.ts +0 -156
- package/dist/contracts/drivers/selenium.js +0 -61
- package/dist/contracts/drivers/stagehand.d.ts +0 -155
- package/dist/contracts/drivers/stagehand.js +0 -7
- package/dist/contracts/extensions.d.ts +0 -13
- package/dist/contracts/extensions.js +0 -9
- package/dist/contracts/index.d.ts +0 -13
- package/dist/contracts/index.js +0 -13
- package/dist/contracts/public-api.d.ts +0 -360
- package/dist/contracts/public-api.js +0 -17
- package/dist/contracts/runtime.d.ts +0 -81
- package/dist/contracts/runtime.js +0 -16
- package/dist/contracts/stagehand.d.ts +0 -253
- package/dist/contracts/stagehand.js +0 -145
- package/dist/contracts/storage.d.ts +0 -51
- package/dist/contracts/storage.js +0 -56
- package/dist/contracts/vault.d.ts +0 -119
- package/dist/contracts/vault.js +0 -112
- package/dist/contracts/version.d.ts +0 -3
- package/dist/contracts/version.js +0 -16
- package/dist/desktop.d.ts +0 -2
- package/dist/desktop.js +0 -3
- package/dist/drivers/desktop/index.d.ts +0 -65
- package/dist/drivers/desktop/index.js +0 -68
- package/dist/drivers/desktop/session.d.ts +0 -313
- package/dist/drivers/desktop/session.js +0 -432
- package/dist/drivers/playwright/event-emitter.d.ts +0 -160
- package/dist/drivers/playwright/event-emitter.js +0 -297
- package/dist/drivers/playwright/generated/api-request-context.d.ts +0 -137
- package/dist/drivers/playwright/generated/api-request-context.js +0 -154
- package/dist/drivers/playwright/generated/api-response.d.ts +0 -119
- package/dist/drivers/playwright/generated/api-response.js +0 -123
- package/dist/drivers/playwright/generated/browser-context.d.ts +0 -284
- package/dist/drivers/playwright/generated/browser-context.js +0 -458
- package/dist/drivers/playwright/generated/browser.d.ts +0 -120
- package/dist/drivers/playwright/generated/browser.js +0 -151
- package/dist/drivers/playwright/generated/clock.d.ts +0 -80
- package/dist/drivers/playwright/generated/clock.js +0 -94
- package/dist/drivers/playwright/generated/console-message.d.ts +0 -94
- package/dist/drivers/playwright/generated/console-message.js +0 -89
- package/dist/drivers/playwright/generated/coverage.d.ts +0 -57
- package/dist/drivers/playwright/generated/coverage.js +0 -66
- package/dist/drivers/playwright/generated/dialog.d.ts +0 -79
- package/dist/drivers/playwright/generated/dialog.js +0 -80
- package/dist/drivers/playwright/generated/element-handle.d.ts +0 -399
- package/dist/drivers/playwright/generated/element-handle.js +0 -501
- package/dist/drivers/playwright/generated/frame-locator.d.ts +0 -34
- package/dist/drivers/playwright/generated/frame-locator.js +0 -63
- package/dist/drivers/playwright/generated/frame.d.ts +0 -557
- package/dist/drivers/playwright/generated/frame.js +0 -634
- package/dist/drivers/playwright/generated/js-handle.d.ts +0 -72
- package/dist/drivers/playwright/generated/js-handle.js +0 -92
- package/dist/drivers/playwright/generated/keyboard.d.ts +0 -103
- package/dist/drivers/playwright/generated/keyboard.js +0 -113
- package/dist/drivers/playwright/generated/locator.d.ts +0 -795
- package/dist/drivers/playwright/generated/locator.js +0 -974
- package/dist/drivers/playwright/generated/mouse.d.ts +0 -97
- package/dist/drivers/playwright/generated/mouse.js +0 -109
- package/dist/drivers/playwright/generated/page.d.ts +0 -762
- package/dist/drivers/playwright/generated/page.js +0 -988
- package/dist/drivers/playwright/generated/touchscreen.d.ts +0 -34
- package/dist/drivers/playwright/generated/touchscreen.js +0 -37
- package/dist/drivers/playwright/generated/tracing.d.ts +0 -78
- package/dist/drivers/playwright/generated/tracing.js +0 -80
- package/dist/drivers/playwright/generated/worker.d.ts +0 -53
- package/dist/drivers/playwright/generated/worker.js +0 -59
- package/dist/drivers/playwright/index.d.ts +0 -19
- package/dist/drivers/playwright/index.js +0 -20
- package/dist/drivers/playwright/remote-base.d.ts +0 -62
- package/dist/drivers/playwright/remote-base.js +0 -86
- package/dist/drivers/playwright/types.d.ts +0 -148
- package/dist/drivers/playwright/types.js +0 -8
- package/dist/drivers/puppeteer/errors.d.ts +0 -50
- package/dist/drivers/puppeteer/errors.js +0 -71
- package/dist/drivers/puppeteer/event-emitter.d.ts +0 -145
- package/dist/drivers/puppeteer/event-emitter.js +0 -259
- package/dist/drivers/puppeteer/generated/accessibility.d.ts +0 -77
- package/dist/drivers/puppeteer/generated/accessibility.js +0 -74
- package/dist/drivers/puppeteer/generated/browser-context.d.ts +0 -116
- package/dist/drivers/puppeteer/generated/browser-context.js +0 -168
- package/dist/drivers/puppeteer/generated/browser.d.ts +0 -169
- package/dist/drivers/puppeteer/generated/browser.js +0 -246
- package/dist/drivers/puppeteer/generated/console-message.d.ts +0 -54
- package/dist/drivers/puppeteer/generated/console-message.js +0 -69
- package/dist/drivers/puppeteer/generated/coverage.d.ts +0 -49
- package/dist/drivers/puppeteer/generated/coverage.js +0 -57
- package/dist/drivers/puppeteer/generated/dialog.d.ts +0 -46
- package/dist/drivers/puppeteer/generated/dialog.js +0 -60
- package/dist/drivers/puppeteer/generated/element-handle.d.ts +0 -261
- package/dist/drivers/puppeteer/generated/element-handle.js +0 -341
- package/dist/drivers/puppeteer/generated/file-chooser.d.ts +0 -34
- package/dist/drivers/puppeteer/generated/file-chooser.js +0 -43
- package/dist/drivers/puppeteer/generated/frame.d.ts +0 -221
- package/dist/drivers/puppeteer/generated/frame.js +0 -302
- package/dist/drivers/puppeteer/generated/http-request.d.ts +0 -195
- package/dist/drivers/puppeteer/generated/http-request.js +0 -243
- package/dist/drivers/puppeteer/generated/http-response.d.ts +0 -142
- package/dist/drivers/puppeteer/generated/http-response.js +0 -169
- package/dist/drivers/puppeteer/generated/js-handle.d.ts +0 -104
- package/dist/drivers/puppeteer/generated/js-handle.js +0 -125
- package/dist/drivers/puppeteer/generated/keyboard.d.ts +0 -79
- package/dist/drivers/puppeteer/generated/keyboard.js +0 -89
- package/dist/drivers/puppeteer/generated/locator.d.ts +0 -141
- package/dist/drivers/puppeteer/generated/locator.js +0 -164
- package/dist/drivers/puppeteer/generated/mouse.d.ts +0 -74
- package/dist/drivers/puppeteer/generated/mouse.js +0 -94
- package/dist/drivers/puppeteer/generated/page.d.ts +0 -604
- package/dist/drivers/puppeteer/generated/page.js +0 -776
- package/dist/drivers/puppeteer/generated/target.d.ts +0 -105
- package/dist/drivers/puppeteer/generated/target.js +0 -123
- package/dist/drivers/puppeteer/generated/touchscreen.d.ts +0 -87
- package/dist/drivers/puppeteer/generated/touchscreen.js +0 -103
- package/dist/drivers/puppeteer/generated/tracing.d.ts +0 -38
- package/dist/drivers/puppeteer/generated/tracing.js +0 -43
- package/dist/drivers/puppeteer/generated/web-worker.d.ts +0 -63
- package/dist/drivers/puppeteer/generated/web-worker.js +0 -73
- package/dist/drivers/puppeteer/index.d.ts +0 -21
- package/dist/drivers/puppeteer/index.js +0 -23
- package/dist/drivers/puppeteer/remote-base.d.ts +0 -57
- package/dist/drivers/puppeteer/remote-base.js +0 -79
- package/dist/drivers/puppeteer/types.d.ts +0 -178
- package/dist/drivers/puppeteer/types.js +0 -8
- package/dist/drivers/selenium/driver.d.ts +0 -28
- package/dist/drivers/selenium/driver.js +0 -169
- package/dist/drivers/selenium/element.d.ts +0 -34
- package/dist/drivers/selenium/element.js +0 -73
- package/dist/drivers/selenium/index.d.ts +0 -3
- package/dist/drivers/selenium/index.js +0 -5
- package/dist/drivers/selenium/types.d.ts +0 -2
- package/dist/drivers/selenium/types.js +0 -12
- package/dist/drivers/stagehand/generated/context.d.ts +0 -127
- package/dist/drivers/stagehand/generated/context.js +0 -153
- package/dist/drivers/stagehand/generated/locator.d.ts +0 -324
- package/dist/drivers/stagehand/generated/locator.js +0 -368
- package/dist/drivers/stagehand/generated/page.d.ts +0 -377
- package/dist/drivers/stagehand/generated/page.js +0 -439
- package/dist/drivers/stagehand/generated/response.d.ts +0 -197
- package/dist/drivers/stagehand/generated/response.js +0 -232
- package/dist/drivers/stagehand/index.d.ts +0 -5
- package/dist/drivers/stagehand/index.js +0 -8
- package/dist/drivers/stagehand/types.d.ts +0 -1
- package/dist/drivers/stagehand/types.js +0 -7
- package/dist/extensions/client.d.ts +0 -47
- package/dist/extensions/client.js +0 -154
- package/dist/extensions/index.d.ts +0 -1
- package/dist/extensions/index.js +0 -1
- package/dist/internal/dev-client.d.ts +0 -5
- package/dist/internal/dev-client.js +0 -9
- package/dist/internal/rpc-targets.d.ts +0 -17
- package/dist/internal/rpc-targets.js +0 -58
- package/dist/internal/serialization.d.ts +0 -32
- package/dist/internal/serialization.js +0 -42
- package/dist/internal/transport.d.ts +0 -24
- package/dist/internal/transport.js +0 -29
- package/dist/playwright.d.ts +0 -1
- package/dist/playwright.js +0 -2
- package/dist/puppeteer.d.ts +0 -1
- package/dist/puppeteer.js +0 -2
- package/dist/selenium.d.ts +0 -1
- package/dist/selenium.js +0 -2
- package/dist/stagehand.d.ts +0 -1
- package/dist/stagehand.js +0 -2
- package/dist/storage/client.d.ts +0 -151
- package/dist/storage/client.js +0 -329
- package/dist/storage/index.d.ts +0 -2
- package/dist/storage/index.js +0 -4
- package/dist/telemetry.d.ts +0 -18
- package/dist/telemetry.js +0 -93
- package/dist/updates/client.d.ts +0 -8
- package/dist/updates/client.js +0 -128
- package/dist/updates/index.d.ts +0 -1
- package/dist/updates/index.js +0 -1
- package/dist/utils/http.d.ts +0 -39
- package/dist/utils/http.js +0 -88
- package/dist/utils/index.d.ts +0 -4
- package/dist/utils/index.js +0 -4
- package/dist/utils/logger.d.ts +0 -27
- package/dist/utils/logger.js +0 -74
- package/dist/utils/schema.d.ts +0 -17
- package/dist/utils/schema.js +0 -31
- package/dist/utils/url.d.ts +0 -5
- package/dist/utils/url.js +0 -7
- package/dist/vault/client.d.ts +0 -43
- package/dist/vault/client.js +0 -123
- package/dist/vault/index.d.ts +0 -1
- package/dist/vault/index.js +0 -1
- package/dist/workspaces/browser-runtime.d.ts +0 -251
- package/dist/workspaces/browser-runtime.js +0 -1025
- package/dist/workspaces/client.d.ts +0 -48
- package/dist/workspaces/client.js +0 -222
- package/dist/workspaces/index.d.ts +0 -2
- package/dist/workspaces/index.js +0 -2
- package/dist/workspaces/runtime-event-pump.d.ts +0 -65
- package/dist/workspaces/runtime-event-pump.js +0 -716
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @bctrl/sdk
|
|
2
2
|
|
|
3
|
-
TypeScript SDK for BCTRL
|
|
3
|
+
TypeScript SDK for BCTRL v2 spaces, browser runtimes, invocations, runs, and files.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -19,44 +19,44 @@ const bctrl = new Bctrl({
|
|
|
19
19
|
apiKey: process.env.BCTRL_API_KEY!,
|
|
20
20
|
});
|
|
21
21
|
|
|
22
|
-
const
|
|
22
|
+
const space = await bctrl.spaces.create({
|
|
23
23
|
name: 'my-task',
|
|
24
|
+
region: 'us-east-1',
|
|
24
25
|
});
|
|
25
26
|
|
|
26
|
-
const browser = await
|
|
27
|
-
|
|
27
|
+
const browser = await space.browsers.launch({
|
|
28
|
+
name: 'browser-task',
|
|
29
|
+
state: 'ephemeral',
|
|
28
30
|
});
|
|
29
31
|
|
|
30
|
-
await browser.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
const connection = await browser.connect();
|
|
33
|
+
console.log(connection.wsUrl);
|
|
34
|
+
|
|
35
|
+
const invocation = await browser.invocations.create({
|
|
36
|
+
provider: 'stagehand',
|
|
37
|
+
method: 'act',
|
|
38
|
+
input: { instruction: 'Open https://example.com' },
|
|
34
39
|
});
|
|
35
40
|
|
|
36
|
-
const
|
|
37
|
-
console.log(
|
|
41
|
+
const result = await invocation.wait({ timeoutMs: 60_000 });
|
|
42
|
+
console.log(result.data.status);
|
|
38
43
|
```
|
|
39
44
|
|
|
40
|
-
The public SDK
|
|
41
|
-
|
|
42
|
-
For local development inside this repo, use the internal test helper instead of changing the public client base URL:
|
|
45
|
+
The public SDK targets `https://api.bctrl.ai/v2`. For local development, pass a
|
|
46
|
+
local origin or v2 base URL:
|
|
43
47
|
|
|
44
48
|
```ts
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const bctrl = createInternalBctrl({
|
|
49
|
+
const bctrl = new Bctrl({
|
|
48
50
|
apiKey: process.env.BCTRL_API_KEY!,
|
|
49
|
-
|
|
51
|
+
baseUrl: 'http://localhost:8787',
|
|
50
52
|
});
|
|
51
53
|
```
|
|
52
54
|
|
|
55
|
+
`baseUrl` may include or omit `/v2`; the client normalizes either form.
|
|
56
|
+
|
|
53
57
|
## Entry points
|
|
54
58
|
|
|
55
|
-
- `@bctrl/sdk`:
|
|
56
|
-
- `@bctrl/sdk/playwright`: Playwright driver types and remote browser classes
|
|
57
|
-
- `@bctrl/sdk/puppeteer`: Puppeteer driver types and remote browser classes
|
|
58
|
-
- `@bctrl/sdk/stagehand`: Stagehand driver types and remote browser classes
|
|
59
|
-
- `@bctrl/sdk/selenium`: Selenium driver types and remote browser classes
|
|
59
|
+
- `@bctrl/sdk`: v2 client, resources, errors, and public types
|
|
60
60
|
|
|
61
61
|
## Documentation
|
|
62
62
|
|
|
@@ -65,11 +65,6 @@ const bctrl = createInternalBctrl({
|
|
|
65
65
|
|
|
66
66
|
## Telemetry
|
|
67
67
|
|
|
68
|
-
The SDK
|
|
69
|
-
|
|
70
|
-
- Error reporting is Sentry-based and only activates when `SENTRY_DSN_SDK` is present at runtime.
|
|
71
|
-
- It captures SDK errors such as request timeouts and failed HTTP or automation calls.
|
|
72
|
-
- Sensitive headers like `authorization`, `cookie`, and internal secrets are stripped before an event is sent.
|
|
73
|
-
- Pass `telemetry: false` to `new Bctrl(...)` to disable it explicitly.
|
|
68
|
+
The published SDK does not include vendor-owned telemetry or usage analytics.
|
|
74
69
|
|
|
75
|
-
If you want
|
|
70
|
+
If you want observability around SDK calls, instrument your application directly with your own logging or error tracking.
|
package/dist/bctrl.d.ts
CHANGED
|
@@ -1,37 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
declare
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { V2FilesClient } from './files.js';
|
|
2
|
+
import { type V2ClientOptions } from './http.js';
|
|
3
|
+
import { V2InvocationsClient } from './invocations.js';
|
|
4
|
+
import { V2RunsClient } from './runs.js';
|
|
5
|
+
import { V2RuntimesClient } from './runtimes.js';
|
|
6
|
+
import { V2SpacesClient } from './spaces.js';
|
|
7
|
+
export type BctrlV2Options = V2ClientOptions;
|
|
8
|
+
export declare class BctrlV2 {
|
|
9
|
+
private readonly http;
|
|
10
|
+
private _spaces;
|
|
11
|
+
private _runtimes;
|
|
12
|
+
private _runs;
|
|
13
|
+
private _invocations;
|
|
14
|
+
private _files;
|
|
15
|
+
static isControllerBusy(error: unknown): boolean;
|
|
16
|
+
constructor(options?: BctrlV2Options);
|
|
17
|
+
get spaces(): V2SpacesClient;
|
|
18
|
+
get runtimes(): V2RuntimesClient;
|
|
19
|
+
get runs(): V2RunsClient;
|
|
20
|
+
get invocations(): V2InvocationsClient;
|
|
21
|
+
get files(): V2FilesClient;
|
|
12
22
|
}
|
|
13
|
-
|
|
14
|
-
[INTERNAL_BASE_URL]: string;
|
|
15
|
-
};
|
|
16
|
-
export declare class Bctrl {
|
|
17
|
-
private readonly baseUrl;
|
|
18
|
-
private readonly apiKey;
|
|
19
|
-
private _aiCredentials;
|
|
20
|
-
private _browserExtensions;
|
|
21
|
-
private _browserProfiles;
|
|
22
|
-
private _vault;
|
|
23
|
-
private _workspaces;
|
|
24
|
-
private _updates;
|
|
25
|
-
constructor(options: BctrlOptions, internalOverride?: InternalBctrlOverride);
|
|
26
|
-
get aiCredentials(): AiCredentialsClient;
|
|
27
|
-
get browserProfiles(): BrowserProfilesClient;
|
|
28
|
-
get browserExtensions(): BrowserExtensionsClient;
|
|
29
|
-
storage(workspace: string): StorageClient;
|
|
30
|
-
get vault(): VaultClient;
|
|
31
|
-
get workspaces(): WorkspacesClient;
|
|
32
|
-
get updates(): UpdatesClient;
|
|
33
|
-
}
|
|
34
|
-
export declare function createInternalBctrlClient(options: BctrlOptions & {
|
|
35
|
-
apiBaseUrl: string;
|
|
36
|
-
}): Bctrl;
|
|
37
|
-
export {};
|
|
23
|
+
export { BctrlV2 as Bctrl };
|
package/dist/bctrl.js
CHANGED
|
@@ -1,77 +1,42 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
import { isControllerBusy } from './errors.js';
|
|
2
|
+
import { V2FilesClient } from './files.js';
|
|
3
|
+
import { V2HttpClient } from './http.js';
|
|
4
|
+
import { V2InvocationsClient } from './invocations.js';
|
|
5
|
+
import { V2RunsClient } from './runs.js';
|
|
6
|
+
import { V2RuntimesClient } from './runtimes.js';
|
|
7
|
+
import { V2SpacesClient } from './spaces.js';
|
|
8
|
+
export class BctrlV2 {
|
|
9
|
+
http;
|
|
10
|
+
_spaces = null;
|
|
11
|
+
_runtimes = null;
|
|
12
|
+
_runs = null;
|
|
13
|
+
_invocations = null;
|
|
14
|
+
_files = null;
|
|
15
|
+
static isControllerBusy(error) {
|
|
16
|
+
return isControllerBusy(error);
|
|
17
|
+
}
|
|
18
|
+
constructor(options = {}) {
|
|
19
|
+
this.http = new V2HttpClient(options);
|
|
20
|
+
}
|
|
21
|
+
get spaces() {
|
|
22
|
+
this._spaces ??= new V2SpacesClient(this.http);
|
|
23
|
+
return this._spaces;
|
|
24
|
+
}
|
|
25
|
+
get runtimes() {
|
|
26
|
+
this._runtimes ??= new V2RuntimesClient(this.http);
|
|
27
|
+
return this._runtimes;
|
|
28
|
+
}
|
|
29
|
+
get runs() {
|
|
30
|
+
this._runs ??= new V2RunsClient(this.http);
|
|
31
|
+
return this._runs;
|
|
32
|
+
}
|
|
33
|
+
get invocations() {
|
|
34
|
+
this._invocations ??= new V2InvocationsClient(this.http);
|
|
35
|
+
return this._invocations;
|
|
36
|
+
}
|
|
37
|
+
get files() {
|
|
38
|
+
this._files ??= new V2FilesClient(this.http);
|
|
39
|
+
return this._files;
|
|
29
40
|
}
|
|
30
|
-
get aiCredentials() {
|
|
31
|
-
if (!this._aiCredentials) {
|
|
32
|
-
this._aiCredentials = new AiCredentialsClient(this.baseUrl, this.apiKey);
|
|
33
|
-
}
|
|
34
|
-
return this._aiCredentials;
|
|
35
|
-
}
|
|
36
|
-
get browserProfiles() {
|
|
37
|
-
if (!this._browserProfiles) {
|
|
38
|
-
this._browserProfiles = new BrowserProfilesClient(this.baseUrl, this.apiKey);
|
|
39
|
-
}
|
|
40
|
-
return this._browserProfiles;
|
|
41
|
-
}
|
|
42
|
-
get browserExtensions() {
|
|
43
|
-
if (!this._browserExtensions) {
|
|
44
|
-
this._browserExtensions = new BrowserExtensionsClient(this.baseUrl, this.apiKey);
|
|
45
|
-
}
|
|
46
|
-
return this._browserExtensions;
|
|
47
|
-
}
|
|
48
|
-
storage(workspace) {
|
|
49
|
-
return new StorageClient(this.baseUrl, workspace, this.apiKey);
|
|
50
|
-
}
|
|
51
|
-
get vault() {
|
|
52
|
-
if (!this._vault) {
|
|
53
|
-
this._vault = new VaultClient(this.baseUrl, this.apiKey);
|
|
54
|
-
}
|
|
55
|
-
return this._vault;
|
|
56
|
-
}
|
|
57
|
-
get workspaces() {
|
|
58
|
-
if (!this._workspaces) {
|
|
59
|
-
this._workspaces = new WorkspacesClient(this.baseUrl, this.apiKey);
|
|
60
|
-
}
|
|
61
|
-
return this._workspaces;
|
|
62
|
-
}
|
|
63
|
-
get updates() {
|
|
64
|
-
if (!this._updates) {
|
|
65
|
-
this._updates = new UpdatesClient(this.baseUrl, this.apiKey);
|
|
66
|
-
}
|
|
67
|
-
return this._updates;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
export function createInternalBctrlClient(options) {
|
|
71
|
-
return new Bctrl({
|
|
72
|
-
apiKey: options.apiKey,
|
|
73
|
-
telemetry: options.telemetry,
|
|
74
|
-
}, {
|
|
75
|
-
[INTERNAL_BASE_URL]: options.apiBaseUrl,
|
|
76
|
-
});
|
|
77
41
|
}
|
|
42
|
+
export { BctrlV2 as Bctrl };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { V2HttpClient } from './http.js';
|
|
2
|
+
import type { V2RuntimeInvocationsClient } from './invocations.js';
|
|
3
|
+
import { V2RuntimeConnectionResource, V2RuntimeResource } from './runtimes.js';
|
|
4
|
+
import { V2RunResource } from './runs.js';
|
|
5
|
+
import type { BrowserLaunchOptions, V2Runtime, V2RuntimeConnectionCreateOptions } from './types.js';
|
|
6
|
+
export declare class V2BrowserResource {
|
|
7
|
+
private readonly http;
|
|
8
|
+
private readonly spaceId;
|
|
9
|
+
readonly runtime: V2RuntimeResource;
|
|
10
|
+
constructor(http: V2HttpClient, spaceId: string, runtime: V2RuntimeResource);
|
|
11
|
+
get id(): string;
|
|
12
|
+
get data(): V2Runtime;
|
|
13
|
+
get invocations(): V2RuntimeInvocationsClient;
|
|
14
|
+
connect(request?: V2RuntimeConnectionCreateOptions): Promise<V2RuntimeConnectionResource>;
|
|
15
|
+
run(): Promise<V2RunResource>;
|
|
16
|
+
stop(): Promise<V2Runtime>;
|
|
17
|
+
refresh(): Promise<V2BrowserResource>;
|
|
18
|
+
}
|
|
19
|
+
export declare class V2SpaceBrowsersClient {
|
|
20
|
+
private readonly http;
|
|
21
|
+
private readonly spaceId;
|
|
22
|
+
constructor(http: V2HttpClient, spaceId: string);
|
|
23
|
+
launch(options: BrowserLaunchOptions): Promise<V2BrowserResource>;
|
|
24
|
+
}
|
package/dist/browsers.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { BctrlValidationError } from './errors.js';
|
|
2
|
+
import { V2RuntimesClient, } from './runtimes.js';
|
|
3
|
+
export class V2BrowserResource {
|
|
4
|
+
http;
|
|
5
|
+
spaceId;
|
|
6
|
+
runtime;
|
|
7
|
+
constructor(http, spaceId, runtime) {
|
|
8
|
+
this.http = http;
|
|
9
|
+
this.spaceId = spaceId;
|
|
10
|
+
this.runtime = runtime;
|
|
11
|
+
}
|
|
12
|
+
get id() {
|
|
13
|
+
return this.runtime.id;
|
|
14
|
+
}
|
|
15
|
+
get data() {
|
|
16
|
+
return this.runtime.data;
|
|
17
|
+
}
|
|
18
|
+
get invocations() {
|
|
19
|
+
return this.runtime.invocations;
|
|
20
|
+
}
|
|
21
|
+
connect(request) {
|
|
22
|
+
return this.runtime.connect(request);
|
|
23
|
+
}
|
|
24
|
+
async run() {
|
|
25
|
+
return this.runtime.run();
|
|
26
|
+
}
|
|
27
|
+
stop() {
|
|
28
|
+
return this.runtime.stop();
|
|
29
|
+
}
|
|
30
|
+
async refresh() {
|
|
31
|
+
const runtime = await new V2RuntimesClient(this.http).get(this.id);
|
|
32
|
+
return new V2BrowserResource(this.http, this.spaceId, runtime);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class V2SpaceBrowsersClient {
|
|
36
|
+
http;
|
|
37
|
+
spaceId;
|
|
38
|
+
constructor(http, spaceId) {
|
|
39
|
+
this.http = http;
|
|
40
|
+
this.spaceId = spaceId;
|
|
41
|
+
}
|
|
42
|
+
async launch(options) {
|
|
43
|
+
const request = browserLaunchToRuntimeCreate(options);
|
|
44
|
+
const runtime = await new V2RuntimesClient(this.http).createInSpace(this.spaceId, request);
|
|
45
|
+
const started = await runtime.start();
|
|
46
|
+
return new V2BrowserResource(this.http, this.spaceId, started.runtime);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function browserLaunchToRuntimeCreate(options) {
|
|
50
|
+
const state = options.state ?? 'ephemeral';
|
|
51
|
+
if (!options.name?.trim()) {
|
|
52
|
+
throw new BctrlValidationError('Browser name is required', 'browser.name_required');
|
|
53
|
+
}
|
|
54
|
+
if (state === 'profile') {
|
|
55
|
+
const unsupported = [
|
|
56
|
+
['stealth', options.stealth],
|
|
57
|
+
['proxy', options.proxy],
|
|
58
|
+
['fingerprint', options.fingerprint],
|
|
59
|
+
['extensions', options.extensions],
|
|
60
|
+
]
|
|
61
|
+
.filter(([, value]) => value !== undefined)
|
|
62
|
+
.map(([key]) => key);
|
|
63
|
+
if (unsupported.length > 0) {
|
|
64
|
+
throw new BctrlValidationError('Profile-backed browser launch only supports lifecycle config right now', 'browser.profile_config_unsupported', { unsupported });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
type: 'browser',
|
|
69
|
+
name: options.name,
|
|
70
|
+
metadata: options.metadata,
|
|
71
|
+
config: {
|
|
72
|
+
browser: {
|
|
73
|
+
profile: state === 'profile',
|
|
74
|
+
},
|
|
75
|
+
...(options.lifecycle ? { lifecycle: options.lifecycle } : {}),
|
|
76
|
+
...(state === 'ephemeral' && options.stealth ? { stealth: options.stealth } : {}),
|
|
77
|
+
...(state === 'ephemeral' && options.proxy !== undefined ? { proxy: options.proxy } : {}),
|
|
78
|
+
...(state === 'ephemeral' && options.fingerprint ? { fingerprint: options.fingerprint } : {}),
|
|
79
|
+
...(state === 'ephemeral' && options.extensions ? { extensions: options.extensions } : {}),
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
package/dist/errors.d.ts
CHANGED
|
@@ -1,47 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
export interface V2ErrorContext {
|
|
2
|
+
status?: number;
|
|
3
|
+
code?: string;
|
|
4
|
+
requestId?: string;
|
|
5
|
+
body?: unknown;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
6
8
|
export declare class BctrlError extends Error {
|
|
7
9
|
readonly code: string;
|
|
8
|
-
readonly context?:
|
|
9
|
-
constructor(message: string, code: string, context?:
|
|
10
|
-
/** Serialize for structured loggers (pino, winston) and JSON.stringify() */
|
|
10
|
+
readonly context?: V2ErrorContext;
|
|
11
|
+
constructor(message: string, code: string, context?: V2ErrorContext);
|
|
11
12
|
toJSON(): Record<string, unknown>;
|
|
12
13
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
export declare class
|
|
31
|
-
constructor(message: string,
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
export declare
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
export declare
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
14
|
+
export declare class BctrlApiError extends BctrlError {
|
|
15
|
+
constructor(message: string, code?: string, context?: V2ErrorContext);
|
|
16
|
+
get status(): number | undefined;
|
|
17
|
+
get requestId(): string | undefined;
|
|
18
|
+
}
|
|
19
|
+
export declare class BctrlAuthenticationError extends BctrlApiError {
|
|
20
|
+
constructor(message: string, code?: string, context?: V2ErrorContext);
|
|
21
|
+
}
|
|
22
|
+
export declare class BctrlPermissionError extends BctrlApiError {
|
|
23
|
+
constructor(message: string, code?: string, context?: V2ErrorContext);
|
|
24
|
+
}
|
|
25
|
+
export declare class BctrlNotFoundError extends BctrlApiError {
|
|
26
|
+
constructor(message: string, code?: string, context?: V2ErrorContext);
|
|
27
|
+
}
|
|
28
|
+
export declare class BctrlConflictError extends BctrlApiError {
|
|
29
|
+
constructor(message: string, code?: string, context?: V2ErrorContext);
|
|
30
|
+
}
|
|
31
|
+
export declare class BctrlRateLimitError extends BctrlApiError {
|
|
32
|
+
constructor(message: string, code?: string, context?: V2ErrorContext);
|
|
33
|
+
}
|
|
34
|
+
export declare class BctrlValidationError extends BctrlApiError {
|
|
35
|
+
constructor(message: string, code?: string, context?: V2ErrorContext);
|
|
36
|
+
}
|
|
37
|
+
export declare class BctrlNetworkError extends BctrlError {
|
|
38
|
+
constructor(message: string, context?: V2ErrorContext);
|
|
39
|
+
}
|
|
40
|
+
export declare class BctrlNotReadyError extends BctrlError {
|
|
41
|
+
constructor(message: string, context?: V2ErrorContext);
|
|
42
|
+
}
|
|
43
|
+
export declare class BctrlUnsupportedError extends BctrlError {
|
|
44
|
+
constructor(message: string, context?: V2ErrorContext);
|
|
45
|
+
}
|
|
46
|
+
export declare function createV2HttpError(input: {
|
|
47
|
+
status: number;
|
|
48
|
+
message: string;
|
|
49
|
+
code?: string;
|
|
50
|
+
requestId?: string;
|
|
51
|
+
body?: unknown;
|
|
52
|
+
}): BctrlApiError;
|
|
53
|
+
export declare function isControllerBusy(error: unknown): boolean;
|