@fusengine/browser-mcp 0.1.12 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,10 +14,45 @@ TypeScript port of the original Python `fusengine-browser-agent`, redesigned aro
14
14
  official MCP SDK with a persistent session model, image-content screenshots, and a
15
15
  swappable engine layer (Playwright / Patchright / CDP attach).
16
16
 
17
+ ## Quick start (Claude Code / any MCP client)
18
+
19
+ ```bash
20
+ # 1. register the published server (user scope = all projects)
21
+ claude mcp add fuse-browser --scope user -- npx -y @fusengine/browser-mcp
22
+ ```
23
+
24
+ ```jsonc
25
+ // or add it manually to your MCP config:
26
+ { "mcpServers": {
27
+ "fuse-browser": { "command": "npx", "args": ["-y", "@fusengine/browser-mcp"] }
28
+ }}
29
+ ```
30
+
31
+ Then just ask your agent in natural language — it drives the browser via the tools:
32
+
33
+ > "Find a hotel in Annemasse this Friday under CHF 100."
34
+ > "What's my Google rank for 'agence web vevey' (CH)?"
35
+ > "Screenshot localhost:3000 in mobile and desktop."
36
+
37
+ ## How it works
38
+
39
+ An LLM agent runs a **perceive → decide → act** loop through the MCP tools:
40
+
41
+ 1. `browser_open` → a real (stealth) browser session
42
+ 2. `browser_navigate` → load the page (JS/SPA rendered, animations settled)
43
+ 3. `browser_snapshot` → indexed interactive elements with `ref` + form state
44
+ (value, placeholder, options, checked, disabled, combobox `aria-*`, occlusion)
45
+ 4. `browser_act` → click / fill / select / **pick** (autocomplete) a `ref`; returns a page diff
46
+ 5. `browser_wait_for` → wait on a real condition, then loop back to snapshot
47
+ 6. `browser_extract` / `browser_screenshot` → structured data or vision
48
+
49
+ Guardrails block pay/book/checkout unless the agent passes `humanApproved`.
50
+
17
51
  ## Requirements
18
52
 
19
53
  - Node.js >= 20 (runtime). Bun is the dev toolchain.
20
- - A Chromium build for the bundled engine:
54
+ - Chromium is **installed automatically** on `npm install` (soft postinstall).
55
+ To install it manually or in CI:
21
56
 
22
57
  ```bash
23
58
  npx patchright install chromium # stealth engine (default)
@@ -37,23 +72,25 @@ to it automatically. Verified end-to-end against **Dia** (Chromium 148).
37
72
 
38
73
  ## CLI
39
74
 
75
+ Install the binaries once: `npm i -g @fusengine/browser-mcp` (provides `fuse-browser` + `browser-mcp`). Then:
76
+
40
77
  ```bash
41
78
  # One-shot probe of a real page
42
- npx fuse-browser probe https://example.com --extract-prices --observe-visual
79
+ fuse-browser probe https://example.com --extract-prices --observe-visual
43
80
 
44
81
  # Hotels with country identity, proxy routing, replay
45
- npx fuse-browser probe 'https://www.booking.com/searchresults.html?ss=Tokyo' \
82
+ fuse-browser probe 'https://www.booking.com/searchresults.html?ss=Tokyo' \
46
83
  --country JP --proxy-map proxies.json --replay --auto-consent --extract-prices
47
84
 
48
85
  # Use the installed Chrome
49
- npx fuse-browser probe https://example.com --channel chrome
86
+ fuse-browser probe https://example.com --channel chrome
50
87
 
51
88
  # SEO rank tracking across many keywords (one session)
52
- npx fuse-browser serp-batch "agence web vevey" "création site web lausanne" \
89
+ fuse-browser serp-batch "agence web vevey" "création site web lausanne" \
53
90
  --rank-domain fusengine.ch --serp-pages 2 --hl fr --gl ch
54
91
 
55
92
  # Responsive screenshots (saved PNGs) — works on localhost too
56
- npx fuse-browser shots http://localhost:8000 --viewports mobile,desktop,1280x720
93
+ fuse-browser shots http://localhost:8000 --viewports mobile,desktop,1280x720
57
94
  ```
58
95
 
59
96
  Sensitive actions (`pay`, `book`, `checkout`, `confirm`, …) are **blocked** unless
@@ -114,12 +151,13 @@ Key agentic patterns:
114
151
  - **`browser_run`** — execute an ordered plan (navigate/act/wait/extract) in one call,
115
152
  stopping at the first failure. Guardrails apply to the whole plan.
116
153
 
117
- A `runs` resource exposes the JSON reports and screenshots written under `runs/`.
154
+ A `runs` resource exposes the JSON reports and screenshots written under the output dir
155
+ (see *Output & data location*).
118
156
 
119
157
  ## Library
120
158
 
121
159
  ```ts
