@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 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
- /** Optional powerhouse capabilities to prelaunch inside the sandbox */
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
- mode?: "none" | "paired-banata-browser" | "local-chromium";
135
+ /** Save a low-resolution MP4 recording as an artifact. Team plan only. */
277
136
  recording?: boolean;
278
- persistentProfile?: boolean;
279
- streamPreview?: boolean;
280
- humanInLoop?: boolean;
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({ runtime: 'bun', size: 'standard' });
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 BrowserCloud;
607
+ export default BanataSandbox;
735
608
  //# sourceMappingURL=index.d.ts.map
@@ -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
- const browserMode = session.capabilities?.browser?.mode ?? "none";
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
- class BanataSandbox {
458
- apiKey;
459
- baseUrl;
460
- appUrl;
461
- retryConfig;
462
- constructor(config) {
463
- if (!config.apiKey)
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
- const error = new BanataError(message, res.status, {
500
- code: parsed.code,
501
- requiredPlan: parsed.requiredPlan,
502
- currentPlan: parsed.currentPlan
503
- });
504
- if (isRetryableStatus(res.status) && attempt < maxRetries) {
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
- throw error;
518
- }
519
- if (res.status === 204) {
520
- return;
521
- }
522
- return res.json();
523
- } catch (err) {
524
- if (err instanceof BanataError) {
525
- throw err;
526
- }
527
- lastError = err instanceof Error ? err : new Error(String(err));
528
- if (attempt < maxRetries) {
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 = BrowserCloud;
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.2",
4
- "description": "TypeScript SDK for Banata browser sessions and code sandboxes",
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
- "puppeteer",
41
- "cdp",
42
- "headless"
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 Browser-as-a-Service
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
- export interface BrowserConfig {
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
- export interface BrowserSession {
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
- export interface LaunchedBrowserSession {
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
- const browserMode = session.capabilities?.browser?.mode ?? "none";
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
- export class BrowserCloud {
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
- const { timeout, waitTimeoutMs, ...rest } = config;
655
- const requestBody: Record<string, unknown> = { ...rest };
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
- return this.request<BrowserSession>(
668
- `/v1/browsers?id=${encodeURIComponent(sessionId)}`
669
- );
675
+ void sessionId;
676
+ throwBrowserSessionsUnsupported();
670
677
  }
671
678
 
672
679
  /** End a session */
673
680
  async closeBrowser(sessionId: string): Promise<void> {
674
- await this.request(`/v1/browsers?id=${encodeURIComponent(sessionId)}`, {
675
- method: 'DELETE',
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
- const session = await this.getBrowser(sessionId);
682
- return derivePreviewConnection(
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
- const session = await this.getBrowser(sessionId);
689
- return buildPreviewViewerUrl(
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
- const connection = await this.getPreviewConnection(sessionId);
698
- if (!connection) {
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
- const connection = await this.getPreviewConnection(sessionId);
712
- if (!connection) {
713
- throw new BanataError("Browser preview is not available for this session", 409);
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
- const connection = await this.getPreviewConnection(sessionId);
728
- if (!connection) {
729
- throw new BanataError("Browser preview is not available for this session", 409);
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
- const start = Date.now();
744
-
745
- while (Date.now() - start < timeoutMs) {
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
- /** Optional powerhouse capabilities to prelaunch inside the sandbox */
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
- mode?: "none" | "paired-banata-browser" | "local-chromium";
871
+ /** Save a low-resolution MP4 recording as an artifact. Team plan only. */
914
872
  recording?: boolean;
915
- persistentProfile?: boolean;
916
- streamPreview?: boolean;
917
- humanInLoop?: boolean;
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({ runtime: 'bun', size: 'standard' });
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 BrowserCloud;
2169
+ export default BanataSandbox;