@openacme/browser 0.4.0 → 0.5.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.
Files changed (43) hide show
  1. package/dist/binaries.d.ts +63 -0
  2. package/dist/binaries.d.ts.map +1 -0
  3. package/dist/binaries.js +159 -0
  4. package/dist/binaries.js.map +1 -0
  5. package/dist/chrome.d.ts +22 -3
  6. package/dist/chrome.d.ts.map +1 -1
  7. package/dist/chrome.js +117 -16
  8. package/dist/chrome.js.map +1 -1
  9. package/dist/index.d.ts +5 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/manager.d.ts +40 -40
  14. package/dist/manager.d.ts.map +1 -1
  15. package/dist/manager.js +238 -253
  16. package/dist/manager.js.map +1 -1
  17. package/dist/providers/base.d.ts +44 -0
  18. package/dist/providers/base.d.ts.map +1 -0
  19. package/dist/providers/base.js +2 -0
  20. package/dist/providers/base.js.map +1 -0
  21. package/dist/providers/browser-use.d.ts +24 -0
  22. package/dist/providers/browser-use.d.ts.map +1 -0
  23. package/dist/providers/browser-use.js +110 -0
  24. package/dist/providers/browser-use.js.map +1 -0
  25. package/dist/providers/browserbase.d.ts +29 -0
  26. package/dist/providers/browserbase.d.ts.map +1 -0
  27. package/dist/providers/browserbase.js +126 -0
  28. package/dist/providers/browserbase.js.map +1 -0
  29. package/dist/providers/firecrawl.d.ts +22 -0
  30. package/dist/providers/firecrawl.d.ts.map +1 -0
  31. package/dist/providers/firecrawl.js +101 -0
  32. package/dist/providers/firecrawl.js.map +1 -0
  33. package/dist/providers/index.d.ts +20 -0
  34. package/dist/providers/index.d.ts.map +1 -0
  35. package/dist/providers/index.js +27 -0
  36. package/dist/providers/index.js.map +1 -0
  37. package/dist/providers/local.d.ts +35 -0
  38. package/dist/providers/local.d.ts.map +1 -0
  39. package/dist/providers/local.js +132 -0
  40. package/dist/providers/local.js.map +1 -0
  41. package/dist/types.d.ts +27 -1
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +3 -2
@@ -0,0 +1,63 @@
1
+ import type { BrowserContext } from "playwright-core";
2
+ import { type BrowserFamily } from "./chrome.js";
3
+ /**
4
+ * The local-browser kind. "chromium" prefers a system Chrome / Brave /
5
+ * Edge / Chromium install; if none is found, falls back to Playwright's
6
+ * bundled Chromium (auto-downloaded on demand). "camoufox" uses the
7
+ * `camoufox-js` package's Firefox-based stealth browser via Playwright's
8
+ * launchPersistentContext API.
9
+ */
10
+ export type LocalBrowserKind = "chromium" | "camoufox";
11
+ /**
12
+ * Resolved Chromium-family binary spawnable directly via launchChrome.
13
+ * Used for the "chromium" kind and the executablePath override. Family
14
+ * is always "chromium" — the only case Firefox is launched bare-spawn
15
+ * would be a custom executablePath, which we treat as chromium-family
16
+ * because the safer profile format mismatch falls back to a clean dir.
17
+ */
18
+ export interface SpawnableBinary {
19
+ kind: "spawn";
20
+ exe: string;
21
+ /** Extra CLI args required by the binary (none for stock Chromium). */
22
+ extraArgs: string[];
23
+ family: BrowserFamily;
24
+ }
25
+ /**
26
+ * A factory that produces a Playwright-managed BrowserContext. Used for
27
+ * Camoufox, whose Firefox-based binary doesn't speak CDP at all — we go
28
+ * through Playwright's firefox.launchPersistentContext path. Bypassing the
29
+ * manager's CDP attach is also what makes this resilient to the macOS
30
+ * hardened-runtime traps that block bare-child-process spawns of
31
+ * adhoc-signed browsers.
32
+ */
33
+ export interface ContextLaunchable {
34
+ kind: "context";
35
+ family: BrowserFamily;
36
+ launch(opts: {
37
+ userDataDir: string;
38
+ headless: boolean;
39
+ }): Promise<BrowserContext>;
40
+ }
41
+ export type ResolvedLocalBinary = SpawnableBinary | ContextLaunchable;
42
+ export declare function resolveLocalBinary(opts: {
43
+ kind: LocalBrowserKind;
44
+ executablePathOverride?: string;
45
+ onProgress?: (msg: string) => void;
46
+ }): Promise<ResolvedLocalBinary>;
47
+ /**
48
+ * True when the Camoufox binary is already fetched. Uses the package's
49
+ * own installedVerStr() to stay correct on every platform. Synchronous
50
+ * — safe to call from request handlers. Returns false if the pkgman
51
+ * module isn't loaded yet (caller can warm it with `loadCamoufoxPkgman`).
52
+ */
53
+ export declare function isCamoufoxInstalled(): boolean;
54
+ /**
55
+ * Kick off a Camoufox binary download if not already installed. Idempotent —
56
+ * concurrent callers share one in-flight promise. Fire-and-forget from the
57
+ * caller's perspective; errors are swallowed so a failed prefetch doesn't
58
+ * crash the server (the binary just downloads later on first agent use).
59
+ */
60
+ export declare function prefetchCamoufox(): Promise<void>;
61
+ /** True while a prefetch is running — surfaced in /api/browser. */
62
+ export declare function isCamoufoxPrefetching(): boolean;
63
+ //# sourceMappingURL=binaries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binaries.d.ts","sourceRoot":"","sources":["../src/binaries.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAsCvE;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACnF;AAED,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAEtE,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,IAAI,EAAE,gBAAgB,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgB/B;AA+CD;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAS7C;AAyBD;;;;;GAKG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAYtD;AAED,mEAAmE;AACnE,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C"}
@@ -0,0 +1,159 @@
1
+ import { spawn } from "node:child_process";
2
+ import * as fs from "node:fs";
3
+ import { chromium } from "playwright-core";
4
+ import { findChromeExecutable } from "./chrome.js";
5
+ let cachedCamoufoxMod = null;
6
+ async function loadCamoufoxJs() {
7
+ if (cachedCamoufoxMod)
8
+ return cachedCamoufoxMod;
9
+ try {
10
+ cachedCamoufoxMod = (await import("camoufox-js"));
11
+ return cachedCamoufoxMod;
12
+ }
13
+ catch {
14
+ throw new Error("Camoufox not installed. The host environment is missing the `camoufox-js` package.");
15
+ }
16
+ }
17
+ let cachedCamoufoxPkgman = null;
18
+ async function loadCamoufoxPkgman() {
19
+ if (cachedCamoufoxPkgman)
20
+ return cachedCamoufoxPkgman;
21
+ // Deep import into the package. Bypasses the public surface to reach
22
+ // the pkgman helpers (camoufoxPath, installedVerStr) — there's no
23
+ // top-level fetch API.
24
+ cachedCamoufoxPkgman = (await import("camoufox-js/dist/pkgman.js"));
25
+ return cachedCamoufoxPkgman;
26
+ }
27
+ export async function resolveLocalBinary(opts) {
28
+ if (opts.executablePathOverride) {
29
+ if (!fs.existsSync(opts.executablePathOverride)) {
30
+ throw new Error(`browser.executablePath does not exist: ${opts.executablePathOverride}`);
31
+ }
32
+ return {
33
+ kind: "spawn",
34
+ exe: opts.executablePathOverride,
35
+ extraArgs: [],
36
+ family: "chromium",
37
+ };
38
+ }
39
+ if (opts.kind === "camoufox") {
40
+ return resolveCamoufoxLauncher(opts.onProgress);
41
+ }
42
+ return resolveChromiumSpawnable(opts.onProgress);
43
+ }
44
+ async function resolveChromiumSpawnable(onProgress) {
45
+ const base = { kind: "spawn", extraArgs: [], family: "chromium" };
46
+ const systemPath = findChromeExecutable();
47
+ if (systemPath)
48
+ return { ...base, exe: systemPath };
49
+ const pwPath = chromium.executablePath();
50
+ if (pwPath && fs.existsSync(pwPath))
51
+ return { ...base, exe: pwPath };
52
+ onProgress?.("Installing Chromium (one-time, ~120MB)…");
53
+ await runNpx(["--no-install", "playwright", "install", "chromium"]);
54
+ const installedPath = chromium.executablePath();
55
+ if (installedPath && fs.existsSync(installedPath)) {
56
+ return { ...base, exe: installedPath };
57
+ }
58
+ throw new Error("Failed to install Chromium. Run `npx playwright install chromium` manually, or set browser.executablePath.");
59
+ }
60
+ async function resolveCamoufoxLauncher(onProgress) {
61
+ const m = await loadCamoufoxJs();
62
+ if (typeof m.launchOptions !== "function") {
63
+ throw new Error("camoufox-js does not expose launchOptions(); package version is unsupported.");
64
+ }
65
+ if (!(await isCamoufoxInstalledAsync())) {
66
+ onProgress?.("Installing Camoufox (one-time, ~300MB)…");
67
+ await fetchCamoufoxBinary();
68
+ }
69
+ return {
70
+ kind: "context",
71
+ family: "firefox",
72
+ async launch({ userDataDir, headless }) {
73
+ const { firefox } = await import("playwright-core");
74
+ const options = await m.launchOptions({ headless });
75
+ return firefox.launchPersistentContext(userDataDir, options);
76
+ },
77
+ };
78
+ }
79
+ /**
80
+ * True when the Camoufox binary is already fetched. Uses the package's
81
+ * own installedVerStr() to stay correct on every platform. Synchronous
82
+ * — safe to call from request handlers. Returns false if the pkgman
83
+ * module isn't loaded yet (caller can warm it with `loadCamoufoxPkgman`).
84
+ */
85
+ export function isCamoufoxInstalled() {
86
+ const p = cachedCamoufoxPkgman;
87
+ if (!p || typeof p.installedVerStr !== "function")
88
+ return false;
89
+ try {
90
+ p.installedVerStr();
91
+ return true;
92
+ }
93
+ catch {
94
+ return false;
95
+ }
96
+ }
97
+ /** Async variant that warms the pkgman module first. */
98
+ async function isCamoufoxInstalledAsync() {
99
+ await loadCamoufoxPkgman();
100
+ return isCamoufoxInstalled();
101
+ }
102
+ async function fetchCamoufoxBinary() {
103
+ const p = await loadCamoufoxPkgman();
104
+ if (typeof p.CamoufoxFetcher !== "function") {
105
+ throw new Error("camoufox-js pkgman missing CamoufoxFetcher; package version unsupported.");
106
+ }
107
+ // CamoufoxFetcher.install() is the only awaitable install path.
108
+ // camoufoxPath(true) fire-and-forgets the install, which makes our
109
+ // prefetch promise resolve before the binary is on disk.
110
+ const fetcher = new p.CamoufoxFetcher();
111
+ if (typeof fetcher.init === "function")
112
+ await fetcher.init();
113
+ await fetcher.install();
114
+ }
115
+ let camoufoxPrefetchInFlight = null;
116
+ /**
117
+ * Kick off a Camoufox binary download if not already installed. Idempotent —
118
+ * concurrent callers share one in-flight promise. Fire-and-forget from the
119
+ * caller's perspective; errors are swallowed so a failed prefetch doesn't
120
+ * crash the server (the binary just downloads later on first agent use).
121
+ */
122
+ export async function prefetchCamoufox() {
123
+ await loadCamoufoxPkgman().catch(() => { });
124
+ if (isCamoufoxInstalled())
125
+ return;
126
+ if (camoufoxPrefetchInFlight)
127
+ return camoufoxPrefetchInFlight;
128
+ camoufoxPrefetchInFlight = fetchCamoufoxBinary()
129
+ .catch(() => {
130
+ // best-effort; agent's first browser_navigate will retry
131
+ })
132
+ .finally(() => {
133
+ camoufoxPrefetchInFlight = null;
134
+ });
135
+ return camoufoxPrefetchInFlight;
136
+ }
137
+ /** True while a prefetch is running — surfaced in /api/browser. */
138
+ export function isCamoufoxPrefetching() {
139
+ return camoufoxPrefetchInFlight !== null;
140
+ }
141
+ async function runNpx(args) {
142
+ return new Promise((resolve, reject) => {
143
+ const proc = spawn("npx", args, {
144
+ stdio: ["ignore", "ignore", "pipe"],
145
+ env: process.env,
146
+ });
147
+ let stderr = "";
148
+ proc.stderr?.on("data", (chunk) => {
149
+ stderr += chunk.toString();
150
+ });
151
+ proc.once("error", reject);
152
+ proc.once("exit", (code) => {
153
+ if (code === 0)
154
+ return resolve();
155
+ reject(new Error(`npx ${args.join(" ")} failed (exit ${code}): ${stderr.slice(-500)}`));
156
+ });
157
+ });
158
+ }
159
+ //# sourceMappingURL=binaries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binaries.js","sourceRoot":"","sources":["../src/binaries.ts"],"names":[],"mappings":"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"}
package/dist/chrome.d.ts CHANGED
@@ -20,11 +20,21 @@ export declare function chromeInstallHint(): string;
20
20
  */