122
- import { BrowserAgent } from "fuse-browser";
160
+ import { BrowserAgent } from "@fusengine/browser-mcp";
123
161
 
124
162
  const agent = new BrowserAgent({ countryCode: "CH", engine: "patchright" });
125
163
  const report = await agent.probe("https://example.com", { extractPrices: true });
@@ -175,6 +213,18 @@ Override per run with `outputDir` (library / MCP arg) or `--output-dir` (CLI). C
175
213
  `serp.rank` (organic/ads positions + best) — a built-in rank tracker.
176
214
  CLI: `--extract-serp --serp-pages 2 --rank-domain example.com`.
177
215
 
216
+ ## Proxies & anti-bot (scale)
217
+
218
+ Provide a proxy **pool** and the server rotates across it, retiring a proxy on block:
219
+
220
+ - `FUSE_PROXIES` env (comma/newline list) or `proxiesPath` (JSON array file) — used when no
221
+ explicit `proxyUrl` / country-map proxy applies. Round-robin; a proxy that triggers a
222
+ captcha/Cloudflare challenge is put on a 5-min cooldown and skipped (**auto-retire**).
223
+ - **WebRTC leak guard**: when a proxy is set (Chromium), launch args force WebRTC through the
224
+ proxy so the real IP can't leak via ICE/STUN.
225
+ - Residential/mobile proxies are what actually beat industrial anti-bot at volume (paid). The
226
+ proxy list is a secret — keep it out of the repo (`proxies.json` is git-ignored).
227
+
178
228
  ## Disclaimer
179
229
 
180
230
  Provided **as-is** under MIT, with no warranty. `fuse-browser` is a neutral, dual-use
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/agent/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAuB,KAAK,WAAW,EAAgB,MAAM,yBAAyB,CAAC;AAE9F,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CAC/B;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,IAAI,GAAE,YAAiB,GAAG,cAAc,CAoCrE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/agent/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAuB,KAAK,WAAW,EAAgB,MAAM,yBAAyB,CAAC;AAG9F,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CAC/B;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,IAAI,GAAE,YAAiB,GAAG,cAAc,CA2CrE"}
@@ -7,13 +7,21 @@ import { resolveIdentity } from "../identity/resolve.js";
7
7
  import { ensureDir } from "../lib/fs.js";
8
8
  import { resolveDefaultOutputDir } from "../lib/output-dir.js";
9
9
  import { loadProxyCountryMap, resolveProxy } from "../proxy/country-map.js";
10
+ import { acquirePoolProxy } from "../proxy/pool.js";
10
11
  /** Build the resolved configuration, creating required directories. */
