agent-browser 0.17.1 → 0.18.0

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/browser.d.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import { devices, type Browser, type BrowserContext, type Page, type Frame, type Locator, type CDPSession } from 'playwright-core';
2
2
  import type { LaunchCommand } from './types.js';
3
+ import type { InspectServer } from './inspect-server.js';
3
4
  import { type RefMap, type EnhancedSnapshot } from './snapshot.js';
4
5
  /**
5
6
  * Returns the default Playwright timeout in milliseconds for standard operations.
6
7
  * Can be overridden via the AGENT_BROWSER_DEFAULT_TIMEOUT environment variable.
7
8
  * Default is 25s, which is below the CLI's 30s IPC read timeout to ensure
8
9
  * Playwright errors are returned before the CLI gives up with EAGAIN.
9
- * CDP and recording contexts use a shorter fixed timeout (10s) and are not affected.
10
+ * Recording contexts use a shorter fixed timeout (10s) and are not affected.
10
11
  */
11
12
  export declare function getDefaultTimeout(): number;
12
13
  export interface ScreencastFrame {
@@ -51,6 +52,7 @@ interface PageError {
51
52
  export declare class BrowserManager {
52
53
  private browser;
53
54
  private cdpEndpoint;
55
+ private resolvedWsUrl;
54
56
  private isPersistentContext;
55
57
  private browserbaseSessionId;
56
58
  private browserbaseApiKey;
@@ -74,6 +76,9 @@ export declare class BrowserManager {
74
76
  private colorScheme;
75
77
  private downloadPath;
76
78
  private allowedDomains;
79
+ private inspectServer;
80
+ stopInspectServer(): void;
81
+ setInspectServer(server: InspectServer): void;
77
82
  /**
78
83
  * Set the persistent color scheme preference.
79
84
  * Applied automatically to all new pages and contexts.
@@ -104,6 +109,7 @@ export declare class BrowserManager {
104
109
  * Check if browser is launched
105
110
  */
106
111
  isLaunched(): boolean;
112
+ getCdpUrl(): string | null;
107
113
  /**
108
114
  * Get enhanced snapshot with refs and cache the ref map
109
115
  */
@@ -361,7 +367,7 @@ export declare class BrowserManager {
361
367
  private closeKernelSession;
362
368
  /**
363
369
  * Connect to Browserbase remote browser via CDP.
364
- * Requires BROWSERBASE_API_KEY and BROWSERBASE_PROJECT_ID environment variables.
370
+ * Requires BROWSERBASE_API_KEY environment variable.
365
371
  */
366
372
  private connectToBrowserbase;
367
373
  /**
@@ -371,7 +377,10 @@ export declare class BrowserManager {
371
377
  private findOrCreateKernelProfile;
372
378
  /**
373
379
  * Connect to Kernel remote browser via CDP.
374
- * Requires KERNEL_API_KEY environment variable.
380
+ * Uses KERNEL_API_KEY environment variable for authentication when set.
381
+ * When running inside environments with external credential injection
382
+ * (e.g. Vercel Sandbox credentials brokering), the API key can be omitted
383
+ * and auth headers will be injected at the network layer.
375
384
  */
376
385
  private connectToKernel;
377
386
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
package/dist/browser.js CHANGED
@@ -12,7 +12,7 @@ import { getEncryptionKey, isEncryptedPayload, decryptData, ENCRYPTION_KEY_ENV,
12
12
  * Can be overridden via the AGENT_BROWSER_DEFAULT_TIMEOUT environment variable.
13
13
  * Default is 25s, which is below the CLI's 30s IPC read timeout to ensure
14
14
  * Playwright errors are returned before the CLI gives up with EAGAIN.
15
- * CDP and recording contexts use a shorter fixed timeout (10s) and are not affected.
15
+ * Recording contexts use a shorter fixed timeout (10s) and are not affected.
16
16
  */
17
17
  export function getDefaultTimeout() {
18
18
  const envValue = process.env.AGENT_BROWSER_DEFAULT_TIMEOUT;
@@ -30,6 +30,7 @@ export function getDefaultTimeout() {
30
30
  export class BrowserManager {
31
31
  browser = null;
32
32
  cdpEndpoint = null; // stores port number or full URL
33
+ resolvedWsUrl = null;
33
34
  isPersistentContext = false;
34
35
  browserbaseSessionId = null;
35
36
  browserbaseApiKey = null;
@@ -53,6 +54,17 @@ export class BrowserManager {
53
54
  colorScheme = null;
54
55
  downloadPath = null;
55
56
  allowedDomains = [];
57
+ inspectServer = null;
58
+ stopInspectServer() {
59
+ if (this.inspectServer) {
60
+ this.inspectServer.stop();
61
+ this.inspectServer = null;
62
+ }
63
+ }
64
+ setInspectServer(server) {
65
+ this.stopInspectServer();
66
+ this.inspectServer = server;
67
+ }
56
68
  /**
57
69
  * Set the persistent color scheme preference.
58
70
  * Applied automatically to all new pages and contexts.
@@ -94,6 +106,19 @@ export class BrowserManager {
94
106
  isLaunched() {
95
107
  return this.browser !== null || this.isPersistentContext;
96
108
  }
109
+ getCdpUrl() {
110
+ if (this.resolvedWsUrl)
111
+ return this.resolvedWsUrl;
112
+ if (this.cdpEndpoint?.startsWith('ws://') || this.cdpEndpoint?.startsWith('wss://')) {
113
+ return this.cdpEndpoint;
114
+ }
115
+ try {
116
+ return this.browser?.wsEndpoint?.() ?? null;
117
+ }
118
+ catch {
119
+ return null;
120
+ }
121
+ }
97
122
  /**
98
123
  * Get enhanced snapshot with refs and cache the ref map
99
124
  */
@@ -719,12 +744,17 @@ export class BrowserManager {
719
744
  * Close a Browserbase session via API
720
745
  */
721
746
  async closeBrowserbaseSession(sessionId, apiKey) {
722
- await fetch(`https://api.browserbase.com/v1/sessions/${sessionId}`, {
723
- method: 'DELETE',
747
+ const response = await fetch(`https://api.browserbase.com/v1/sessions/${sessionId}`, {
748
+ method: 'POST',
724
749
  headers: {
750
+ 'Content-Type': 'application/json',
725
751
  'X-BB-API-Key': apiKey,
726
752
  },
753
+ body: JSON.stringify({ status: 'REQUEST_RELEASE' }),
727
754
  });
755
+ if (!response.ok) {
756
+ throw new Error(`Failed to close Browserbase session: ${response.statusText}`);
757
+ }
728
758
  }
729
759
  /**
730
760
  * Close a Browser Use session via API
@@ -746,11 +776,13 @@ export class BrowserManager {
746
776
  * Close a Kernel session via API
747
777
  */
748
778
  async closeKernelSession(sessionId, apiKey) {
779
+ const headers = {};
780
+ if (apiKey) {
781
+ headers['Authorization'] = `Bearer ${apiKey}`;
782
+ }
749
783
  const response = await fetch(`https://api.onkernel.com/browsers/${sessionId}`, {
750
784
  method: 'DELETE',
751
- headers: {
752
- Authorization: `Bearer ${apiKey}`,
753
- },
785
+ headers,
754
786
  });
755
787
  if (!response.ok) {
756
788
  throw new Error(`Failed to close Kernel session: ${response.statusText}`);
@@ -758,23 +790,18 @@ export class BrowserManager {
758
790
  }
759
791
  /**
760
792
  * Connect to Browserbase remote browser via CDP.
761
- * Requires BROWSERBASE_API_KEY and BROWSERBASE_PROJECT_ID environment variables.
793
+ * Requires BROWSERBASE_API_KEY environment variable.
762
794
  */
763
795
  async connectToBrowserbase() {
764
796
  const browserbaseApiKey = process.env.BROWSERBASE_API_KEY;
765
- const browserbaseProjectId = process.env.BROWSERBASE_PROJECT_ID;
766
- if (!browserbaseApiKey || !browserbaseProjectId) {
767
- throw new Error('BROWSERBASE_API_KEY and BROWSERBASE_PROJECT_ID are required when using browserbase as a provider');
797
+ if (!browserbaseApiKey) {
798
+ throw new Error('BROWSERBASE_API_KEY is required when using browserbase as a provider');
768
799
  }
769
800
  const response = await fetch('https://api.browserbase.com/v1/sessions', {
770
801
  method: 'POST',
771
802
  headers: {
772
- 'Content-Type': 'application/json',
773
803
  'X-BB-API-Key': browserbaseApiKey,
774
804
  },
775
- body: JSON.stringify({
776
- projectId: browserbaseProjectId,
777
- }),
778
805
  });
779
806
  if (!response.ok) {
780
807
  throw new Error(`Failed to create Browserbase session: ${response.statusText}`);
@@ -794,7 +821,7 @@ export class BrowserManager {
794
821
  this.browserbaseSessionId = session.id;
795
822
  this.browserbaseApiKey = browserbaseApiKey;
796
823
  this.browser = browser;
797
- context.setDefaultTimeout(10000);
824
+ context.setDefaultTimeout(getDefaultTimeout());
798
825
  this.contexts.push(context);
799
826
  this.setupContextTracking(context);
800
827
  await this.ensureDomainFilter(context);
@@ -815,12 +842,14 @@ export class BrowserManager {
815
842
  * Returns the profile object if successful.
816
843
  */
817
844
  async findOrCreateKernelProfile(profileName, apiKey) {
845
+ const headers = {};
846
+ if (apiKey) {
847
+ headers['Authorization'] = `Bearer ${apiKey}`;
848
+ }
818
849
  // First, try to get the existing profile
819
850
  const getResponse = await fetch(`https://api.onkernel.com/profiles/${encodeURIComponent(profileName)}`, {
820
851
  method: 'GET',
821
- headers: {
822
- Authorization: `Bearer ${apiKey}`,
823
- },
852
+ headers,
824
853
  });
825
854
  if (getResponse.ok) {
826
855
  // Profile exists, return it
@@ -834,7 +863,7 @@ export class BrowserManager {
834
863
  method: 'POST',
835
864
  headers: {
836
865
  'Content-Type': 'application/json',
837
- Authorization: `Bearer ${apiKey}`,
866
+ ...headers,
838
867
  },
839
868
  body: JSON.stringify({ name: profileName }),
840
869
  });
@@ -845,13 +874,13 @@ export class BrowserManager {
845
874
  }
846
875
  /**
847
876
  * Connect to Kernel remote browser via CDP.
848
- * Requires KERNEL_API_KEY environment variable.
877
+ * Uses KERNEL_API_KEY environment variable for authentication when set.
878
+ * When running inside environments with external credential injection
879
+ * (e.g. Vercel Sandbox credentials brokering), the API key can be omitted
880
+ * and auth headers will be injected at the network layer.
849
881
  */
850
882
  async connectToKernel() {
851
883
  const kernelApiKey = process.env.KERNEL_API_KEY;
852
- if (!kernelApiKey) {
853
- throw new Error('KERNEL_API_KEY is required when using kernel as a provider');
854
- }
855
884
  // Find or create profile if KERNEL_PROFILE_NAME is set
856
885
  const profileName = process.env.KERNEL_PROFILE_NAME;
857
886
  let profileConfig;
@@ -864,12 +893,15 @@ export class BrowserManager {
864
893
  },
865
894
  };
866
895
  }
896
+ const headers = {
897
+ 'Content-Type': 'application/json',
898
+ };
899
+ if (kernelApiKey) {
900
+ headers['Authorization'] = `Bearer ${kernelApiKey}`;
901
+ }
867
902
  const response = await fetch('https://api.onkernel.com/browsers', {
868
903
  method: 'POST',
869
- headers: {
870
- 'Content-Type': 'application/json',
871
- Authorization: `Bearer ${kernelApiKey}`,
872
- },
904
+ headers,
873
905
  body: JSON.stringify({
874
906
  // Kernel browsers are headful by default with stealth mode available
875
907
  // The user can configure these via environment variables if needed
@@ -911,7 +943,7 @@ export class BrowserManager {
911
943
  page = pages[0] ?? (await context.newPage());
912
944
  }
913
945
  this.kernelSessionId = session.session_id;
914
- this.kernelApiKey = kernelApiKey;
946
+ this.kernelApiKey = kernelApiKey ?? null;
915
947
  this.browser = browser;
916
948
  context.setDefaultTimeout(getDefaultTimeout());
917
949
  this.contexts.push(context);
@@ -1174,6 +1206,7 @@ export class BrowserManager {
1174
1206
  ...(this.downloadPath && { downloadsPath: this.downloadPath }),
1175
1207
  });
1176
1208
  this.cdpEndpoint = null;
1209
+ this.resolvedWsUrl = null;
1177
1210
  // Check for auto-load state file (supports encrypted files)
1178
1211
  let storageState = options.storageState ? options.storageState : undefined;
1179
1212
  if (!storageState && options.autoStateFilePath) {
@@ -1265,17 +1298,17 @@ export class BrowserManager {
1265
1298
  }
1266
1299
  else if (/^\d+$/.test(cdpEndpoint)) {
1267
1300
  // Numeric string - treat as port number (handles JSON serialization quirks)
1268
- cdpUrl = `http://localhost:${cdpEndpoint}`;
1301
+ cdpUrl = `http://127.0.0.1:${cdpEndpoint}`;
1269
1302
  }
1270
1303
  else {
1271
1304
  // Unknown format - still try as port for backward compatibility
1272
- cdpUrl = `http://localhost:${cdpEndpoint}`;
1305
+ cdpUrl = `http://127.0.0.1:${cdpEndpoint}`;
1273
1306
  }
1274
1307
  const browser = await chromium
1275
1308
  .connectOverCDP(cdpUrl, { timeout: options?.timeout })
1276
1309
  .catch(() => {
1277
1310
  throw new Error(`Failed to connect via CDP to ${cdpUrl}. ` +
1278
- (cdpUrl.includes('localhost')
1311
+ (cdpUrl.includes('127.0.0.1')
1279
1312
  ? `Make sure the app is running with --remote-debugging-port=${cdpEndpoint}`
1280
1313
  : 'Make sure the remote browser is accessible and the URL is correct.'));
1281
1314
  });
@@ -1293,8 +1326,26 @@ export class BrowserManager {
1293
1326
  // All validation passed - commit state
1294
1327
  this.browser = browser;
1295
1328
  this.cdpEndpoint = cdpEndpoint;
1329
+ let resolvedWs = null;
1330
+ try {
1331
+ resolvedWs = browser.wsEndpoint?.() ?? null;
1332
+ }
1333
+ catch (err) {
1334
+ console.error('[inspect] wsEndpoint() failed:', err);
1335
+ }
1336
+ if (!resolvedWs && (cdpUrl.startsWith('http://') || cdpUrl.startsWith('https://'))) {
1337
+ try {
1338
+ const resp = await fetch(`${cdpUrl}/json/version`);
1339
+ const info = await resp.json();
1340
+ resolvedWs = info.webSocketDebuggerUrl ?? null;
1341
+ }
1342
+ catch (err) {
1343
+ console.error('[inspect] /json/version fetch failed:', err);
1344
+ }
1345
+ }
1346
+ this.resolvedWsUrl = resolvedWs;
1296
1347
  for (const context of contexts) {
1297
- context.setDefaultTimeout(10000);
1348
+ context.setDefaultTimeout(getDefaultTimeout());
1298
1349
  this.contexts.push(context);
1299
1350
  this.setupContextTracking(context);
1300
1351
  await this.ensureDomainFilter(context);
@@ -1510,7 +1561,7 @@ export class BrowserManager {
1510
1561
  * Create a new tab in the current context
1511
1562
  */
1512
1563
  async newTab() {
1513
- if (!this.browser || this.contexts.length === 0) {
1564
+ if (!this.isLaunched() || this.contexts.length === 0) {
1514
1565
  throw new Error('Browser not launched');
1515
1566
  }
1516
1567
  // Invalidate CDP session since we're switching to a new page
@@ -1530,7 +1581,9 @@ export class BrowserManager {
1530
1581
  */
1531
1582
  async newWindow(viewport) {
1532
1583
  if (!this.browser) {
1533
- throw new Error('Browser not launched');
1584
+ throw new Error(this.isPersistentContext
1585
+ ? 'newWindow is not supported in extension (persistent context) mode'
1586
+ : 'Browser not launched');
1534
1587
  }
1535
1588
  const context = await this.browser.newContext({
1536
1589
  viewport: viewport === undefined ? { width: 1280, height: 720 } : viewport,
@@ -1931,8 +1984,8 @@ export class BrowserManager {
1931
1984
  this.recordingTempDir = path.join(os.tmpdir(), `agent-browser-recording-${session}-${Date.now()}`);
1932
1985
  mkdirSync(this.recordingTempDir, { recursive: true });
1933
1986
  this.recordingOutputPath = outputPath;
1934
- // Create a new context with video recording enabled and restored state
1935
- const viewport = { width: 1280, height: 720 };
1987
+ // Reuse the active page viewport when available so recording matches the current layout.
1988
+ const viewport = currentPage?.viewportSize() ?? { width: 1280, height: 720 };
1936
1989
  this.recordingContext = await this.browser.newContext({
1937
1990
  viewport,
1938
1991
  recordVideo: {
@@ -2045,6 +2098,7 @@ export class BrowserManager {
2045
2098
  * Close the browser and clean up
2046
2099
  */
2047
2100
  async close() {
2101
+ this.stopInspectServer();
2048
2102
  // Stop recording if active (saves video)
2049
2103
  if (this.recordingContext) {
2050
2104
  await this.stopRecording();
@@ -2089,8 +2143,8 @@ export class BrowserManager {
2089
2143
  });
2090
2144
  this.browser = null;
2091
2145
  }
2092
- else if (this.kernelSessionId && this.kernelApiKey) {
2093
- await this.closeKernelSession(this.kernelSessionId, this.kernelApiKey).catch((error) => {
2146
+ else if (this.kernelSessionId) {
2147
+ await this.closeKernelSession(this.kernelSessionId, this.kernelApiKey ?? undefined).catch((error) => {
2094
2148
  console.error('Failed to close Kernel session:', error);
2095
2149
  });
2096
2150
  this.browser = null;
@@ -2118,6 +2172,7 @@ export class BrowserManager {
2118
2172
  this.pages = [];
2119
2173
  this.contexts = [];
2120
2174
  this.cdpEndpoint = null;
2175
+ this.resolvedWsUrl = null;
2121
2176
  this.browserbaseSessionId = null;
2122
2177
  this.browserbaseApiKey = null;
2123
2178
  this.browserUseSessionId = null;