21
21
  export declare function clearStaleSingletonLocks(userDataDir: string): boolean;
22
22
  export declare function buildLaunchArgs(opts: {
23
- cdpPort: number;
24
23
  userDataDir: string;
25
24
  headless: boolean;
26
25
  noSandbox: boolean;
26
+ /** Extra args from the binary's wrapper (e.g. CloakBrowser stealth flags). */
27
+ extraArgs?: string[];
27
28
  }): string[];
29
+ /**
30
+ * Read the port Chrome wrote to <userDataDir>/DevToolsActivePort. The file
31
+ * has two lines: `<port>\n/devtools/browser/<uuid>`. Polled because Chrome
32
+ * writes it some milliseconds after we spawn the process.
33
+ */
34
+ export declare function readDevToolsActivePort(opts: {
35
+ userDataDir: string;
36
+ budgetMs: number;
37
+ }): Promise<number>;
28
38
  /**
29
39
  * Poll /json/version until Chrome's CDP is up. Returns the
30
40
  * `webSocketDebuggerUrl` advertised by Chrome.
@@ -35,12 +45,21 @@ export declare function pollForCdpReady(opts: {
35
45
  }): Promise<string>;
36
46
  export declare function launchChrome(opts: {
37
47
  exe: string;
38
- cdpPort: number;
39
48
  userDataDir: string;
40
49
  headless: boolean;
41
50
  noSandbox: boolean;
51
+ extraArgs?: string[];
42
52
  }): Promise<RunningChrome>;
43
53
  export declare function killChrome(running: RunningChrome): Promise<void>;
44
- export declare function resolveUserDataDir(dataDir: string): string;
54
+ /** Browser engine family profile formats are incompatible across these. */
55
+ export type BrowserFamily = "chromium" | "firefox";
56
+ /**
57
+ * <dataDir>/agents/<agentId>/browser-profiles/<family>/ — one profile per
58
+ * agent per engine family. Chromium-family browsers (Chrome / Brave / Edge
59
+ * / CloakBrowser / patched builds) share the "chromium" dir so a user can
60
+ * swap among them and keep their logins; Camoufox / Firefox-based browsers
61
+ * use the "firefox" dir so the profile format never mismatches the binary.
62
+ */
63
+ export declare function resolveUserDataDir(dataDir: string, agentId: string, family: BrowserFamily): string;
45
64
  export declare function resolveExecutableOrThrow(config: BrowserConfig): string;