11
12
  export function resolveConfig(opts = {}) {
12
13
  const outputDir = opts.outputDir ?? resolveDefaultOutputDir();
13
14
  ensureDir(outputDir);
14
15
  const identity = resolveIdentity(opts);
15
16
  const map = loadProxyCountryMap(opts.proxyCountryMap, opts.proxyMapPath);
16
- const { proxyUrl, proxySource } = resolveProxy(opts.proxyUrl, identity.countryCode, map);
17
+ let { proxyUrl, proxySource } = resolveProxy(opts.proxyUrl, identity.countryCode, map);
18
+ if (!proxyUrl) {
19
+ const pooled = acquirePoolProxy(opts.proxiesPath);
20
+ if (pooled) {
21
+ proxyUrl = pooled;
22
+ proxySource = "pool";
23
+ }
24
+ }
17
25
  const userDataDir = opts.userDataDir ?? null;
18
26
  if (userDataDir)
19
27
  ensureDir(userDataDir);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/agent/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAyB,MAAM,wBAAwB,CAAC;AAIhF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAoB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAyB9F,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,OAAqB,EAAE;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,uBAAuB,EAAE,CAAC;IAC9D,SAAS,CAAC,SAAS,CAAC,CAAC;IACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACzE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACzF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;IAC7C,IAAI,WAAW;QAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC3E,SAAS,CAAC,aAAa,CAAC,CAAC;IACzB,OAAO;QACL,SAAS;QACT,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,YAAY;QACnC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;QAC3C,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;QACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI;QAC/C,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;QAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;QAC/B,QAAQ;QACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,WAAW;QACX,QAAQ;QACR,WAAW;QACX,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI;QAC/C,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK;QAC1C,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;QACtD,aAAa;QACb,KAAK,EAAE;YACL,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM;YAClC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,IAAI,CAAC;SACxC;QACD,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;KAC9B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/agent/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAyB,MAAM,wBAAwB,CAAC;AAIhF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAoB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAyBpD,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,OAAqB,EAAE;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,uBAAuB,EAAE,CAAC;IAC9D,SAAS,CAAC,SAAS,CAAC,CAAC;IACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACzE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACvF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,GAAG,MAAM,CAAC;YAClB,WAAW,GAAG,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;IAC7C,IAAI,WAAW;QAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC3E,SAAS,CAAC,aAAa,CAAC,CAAC;IACzB,OAAO;QACL,SAAS;QACT,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,YAAY;QACnC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;QAC3C,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;QACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI;QAC/C,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;QAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;QAC/B,QAAQ;QACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,WAAW;QACX,QAAQ;QACR,WAAW;QACX,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI;QAC/C,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK;QAC1C,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;QACtD,aAAa;QACb,KAAK,EAAE;YACL,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM;YAClC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,IAAI,CAAC;SACxC;QACD,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;KAC9B,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"probe-run.d.ts","sourceRoot":"","sources":["../../src/agent/probe-run.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,mEAAmE;AACnE,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CA+DtB"}
1
+ {"version":3,"file":"probe-run.d.ts","sourceRoot":"","sources":["../../src/agent/probe-run.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAO3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,mEAAmE;AACnE,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAgEtB"}
@@ -14,6 +14,7 @@ import { visualObservation } from "../extraction/visual.js";
14
14
  import { ensureDir, sha1 } from "../lib/fs.js";
15
15
  import { gotoWithRetry } from "../net/navigate.js";
16
16
  import { throttleHost } from "../net/throttle.js";
17
+ import { reportProxyBlocked } from "../proxy/pool.js";
17
18
  import { domSignature } from "../state/dom-signature.js";
18
19
  import { runActions } from "./actions-loop.js";
19
20
  import { detectAndSolve } from "./detect.js";
@@ -55,6 +56,8 @@ export async function runProbe(config, url, options = {}) {
55
56
  const after = await domSignature(page);
56
57
  const text = await mainText(page);
57
58
  const { challenges, captcha } = await detectAndSolve(page, text, options, config);
59
+ if (config.proxySource === "pool" && config.proxyUrl && "cloudflare" in challenges && (challenges.cloudflare || challenges.captcha))
60
+ reportProxyBlocked(config.proxyUrl);
58
61
  const title = await page.title();
59
62
  await page.screenshot({ path: screenshotPath, fullPage: true });
60
63
  const visual = options.observeVisual ? await visualObservation(page, screenshotPath) : {};
@@ -1 +1 @@
1
- {"version":3,"file":"probe-run.js","sourceRoot":"","sources":["../../src/agent/probe-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"probe-run.js","sourceRoot":"","sources":["../../src/agent/probe-run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/engine/launch.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AA+B7D,oFAAoF;AACpF,wBAAsB,aAAa,CACjC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,aAAa,CAAC,CAiBxB"}
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/engine/launch.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAgC7D,oFAAoF;AACpF,wBAAsB,aAAa,CACjC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,aAAa,CAAC,CAiBxB"}
@@ -8,12 +8,13 @@ import { existsSync } from "node:fs";
8
8
  import { logger } from "../lib/logger.js";
9
9
  import { buildContextOptions } from "./context.js";
10
10
  import { isChromiumEngine } from "./loader.js";
11
+ import { WEBRTC_LEAK_ARGS } from "./webrtc.js";
11
12
  const CHROMIUM_ARGS = ["--no-sandbox", "--disable-blink-features=AutomationControlled"];
12
13
  /** Build LaunchOptions, applying Chromium-only fields only for Chromium engines. */
13
14
  function buildLaunchOptions(config) {
14
15
  const opts = { headless: config.headless };
15
16
  if (isChromiumEngine(config.engine)) {
16
- opts.args = CHROMIUM_ARGS;
17
+ opts.args = config.proxyUrl ? [...CHROMIUM_ARGS, ...WEBRTC_LEAK_ARGS] : [...CHROMIUM_ARGS];
17
18
  if (config.channel)
18
19
  opts.channel = config.channel;
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/engine/launch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,+CAA+C,CAAC,CAAC;AAExF,oFAAoF;AACpF,SAAS,kBAAkB,CAAC,MAAsB;IAChD,MAAM,IAAI,GAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC1D,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACpD,CAAC;IACD,IAAI,MAAM,CAAC,cAAc;QAAE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IACvE,IAAI,MAAM,CAAC,QAAQ;QAAE,IAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,YAAY,GAAG,iEAAiE,CAAC;AAEvF,2FAA2F;AAC3F,SAAS,iBAAiB,CAAC,GAAY;IACrC,MAAM,OAAO,GAAG,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,KAAK,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,GAAY,CAAC;AACrB,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAwB,EACxB,MAAsB;IAEtB,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAErF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,WAAW;aAC9B,uBAAuB,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;aACpF,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,gBAAgB,IAAI,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnE,cAAc,CAAC,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACxD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/engine/launch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,+CAA+C,CAAC,CAAC;AAExF,oFAAoF;AACpF,SAAS,kBAAkB,CAAC,MAAsB;IAChD,MAAM,IAAI,GAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC1D,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;QAC3F,IAAI,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACpD,CAAC;IACD,IAAI,MAAM,CAAC,cAAc;QAAE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IACvE,IAAI,MAAM,CAAC,QAAQ;QAAE,IAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,YAAY,GAAG,iEAAiE,CAAC;AAEvF,2FAA2F;AAC3F,SAAS,iBAAiB,CAAC,GAAY;IACrC,MAAM,OAAO,GAAG,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,KAAK,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,GAAY,CAAC;AACrB,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAwB,EACxB,MAAsB;IAEtB,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAErF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,WAAW;aAC9B,uBAAuB,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;aACpF,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,gBAAgB,IAAI,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnE,cAAc,CAAC,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACxD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Chromium launch args that stop a WebRTC ICE/STUN real-IP leak when a proxy is
3
+ * set — WebRTC is routed through the proxy and non-proxied UDP is blocked, so a
4
+ * page cannot reveal the machine's real IP behind the proxy. Chromium-only.
5
+ * @module engine/webrtc
6
+ */
7
+ /** Launch args preventing WebRTC from bypassing the proxy. */
8
+ export declare const WEBRTC_LEAK_ARGS: string[];
9
+ //# sourceMappingURL=webrtc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webrtc.d.ts","sourceRoot":"","sources":["../../src/engine/webrtc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,UAG5B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Chromium launch args that stop a WebRTC ICE/STUN real-IP leak when a proxy is
3
+ * set — WebRTC is routed through the proxy and non-proxied UDP is blocked, so a
4
+ * page cannot reveal the machine's real IP behind the proxy. Chromium-only.
5
+ * @module engine/webrtc
6
+ */
7
+ /** Launch args preventing WebRTC from bypassing the proxy. */
8
+ export const WEBRTC_LEAK_ARGS = [
9
+ "--webrtc-ip-handling-policy=disable_non_proxied_udp",
10
+ "--force-webrtc-ip-handling-policy",
11
+ ];
12
+ //# sourceMappingURL=webrtc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webrtc.js","sourceRoot":"","sources":["../../src/engine/webrtc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,qDAAqD;IACrD,mCAAmC;CACpC,CAAC"}
@@ -66,6 +66,7 @@ export interface AgentOptions {
66
66
  proxyUrl?: string;
67
67
  proxyCountryMap?: Record<string, string>;
68
68
  proxyMapPath?: string;
69
+ proxiesPath?: string;
69
70
  realisticProfile?: boolean;
70
71
  replayEnabled?: boolean;
71
72
  replayDir?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interfaces/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interfaces/types.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  export declare function loadProxyCountryMap(inline?: Record<string, string>, mapPath?: string): Record<string, string>;
6
6
  /** Source de sélection du proxy effectif. */
7
- export type ProxySource = "explicit" | "country_map" | null;
7
+ export type ProxySource = "explicit" | "country_map" | "pool" | null;
8
8
  /** Sélectionne le proxy effectif : explicite > table pays. */
9
9
  export declare function resolveProxy(explicit: string | undefined, countryCode: string, map: Record<string, string>): {
10
10
  proxyUrl: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"country-map.d.ts","sourceRoot":"","sources":["../../src/proxy/country-map.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AAED,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC;AAE5D,8DAA8D;AAC9D,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAKvD"}
1
+ {"version":3,"file":"country-map.d.ts","sourceRoot":"","sources":["../../src/proxy/country-map.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AAED,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,IAAI,CAAC;AAErE,8DAA8D;AAC9D,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAKvD"}
@@ -0,0 +1,3 @@
1
+ /** Merge proxies from `env.FUSE_PROXIES` and an optional JSON file (array). */
2
+ export declare function loadProxyList(env?: NodeJS.ProcessEnv, path?: string): string[];
3
+ //# sourceMappingURL=load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/proxy/load.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAO3F"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Load a proxy list from the `FUSE_PROXIES` env var (comma/newline separated)
3
+ * and/or a JSON file (array of URLs). Dedupes and drops blanks. The proxy list
4
+ * is a secret you provide — keep it out of the repo.
5
+ * @module proxy/load
6
+ */
7
+ import { readJsonSafe } from "../lib/fs.js";
8
+ /** Merge proxies from `env.FUSE_PROXIES` and an optional JSON file (array). */
9
+ export function loadProxyList(env = process.env, path) {
10
+ const fromEnv = (env.FUSE_PROXIES ?? "")
11
+ .split(/[\n,]/)
12
+ .map((s) => s.trim())
13
+ .filter(Boolean);
14
+ const fromFile = path ? readJsonSafe(path, []).map(String).filter(Boolean) : [];
15
+ return [...new Set([...fromEnv, ...fromFile])];
16
+ }
17
+ //# sourceMappingURL=load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/proxy/load.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,MAAyB,OAAO,CAAC,GAAG,EAAE,IAAa;IAC/E,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;SACrC,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAW,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,23 @@
1
+ /** Round-robin proxy pool with per-entry cooldown on block. */
2
+ export declare class ProxyPool {
3
+ private readonly cooldownMs;
4
+ private readonly now;
5
+ private readonly entries;
6
+ private cursor;
7
+ constructor(urls: string[], cooldownMs?: number, now?: () => number);
8
+ /** Next available proxy (round-robin), or null when all are cooling/empty. */
9
+ acquire(): string | null;
10
+ /** Put a proxy on cooldown after a block (403/429/captcha). */
11
+ reportBlocked(url: string): void;
12
+ /** Count of currently-available (not cooling) proxies. */
13
+ get available(): number;
14
+ /** Total pool size. */
15
+ get size(): number;
16
+ }
17
+ /** Lazily-built process-wide pool from `FUSE_PROXIES` env + optional JSON file. */
18
+ export declare function defaultProxyPool(proxiesPath?: string): ProxyPool;
19
+ /** Acquire from the default pool; null if none configured or all cooling. */
20
+ export declare function acquirePoolProxy(proxiesPath?: string): string | null;
21
+ /** Report a block to the default pool (puts that proxy on cooldown). */
22
+ export declare function reportProxyBlocked(url: string): void;
23
+ //# sourceMappingURL=pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/proxy/pool.ts"],"names":[],"mappings":"AAaA,+DAA+D;AAC/D,qBAAa,SAAS;IAMlB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IANtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,MAAM,CAAK;gBAGjB,IAAI,EAAE,MAAM,EAAE,EACG,UAAU,SAAa,EACvB,GAAG,GAAE,MAAM,MAAiB;IAK/C,8EAA8E;IAC9E,OAAO,IAAI,MAAM,GAAG,IAAI;IAaxB,+DAA+D;IAC/D,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKhC,0DAA0D;IAC1D,IAAI,SAAS,IAAI,MAAM,CAGtB;IAED,uBAAuB;IACvB,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAID,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAGhE;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEpE;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpD"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Rotating in-memory proxy pool: round-robin `acquire` skipping cooled-down
3
+ * entries; `reportBlocked` puts an entry on cooldown (it re-enters rotation
4
+ * automatically once the cooldown elapses — entries are never removed).
5
+ * @module proxy/pool
6
+ */
7
+ import { loadProxyList } from "./load.js";
8
+ /** Round-robin proxy pool with per-entry cooldown on block. */
9
+ export class ProxyPool {
10
+ cooldownMs;
11
+ now;
12
+ entries;
13
+ cursor = 0;
14
+ constructor(urls, cooldownMs = 5 * 60_000, now = Date.now) {
15
+ this.cooldownMs = cooldownMs;
16
+ this.now = now;
17
+ this.entries = urls.map((url) => ({ url, cooldownUntil: 0 }));
18
+ }
19
+ /** Next available proxy (round-robin), or null when all are cooling/empty. */
20
+ acquire() {
21
+ const t = this.now();
22
+ const n = this.entries.length;
23
+ for (let i = 0; i < n; i += 1) {
24
+ const e = this.entries[(this.cursor + i) % n];
25
+ if (e && t >= e.cooldownUntil) {
26
+ this.cursor = (this.cursor + i + 1) % n;
27
+ return e.url;
28
+ }
29
+ }
30
+ return null;
31
+ }
32
+ /** Put a proxy on cooldown after a block (403/429/captcha). */
33
+ reportBlocked(url) {
34
+ const e = this.entries.find((x) => x.url === url);
35
+ if (e)
36
+ e.cooldownUntil = this.now() + this.cooldownMs;
37
+ }
38
+ /** Count of currently-available (not cooling) proxies. */
39
+ get available() {
40
+ const t = this.now();
41
+ return this.entries.filter((e) => t >= e.cooldownUntil).length;
42
+ }
43
+ /** Total pool size. */
44
+ get size() {
45
+ return this.entries.length;
46
+ }
47
+ }
48
+ let singleton = null;
49
+ /** Lazily-built process-wide pool from `FUSE_PROXIES` env + optional JSON file. */
50
+ export function defaultProxyPool(proxiesPath) {
51
+ if (!singleton)
52
+ singleton = new ProxyPool(loadProxyList(process.env, proxiesPath));
53
+ return singleton;
54
+ }
55
+ /** Acquire from the default pool; null if none configured or all cooling. */
56
+ export function acquirePoolProxy(proxiesPath) {
57
+ return defaultProxyPool(proxiesPath).acquire();
58
+ }
59
+ /** Report a block to the default pool (puts that proxy on cooldown). */
60
+ export function reportProxyBlocked(url) {
61
+ defaultProxyPool().reportBlocked(url);
62
+ }
63
+ //# sourceMappingURL=pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/proxy/pool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAO1C,+DAA+D;AAC/D,MAAM,OAAO,SAAS;IAMD;IACA;IANF,OAAO,CAAe;IAC/B,MAAM,GAAG,CAAC,CAAC;IAEnB,YACE,IAAc,EACG,aAAa,CAAC,GAAG,MAAM,EACvB,MAAoB,IAAI,CAAC,GAAG;QAD5B,eAAU,GAAV,UAAU,CAAa;QACvB,QAAG,GAAH,GAAG,CAAyB;QAE7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,8EAA8E;IAC9E,OAAO;QACL,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBACxC,OAAO,CAAC,CAAC,GAAG,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+DAA+D;IAC/D,aAAa,CAAC,GAAW;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC;YAAE,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IACxD,CAAC;IAED,0DAA0D;IAC1D,IAAI,SAAS;QACX,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;IACjE,CAAC;IAED,uBAAuB;IACvB,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;CACF;AAED,IAAI,SAAS,GAAqB,IAAI,CAAC;AAEvC,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAC,WAAoB;IACnD,IAAI,CAAC,SAAS;QAAE,SAAS,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IACnF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,WAAoB;IACnD,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;AACjD,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,gBAAgB,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"map-options.d.ts","sourceRoot":"","sources":["../../src/server/map-options.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAMxF,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAwBvE;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAcvE"}
1
+ {"version":3,"file":"map-options.d.ts","sourceRoot":"","sources":["../../src/server/map-options.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAMxF,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAyBvE;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAcvE"}
@@ -17,6 +17,7 @@ export function toAgentOptions(a) {
17
17
  userDataDir: a.userDataDir ?? ENV.userDataDir,
18
18
  proxyUrl: a.proxyUrl,
19
19
  proxyMapPath: a.proxyMapPath,
20
+ proxiesPath: a.proxiesPath,
20
21
  storageStatePath: a.storageStatePath ?? ENV.storageStatePath,
21
22
  realisticProfile: a.realisticProfile,
22
23
  replayEnabled: a.replayEnabled,
@@ -1 +1 @@
1
- {"version":3,"file":"map-options.js","sourceRoot":"","sources":["../../src/server/map-options.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,qFAAqF;AACrF,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;AAE/B,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,CAA0B;IACvD,OAAO;QACL,MAAM,EAAG,CAAC,CAAC,MAAiC,IAAI,GAAG,CAAC,MAAM;QAC1D,OAAO,EAAG,CAAC,CAAC,OAAsC,IAAI,GAAG,CAAC,OAAO;QACjE,cAAc,EAAG,CAAC,CAAC,cAAqC,IAAI,GAAG,CAAC,cAAc;QAC9E,WAAW,EAAG,CAAC,CAAC,WAAkC,IAAI,GAAG,CAAC,WAAW;QACrE,QAAQ,EAAG,CAAC,CAAC,QAAgC,IAAI,GAAG,CAAC,QAAQ;QAC7D,SAAS,EAAE,CAAC,CAAC,SAAgC;QAC7C,MAAM,EAAE,CAAC,CAAC,MAA4B;QACtC,UAAU,EAAE,CAAC,CAAC,UAAgC;QAC9C,WAAW,EAAG,CAAC,CAAC,WAAkC,IAAI,GAAG,CAAC,WAAW;QACrE,QAAQ,EAAG,CAAC,CAAC,QAA+B,IAAI,GAAG,CAAC,QAAQ;QAC5D,WAAW,EAAG,CAAC,CAAC,WAAkC,IAAI,GAAG,CAAC,WAAW;QACrE,QAAQ,EAAE,CAAC,CAAC,QAA8B;QAC1C,YAAY,EAAE,CAAC,CAAC,YAAkC;QAClD,gBAAgB,EAAG,CAAC,CAAC,gBAAuC,IAAI,GAAG,CAAC,gBAAgB;QACpF,gBAAgB,EAAE,CAAC,CAAC,gBAAuC;QAC3D,aAAa,EAAE,CAAC,CAAC,aAAoC;QACrD,SAAS,EAAE,CAAC,CAAC,SAA+B;QAC5C,aAAa,EAAE,CAAC,CAAC,aAAmC;QACpD,SAAS,EAAG,CAAC,CAAC,SAAgC,IAAI,GAAG,CAAC,SAAS;QAC/D,KAAK,EAAE,CAAC,CAAC,KAA8B;QACvC,OAAO,EAAE,CAAC,CAAC,OAAkC;KAC9C,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,cAAc,CAAC,CAA0B;IACvD,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,OAAsC;QACjD,aAAa,EAAE,CAAC,CAAC,aAAoC;QACrD,WAAW,EAAE,CAAC,CAAC,WAAkC;QACjD,aAAa,EAAE,CAAC,CAAC,aAAoC;QACrD,MAAM,EAAE,CAAC,CAAC,MAA4B;QACtC,gBAAgB,EAAE,CAAC,CAAC,gBAAuC;QAC3D,aAAa,EAAE,CAAC,CAAC,aAAoC;QACrD,YAAY,EAAE,CAAC,CAAC,YAAmC;QACnD,WAAW,EAAE,CAAC,CAAC,WAAkC;QACjD,SAAS,EAAE,CAAC,CAAC,SAA+B;QAC5C,UAAU,EAAE,CAAC,CAAC,UAAgC;KAC/C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"map-options.js","sourceRoot":"","sources":["../../src/server/map-options.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,qFAAqF;AACrF,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;AAE/B,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,CAA0B;IACvD,OAAO;QACL,MAAM,EAAG,CAAC,CAAC,MAAiC,IAAI,GAAG,CAAC,MAAM;QAC1D,OAAO,EAAG,CAAC,CAAC,OAAsC,IAAI,GAAG,CAAC,OAAO;QACjE,cAAc,EAAG,CAAC,CAAC,cAAqC,IAAI,GAAG,CAAC,cAAc;QAC9E,WAAW,EAAG,CAAC,CAAC,WAAkC,IAAI,GAAG,CAAC,WAAW;QACrE,QAAQ,EAAG,CAAC,CAAC,QAAgC,IAAI,GAAG,CAAC,QAAQ;QAC7D,SAAS,EAAE,CAAC,CAAC,SAAgC;QAC7C,MAAM,EAAE,CAAC,CAAC,MAA4B;QACtC,UAAU,EAAE,CAAC,CAAC,UAAgC;QAC9C,WAAW,EAAG,CAAC,CAAC,WAAkC,IAAI,GAAG,CAAC,WAAW;QACrE,QAAQ,EAAG,CAAC,CAAC,QAA+B,IAAI,GAAG,CAAC,QAAQ;QAC5D,WAAW,EAAG,CAAC,CAAC,WAAkC,IAAI,GAAG,CAAC,WAAW;QACrE,QAAQ,EAAE,CAAC,CAAC,QAA8B;QAC1C,YAAY,EAAE,CAAC,CAAC,YAAkC;QAClD,WAAW,EAAE,CAAC,CAAC,WAAiC;QAChD,gBAAgB,EAAG,CAAC,CAAC,gBAAuC,IAAI,GAAG,CAAC,gBAAgB;QACpF,gBAAgB,EAAE,CAAC,CAAC,gBAAuC;QAC3D,aAAa,EAAE,CAAC,CAAC,aAAoC;QACrD,SAAS,EAAE,CAAC,CAAC,SAA+B;QAC5C,aAAa,EAAE,CAAC,CAAC,aAAmC;QACpD,SAAS,EAAG,CAAC,CAAC,SAAgC,IAAI,GAAG,CAAC,SAAS;QAC/D,KAAK,EAAE,CAAC,CAAC,KAA8B;QACvC,OAAO,EAAE,CAAC,CAAC,OAAkC;KAC9C,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,cAAc,CAAC,CAA0B;IACvD,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,OAAsC;QACjD,aAAa,EAAE,CAAC,CAAC,aAAoC;QACrD,WAAW,EAAE,CAAC,CAAC,WAAkC;QACjD,aAAa,EAAE,CAAC,CAAC,aAAoC;QACrD,MAAM,EAAE,CAAC,CAAC,MAA4B;QACtC,gBAAgB,EAAE,CAAC,CAAC,gBAAuC;QAC3D,aAAa,EAAE,CAAC,CAAC,aAAoC;QACrD,YAAY,EAAE,CAAC,CAAC,YAAmC;QACnD,WAAW,EAAE,CAAC,CAAC,WAAkC;QACjD,SAAS,EAAE,CAAC,CAAC,SAA+B;QAC5C,UAAU,EAAE,CAAC,CAAC,UAAgC;KAC/C,CAAC;AACJ,CAAC"}
@@ -32,6 +32,7 @@ export declare const agentOptionShape: {
32
32
  userDataDir: z.ZodOptional<z.ZodString>;
33
33
  proxyUrl: z.ZodOptional<z.ZodString>;
34
34
  proxyMapPath: z.ZodOptional<z.ZodString>;
35
+ proxiesPath: z.ZodOptional<z.ZodString>;
35
36
  storageStatePath: z.ZodOptional<z.ZodString>;
36
37
  realisticProfile: z.ZodOptional<z.ZodBoolean>;
37
38
  replayEnabled: z.ZodOptional<z.ZodBoolean>;
@@ -102,6 +103,7 @@ export declare const probeShape: {
102
103
  userDataDir: z.ZodOptional<z.ZodString>;
103
104
  proxyUrl: z.ZodOptional<z.ZodString>;
104
105
  proxyMapPath: z.ZodOptional<z.ZodString>;
106
+ proxiesPath: z.ZodOptional<z.ZodString>;
105
107
  storageStatePath: z.ZodOptional<z.ZodString>;
106
108
  realisticProfile: z.ZodOptional<z.ZodBoolean>;
107
109
  replayEnabled: z.ZodOptional<z.ZodBoolean>;
@@ -169,6 +171,7 @@ export declare const probeHtmlShape: {
169
171
  userDataDir: z.ZodOptional<z.ZodString>;
170
172
  proxyUrl: z.ZodOptional<z.ZodString>;
171
173
  proxyMapPath: z.ZodOptional<z.ZodString>;
174
+ proxiesPath: z.ZodOptional<z.ZodString>;
172
175
  storageStatePath: z.ZodOptional<z.ZodString>;
173
176
  realisticProfile: z.ZodOptional<z.ZodBoolean>;
174
177
  replayEnabled: z.ZodOptional<z.ZodBoolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/server/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,iDAAiD;AACjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC5B,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,YAAY;;kCAAuD,CAAC;AAgBjF,mCAAmC;AACnC,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA0D,CAAC;AAElF,wCAAwC;AACxC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA2D,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/server/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,iDAAiD;AACjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsC5B,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,YAAY;;kCAAuD,CAAC;AAgBjF,mCAAmC;AACnC,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA0D,CAAC;AAElF,wCAAwC;AACxC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA2D,CAAC"}
@@ -29,6 +29,7 @@ export const agentOptionShape = {
29
29
  userDataDir: z.string().optional(),
30
30
  proxyUrl: z.string().optional(),
31
31
  proxyMapPath: z.string().optional(),
32
+ proxiesPath: z.string().optional(),
32
33
  storageStatePath: z.string().optional(),
33
34
  realisticProfile: z.boolean().optional(),
34
35
  replayEnabled: z.boolean().optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/server/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/server/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,qDAAqD;AACrD,MAAM,QAAQ,GAAG;IACf,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,eAAe;IACf,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,eAAe;CACP,CAAC;AAEX,iDAAiD;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5E,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;IACpC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACxC,CAAC;SACD,QAAQ,EAAE;IACb,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACpC,CAAC;SACD,QAAQ,EAAE;CACd,CAAC;AAEF,wDAAwD;AACxD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAEjF,MAAM,UAAU,GAAG;IACjB,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACnC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;IACzC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;AAEF,mCAAmC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,gBAAgB,EAAE,GAAG,UAAU,EAAE,CAAC;AAElF,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,gBAAgB,EAAE,GAAG,UAAU,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusengine/browser-mcp",
3
- "version": "0.1.12",
3
+ "version": "0.1.13",
4
4
  "description": "MCP server + CLI giving AI agents a real, stealth browser (Patchright/Playwright) — per-country identity, self-healing actions, snapshots, multi-step plans, structured extraction, CDP attach.",
5
5
  "license": "MIT",
6
6
  "author": "Fusengine",