@banata-boxes/sdk 0.2.2 → 0.2.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.
- package/dist/index.d.ts +38 -165
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -208
- package/package.json +5 -6
- package/src/index.ts +175 -126
package/dist/index.d.ts
CHANGED
|
@@ -1,57 +1,11 @@
|
|
|
1
|
-
export interface BrowserConfig {
|
|
2
|
-
/** Session weight: light (512MB, default), medium (1GB), heavy (2GB — Pro+) */
|
|
3
|
-
weight?: 'light' | 'medium' | 'heavy';
|
|
4
|
-
/** Isolation mode: shared (default) or dedicated (Pro+) */
|
|
5
|
-
isolation?: 'shared' | 'dedicated';
|
|
6
|
-
/** Outbound egress profile for the session */
|
|
7
|
-
egressProfile?: 'shared-dc' | 'dedicated-dc' | 'rotating-residential' | 'static-residential' | 'byo-proxy';
|
|
8
|
-
/** Enable anti-detection stealth (Builder+, default: false) */
|
|
9
|
-
stealth?: boolean;
|
|
10
|
-
/** Customer-provided proxy (BYOP) */
|
|
11
|
-
proxy?: {
|
|
12
|
-
protocol: 'http' | 'https' | 'socks5';
|
|
13
|
-
host: string;
|
|
14
|
-
port: number;
|
|
15
|
-
username?: string;
|
|
16
|
-
password?: string;
|
|
17
|
-
};
|
|
18
|
-
/** Enable MP4 session recording (Pro+, default: false) */
|
|
19
|
-
recording?: boolean;
|
|
20
|
-
/** Enable auto CAPTCHA solving (reCAPTCHA, hCaptcha, Turnstile) */
|
|
21
|
-
captcha?: boolean;
|
|
22
|
-
/** Max session duration in ms (capped by your plan limit) */
|
|
23
|
-
maxDurationMs?: number;
|
|
24
|
-
/** R2 key for a saved browser profile (cookies, localStorage) */
|
|
25
|
-
profileKey?: string;
|
|
26
|
-
/** Preferred Fly.io region code (e.g. 'iad', 'lhr') */
|
|
27
|
-
region?: string;
|
|
28
|
-
/** Ask the API to wait briefly for the session to become ready before returning */
|
|
29
|
-
waitUntilReady?: boolean;
|
|
30
|
-
/** Max time in ms for the API to wait before falling back to a queued response */
|
|
31
|
-
waitTimeoutMs?: number;
|
|
32
|
-
/** Timeout in ms to wait for session to become ready (default: 30000) */
|
|
33
|
-
timeout?: number;
|
|
34
|
-
}
|
|
35
|
-
export interface BrowserSession {
|
|
36
|
-
id: string;
|
|
37
|
-
status: 'queued' | 'assigning' | 'ready' | 'active' | 'ending' | 'ended' | 'failed';
|
|
38
|
-
waitTimedOut?: boolean;
|
|
39
|
-
cdpUrl: string | null;
|
|
40
|
-
previewUrl?: string | null;
|
|
41
|
-
machineId?: string | null;
|
|
42
|
-
weight: string;
|
|
43
|
-
isolation: string;
|
|
44
|
-
egressProfile: string;
|
|
45
|
-
artifacts: {
|
|
46
|
-
screenshots?: string[];
|
|
47
|
-
har?: string;
|
|
48
|
-
recording?: string;
|
|
49
|
-
} | null;
|
|
50
|
-
duration: number | null;
|
|
51
|
-
}
|
|
52
1
|
export interface UsageInfo {
|
|
53
2
|
totalSessions: number;
|
|
54
3
|
totalBrowserHours: number;
|
|
4
|
+
totalSandboxSessions?: number;
|
|
5
|
+
totalSandboxHours?: number;
|
|
6
|
+
sandboxSizeBreakdown?: {
|
|
7
|
+
standard: number;
|
|
8
|
+
};
|
|
55
9
|
weightBreakdown: {
|
|
56
10
|
light: number;
|
|
57
11
|
medium: number;
|
|
@@ -65,6 +19,8 @@ export interface BillingInfo {
|
|
|
65
19
|
currentPeriod: {
|
|
66
20
|
totalSessions: number;
|
|
67
21
|
totalBrowserHours: number;
|
|
22
|
+
totalSandboxSessions?: number;
|
|
23
|
+
totalSandboxHours?: number;
|
|
68
24
|
weightBreakdown: {
|
|
69
25
|
light: number;
|
|
70
26
|
medium: number;
|
|
@@ -72,20 +28,6 @@ export interface BillingInfo {
|
|
|
72
28
|
};
|
|
73
29
|
};
|
|
74
30
|
}
|
|
75
|
-
export interface LaunchedBrowserSession {
|
|
76
|
-
cdpUrl: string;
|
|
77
|
-
sessionId: string;
|
|
78
|
-
previewViewerUrl: string | null;
|
|
79
|
-
close: () => Promise<void>;
|
|
80
|
-
getPreviewConnection: () => Promise<PreviewConnectionInfo | null>;
|
|
81
|
-
getPreviewViewerUrl: () => Promise<string | null>;
|
|
82
|
-
startPreview: () => Promise<PreviewCommandResponse>;
|
|
83
|
-
navigatePreview: (url: string) => Promise<PreviewCommandResponse>;
|
|
84
|
-
resizePreview: (size: {
|
|
85
|
-
width?: number;
|
|
86
|
-
height?: number;
|
|
87
|
-
}) => Promise<PreviewCommandResponse>;
|
|
88
|
-
}
|
|
89
31
|
export type WebhookEventType = "session.created" | "session.assigned" | "session.ready" | "session.ending" | "session.ended" | "session.failed" | "sandbox.created" | "sandbox.assigned" | "sandbox.ready" | "sandbox.ending" | "sandbox.ended" | "sandbox.failed" | "sandbox.paused" | "sandbox.resumed" | "sandbox.opencode.updated" | "sandbox.browser_preview.updated" | "sandbox.handoff.requested" | "sandbox.handoff.accepted" | "sandbox.handoff.completed" | "sandbox.artifacts.updated" | "machine.created" | "machine.woken" | "machine.registered" | "machine.suspended";
|
|
90
32
|
export interface WebhookEndpoint {
|
|
91
33
|
id: string;
|
|
@@ -170,94 +112,12 @@ export declare class BanataError extends Error {
|
|
|
170
112
|
}
|
|
171
113
|
/** @deprecated Use BanataError instead */
|
|
172
114
|
export declare const BrowserServiceError: typeof BanataError;
|
|
173
|
-
export declare class BrowserCloud {
|
|
174
|
-
private apiKey;
|
|
175
|
-
private baseUrl;
|
|
176
|
-
private appUrl;
|
|
177
|
-
private retryConfig;
|
|
178
|
-
constructor(config: {
|
|
179
|
-
apiKey: string;
|
|
180
|
-
baseUrl?: string;
|
|
181
|
-
appUrl?: string;
|
|
182
|
-
retry?: RetryConfig;
|
|
183
|
-
});
|
|
184
|
-
private get headers();
|
|
185
|
-
private request;
|
|
186
|
-
/** Create a new browser session */
|
|
187
|
-
createBrowser(config?: BrowserConfig): Promise<BrowserSession>;
|
|
188
|
-
/** Get session status */
|
|
189
|
-
getBrowser(sessionId: string): Promise<BrowserSession>;
|
|
190
|
-
/** End a session */
|
|
191
|
-
closeBrowser(sessionId: string): Promise<void>;
|
|
192
|
-
/** Derive the preview websocket/start endpoints for a live browser session. */
|
|
193
|
-
getPreviewConnection(sessionId: string): Promise<PreviewConnectionInfo | null>;
|
|
194
|
-
getPreviewViewerUrl(sessionId: string): Promise<string | null>;
|
|
195
|
-
/** Start the remote browser preview backend for a live browser session. */
|
|
196
|
-
startPreview(sessionId: string): Promise<PreviewCommandResponse>;
|
|
197
|
-
/** Navigate the live browser preview session. */
|
|
198
|
-
navigatePreview(sessionId: string, url: string): Promise<PreviewCommandResponse>;
|
|
199
|
-
/** Resize the live browser preview session if the preview backend supports it. */
|
|
200
|
-
resizePreview(sessionId: string, size: {
|
|
201
|
-
width?: number;
|
|
202
|
-
height?: number;
|
|
203
|
-
}): Promise<PreviewCommandResponse>;
|
|
204
|
-
/** Wait until session is ready and return CDP URL */
|
|
205
|
-
waitForReady(sessionId: string, timeoutMs?: number): Promise<string>;
|
|
206
|
-
/**
|
|
207
|
-
* Convenience: Create a session, wait for it to be ready, and return
|
|
208
|
-
* the CDP URL + a close function.
|
|
209
|
-
*
|
|
210
|
-
* Usage with Puppeteer:
|
|
211
|
-
* ```ts
|
|
212
|
-
* const { cdpUrl, close } = await cloud.launch({ weight: 'heavy' });
|
|
213
|
-
* const browser = await puppeteer.connect({ browserWSEndpoint: cdpUrl });
|
|
214
|
-
* // ... use browser ...
|
|
215
|
-
* await browser.disconnect();
|
|
216
|
-
* await close();
|
|
217
|
-
* ```
|
|
218
|
-
*/
|
|
219
|
-
launch(config?: BrowserConfig): Promise<LaunchedBrowserSession>;
|
|
220
|
-
/** Get current period usage */
|
|
221
|
-
getUsage(): Promise<UsageInfo>;
|
|
222
|
-
/** Get billing info (plan, usage) */
|
|
223
|
-
getBilling(): Promise<BillingInfo>;
|
|
224
|
-
/** Create a checkout session for plan upgrade (returns Polar checkout URL) */
|
|
225
|
-
createCheckout(params: {
|
|
226
|
-
plan: 'builder' | 'pro' | 'scale';
|
|
227
|
-
successUrl?: string;
|
|
228
|
-
}): Promise<{
|
|
229
|
-
checkoutUrl: string;
|
|
230
|
-
checkoutId: string;
|
|
231
|
-
}>;
|
|
232
|
-
listWebhooks(): Promise<WebhookEndpoint[]>;
|
|
233
|
-
createWebhook(params: {
|
|
234
|
-
url: string;
|
|
235
|
-
description?: string;
|
|
236
|
-
eventTypes?: WebhookEventType[];
|
|
237
|
-
signingSecret?: string;
|
|
238
|
-
}): Promise<WebhookEndpoint & {
|
|
239
|
-
signingSecret: string;
|
|
240
|
-
}>;
|
|
241
|
-
deleteWebhook(id: string): Promise<void>;
|
|
242
|
-
listWebhookDeliveries(limit?: number): Promise<WebhookDelivery[]>;
|
|
243
|
-
testWebhook(id: string): Promise<{
|
|
244
|
-
eventId: string;
|
|
245
|
-
}>;
|
|
246
|
-
}
|
|
247
115
|
export interface SandboxConfig {
|
|
248
|
-
/** Sandbox runtime: bun, python, or base shell */
|
|
249
|
-
runtime?: 'bun' | 'python' | 'base';
|
|
250
|
-
/** Sandbox compute shape. */
|
|
251
|
-
size?: 'standard';
|
|
252
116
|
/** Environment variables to inject into the sandbox */
|
|
253
117
|
env?: Record<string, string>;
|
|
254
|
-
/** Whether sandbox is ephemeral (destroyed on kill). Default: true */
|
|
255
|
-
ephemeral?: boolean;
|
|
256
|
-
/** Max session duration in ms */
|
|
257
|
-
maxDurationMs?: number;
|
|
258
118
|
/** Preferred region for sandbox placement */
|
|
259
119
|
region?: string;
|
|
260
|
-
/**
|
|
120
|
+
/** Supported capabilities to prelaunch inside the sandbox */
|
|
261
121
|
capabilities?: SandboxCapabilities;
|
|
262
122
|
/** Ask the API to wait briefly for the sandbox to become ready before returning */
|
|
263
123
|
waitUntilReady?: boolean;
|
|
@@ -270,14 +130,14 @@ export interface SandboxCapabilities {
|
|
|
270
130
|
opencode?: {
|
|
271
131
|
enabled: boolean;
|
|
272
132
|
defaultAgent?: "build" | "plan";
|
|
273
|
-
allowPromptApi?: boolean;
|
|
274
133
|
};
|
|
275
134
|
browser?: {
|
|
276
|
-
|
|
135
|
+
/** Save a low-resolution MP4 recording as an artifact. Team plan only. */
|
|
277
136
|
recording?: boolean;
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
137
|
+
/** Route outbound traffic through your own proxy. Team plan only. */
|
|
138
|
+
byoProxyUrl?: string;
|
|
139
|
+
/** True when a BYO proxy is configured for this sandbox. */
|
|
140
|
+
byoProxyConfigured?: boolean;
|
|
281
141
|
viewport?: {
|
|
282
142
|
width?: number;
|
|
283
143
|
height?: number;
|
|
@@ -287,16 +147,9 @@ export interface SandboxCapabilities {
|
|
|
287
147
|
libreofficeHeadless?: boolean;
|
|
288
148
|
};
|
|
289
149
|
storage?: {
|
|
290
|
-
workspace?: "ephemeral" | "checkpointed";
|
|
291
150
|
artifactPrefix?: string;
|
|
292
151
|
};
|
|
293
152
|
}
|
|
294
|
-
export interface SandboxCredentialDescriptor {
|
|
295
|
-
name: string;
|
|
296
|
-
kind: string;
|
|
297
|
-
target: string;
|
|
298
|
-
lastInjectedAt?: number;
|
|
299
|
-
}
|
|
300
153
|
export interface SandboxArtifactItem {
|
|
301
154
|
key: string;
|
|
302
155
|
path: string;
|
|
@@ -317,8 +170,6 @@ export interface SandboxPairedBrowser {
|
|
|
317
170
|
sessionId?: string;
|
|
318
171
|
cdpUrl?: string;
|
|
319
172
|
previewUrl?: string;
|
|
320
|
-
recording?: boolean;
|
|
321
|
-
persistentProfile?: boolean;
|
|
322
173
|
controlMode?: "ai" | "human" | "shared";
|
|
323
174
|
controller?: string;
|
|
324
175
|
handoffRequestedAt?: number;
|
|
@@ -378,7 +229,6 @@ export interface SandboxSession {
|
|
|
378
229
|
terminalUrl: string | null;
|
|
379
230
|
previewBaseUrl?: string | null;
|
|
380
231
|
capabilities?: SandboxCapabilities | null;
|
|
381
|
-
credentialDescriptors?: SandboxCredentialDescriptor[] | null;
|
|
382
232
|
pairedBrowser?: SandboxPairedBrowser | null;
|
|
383
233
|
opencode?: SandboxOpencodeState | null;
|
|
384
234
|
browserPreview?: SandboxBrowserPreviewState | null;
|
|
@@ -616,6 +466,29 @@ export declare class BanataSandbox {
|
|
|
616
466
|
});
|
|
617
467
|
private get headers();
|
|
618
468
|
private request;
|
|
469
|
+
getUsage(): Promise<UsageInfo>;
|
|
470
|
+
getBilling(): Promise<BillingInfo>;
|
|
471
|
+
createCheckout(params: {
|
|
472
|
+
plan: 'builder' | 'pro' | 'scale';
|
|
473
|
+
successUrl?: string;
|
|
474
|
+
}): Promise<{
|
|
475
|
+
checkoutUrl: string;
|
|
476
|
+
checkoutId: string;
|
|
477
|
+
}>;
|
|
478
|
+
listWebhooks(): Promise<WebhookEndpoint[]>;
|
|
479
|
+
createWebhook(params: {
|
|
480
|
+
url: string;
|
|
481
|
+
description?: string;
|
|
482
|
+
eventTypes?: WebhookEventType[];
|
|
483
|
+
signingSecret?: string;
|
|
484
|
+
}): Promise<WebhookEndpoint & {
|
|
485
|
+
signingSecret: string;
|
|
486
|
+
}>;
|
|
487
|
+
deleteWebhook(id: string): Promise<void>;
|
|
488
|
+
listWebhookDeliveries(limit?: number): Promise<WebhookDelivery[]>;
|
|
489
|
+
testWebhook(id: string): Promise<{
|
|
490
|
+
eventId: string;
|
|
491
|
+
}>;
|
|
619
492
|
/** Create a new sandbox session */
|
|
620
493
|
create(config?: SandboxConfig): Promise<SandboxSession>;
|
|
621
494
|
/** Get sandbox session status */
|
|
@@ -721,7 +594,7 @@ export declare class BanataSandbox {
|
|
|
721
594
|
* Usage:
|
|
722
595
|
* ```ts
|
|
723
596
|
* const sandbox = new BanataSandbox({ apiKey: '...' });
|
|
724
|
-
* const session = await sandbox.launch(
|
|
597
|
+
* const session = await sandbox.launch();
|
|
725
598
|
*
|
|
726
599
|
* const result = await session.exec('echo', ['Hello!']);
|
|
727
600
|
* console.log(result.stdout);
|
|
@@ -731,5 +604,5 @@ export declare class BanataSandbox {
|
|
|
731
604
|
*/
|
|
732
605
|
launch(config?: SandboxConfig): Promise<LaunchedSandbox>;
|
|
733
606
|
}
|
|
734
|
-
export default
|
|
607
|
+
export default BanataSandbox;
|
|
735
608
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -108,20 +108,6 @@ function derivePreviewConnection(rawUrl) {
|
|
|
108
108
|
return null;
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
function withMachineQuery(rawUrl, machineId) {
|
|
112
|
-
if (!rawUrl || !machineId) {
|
|
113
|
-
return rawUrl;
|
|
114
|
-
}
|
|
115
|
-
try {
|
|
116
|
-
const parsed = new URL(rawUrl);
|
|
117
|
-
if (!parsed.searchParams.get("machine")) {
|
|
118
|
-
parsed.searchParams.set("machine", machineId);
|
|
119
|
-
}
|
|
120
|
-
return parsed.toString();
|
|
121
|
-
} catch {
|
|
122
|
-
return rawUrl;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
111
|
function deriveOpenCodeConnection(rawUrl) {
|
|
126
112
|
if (!rawUrl) {
|
|
127
113
|
return null;
|
|
@@ -214,15 +200,11 @@ function parseSseBlock(block) {
|
|
|
214
200
|
};
|
|
215
201
|
}
|
|
216
202
|
}
|
|
217
|
-
function isBrowserSessionOperationallyReady(session) {
|
|
218
|
-
return (session.status === "ready" || session.status === "active") && Boolean(session.cdpUrl);
|
|
219
|
-
}
|
|
220
203
|
function isSandboxSessionOperationallyReady(session) {
|
|
221
204
|
if (session.status !== "ready" && session.status !== "active") {
|
|
222
205
|
return false;
|
|
223
206
|
}
|
|
224
|
-
|
|
225
|
-
if (browserMode !== "none") {
|
|
207
|
+
if (session.capabilities?.browser) {
|
|
226
208
|
if (!session.pairedBrowser?.cdpUrl) {
|
|
227
209
|
return false;
|
|
228
210
|
}
|
|
@@ -234,8 +216,7 @@ function isSandboxSessionOperationallyReady(session) {
|
|
|
234
216
|
}
|
|
235
217
|
return true;
|
|
236
218
|
}
|
|
237
|
-
|
|
238
|
-
class BrowserCloud {
|
|
219
|
+
class BanataSandbox {
|
|
239
220
|
apiKey;
|
|
240
221
|
baseUrl;
|
|
241
222
|
appUrl;
|
|
@@ -297,6 +278,9 @@ class BrowserCloud {
|
|
|
297
278
|
}
|
|
298
279
|
throw error;
|
|
299
280
|
}
|
|
281
|
+
if (res.status === 204) {
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
300
284
|
return res.json();
|
|
301
285
|
} catch (err) {
|
|
302
286
|
if (err instanceof BanataError) {
|
|
@@ -313,108 +297,6 @@ class BrowserCloud {
|
|
|
313
297
|
}
|
|
314
298
|
throw lastError ?? new Error("Request failed");
|
|
315
299
|
}
|
|
316
|
-
async createBrowser(config = {}) {
|
|
317
|
-
const { timeout, waitTimeoutMs, ...rest } = config;
|
|
318
|
-
const requestBody = { ...rest };
|
|
319
|
-
if (waitTimeoutMs !== undefined) {
|
|
320
|
-
requestBody.waitTimeoutMs = waitTimeoutMs;
|
|
321
|
-
}
|
|
322
|
-
return this.request("/v1/browsers", {
|
|
323
|
-
method: "POST",
|
|
324
|
-
body: JSON.stringify(requestBody)
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
async getBrowser(sessionId) {
|
|
328
|
-
return this.request(`/v1/browsers?id=${encodeURIComponent(sessionId)}`);
|
|
329
|
-
}
|
|
330
|
-
async closeBrowser(sessionId) {
|
|
331
|
-
await this.request(`/v1/browsers?id=${encodeURIComponent(sessionId)}`, {
|
|
332
|
-
method: "DELETE"
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
async getPreviewConnection(sessionId) {
|
|
336
|
-
const session = await this.getBrowser(sessionId);
|
|
337
|
-
return derivePreviewConnection(session.previewUrl ?? withMachineQuery(session.cdpUrl, session.machineId));
|
|
338
|
-
}
|
|
339
|
-
async getPreviewViewerUrl(sessionId) {
|
|
340
|
-
const session = await this.getBrowser(sessionId);
|
|
341
|
-
return buildPreviewViewerUrl(session.previewUrl ?? withMachineQuery(session.cdpUrl, session.machineId), this.appUrl);
|
|
342
|
-
}
|
|
343
|
-
async startPreview(sessionId) {
|
|
344
|
-
const connection = await this.getPreviewConnection(sessionId);
|
|
345
|
-
if (!connection) {
|
|
346
|
-
throw new BanataError("Browser preview is not available for this session", 409);
|
|
347
|
-
}
|
|
348
|
-
return requestPreviewEndpoint(connection.startUrl, {
|
|
349
|
-
method: "POST"
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
async navigatePreview(sessionId, url) {
|
|
353
|
-
const connection = await this.getPreviewConnection(sessionId);
|
|
354
|
-
if (!connection) {
|
|
355
|
-
throw new BanataError("Browser preview is not available for this session", 409);
|
|
356
|
-
}
|
|
357
|
-
return requestPreviewEndpoint(connection.navigateUrl, {
|
|
358
|
-
method: "POST",
|
|
359
|
-
headers: { "Content-Type": "application/json" },
|
|
360
|
-
body: JSON.stringify({ url })
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
async resizePreview(sessionId, size) {
|
|
364
|
-
const connection = await this.getPreviewConnection(sessionId);
|
|
365
|
-
if (!connection) {
|
|
366
|
-
throw new BanataError("Browser preview is not available for this session", 409);
|
|
367
|
-
}
|
|
368
|
-
return requestPreviewEndpoint(connection.resizeUrl, {
|
|
369
|
-
method: "POST",
|
|
370
|
-
headers: { "Content-Type": "application/json" },
|
|
371
|
-
body: JSON.stringify(size)
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
|
-
async waitForReady(sessionId, timeoutMs = 30000) {
|
|
375
|
-
const start = Date.now();
|
|
376
|
-
while (Date.now() - start < timeoutMs) {
|
|
377
|
-
const session = await this.getBrowser(sessionId);
|
|
378
|
-
if (isBrowserSessionOperationallyReady(session)) {
|
|
379
|
-
return session.cdpUrl;
|
|
380
|
-
}
|
|
381
|
-
if (session.status === "failed") {
|
|
382
|
-
throw new BanataError("Session failed to start", 500);
|
|
383
|
-
}
|
|
384
|
-
if (session.status === "ended" || session.status === "ending") {
|
|
385
|
-
throw new BanataError("Session ended before becoming ready", 410);
|
|
386
|
-
}
|
|
387
|
-
await sleep(500);
|
|
388
|
-
}
|
|
389
|
-
throw new BanataError(`Session ${sessionId} not ready within ${timeoutMs}ms`, 408);
|
|
390
|
-
}
|
|
391
|
-
async launch(config = {}) {
|
|
392
|
-
const session = await this.createBrowser(config);
|
|
393
|
-
let cdpUrl;
|
|
394
|
-
if (isBrowserSessionOperationallyReady(session)) {
|
|
395
|
-
cdpUrl = session.cdpUrl;
|
|
396
|
-
} else {
|
|
397
|
-
try {
|
|
398
|
-
cdpUrl = await this.waitForReady(session.id, config.timeout ?? 30000);
|
|
399
|
-
} catch (err) {
|
|
400
|
-
try {
|
|
401
|
-
await this.closeBrowser(session.id);
|
|
402
|
-
} catch {}
|
|
403
|
-
throw err;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
return {
|
|
407
|
-
cdpUrl,
|
|
408
|
-
sessionId: session.id,
|
|
409
|
-
previewViewerUrl: buildPreviewViewerUrl(session.previewUrl ?? withMachineQuery(cdpUrl, session.machineId), this.appUrl),
|
|
410
|
-
close: () => this.closeBrowser(session.id),
|
|
411
|
-
getPreviewConnection: () => this.getPreviewConnection(session.id),
|
|
412
|
-
getPreviewViewerUrl: () => this.getPreviewViewerUrl(session.id),
|
|
413
|
-
startPreview: () => this.startPreview(session.id),
|
|
414
|
-
navigatePreview: (url) => this.navigatePreview(session.id, url),
|
|
415
|
-
resizePreview: (size) => this.resizePreview(session.id, size)
|
|
416
|
-
};
|
|
417
|
-
}
|
|
418
300
|
async getUsage() {
|
|
419
301
|
return this.request("/v1/usage");
|
|
420
302
|
}
|
|
@@ -452,92 +334,36 @@ class BrowserCloud {
|
|
|
452
334
|
body: JSON.stringify({ id })
|
|
453
335
|
});
|
|
454
336
|
}
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
throw new Error("API key is required");
|
|
465
|
-
this.apiKey = config.apiKey;
|
|
466
|
-
this.baseUrl = config.baseUrl ?? "https://api.boxes.banata.dev";
|
|
467
|
-
this.appUrl = config.appUrl ?? "https://boxes.banata.dev";
|
|
468
|
-
this.retryConfig = {
|
|
469
|
-
maxRetries: config.retry?.maxRetries ?? 3,
|
|
470
|
-
baseDelayMs: config.retry?.baseDelayMs ?? 500,
|
|
471
|
-
maxDelayMs: config.retry?.maxDelayMs ?? 1e4
|
|
472
|
-
};
|
|
473
|
-
}
|
|
474
|
-
get headers() {
|
|
475
|
-
return {
|
|
476
|
-
Authorization: `Bearer ${this.apiKey}`,
|
|
477
|
-
"Content-Type": "application/json"
|
|
478
|
-
};
|
|
479
|
-
}
|
|
480
|
-
async request(path, options = {}) {
|
|
481
|
-
const { maxRetries, baseDelayMs, maxDelayMs } = this.retryConfig;
|
|
482
|
-
let lastError;
|
|
483
|
-
for (let attempt = 0;attempt <= maxRetries; attempt++) {
|
|
484
|
-
try {
|
|
485
|
-
const res = await fetch(`${this.baseUrl}${path}`, {
|
|
486
|
-
...options,
|
|
487
|
-
headers: { ...this.headers, ...options.headers }
|
|
488
|
-
});
|
|
489
|
-
if (!res.ok) {
|
|
490
|
-
const body = await res.text();
|
|
491
|
-
let message;
|
|
492
|
-
let parsed = {};
|
|
493
|
-
try {
|
|
494
|
-
parsed = JSON.parse(body);
|
|
495
|
-
message = parsed.error ?? body;
|
|
496
|
-
} catch {
|
|
497
|
-
message = body;
|
|
337
|
+
async create(config = {}) {
|
|
338
|
+
const { timeout, waitTimeoutMs, capabilities, ...rest } = config;
|
|
339
|
+
const requestBody = { ...rest };
|
|
340
|
+
if (capabilities) {
|
|
341
|
+
requestBody.capabilities = {
|
|
342
|
+
...capabilities.opencode ? {
|
|
343
|
+
opencode: {
|
|
344
|
+
enabled: capabilities.opencode.enabled,
|
|
345
|
+
...capabilities.opencode.defaultAgent ? { defaultAgent: capabilities.opencode.defaultAgent } : {}
|
|
498
346
|
}
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
lastError = error;
|
|
506
|
-
const retryAfterHeader = res.headers.get("Retry-After");
|
|
507
|
-
let delay;
|
|
508
|
-
if (retryAfterHeader) {
|
|
509
|
-
delay = Math.min(parseInt(retryAfterHeader, 10) * 1000, maxDelayMs);
|
|
510
|
-
} else {
|
|
511
|
-
delay = Math.min(baseDelayMs * Math.pow(2, attempt), maxDelayMs);
|
|
512
|
-
}
|
|
513
|
-
delay += Math.random() * delay * 0.25;
|
|
514
|
-
await sleep(delay);
|
|
515
|
-
continue;
|
|
347
|
+
} : {},
|
|
348
|
+
...capabilities.browser?.viewport || capabilities.browser?.recording !== undefined || capabilities.browser?.byoProxyUrl ? {
|
|
349
|
+
browser: {
|
|
350
|
+
...capabilities.browser?.viewport ? { viewport: capabilities.browser.viewport } : {},
|
|
351
|
+
...capabilities.browser?.recording !== undefined ? { recording: capabilities.browser.recording } : {},
|
|
352
|
+
...capabilities.browser?.byoProxyUrl ? { byoProxyUrl: capabilities.browser.byoProxyUrl } : {}
|
|
516
353
|
}
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
const delay = Math.min(baseDelayMs * Math.pow(2, attempt), maxDelayMs);
|
|
530
|
-
await sleep(delay + Math.random() * delay * 0.25);
|
|
531
|
-
continue;
|
|
532
|
-
}
|
|
533
|
-
throw new BanataError(`Network error after ${maxRetries + 1} attempts: ${lastError.message}`, 0);
|
|
534
|
-
}
|
|
354
|
+
} : {},
|
|
355
|
+
...capabilities.documents ? {
|
|
356
|
+
documents: {
|
|
357
|
+
libreofficeHeadless: capabilities.documents.libreofficeHeadless ?? true
|
|
358
|
+
}
|
|
359
|
+
} : {},
|
|
360
|
+
...capabilities.storage?.artifactPrefix ? {
|
|
361
|
+
storage: {
|
|
362
|
+
artifactPrefix: capabilities.storage.artifactPrefix
|
|
363
|
+
}
|
|
364
|
+
} : {}
|
|
365
|
+
};
|
|
535
366
|
}
|
|
536
|
-
throw lastError ?? new Error("Request failed");
|
|
537
|
-
}
|
|
538
|
-
async create(config = {}) {
|
|
539
|
-
const { timeout, waitTimeoutMs, ...rest } = config;
|
|
540
|
-
const requestBody = { ...rest };
|
|
541
367
|
if (waitTimeoutMs !== undefined) {
|
|
542
368
|
requestBody.waitTimeoutMs = waitTimeoutMs;
|
|
543
369
|
}
|
|
@@ -999,12 +825,11 @@ class BanataSandbox {
|
|
|
999
825
|
};
|
|
1000
826
|
}
|
|
1001
827
|
}
|
|
1002
|
-
var src_default =
|
|
828
|
+
var src_default = BanataSandbox;
|
|
1003
829
|
export {
|
|
1004
830
|
src_default as default,
|
|
1005
831
|
buildPreviewViewerUrl,
|
|
1006
832
|
BrowserServiceError,
|
|
1007
|
-
BrowserCloud,
|
|
1008
833
|
BanataSandbox,
|
|
1009
834
|
BanataError
|
|
1010
835
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@banata-boxes/sdk",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "TypeScript SDK for Banata browser
|
|
3
|
+
"version": "0.2.3",
|
|
4
|
+
"description": "TypeScript SDK for Banata sandboxes, paired browser workflows, and OpenCode automation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -34,12 +34,11 @@
|
|
|
34
34
|
],
|
|
35
35
|
"keywords": [
|
|
36
36
|
"banata",
|
|
37
|
-
"browser",
|
|
38
37
|
"sandbox",
|
|
39
38
|
"automation",
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
39
|
+
"opencode",
|
|
40
|
+
"agent-browser",
|
|
41
|
+
"handoff"
|
|
43
42
|
],
|
|
44
43
|
"license": "MIT",
|
|
45
44
|
"repository": {
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// sdk/src/index.ts
|
|
2
|
-
// Customer-facing TypeScript SDK for
|
|
2
|
+
// Customer-facing TypeScript SDK for Banata sandboxes
|
|
3
3
|
//
|
|
4
4
|
// M7 FIX: Added retry with exponential backoff on transient errors (5xx, network).
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
interface BrowserConfig {
|
|
7
7
|
/** Session weight: light (512MB, default), medium (1GB), heavy (2GB — Pro+) */
|
|
8
8
|
weight?: 'light' | 'medium' | 'heavy';
|
|
9
9
|
/** Isolation mode: shared (default) or dedicated (Pro+) */
|
|
@@ -43,7 +43,7 @@ export interface BrowserConfig {
|
|
|
43
43
|
timeout?: number;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
interface BrowserSession {
|
|
47
47
|
id: string;
|
|
48
48
|
status: 'queued' | 'assigning' | 'ready' | 'active' | 'ending' | 'ended' | 'failed';
|
|
49
49
|
waitTimedOut?: boolean;
|
|
@@ -64,6 +64,11 @@ export interface BrowserSession {
|
|
|
64
64
|
export interface UsageInfo {
|
|
65
65
|
totalSessions: number;
|
|
66
66
|
totalBrowserHours: number;
|
|
67
|
+
totalSandboxSessions?: number;
|
|
68
|
+
totalSandboxHours?: number;
|
|
69
|
+
sandboxSizeBreakdown?: {
|
|
70
|
+
standard: number;
|
|
71
|
+
};
|
|
67
72
|
weightBreakdown: {
|
|
68
73
|
light: number;
|
|
69
74
|
medium: number;
|
|
@@ -78,6 +83,8 @@ export interface BillingInfo {
|
|
|
78
83
|
currentPeriod: {
|
|
79
84
|
totalSessions: number;
|
|
80
85
|
totalBrowserHours: number;
|
|
86
|
+
totalSandboxSessions?: number;
|
|
87
|
+
totalSandboxHours?: number;
|
|
81
88
|
weightBreakdown: {
|
|
82
89
|
light: number;
|
|
83
90
|
medium: number;
|
|
@@ -86,7 +93,7 @@ export interface BillingInfo {
|
|
|
86
93
|
};
|
|
87
94
|
}
|
|
88
95
|
|
|
89
|
-
|
|
96
|
+
interface LaunchedBrowserSession {
|
|
90
97
|
cdpUrl: string;
|
|
91
98
|
sessionId: string;
|
|
92
99
|
previewViewerUrl: string | null;
|
|
@@ -263,6 +270,15 @@ export class BanataError extends Error {
|
|
|
263
270
|
/** @deprecated Use BanataError instead */
|
|
264
271
|
export const BrowserServiceError = BanataError;
|
|
265
272
|
|
|
273
|
+
const BROWSER_SESSIONS_UNSUPPORTED_MESSAGE =
|
|
274
|
+
"Browser-only sessions are not currently supported. Use BanataSandbox with browser capabilities instead.";
|
|
275
|
+
|
|
276
|
+
function throwBrowserSessionsUnsupported(): never {
|
|
277
|
+
throw new BanataError(BROWSER_SESSIONS_UNSUPPORTED_MESSAGE, 501, {
|
|
278
|
+
code: "NOT_SUPPORTED",
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
|
|
266
282
|
/** Check if an HTTP status is retryable (5xx or 429) */
|
|
267
283
|
function isRetryableStatus(status: number): boolean {
|
|
268
284
|
return status >= 500 || status === 429;
|
|
@@ -354,25 +370,6 @@ function derivePreviewConnection(
|
|
|
354
370
|
}
|
|
355
371
|
}
|
|
356
372
|
|
|
357
|
-
function withMachineQuery(
|
|
358
|
-
rawUrl: string | null | undefined,
|
|
359
|
-
machineId: string | null | undefined,
|
|
360
|
-
): string | null | undefined {
|
|
361
|
-
if (!rawUrl || !machineId) {
|
|
362
|
-
return rawUrl;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
try {
|
|
366
|
-
const parsed = new URL(rawUrl);
|
|
367
|
-
if (!parsed.searchParams.get("machine")) {
|
|
368
|
-
parsed.searchParams.set("machine", machineId);
|
|
369
|
-
}
|
|
370
|
-
return parsed.toString();
|
|
371
|
-
} catch {
|
|
372
|
-
return rawUrl;
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
|
|
376
373
|
function deriveOpenCodeConnection(
|
|
377
374
|
rawUrl: string | null | undefined,
|
|
378
375
|
): OpenCodeConnectionInfo | null {
|
|
@@ -408,6 +405,25 @@ function deriveOpenCodeConnection(
|
|
|
408
405
|
}
|
|
409
406
|
}
|
|
410
407
|
|
|
408
|
+
function withMachineQuery(
|
|
409
|
+
rawUrl: string | null | undefined,
|
|
410
|
+
machineId: string | null | undefined,
|
|
411
|
+
): string | null | undefined {
|
|
412
|
+
if (!rawUrl || !machineId) {
|
|
413
|
+
return rawUrl;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
try {
|
|
417
|
+
const parsed = new URL(rawUrl);
|
|
418
|
+
if (!parsed.searchParams.get("machine")) {
|
|
419
|
+
parsed.searchParams.set("machine", machineId);
|
|
420
|
+
}
|
|
421
|
+
return parsed.toString();
|
|
422
|
+
} catch {
|
|
423
|
+
return rawUrl;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
411
427
|
async function parseJsonResponse(response: Response): Promise<unknown> {
|
|
412
428
|
const text = await response.text();
|
|
413
429
|
if (!text) {
|
|
@@ -525,8 +541,7 @@ function isSandboxSessionOperationallyReady(
|
|
|
525
541
|
return false;
|
|
526
542
|
}
|
|
527
543
|
|
|
528
|
-
|
|
529
|
-
if (browserMode !== "none") {
|
|
544
|
+
if (session.capabilities?.browser) {
|
|
530
545
|
if (!session.pairedBrowser?.cdpUrl) {
|
|
531
546
|
return false;
|
|
532
547
|
}
|
|
@@ -545,7 +560,7 @@ function isSandboxSessionOperationallyReady(
|
|
|
545
560
|
return true;
|
|
546
561
|
}
|
|
547
562
|
|
|
548
|
-
|
|
563
|
+
class BrowserCloud {
|
|
549
564
|
private apiKey: string;
|
|
550
565
|
private baseUrl: string;
|
|
551
566
|
private appUrl: string;
|
|
@@ -651,56 +666,37 @@ export class BrowserCloud {
|
|
|
651
666
|
|
|
652
667
|
/** Create a new browser session */
|
|
653
668
|
async createBrowser(config: BrowserConfig = {}): Promise<BrowserSession> {
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
if (waitTimeoutMs !== undefined) {
|
|
657
|
-
requestBody.waitTimeoutMs = waitTimeoutMs;
|
|
658
|
-
}
|
|
659
|
-
return this.request<BrowserSession>('/v1/browsers', {
|
|
660
|
-
method: 'POST',
|
|
661
|
-
body: JSON.stringify(requestBody),
|
|
662
|
-
});
|
|
669
|
+
void config;
|
|
670
|
+
throwBrowserSessionsUnsupported();
|
|
663
671
|
}
|
|
664
672
|
|
|
665
673
|
/** Get session status */
|
|
666
674
|
async getBrowser(sessionId: string): Promise<BrowserSession> {
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
);
|
|
675
|
+
void sessionId;
|
|
676
|
+
throwBrowserSessionsUnsupported();
|
|
670
677
|
}
|
|
671
678
|
|
|
672
679
|
/** End a session */
|
|
673
680
|
async closeBrowser(sessionId: string): Promise<void> {
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
});
|
|
681
|
+
void sessionId;
|
|
682
|
+
throwBrowserSessionsUnsupported();
|
|
677
683
|
}
|
|
678
684
|
|
|
679
685
|
/** Derive the preview websocket/start endpoints for a live browser session. */
|
|
680
686
|
async getPreviewConnection(sessionId: string): Promise<PreviewConnectionInfo | null> {
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
session.previewUrl ?? withMachineQuery(session.cdpUrl, session.machineId),
|
|
684
|
-
);
|
|
687
|
+
void sessionId;
|
|
688
|
+
throwBrowserSessionsUnsupported();
|
|
685
689
|
}
|
|
686
690
|
|
|
687
691
|
async getPreviewViewerUrl(sessionId: string): Promise<string | null> {
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
session.previewUrl ?? withMachineQuery(session.cdpUrl, session.machineId),
|
|
691
|
-
this.appUrl,
|
|
692
|
-
);
|
|
692
|
+
void sessionId;
|
|
693
|
+
throwBrowserSessionsUnsupported();
|
|
693
694
|
}
|
|
694
695
|
|
|
695
696
|
/** Start the remote browser preview backend for a live browser session. */
|
|
696
697
|
async startPreview(sessionId: string): Promise<PreviewCommandResponse> {
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
throw new BanataError("Browser preview is not available for this session", 409);
|
|
700
|
-
}
|
|
701
|
-
return requestPreviewEndpoint<PreviewCommandResponse>(connection.startUrl, {
|
|
702
|
-
method: "POST",
|
|
703
|
-
});
|
|
698
|
+
void sessionId;
|
|
699
|
+
throwBrowserSessionsUnsupported();
|
|
704
700
|
}
|
|
705
701
|
|
|
706
702
|
/** Navigate the live browser preview session. */
|
|
@@ -708,15 +704,9 @@ export class BrowserCloud {
|
|
|
708
704
|
sessionId: string,
|
|
709
705
|
url: string,
|
|
710
706
|
): Promise<PreviewCommandResponse> {
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
}
|
|
715
|
-
return requestPreviewEndpoint<PreviewCommandResponse>(connection.navigateUrl, {
|
|
716
|
-
method: "POST",
|
|
717
|
-
headers: { "Content-Type": "application/json" },
|
|
718
|
-
body: JSON.stringify({ url }),
|
|
719
|
-
});
|
|
707
|
+
void sessionId;
|
|
708
|
+
void url;
|
|
709
|
+
throwBrowserSessionsUnsupported();
|
|
720
710
|
}
|
|
721
711
|
|
|
722
712
|
/** Resize the live browser preview session if the preview backend supports it. */
|
|
@@ -724,15 +714,9 @@ export class BrowserCloud {
|
|
|
724
714
|
sessionId: string,
|
|
725
715
|
size: { width?: number; height?: number },
|
|
726
716
|
): Promise<PreviewCommandResponse> {
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
}
|
|
731
|
-
return requestPreviewEndpoint<PreviewCommandResponse>(connection.resizeUrl, {
|
|
732
|
-
method: "POST",
|
|
733
|
-
headers: { "Content-Type": "application/json" },
|
|
734
|
-
body: JSON.stringify(size),
|
|
735
|
-
});
|
|
717
|
+
void sessionId;
|
|
718
|
+
void size;
|
|
719
|
+
throwBrowserSessionsUnsupported();
|
|
736
720
|
}
|
|
737
721
|
|
|
738
722
|
/** Wait until session is ready and return CDP URL */
|
|
@@ -740,28 +724,9 @@ export class BrowserCloud {
|
|
|
740
724
|
sessionId: string,
|
|
741
725
|
timeoutMs: number = 30_000
|
|
742
726
|
): Promise<string> {
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
const session = await this.getBrowser(sessionId);
|
|
747
|
-
|
|
748
|
-
if (isBrowserSessionOperationallyReady(session)) {
|
|
749
|
-
return session.cdpUrl;
|
|
750
|
-
}
|
|
751
|
-
if (session.status === 'failed') {
|
|
752
|
-
throw new BanataError('Session failed to start', 500);
|
|
753
|
-
}
|
|
754
|
-
if (session.status === 'ended' || session.status === 'ending') {
|
|
755
|
-
throw new BanataError('Session ended before becoming ready', 410);
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
await sleep(500);
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
throw new BanataError(
|
|
762
|
-
`Session ${sessionId} not ready within ${timeoutMs}ms`,
|
|
763
|
-
408
|
|
764
|
-
);
|
|
727
|
+
void sessionId;
|
|
728
|
+
void timeoutMs;
|
|
729
|
+
throwBrowserSessionsUnsupported();
|
|
765
730
|
}
|
|
766
731
|
|
|
767
732
|
/**
|
|
@@ -780,10 +745,12 @@ export class BrowserCloud {
|
|
|
780
745
|
async launch(
|
|
781
746
|
config: BrowserConfig = {}
|
|
782
747
|
): Promise<LaunchedBrowserSession> {
|
|
748
|
+
void config;
|
|
749
|
+
throwBrowserSessionsUnsupported();
|
|
783
750
|
const session = await this.createBrowser(config);
|
|
784
751
|
let cdpUrl: string;
|
|
785
752
|
if (isBrowserSessionOperationallyReady(session)) {
|
|
786
|
-
cdpUrl = session.cdpUrl
|
|
753
|
+
cdpUrl = session.cdpUrl!;
|
|
787
754
|
} else {
|
|
788
755
|
try {
|
|
789
756
|
cdpUrl = await this.waitForReady(
|
|
@@ -881,19 +848,11 @@ export class BrowserCloud {
|
|
|
881
848
|
// ── Sandbox types ──
|
|
882
849
|
|
|
883
850
|
export interface SandboxConfig {
|
|
884
|
-
/** Sandbox runtime: bun, python, or base shell */
|
|
885
|
-
runtime?: 'bun' | 'python' | 'base';
|
|
886
|
-
/** Sandbox compute shape. */
|
|
887
|
-
size?: 'standard';
|
|
888
851
|
/** Environment variables to inject into the sandbox */
|
|
889
852
|
env?: Record<string, string>;
|
|
890
|
-
/** Whether sandbox is ephemeral (destroyed on kill). Default: true */
|
|
891
|
-
ephemeral?: boolean;
|
|
892
|
-
/** Max session duration in ms */
|
|
893
|
-
maxDurationMs?: number;
|
|
894
853
|
/** Preferred region for sandbox placement */
|
|
895
854
|
region?: string;
|
|
896
|
-
/**
|
|
855
|
+
/** Supported capabilities to prelaunch inside the sandbox */
|
|
897
856
|
capabilities?: SandboxCapabilities;
|
|
898
857
|
/** Ask the API to wait briefly for the sandbox to become ready before returning */
|
|
899
858
|
waitUntilReady?: boolean;
|
|
@@ -907,14 +866,14 @@ export interface SandboxCapabilities {
|
|
|
907
866
|
opencode?: {
|
|
908
867
|
enabled: boolean;
|
|
909
868
|
defaultAgent?: "build" | "plan";
|
|
910
|
-
allowPromptApi?: boolean;
|
|
911
869
|
};
|
|
912
870
|
browser?: {
|
|
913
|
-
|
|
871
|
+
/** Save a low-resolution MP4 recording as an artifact. Team plan only. */
|
|
914
872
|
recording?: boolean;
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
873
|
+
/** Route outbound traffic through your own proxy. Team plan only. */
|
|
874
|
+
byoProxyUrl?: string;
|
|
875
|
+
/** True when a BYO proxy is configured for this sandbox. */
|
|
876
|
+
byoProxyConfigured?: boolean;
|
|
918
877
|
viewport?: {
|
|
919
878
|
width?: number;
|
|
920
879
|
height?: number;
|
|
@@ -924,18 +883,10 @@ export interface SandboxCapabilities {
|
|
|
924
883
|
libreofficeHeadless?: boolean;
|
|
925
884
|
};
|
|
926
885
|
storage?: {
|
|
927
|
-
workspace?: "ephemeral" | "checkpointed";
|
|
928
886
|
artifactPrefix?: string;
|
|
929
887
|
};
|
|
930
888
|
}
|
|
931
889
|
|
|
932
|
-
export interface SandboxCredentialDescriptor {
|
|
933
|
-
name: string;
|
|
934
|
-
kind: string;
|
|
935
|
-
target: string;
|
|
936
|
-
lastInjectedAt?: number;
|
|
937
|
-
}
|
|
938
|
-
|
|
939
890
|
export interface SandboxArtifactItem {
|
|
940
891
|
key: string;
|
|
941
892
|
path: string;
|
|
@@ -958,8 +909,6 @@ export interface SandboxPairedBrowser {
|
|
|
958
909
|
sessionId?: string;
|
|
959
910
|
cdpUrl?: string;
|
|
960
911
|
previewUrl?: string;
|
|
961
|
-
recording?: boolean;
|
|
962
|
-
persistentProfile?: boolean;
|
|
963
912
|
controlMode?: "ai" | "human" | "shared";
|
|
964
913
|
controller?: string;
|
|
965
914
|
handoffRequestedAt?: number;
|
|
@@ -1045,7 +994,6 @@ export interface SandboxSession {
|
|
|
1045
994
|
terminalUrl: string | null;
|
|
1046
995
|
previewBaseUrl?: string | null;
|
|
1047
996
|
capabilities?: SandboxCapabilities | null;
|
|
1048
|
-
credentialDescriptors?: SandboxCredentialDescriptor[] | null;
|
|
1049
997
|
pairedBrowser?: SandboxPairedBrowser | null;
|
|
1050
998
|
opencode?: SandboxOpencodeState | null;
|
|
1051
999
|
browserPreview?: SandboxBrowserPreviewState | null;
|
|
@@ -1390,10 +1338,111 @@ export class BanataSandbox {
|
|
|
1390
1338
|
|
|
1391
1339
|
// ── Sandbox lifecycle ──
|
|
1392
1340
|
|
|
1341
|
+
async getUsage(): Promise<UsageInfo> {
|
|
1342
|
+
return this.request<UsageInfo>('/v1/usage');
|
|
1343
|
+
}
|
|
1344
|
+
|
|
1345
|
+
async getBilling(): Promise<BillingInfo> {
|
|
1346
|
+
return this.request<BillingInfo>('/v1/billing');
|
|
1347
|
+
}
|
|
1348
|
+
|
|
1349
|
+
async createCheckout(params: {
|
|
1350
|
+
plan: 'builder' | 'pro' | 'scale';
|
|
1351
|
+
successUrl?: string;
|
|
1352
|
+
}): Promise<{ checkoutUrl: string; checkoutId: string }> {
|
|
1353
|
+
return this.request<{ checkoutUrl: string; checkoutId: string }>('/v1/billing/checkout', {
|
|
1354
|
+
method: 'POST',
|
|
1355
|
+
body: JSON.stringify(params),
|
|
1356
|
+
});
|
|
1357
|
+
}
|
|
1358
|
+
|
|
1359
|
+
async listWebhooks(): Promise<WebhookEndpoint[]> {
|
|
1360
|
+
const response = await this.request<{ data: WebhookEndpoint[] }>('/v1/webhooks');
|
|
1361
|
+
return response.data;
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1364
|
+
async createWebhook(params: {
|
|
1365
|
+
url: string;
|
|
1366
|
+
description?: string;
|
|
1367
|
+
eventTypes?: WebhookEventType[];
|
|
1368
|
+
signingSecret?: string;
|
|
1369
|
+
}): Promise<WebhookEndpoint & { signingSecret: string }> {
|
|
1370
|
+
return this.request<WebhookEndpoint & { signingSecret: string }>('/v1/webhooks', {
|
|
1371
|
+
method: 'POST',
|
|
1372
|
+
body: JSON.stringify(params),
|
|
1373
|
+
});
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
async deleteWebhook(id: string): Promise<void> {
|
|
1377
|
+
await this.request(`/v1/webhooks?id=${encodeURIComponent(id)}`, {
|
|
1378
|
+
method: 'DELETE',
|
|
1379
|
+
});
|
|
1380
|
+
}
|
|
1381
|
+
|
|
1382
|
+
async listWebhookDeliveries(limit = 50): Promise<WebhookDelivery[]> {
|
|
1383
|
+
const response = await this.request<{ data: WebhookDelivery[] }>(
|
|
1384
|
+
`/v1/webhooks/deliveries?limit=${encodeURIComponent(String(limit))}`
|
|
1385
|
+
);
|
|
1386
|
+
return response.data;
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
async testWebhook(id: string): Promise<{ eventId: string }> {
|
|
1390
|
+
return this.request<{ eventId: string }>('/v1/webhooks/test', {
|
|
1391
|
+
method: 'POST',
|
|
1392
|
+
body: JSON.stringify({ id }),
|
|
1393
|
+
});
|
|
1394
|
+
}
|
|
1395
|
+
|
|
1393
1396
|
/** Create a new sandbox session */
|
|
1394
1397
|
async create(config: SandboxConfig = {}): Promise<SandboxSession> {
|
|
1395
|
-
const { timeout, waitTimeoutMs, ...rest } = config;
|
|
1398
|
+
const { timeout, waitTimeoutMs, capabilities, ...rest } = config;
|
|
1396
1399
|
const requestBody: Record<string, unknown> = { ...rest };
|
|
1400
|
+
if (capabilities) {
|
|
1401
|
+
requestBody.capabilities = {
|
|
1402
|
+
...(capabilities.opencode
|
|
1403
|
+
? {
|
|
1404
|
+
opencode: {
|
|
1405
|
+
enabled: capabilities.opencode.enabled,
|
|
1406
|
+
...(capabilities.opencode.defaultAgent
|
|
1407
|
+
? { defaultAgent: capabilities.opencode.defaultAgent }
|
|
1408
|
+
: {}),
|
|
1409
|
+
},
|
|
1410
|
+
}
|
|
1411
|
+
: {}),
|
|
1412
|
+
...(capabilities.browser?.viewport
|
|
1413
|
+
|| capabilities.browser?.recording !== undefined
|
|
1414
|
+
|| capabilities.browser?.byoProxyUrl
|
|
1415
|
+
? {
|
|
1416
|
+
browser: {
|
|
1417
|
+
...(capabilities.browser?.viewport
|
|
1418
|
+
? { viewport: capabilities.browser.viewport }
|
|
1419
|
+
: {}),
|
|
1420
|
+
...(capabilities.browser?.recording !== undefined
|
|
1421
|
+
? { recording: capabilities.browser.recording }
|
|
1422
|
+
: {}),
|
|
1423
|
+
...(capabilities.browser?.byoProxyUrl
|
|
1424
|
+
? { byoProxyUrl: capabilities.browser.byoProxyUrl }
|
|
1425
|
+
: {}),
|
|
1426
|
+
},
|
|
1427
|
+
}
|
|
1428
|
+
: {}),
|
|
1429
|
+
...(capabilities.documents
|
|
1430
|
+
? {
|
|
1431
|
+
documents: {
|
|
1432
|
+
libreofficeHeadless:
|
|
1433
|
+
capabilities.documents.libreofficeHeadless ?? true,
|
|
1434
|
+
},
|
|
1435
|
+
}
|
|
1436
|
+
: {}),
|
|
1437
|
+
...(capabilities.storage?.artifactPrefix
|
|
1438
|
+
? {
|
|
1439
|
+
storage: {
|
|
1440
|
+
artifactPrefix: capabilities.storage.artifactPrefix,
|
|
1441
|
+
},
|
|
1442
|
+
}
|
|
1443
|
+
: {}),
|
|
1444
|
+
};
|
|
1445
|
+
}
|
|
1397
1446
|
if (waitTimeoutMs !== undefined) {
|
|
1398
1447
|
requestBody.waitTimeoutMs = waitTimeoutMs;
|
|
1399
1448
|
}
|
|
@@ -2014,7 +2063,7 @@ export class BanataSandbox {
|
|
|
2014
2063
|
* Usage:
|
|
2015
2064
|
* ```ts
|
|
2016
2065
|
* const sandbox = new BanataSandbox({ apiKey: '...' });
|
|
2017
|
-
* const session = await sandbox.launch(
|
|
2066
|
+
* const session = await sandbox.launch();
|
|
2018
2067
|
*
|
|
2019
2068
|
* const result = await session.exec('echo', ['Hello!']);
|
|
2020
2069
|
* console.log(result.stdout);
|
|
@@ -2117,4 +2166,4 @@ export class BanataSandbox {
|
|
|
2117
2166
|
}
|
|
2118
2167
|
|
|
2119
2168
|
// Default export for convenience
|
|
2120
|
-
export default
|
|
2169
|
+
export default BanataSandbox;
|