46
65
  //# sourceMappingURL=chrome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../src/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+CrE;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAW1C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAwBrE;AAaD,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,MAAM,EAAE,CAyBX;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBlB;AAMD,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,aAAa,CAAC,CA+CzB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BtE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAQtE"}
1
+ {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../src/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+CrE;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAW1C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAwBrE;AAaD,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG,MAAM,EAAE,CAwCX;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBlB;AAqCD,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG,OAAO,CAAC,aAAa,CAAC,CAsEzB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BtE;AAED,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,GACpB,MAAM,CAGR;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAQtE"}
package/dist/chrome.js CHANGED
@@ -118,8 +118,11 @@ function processExists(pid) {
118
118
  }
119
119
  }
120
120
  export function buildLaunchArgs(opts) {
121
+ // Port 0 → Chrome picks an ephemeral one and writes it to
122
+ // <userDataDir>/DevToolsActivePort. Lets us run N agents in parallel
123
+ // without coordinating port assignment.
121
124
  const args = [
122
- `--remote-debugging-port=${opts.cdpPort}`,
125
+ "--remote-debugging-port=0",
123
126
  `--user-data-dir=${opts.userDataDir}`,
124
127
  "--no-first-run",
125
128
  "--no-default-browser-check",
@@ -141,8 +144,41 @@ export function buildLaunchArgs(opts) {
141
144
  if (process.platform === "linux") {
142
145
  args.push("--disable-dev-shm-usage");
143
146
  }
147
+ if (opts.extraArgs?.length) {
148
+ // Append + dedupe by flag-name (everything before the first `=`). Later
149
+ // entries (extra args) win — wrapper-specific flags can override our
150
+ // generic defaults.
151
+ const seen = new Map(args.map((a) => [a.split("=")[0] ?? a, a]));
152
+ for (const a of opts.extraArgs) {
153
+ seen.set(a.split("=")[0] ?? a, a);
154
+ }
155
+ return Array.from(seen.values());
156
+ }
144
157
  return args;
145
158
  }
159
+ /**
160
+ * Read the port Chrome wrote to <userDataDir>/DevToolsActivePort. The file
161
+ * has two lines: `<port>\n/devtools/browser/<uuid>`. Polled because Chrome
162
+ * writes it some milliseconds after we spawn the process.
163
+ */
164
+ export async function readDevToolsActivePort(opts) {
165
+ const filePath = path.join(opts.userDataDir, "DevToolsActivePort");
166
+ const start = Date.now();
167
+ while (Date.now() - start < opts.budgetMs) {
168
+ try {
169
+ const raw = fs.readFileSync(filePath, "utf8");
170
+ const firstLine = raw.split("\n", 1)[0]?.trim();
171
+ const port = firstLine ? Number.parseInt(firstLine, 10) : NaN;
172
+ if (Number.isInteger(port) && port > 0 && port < 65_536)
173
+ return port;
174
+ }
175
+ catch {
176
+ // File not written yet
177
+ }
178
+ await sleep(50);
179
+ }
180
+ throw new Error(`Chrome did not write DevToolsActivePort to ${filePath} within ${opts.budgetMs}ms`);
181
+ }
146
182
  /**
147
183
  * Poll /json/version until Chrome's CDP is up. Returns the
148
184
  * `webSocketDebuggerUrl` advertised by Chrome.
@@ -171,35 +207,91 @@ export async function pollForCdpReady(opts) {
171
207
  function sleep(ms) {
172
208
  return new Promise((r) => setTimeout(r, ms));
173
209
  }
210
+ /**
211
+ * Strip env vars that confuse a child Chromium's launch on macOS:
212
+ * - `__CFBundleIdentifier` is inherited from the parent .app bundle and
213
+ * trips the hardened-runtime check on adhoc-signed Chromium forks
214
+ * (CloakBrowser, patched Chromium). The child aborts with SIGTRAP at
215
+ * dyld init time. macOS expects the child to own its bundle ID.
216
+ * - `DYLD_*` are stripped by the loader for hardened binaries anyway,
217
+ * but a few Apple-internal variants can still cause warnings or
218
+ * unexpected behavior; cleanest to drop them here.
219
+ * - `MallocNanoZone=0` disables the Nano malloc zone — some allocators
220
+ * in patched Chromium builds assume it's enabled and abort otherwise.
221
+ */
222
+ function sanitizeChromeEnv(env) {
223
+ if (process.platform !== "darwin")
224
+ return env;
225
+ // Strip env vars that confuse a child Chromium on macOS:
226
+ // - `__CFBundleIdentifier` inherited from a parent .app bundle confuses
227
+ // Launch Services about who the child is.
228
+ // - `DYLD_*` is stripped by the loader for hardened binaries anyway;
229
+ // dropping it here avoids inherited overrides from dev tooling.
230
+ // - `MallocNanoZone=0` disables the Nano malloc some Chromium builds
231
+ // assume is on.
232
+ const cleaned = {};
233
+ for (const [k, v] of Object.entries(env)) {
234
+ if (k === "__CFBundleIdentifier")
235
+ continue;
236
+ if (k.startsWith("DYLD_"))
237
+ continue;
238
+ if (k === "MallocNanoZone" && v === "0")
239
+ continue;
240
+ cleaned[k] = v;
241
+ }
242
+ return cleaned;
243
+ }
174
244
  export async function launchChrome(opts) {
175
245
  fs.mkdirSync(opts.userDataDir, { recursive: true });
176
246
  clearStaleSingletonLocks(opts.userDataDir);
247
+ // Pre-existing DevToolsActivePort would confuse the port reader below;
248
+ // Chrome rewrites this file on its own boot, but only after a delay.
249
+ try {
250
+ fs.rmSync(path.join(opts.userDataDir, "DevToolsActivePort"), { force: true });
251
+ }
252
+ catch {
253
+ // best-effort
254
+ }
177
255
  const args = buildLaunchArgs(opts);
178
256
  const proc = spawn(opts.exe, args, {
257
+ // Piped stderr WITH a drain — without the drain, the 64KB OS buffer
258
+ // fills and chatty Chromium builds (CloakBrowser, patched forks) block
259
+ // on stderr writes and stop servicing CDP.
179
260
  stdio: ["ignore", "ignore", "pipe"],
180
- detached: false,
181
- env: process.env,
261
+ // Own process group — keeps Chromium alive across our parent's signal
262
+ // handling. unref below; BrowserManager owns shutdown via killChrome().
263
+ detached: true,
264
+ env: sanitizeChromeEnv(process.env),
265
+ });
266
+ proc.unref();
267
+ proc.stderr?.on("data", () => {
268
+ // Drain only — without a reader the 64KB OS buffer fills and Chrome
269
+ // blocks on writes (some patched forks log heavily on startup).
182
270
  });
183
271
  let earlyExit = null;
184
272
  proc.once("exit", (code, signal) => {
185
273
  earlyExit = { code, signal };
186
274
  });
187
- // Wait for CDP fail fast if Chrome dies during startup.
275
+ const earlyExitWatcher = () => new Promise((_, reject) => {
276
+ const id = setInterval(() => {
277
+ if (earlyExit) {
278
+ clearInterval(id);
279
+ reject(new Error(`Chrome exited during startup (code=${earlyExit.code} signal=${earlyExit.signal})`));
280
+ }
281
+ }, 100);
282
+ });
188
283
  try {
284
+ const cdpPort = await Promise.race([
285
+ readDevToolsActivePort({ userDataDir: opts.userDataDir, budgetMs: 10_000 }),
286
+ earlyExitWatcher(),
287
+ ]);
189
288
  const wsUrl = await Promise.race([
190
- pollForCdpReady({ cdpPort: opts.cdpPort, budgetMs: 15_000 }),
191
- new Promise((_, reject) => {
192
- const id = setInterval(() => {
193
- if (earlyExit) {
194
- clearInterval(id);
195
- reject(new Error(`Chrome exited during startup (code=${earlyExit.code} signal=${earlyExit.signal})`));
196
- }
197
- }, 100);
198
- }),
289
+ pollForCdpReady({ cdpPort, budgetMs: 15_000 }),
290
+ earlyExitWatcher(),
199
291
  ]);
200
292
  return {
201
293
  proc,
202
- cdpPort: opts.cdpPort,
294
+ cdpPort,
203
295
  cdpUrl: wsUrl,
204
296
  userDataDir: opts.userDataDir,
205
297
  };
@@ -247,8 +339,17 @@ export async function killChrome(running) {
247
339
  }, 3000);
248
340
  });
249
341
  }
250
- export function resolveUserDataDir(dataDir) {
251
- return path.join(dataDir, "browser-profile");
342
+ /**
343
+ * <dataDir>/agents/<agentId>/browser-profiles/<family>/ — one profile per
344
+ * agent per engine family. Chromium-family browsers (Chrome / Brave / Edge
345
+ * / CloakBrowser / patched builds) share the "chromium" dir so a user can
346
+ * swap among them and keep their logins; Camoufox / Firefox-based browsers
347
+ * use the "firefox" dir so the profile format never mismatches the binary.
348
+ */
349
+ export function resolveUserDataDir(dataDir, agentId, family) {
350
+ if (!agentId)
351
+ throw new Error("resolveUserDataDir requires an agentId");
352
+ return path.join(dataDir, "agents", agentId, "browser-profiles", family);
252
353
  }
253
354
  export function resolveExecutableOrThrow(config) {
254
355
  const exe = findChromeExecutable(config.executablePath);
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../src/chrome.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../src/chrome.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,7 @@
1
1
  export { BrowserManager } from "./manager.js";
2
- export type { BrowserConfig, TabId, TabInfo, ConsoleEntry, NavigateParams, NavigateResult, SnapshotParams, SnapshotResult, ClickParams, TypeParams, PressKeyParams, ScreenshotParams, ScreenshotResult, WaitForParams, EvaluateParams, EvaluateResult, ConsoleMessagesParams, ConsoleMessagesResult, HoverParams, DragParams, SelectOptionParams, SelectOptionResult, FillFormField, FillFormParams, FillFormResult, FileUploadParams, HandleDialogParams, DialogResult, ResizeParams, ResizeResult, SaveAsPdfParams, PdfResult, ClickCoordsParams, NavHistoryResult, ActionResult, } from "./types.js";
2
+ export { resolveLocalBinary, isCamoufoxInstalled, prefetchCamoufox, isCamoufoxPrefetching, } from "./binaries.js";
3
+ export type { LocalBrowserKind } from "./binaries.js";
4
+ export { createBrowserProvider, PROVIDER_NAMES, LocalChromeProvider, BrowserbaseProvider, BrowserUseProvider, FirecrawlProvider, } from "./providers/index.js";
5
+ export type { AcquiredBrowser, BrowserProvider, ProviderName, } from "./providers/index.js";
6
+ export type { AgentBrowserOverrides, BrowserConfig, TabId, TabInfo, ConsoleEntry, NavigateParams, NavigateResult, SnapshotParams, SnapshotResult, ClickParams, TypeParams, PressKeyParams, ScreenshotParams, ScreenshotResult, WaitForParams, EvaluateParams, EvaluateResult, ConsoleMessagesParams, ConsoleMessagesResult, HoverParams, DragParams, SelectOptionParams, SelectOptionResult, FillFormField, FillFormParams, FillFormResult, FileUploadParams, HandleDialogParams, DialogResult, ResizeParams, ResizeResult, SaveAsPdfParams, PdfResult, ClickCoordsParams, NavHistoryResult, ActionResult, } from "./types.js";
3
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EACV,aAAa,EACb,KAAK,EACL,OAAO,EACP,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,WAAW,EACX,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,eAAe,EACf,eAAe,EACf,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,KAAK,EACL,OAAO,EACP,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,WAAW,EACX,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,4 @@
1
1
  export { BrowserManager } from "./manager.js";
2
+ export { resolveLocalBinary, isCamoufoxInstalled, prefetchCamoufox, isCamoufoxPrefetching, } from "./binaries.js";
3
+ export { createBrowserProvider, PROVIDER_NAMES, LocalChromeProvider, BrowserbaseProvider, BrowserUseProvider, FirecrawlProvider, } from "./providers/index.js";
2
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC"}