cloakbrowser-mcp 1.3.0 → 1.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 (68) hide show
  1. package/README.md +101 -19
  2. package/dist/bridge/config.d.ts +26 -3
  3. package/dist/bridge/config.d.ts.map +1 -1
  4. package/dist/bridge/config.js +187 -13
  5. package/dist/bridge/config.js.map +1 -1
  6. package/dist/bridge/env.d.ts +1 -0
  7. package/dist/bridge/env.d.ts.map +1 -1
  8. package/dist/bridge/env.js +3 -0
  9. package/dist/bridge/env.js.map +1 -1
  10. package/dist/bridge/tools.d.ts +3 -1
  11. package/dist/bridge/tools.d.ts.map +1 -1
  12. package/dist/bridge/tools.js +8 -6
  13. package/dist/bridge/tools.js.map +1 -1
  14. package/dist/cli/doctor.d.ts +1 -1
  15. package/dist/cli/doctor.d.ts.map +1 -1
  16. package/dist/cli/doctor.js +3 -3
  17. package/dist/cli/doctor.js.map +1 -1
  18. package/dist/cli/options.d.ts +11 -2
  19. package/dist/cli/options.d.ts.map +1 -1
  20. package/dist/cli/options.js +115 -3
  21. package/dist/cli/options.js.map +1 -1
  22. package/dist/cli/singleton-lock-cleanup.d.ts +34 -0
  23. package/dist/cli/singleton-lock-cleanup.d.ts.map +1 -0
  24. package/dist/cli/singleton-lock-cleanup.js +151 -0
  25. package/dist/cli/singleton-lock-cleanup.js.map +1 -0
  26. package/dist/cli.js +27 -10
  27. package/dist/cli.js.map +1 -1
  28. package/dist/http/nodeServer.d.ts +9 -0
  29. package/dist/http/nodeServer.d.ts.map +1 -0
  30. package/dist/http/nodeServer.js +65 -0
  31. package/dist/http/nodeServer.js.map +1 -0
  32. package/dist/http/options.d.ts +27 -2
  33. package/dist/http/options.d.ts.map +1 -1
  34. package/dist/http/options.js +25 -5
  35. package/dist/http/options.js.map +1 -1
  36. package/dist/http/requests.d.ts +16 -0
  37. package/dist/http/requests.d.ts.map +1 -0
  38. package/dist/http/requests.js +127 -0
  39. package/dist/http/requests.js.map +1 -0
  40. package/dist/http/responses.d.ts +6 -0
  41. package/dist/http/responses.d.ts.map +1 -0
  42. package/dist/http/responses.js +24 -0
  43. package/dist/http/responses.js.map +1 -0
  44. package/dist/http/server.d.ts +7 -3
  45. package/dist/http/server.d.ts.map +1 -1
  46. package/dist/http/server.js +61 -117
  47. package/dist/http/server.js.map +1 -1
  48. package/dist/http/sessionStore.d.ts +3 -1
  49. package/dist/http/sessionStore.d.ts.map +1 -1
  50. package/dist/http/sessionStore.js +8 -5
  51. package/dist/http/sessionStore.js.map +1 -1
  52. package/dist/index.d.ts +1 -1
  53. package/dist/index.js +1 -1
  54. package/dist/logging/logger.d.ts +17 -0
  55. package/dist/logging/logger.d.ts.map +1 -0
  56. package/dist/logging/logger.js +107 -0
  57. package/dist/logging/logger.js.map +1 -0
  58. package/dist/protocol/constants.d.ts +6 -0
  59. package/dist/protocol/constants.d.ts.map +1 -0
  60. package/dist/protocol/constants.js +6 -0
  61. package/dist/protocol/constants.js.map +1 -0
  62. package/dist/runtime/humanize-init-page.cjs +19 -0
  63. package/dist/server.d.ts +3 -2
  64. package/dist/server.d.ts.map +1 -1
  65. package/dist/server.js +5 -5
  66. package/dist/server.js.map +1 -1
  67. package/package.json +39 -18
  68. package/server.json +29 -5
package/README.md CHANGED
@@ -16,15 +16,19 @@
16
16
  [![cloakbrowser-mcp MCP server](https://glama.ai/mcp/servers/swimmwatch/cloakbrowser-mcp/badges/score.svg)](https://glama.ai/mcp/servers/swimmwatch/cloakbrowser-mcp)
17
17
  [![npm](https://img.shields.io/npm/v/cloakbrowser-mcp.svg?logo=npm)](https://www.npmjs.com/package/cloakbrowser-mcp)
18
18
  [![Docker Hub pulls](https://img.shields.io/docker/pulls/swimmwatch/cloakbrowser-mcp?logo=docker&label=Docker%20Hub)](https://hub.docker.com/r/swimmwatch/cloakbrowser-mcp)
19
- [![Node.js >=20](https://img.shields.io/badge/Node.js-%3E%3D20-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
19
+ [![Node.js >=22.12](https://img.shields.io/badge/Node.js-%3E%3D22.12-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
20
+ [![Cross-platform](https://img.shields.io/badge/Cross--platform-Linux%20%7C%20macOS%20%7C%20Windows-2563eb)](docs/version-compatibility.md)
21
+ [![Available on CodeGuilds](https://img.shields.io/badge/Available_on-CodeGuilds-6366f1)](https://codeguilds.dev/packages/cloakbrowser-mcp)
20
22
  [![MCP Server](https://img.shields.io/badge/MCP-server-000000)](https://modelcontextprotocol.io/)
21
23
  [![Docker](https://img.shields.io/badge/Docker-ready-2496ED?logo=docker&logoColor=white)](docs/docker.md)
22
24
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
23
25
 
24
- `cloakbrowser-mcp` is a [Model Context Protocol](https://modelcontextprotocol.io/) browser automation server that runs upstream [`@playwright/mcp`](https://github.com/microsoft/playwright-mcp) with the [CloakBrowser](https://github.com/CloakHQ/CloakBrowser) Chromium binary. It provides Playwright MCP-compatible tools through a thin CloakBrowser bridge for npm and Docker users over stdio or Streamable HTTP.
26
+ `cloakbrowser-mcp` is a [Model Context Protocol](https://modelcontextprotocol.io/) browser automation server that runs upstream [`@playwright/mcp`](https://github.com/microsoft/playwright-mcp) with the [CloakBrowser](https://github.com/CloakHQ/CloakBrowser) Chromium binary. It provides Playwright MCP-compatible tools through a thin CloakBrowser bridge for npm and Docker users over stdio or Streamable HTTP, including GeoIP-aware proxy matching and humanized input behavior for QA.
25
27
 
26
28
  Documentation: [swimmwatch.github.io/cloakbrowser-mcp](https://swimmwatch.github.io/cloakbrowser-mcp/)
27
29
 
30
+ Cross-platform checks cover npm on Linux x64/arm64, macOS arm64/x64, and Windows x64 across Node.js 22-26. Docker images are built and smoke-tested for `linux/amd64` and `linux/arm64`.
31
+
28
32
  The server is intentionally thin:
29
33
 
30
34
  - upstream Playwright MCP owns browser tool schemas, descriptions, and responses;
@@ -34,20 +38,26 @@ The server is intentionally thin:
34
38
 
35
39
  ## Version compatibility
36
40
 
37
- | cloakbrowser-mcp | @playwright/mcp | Playwright MCP Docker base | CloakBrowser | Node.js | Transport | Platform | Parity |
38
- | --- | --- | --- | --- | --- | --- | --- | --- |
39
- | `1.3.0` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.31` | `>=20` | stdio, Streamable HTTP | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
40
- | `1.2.7` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.30` | `>=20` | stdio, Streamable HTTP | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
41
- | `1.2.6` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.30` | `>=20` | stdio, Streamable HTTP | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
42
- | `1.2.5` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.30` | `>=20` | stdio, Streamable HTTP | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
43
- | `1.2.3` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.30` | `>=20` | stdio, Streamable HTTP | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
44
- | `1.2.2` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.30` | `>=20` | stdio, Streamable HTTP | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
45
- | `1.2.1` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.30` | `>=20` | stdio, Streamable HTTP | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
46
- | `1.2.0` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.30` | `>=20` | stdio, Streamable HTTP | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
47
- | `1.1.0` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.30` | `>=20` | stdio, Streamable HTTP | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
48
- | `1.0.2` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.30` | `>=20` | stdio | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
49
- | `1.0.1` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.30` | `>=20` | stdio | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
50
- | `1.0.0` | `^0.0.75` | `mcr.microsoft.com/playwright/mcp:v0.0.75` | `^0.3.30` | `>=20` | stdio | `linux/amd64` Docker, Node.js local | Upstream default tools compared in CI. |
41
+ <!-- compatibility-table:start -->
42
+
43
+ | cloakbrowser-mcp | @playwright/mcp | CloakBrowser | Node.js | Platform |
44
+ | ---------------- | --------------- | ------------ | --------- | ----------------------------------------------------------------------------------------- |
45
+ | `1.5.0` | `^0.0.76` | `^0.4.3` | `>=22.12` | npm on Linux x64/arm64, macOS arm64/x64, Windows x64; Docker `linux/amd64`, `linux/arm64` |
46
+ | `1.4.0` | `^0.0.76` | `^0.3.32` | `>=22.12` | npm on Linux x64/arm64, macOS arm64/x64, Windows x64; Docker `linux/amd64`, `linux/arm64` |
47
+ | `1.3.0` | `^0.0.75` | `^0.3.31` | `>=20` | Docker `linux/amd64`, Node.js local |
48
+ | `1.2.7` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
49
+ | `1.2.6` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
50
+ | `1.2.5` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
51
+ | `1.2.3` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
52
+ | `1.2.2` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
53
+ | `1.2.1` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
54
+ | `1.2.0` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
55
+ | `1.1.0` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
56
+ | `1.0.2` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
57
+ | `1.0.1` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
58
+ | `1.0.0` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
59
+
60
+ <!-- compatibility-table:end -->
51
61
 
52
62
  See [Version Compatibility](docs/version-compatibility.md) for the maintained compatibility table.
53
63
 
@@ -71,11 +81,12 @@ npx -y cloakbrowser-mcp@latest doctor
71
81
  npx -y cloakbrowser-mcp@latest doctor --json
72
82
  npx -y cloakbrowser-mcp@latest
73
83
  npx -y cloakbrowser-mcp@latest --transport streamable-http --http-port 3000
84
+ npx -y cloakbrowser-mcp@latest --transport streamable-http --http-protocol https --https-cert ./cert.pem --https-key ./key.pem
74
85
  ```
75
86
 
76
- Requires Node.js 20 or newer. The first real browser action may download the CloakBrowser binary unless it is already cached.
87
+ Requires Node.js 22.12 or newer. The first real browser action may download the CloakBrowser binary unless it is already cached.
77
88
  Use `doctor` for local diagnostics before connecting an MCP client. It checks the Node.js engine, project metadata, upstream Playwright MCP resolution, and CloakBrowser binary metadata without starting the bridge or downloading a browser.
78
- The default transport is stdio. Streamable HTTP binds to `127.0.0.1` by default, serves MCP at `/mcp`, and exposes fixed `GET /healthz` and `GET /readyz` probes. If `--http-auth-token` is set, the probes require the same `Authorization: Bearer ...` header as MCP requests.
89
+ The default transport is stdio. Streamable HTTP binds to `127.0.0.1` by default, serves MCP at `/mcp`, and exposes fixed `GET /healthz` and `GET /readyz` probes. Use `--http-protocol https` with `--https-cert` and `--https-key` or `--https-pfx` for direct TLS. If `--http-auth-token` is set, the probes require the same `Authorization: Bearer ...` header as MCP requests.
79
90
  For the complete generated CLI flag reference, see the published [CLI Reference](https://swimmwatch.github.io/cloakbrowser-mcp/generated/cli/).
80
91
 
81
92
  ## Run from Docker
@@ -95,7 +106,18 @@ curl http://127.0.0.1:3000/healthz
95
106
  curl http://127.0.0.1:3000/readyz
96
107
  ```
97
108
 
98
- The Docker image is based on the pinned official Playwright MCP image, installs the bridge under `/opt/cloakbrowser-mcp`, and writes artifacts to `/data` by default.
109
+ For direct HTTPS from the container, mount your TLS files and select HTTPS:
110
+
111
+ ```bash
112
+ docker run --rm --init -p 127.0.0.1:3000:3000 \
113
+ -v "$PWD/artifacts:/data" \
114
+ -v "$PWD/certs:/certs:ro" \
115
+ swimmwatch/cloakbrowser-mcp:latest \
116
+ --transport streamable-http --http-host 0.0.0.0 --http-port 3000 \
117
+ --http-protocol https --https-cert /certs/cert.pem --https-key /certs/key.pem
118
+ ```
119
+
120
+ The Docker image is based on the pinned official Playwright MCP image, installs the bridge under `/opt/cloakbrowser-mcp`, writes artifacts to `/data` by default, and is published for `linux/amd64` and `linux/arm64`.
99
121
  The same tags are also published to `ghcr.io/swimmwatch/cloakbrowser-mcp`.
100
122
 
101
123
  ## MCP client configuration
@@ -142,12 +164,14 @@ The same tags are also published to `ghcr.io/swimmwatch/cloakbrowser-mcp`.
142
164
 
143
165
  Use upstream `PLAYWRIGHT_MCP_*` variables for browser, artifact, timeout, network, and tool capability settings. Cloak-specific bridge toggles use `CLOAK_PLAYWRIGHT_MCP_*`.
144
166
  CLI flags are documented in the generated [CLI Reference](https://swimmwatch.github.io/cloakbrowser-mcp/generated/cli/).
167
+ GeoIP proxy matching and Streamable HTTP runtime metadata are documented in [GeoIP Proxy Matching](docs/geoip-proxy-matching.md) and [Configuration](docs/configuration.md). Human-like mouse, keyboard, and scroll behavior is documented in [Humanized Input Behavior](docs/humanized-input-behavior.md).
145
168
 
146
169
  Common variables:
147
170
 
148
171
  | Variable | Default | Description |
149
172
  | --- | --- | --- |
150
173
  | `CLOAK_PLAYWRIGHT_MCP_TRANSPORT` | `stdio` | MCP transport exposed by the bridge: `stdio` or `streamable-http`. |
174
+ | `CLOAK_PLAYWRIGHT_MCP_HTTP_PROTOCOL` | `http` | Streamable HTTP listener protocol: `http` or `https`. |
151
175
  | `CLOAK_PLAYWRIGHT_MCP_HTTP_HOST` | `127.0.0.1` | Streamable HTTP bind host. |
152
176
  | `CLOAK_PLAYWRIGHT_MCP_HTTP_PORT` | `3000` | Streamable HTTP bind port. |
153
177
  | `CLOAK_PLAYWRIGHT_MCP_HTTP_ENDPOINT` | `/mcp` | Streamable HTTP endpoint path. |
@@ -155,6 +179,16 @@ Common variables:
155
179
  | `CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_BACKEND` | `memory` | Session metadata backend. Only `memory` is implemented in this release. |
156
180
  | `CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_IDLE_TTL_MS` | `3600000` | Idle TTL for Streamable HTTP sessions. |
157
181
  | `CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_MAX` | `32` | Maximum active Streamable HTTP sessions in one process. |
182
+ | `CLOAK_PLAYWRIGHT_MCP_HTTPS_CERT` | unset | TLS certificate PEM path for HTTPS Streamable HTTP. |
183
+ | `CLOAK_PLAYWRIGHT_MCP_HTTPS_KEY` | unset | TLS private key PEM path for HTTPS Streamable HTTP. |
184
+ | `CLOAK_PLAYWRIGHT_MCP_HTTPS_PFX` | unset | TLS PFX/PKCS12 path for HTTPS Streamable HTTP. |
185
+ | `CLOAK_PLAYWRIGHT_MCP_HTTPS_PASSPHRASE` | unset | Passphrase for an encrypted HTTPS key or PFX. |
186
+ | `CLOAK_PLAYWRIGHT_MCP_LOG_LEVEL` | `info` | Streamable HTTP operational log level: `trace`, `debug`, `info`, `warn`, `error`, `fatal`, or `silent`. |
187
+ | `PLAYWRIGHT_MCP_PROXY_SERVER` | unset | Upstream Playwright MCP proxy server. Used as the GeoIP source when matching is enabled. |
188
+ | `PLAYWRIGHT_MCP_PROXY_BYPASS` | unset | Upstream proxy bypass list for hosts that should not use `PLAYWRIGHT_MCP_PROXY_SERVER`. |
189
+ | `CLOAK_PLAYWRIGHT_MCP_GEOIP_PROXY_MATCH` | `false` | Match CloakBrowser timezone and locale fingerprint flags to `PLAYWRIGHT_MCP_PROXY_SERVER` GeoIP. |
190
+ | `CLOAK_PLAYWRIGHT_MCP_HUMANIZE` | `false` | Enables CloakBrowser human-like mouse, keyboard, and scroll behavior. |
191
+ | `CLOAK_PLAYWRIGHT_MCP_HUMAN_PRESET` | `default` | CloakBrowser human behavior preset: `default` or `careful`. Used only when humanize is enabled. |
158
192
  | `PLAYWRIGHT_MCP_BROWSER_ENGINE` | `cloak` | `cloak` uses CloakBrowser. `playwright` uses the upstream Playwright MCP browser runtime. |
159
193
  | `PLAYWRIGHT_MCP_HEADLESS` | `true` | Runs Chromium headless. |
160
194
  | `PLAYWRIGHT_MCP_OUTPUT_DIR` | `.playwright-mcp` | Artifact directory for npm usage. Docker defaults to `/data`. |
@@ -163,6 +197,54 @@ Common variables:
163
197
  | `CLOAK_PLAYWRIGHT_MCP_STEALTH_ARGS` | `true` | Adds CloakBrowser default stealth launch arguments. |
164
198
  | `CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS` | unset | Comma-separated or JSON array of extra Chromium launch arguments. |
165
199
 
200
+ Streamable HTTP clients can override the proxy per MCP session by passing bridge
201
+ metadata in the `initialize` request:
202
+
203
+ ```json
204
+ {
205
+ "params": {
206
+ "_meta": {
207
+ "io.github.swimmwatch/cloakbrowser-mcp": {
208
+ "proxyServer": "http://user:pass@proxy.example:8080",
209
+ "proxyBypass": ".internal,localhost",
210
+ "geoipProxyMatch": true,
211
+ "headless": false,
212
+ "humanize": true,
213
+ "humanPreset": "careful"
214
+ }
215
+ }
216
+ }
217
+ }
218
+ ```
219
+
220
+ Runtime proxy metadata overrides `PLAYWRIGHT_MCP_PROXY_SERVER` and
221
+ `PLAYWRIGHT_MCP_PROXY_BYPASS` for that HTTP session only. Stdio keeps using
222
+ process-level environment and CLI configuration.
223
+
224
+ `headless` overrides `PLAYWRIGHT_MCP_HEADLESS` for that HTTP session only. Use
225
+ `headless: false` only where the runtime has a usable display environment, such
226
+ as a local desktop session, Xvfb, or an equivalent container display setup.
227
+
228
+ Authenticated HTTP proxies are supported with credentials embedded in
229
+ `proxyServer`, for example `http://user:pass@proxy.example:8080`. Percent-encode
230
+ credential characters that have URL meaning, such as `@`, `:`, `/`, `?`, `#`,
231
+ and `%`.
232
+
233
+ Enable `CLOAK_PLAYWRIGHT_MCP_GEOIP_PROXY_MATCH=true` to align CloakBrowser
234
+ timezone, language, and locale fingerprint flags with the selected proxy
235
+ location. Streamable HTTP clients can set `geoipProxyMatch` per session to run
236
+ different regional QA scenarios from one server process.
237
+
238
+ Enable `CLOAK_PLAYWRIGHT_MCP_HUMANIZE=true` to route Playwright page input
239
+ methods through CloakBrowser's human-like interaction layer. Streamable HTTP
240
+ clients can set `humanize` and `humanPreset` per session to compare standard,
241
+ default-humanized, and careful-humanized interaction behavior without restarting
242
+ the server. `humanPreset` accepts `default` or `careful` and does not enable
243
+ humanized behavior by itself.
244
+
245
+ Custom `humanConfig` objects are intentionally not supported yet; accepting
246
+ structured config requires a dedicated validation schema.
247
+
166
248
  The old `CLOAKBROWSER_MCP_*` variables are not supported.
167
249
 
168
250
  ## Tools
@@ -1,6 +1,19 @@
1
- import { binaryInfo } from 'cloakbrowser';
2
- import { type EnvReader } from './env.js';
1
+ import { binaryInfo, buildLaunchOptions } from 'cloakbrowser';
2
+ import { type EnvReader } from '#src/bridge/env';
3
3
  export type BrowserEngine = 'cloak' | 'playwright';
4
+ export declare const humanPresets: readonly ["default", "careful"];
5
+ export type HumanPreset = (typeof humanPresets)[number];
6
+ type CloakBuildLaunchOptions = typeof buildLaunchOptions;
7
+ type PlaywrightProxyOption = {
8
+ server: string;
9
+ bypass?: string;
10
+ username?: string;
11
+ password?: string;
12
+ };
13
+ export interface BridgeRuntimeProxy {
14
+ server: string;
15
+ bypass?: string;
16
+ }
4
17
  export interface BridgeRuntime {
5
18
  browserEngine: BrowserEngine;
6
19
  configPath: string;
@@ -15,7 +28,13 @@ export interface PrepareBridgeRuntimeOptions {
15
28
  env?: EnvReader;
16
29
  tempRoot?: string;
17
30
  ensureCloakBinary?: () => Promise<string>;
31
+ buildCloakLaunchOptions?: CloakBuildLaunchOptions;
18
32
  browserIsolated?: boolean;
33
+ geoipProxyMatch?: boolean;
34
+ headless?: boolean;
35
+ humanize?: boolean;
36
+ humanPreset?: HumanPreset;
37
+ proxy?: BridgeRuntimeProxy;
19
38
  }
20
39
  export interface PlaywrightMcpBridgeConfig {
21
40
  browser?: {
@@ -27,12 +46,16 @@ export interface PlaywrightMcpBridgeConfig {
27
46
  args?: string[];
28
47
  chromiumSandbox?: boolean;
29
48
  ignoreDefaultArgs?: string[];
49
+ proxy?: PlaywrightProxyOption;
30
50
  };
51
+ initPage?: string[];
31
52
  initScript?: string[];
32
53
  };
33
54
  }
34
55
  export declare function prepareBridgeRuntime(options?: PrepareBridgeRuntimeOptions): Promise<BridgeRuntime>;
35
56
  export declare function createLaunchArgs(env: EnvReader): string[];
36
- export declare function createChildEnv(env: EnvReader, outputDir: string): Record<string, string>;
57
+ export declare function parseHumanPreset(value: string): HumanPreset;
58
+ export declare function createChildEnv(env: EnvReader, outputDir: string, runtimeProxy?: BridgeRuntimeProxy, headless?: boolean, humanPreset?: "default" | "careful"): Record<string, string>;
37
59
  export declare function getCurrentCloakBinaryInfo(): ReturnType<typeof binaryInfo>;
60
+ export {};
38
61
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/bridge/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAuC,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAyD,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAIjG,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,YAAY,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,UAAU,CAAC;QACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,aAAa,CAAC,EAAE;YACd,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAChB,eAAe,CAAC,EAAE,OAAO,CAAC;YAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;SAC9B,CAAC;QACF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CACH;AAID,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,aAAa,CAAC,CA4DxB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,EAAE,CAQzD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxF;AAED,wBAAgB,yBAAyB,IAAI,UAAU,CAAC,OAAO,UAAU,CAAC,CAEzE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/bridge/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAuC,MAAM,cAAc,CAAC;AACnG,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AAIzB,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,YAAY,CAAC;AACnD,eAAO,MAAM,YAAY,iCAAkC,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AACxD,KAAK,uBAAuB,GAAG,OAAO,kBAAkB,CAAC;AAGzD,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,UAAU,CAAC;QACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,aAAa,CAAC,EAAE;YACd,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAChB,eAAe,CAAC,EAAE,OAAO,CAAC;YAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;YAC7B,KAAK,CAAC,EAAE,qBAAqB,CAAC;SAC/B,CAAC;QACF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CACH;AAID,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,aAAa,CAAC,CAoFxB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,EAAE,CAQzD;AAuCD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAG3D;AAgHD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,kBAAkB,EACjC,QAAQ,UAAgD,EACxD,WAAW,wBAAmF,GAC7F,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAcD,wBAAgB,yBAAyB,IAAI,UAAU,CAAC,OAAO,UAAU,CAAC,CAEzE"}
@@ -1,10 +1,12 @@
1
1
  import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
2
2
  import { tmpdir } from 'node:os';
3
3
  import path from 'node:path';
4
- import { binaryInfo, ensureBinary, getDefaultStealthArgs } from 'cloakbrowser';
5
- import { appendNodeOption, envBool, envInt, envList, envString } from './env.js';
6
- import { resolvePlaywrightCoreBundlePath } from './paths.js';
7
- import { consoleFallbackInitScript, consoleFallbackPreloadScript } from '../runtime/consoleFallback.js';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { binaryInfo, buildLaunchOptions, ensureBinary, getDefaultStealthArgs } from 'cloakbrowser';
6
+ import { appendNodeOption, envBool, envInt, envList, envString, quoteNodeOptionValue, } from '#src/bridge/env';
7
+ import { resolvePlaywrightCoreBundlePath } from '#src/bridge/paths';
8
+ import { consoleFallbackInitScript, consoleFallbackPreloadScript } from '#src/runtime/consoleFallback';
9
+ export const humanPresets = ['default', 'careful'];
8
10
  const ignoredAutomationArgs = ['--enable-automation', '--enable-unsafe-swiftshader'];
9
11
  export async function prepareBridgeRuntime(options = {}) {
10
12
  const env = options.env ?? process.env;
@@ -12,12 +14,15 @@ export async function prepareBridgeRuntime(options = {}) {
12
14
  const outputDir = envString(env, 'PLAYWRIGHT_MCP_OUTPUT_DIR', path.resolve('.playwright-mcp'));
13
15
  mkdirSync(outputDir, { recursive: true });
14
16
  const browserEngine = parseBrowserEngine(envString(env, 'PLAYWRIGHT_MCP_BROWSER_ENGINE', 'cloak'));
15
- const childEnv = createChildEnv(env, outputDir);
16
17
  const useCloak = browserEngine === 'cloak';
18
+ const headless = options.headless ?? envBool(env, 'PLAYWRIGHT_MCP_HEADLESS', true);
19
+ const humanPreset = options.humanPreset ?? parseHumanPreset(envString(env, 'CLOAK_PLAYWRIGHT_MCP_HUMAN_PRESET', 'default'));
20
+ const childEnv = createChildEnv(env, outputDir, options.proxy, headless, humanPreset);
21
+ const chromiumSandbox = useCloak ? !envBool(env, 'CLOAK_PLAYWRIGHT_MCP_NO_SANDBOX', true) : undefined;
17
22
  const launchOptions = {
18
- headless: envBool(env, 'PLAYWRIGHT_MCP_HEADLESS', true),
23
+ headless,
19
24
  args: useCloak ? createLaunchArgs(env) : envList(env, 'CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS'),
20
- chromiumSandbox: useCloak ? !envBool(env, 'CLOAK_PLAYWRIGHT_MCP_NO_SANDBOX', true) : undefined,
25
+ chromiumSandbox,
21
26
  ignoreDefaultArgs: useCloak ? ignoredAutomationArgs : undefined,
22
27
  };
23
28
  const config = {
@@ -26,6 +31,10 @@ export async function prepareBridgeRuntime(options = {}) {
26
31
  launchOptions,
27
32
  },
28
33
  };
34
+ const configuredProxy = resolveConfiguredProxy(env, launchOptions.args ?? [], options.proxy);
35
+ if (configuredProxy && typeof configuredProxy !== 'string') {
36
+ config.browser.launchOptions.proxy = configuredProxy;
37
+ }
29
38
  if (options.browserIsolated === true) {
30
39
  config.browser.isolated = true;
31
40
  childEnv.PLAYWRIGHT_MCP_ISOLATED = 'true';
@@ -36,6 +45,19 @@ export async function prepareBridgeRuntime(options = {}) {
36
45
  config.browser.launchOptions.executablePath = cloakBinaryPath;
37
46
  childEnv.PLAYWRIGHT_MCP_EXECUTABLE_PATH = cloakBinaryPath;
38
47
  childEnv.CLOAKBROWSER_AUTO_UPDATE = childEnv.CLOAKBROWSER_AUTO_UPDATE ?? 'false';
48
+ if (shouldMatchProxyGeoip(env, options.geoipProxyMatch)) {
49
+ config.browser.launchOptions.args = await resolveGeoipProxyMatchingArgs({
50
+ env,
51
+ args: config.browser.launchOptions.args ?? [],
52
+ headless,
53
+ chromiumSandbox,
54
+ proxy: options.proxy,
55
+ buildCloakLaunchOptions: options.buildCloakLaunchOptions ?? buildLaunchOptions,
56
+ });
57
+ }
58
+ if (shouldHumanize(env, options.humanize)) {
59
+ config.browser.initPage = [...(config.browser.initPage ?? []), resolveHumanizeInitPagePath()];
60
+ }
39
61
  }
40
62
  if (useCloak && envBool(env, 'CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK', true)) {
41
63
  const initScriptPath = path.join(tempDir, 'console-fallback-init.js');
@@ -43,7 +65,7 @@ export async function prepareBridgeRuntime(options = {}) {
43
65
  writeFileSync(initScriptPath, consoleFallbackInitScript);
44
66
  writeFileSync(preloadPath, consoleFallbackPreloadScript(resolvePlaywrightCoreBundlePath()));
45
67
  config.browser.initScript = [...(config.browser.initScript ?? []), initScriptPath];
46
- childEnv.NODE_OPTIONS = appendNodeOption(childEnv.NODE_OPTIONS, `--require=${preloadPath}`);
68
+ childEnv.NODE_OPTIONS = appendNodeOption(childEnv.NODE_OPTIONS, `--require=${quoteNodeOptionValue(preloadPath)}`);
47
69
  }
48
70
  const configPath = path.join(tempDir, 'playwright-mcp.config.json');
49
71
  writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`);
@@ -73,20 +95,156 @@ export function createLaunchArgs(env) {
73
95
  args.add(arg);
74
96
  return [...args];
75
97
  }
76
- export function createChildEnv(env, outputDir) {
98
+ async function resolveGeoipProxyMatchingArgs(options) {
99
+ const proxy = resolveConfiguredProxy(options.env, options.args, options.proxy);
100
+ if (!proxy)
101
+ return options.args;
102
+ const launchOptions = await suppressStdout(() => options.buildCloakLaunchOptions({
103
+ headless: options.headless,
104
+ stealthArgs: false,
105
+ args: options.args,
106
+ proxy,
107
+ geoip: true,
108
+ launchOptions: options.chromiumSandbox === undefined ? undefined : { chromiumSandbox: options.chromiumSandbox },
109
+ }));
110
+ return mergeLaunchArgs(options.args, extractGeoipMatchingArgs(launchOptions.args ?? []));
111
+ }
112
+ function shouldMatchProxyGeoip(env, explicit) {
113
+ return explicit ?? envBool(env, 'CLOAK_PLAYWRIGHT_MCP_GEOIP_PROXY_MATCH', false);
114
+ }
115
+ function shouldHumanize(env, explicit) {
116
+ return explicit ?? envBool(env, 'CLOAK_PLAYWRIGHT_MCP_HUMANIZE', false);
117
+ }
118
+ export function parseHumanPreset(value) {
119
+ if (isHumanPreset(value))
120
+ return value;
121
+ throw new Error(`CLOAK_PLAYWRIGHT_MCP_HUMAN_PRESET must be "default" or "careful", got "${value}"`);
122
+ }
123
+ function isHumanPreset(value) {
124
+ return humanPresets.includes(value);
125
+ }
126
+ function resolveHumanizeInitPagePath() {
127
+ return fileURLToPath(new URL('../runtime/humanize-init-page.cjs', import.meta.url));
128
+ }
129
+ function resolveConfiguredProxy(env, args, runtimeProxy) {
130
+ if (runtimeProxy)
131
+ return runtimeProxy.bypass
132
+ ? parseProxyOption(runtimeProxy.server, runtimeProxy.bypass)
133
+ : parseProxyOption(runtimeProxy.server);
134
+ const envProxyServer = optionalEnvString(env, 'PLAYWRIGHT_MCP_PROXY_SERVER');
135
+ if (envProxyServer) {
136
+ const bypass = optionalEnvString(env, 'PLAYWRIGHT_MCP_PROXY_BYPASS');
137
+ return bypass ? parseProxyOption(envProxyServer, bypass) : parseProxyOption(envProxyServer);
138
+ }
139
+ const argProxyServer = findLaunchArgValue(args, '--proxy-server');
140
+ if (!argProxyServer)
141
+ return undefined;
142
+ const bypass = findLaunchArgValue(args, '--proxy-bypass-list');
143
+ return bypass ? parseProxyOption(argProxyServer, bypass) : parseProxyOption(argProxyServer);
144
+ }
145
+ function parseProxyOption(server, bypass) {
146
+ const parsed = parseProxyServer(server);
147
+ return bypass === undefined ? parsed : { ...parsed, bypass };
148
+ }
149
+ function parseProxyServer(server) {
150
+ try {
151
+ const url = new URL(ensureProxyServerScheme(server));
152
+ const username = decodeUrlCredential(url.username);
153
+ const password = decodeUrlCredential(url.password);
154
+ if (username === undefined && password === undefined)
155
+ return { server };
156
+ return {
157
+ server: `${url.protocol}//${url.host}`,
158
+ ...(username === undefined ? {} : { username }),
159
+ ...(password === undefined ? {} : { password }),
160
+ };
161
+ }
162
+ catch {
163
+ return { server };
164
+ }
165
+ }
166
+ function ensureProxyServerScheme(server) {
167
+ return /^[a-z][a-z0-9+.-]*:\/\//iu.test(server) ? server : `http://${server}`;
168
+ }
169
+ function decodeUrlCredential(value) {
170
+ return value ? decodeURIComponent(value) : undefined;
171
+ }
172
+ function hasProxyCredentials(server) {
173
+ const parsed = parseProxyServer(server);
174
+ return parsed.username !== undefined || parsed.password !== undefined;
175
+ }
176
+ function extractGeoipMatchingArgs(args) {
177
+ return args.filter((arg) => ['--fingerprint-timezone=', '--lang=', '--fingerprint-locale='].some((prefix) => arg.startsWith(prefix)));
178
+ }
179
+ function mergeLaunchArgs(args, replacements) {
180
+ const replacementByKey = new Map(replacements.map((replacement) => [launchArgKey(replacement), replacement]));
181
+ const result = [];
182
+ const replacedKeys = new Set();
183
+ for (const arg of args) {
184
+ const key = launchArgKey(arg);
185
+ const replacement = replacementByKey.get(key);
186
+ if (replacement === undefined) {
187
+ result.push(arg);
188
+ }
189
+ else if (!replacedKeys.has(key)) {
190
+ result.push(replacement);
191
+ replacedKeys.add(key);
192
+ }
193
+ }
194
+ for (const replacement of replacements) {
195
+ const key = launchArgKey(replacement);
196
+ if (!replacedKeys.has(key)) {
197
+ result.push(replacement);
198
+ replacedKeys.add(key);
199
+ }
200
+ }
201
+ return result;
202
+ }
203
+ function findLaunchArgValue(args, name) {
204
+ const prefix = `${name}=`;
205
+ return args.find((arg) => arg.startsWith(prefix))?.slice(prefix.length);
206
+ }
207
+ function launchArgKey(arg) {
208
+ return arg.split('=')[0] ?? arg;
209
+ }
210
+ function optionalEnvString(env, name) {
211
+ const value = env[name]?.trim();
212
+ return value ? value : undefined;
213
+ }
214
+ export function createChildEnv(env, outputDir, runtimeProxy, headless = envBool(env, 'PLAYWRIGHT_MCP_HEADLESS', true), humanPreset = parseHumanPreset(envString(env, 'CLOAK_PLAYWRIGHT_MCP_HUMAN_PRESET', 'default'))) {
77
215
  const result = {};
78
216
  for (const [key, value] of Object.entries(env)) {
79
217
  if (typeof value === 'string')
80
218
  result[key] = value;
81
219
  }
82
- result.PLAYWRIGHT_MCP_HEADLESS = envString(env, 'PLAYWRIGHT_MCP_HEADLESS', 'true');
220
+ result.PLAYWRIGHT_MCP_HEADLESS = String(headless);
221
+ result.CLOAK_PLAYWRIGHT_MCP_HUMAN_PRESET = humanPreset;
83
222
  result.PLAYWRIGHT_MCP_OUTPUT_DIR = outputDir;
84
223
  result.PLAYWRIGHT_MCP_OUTPUT_MODE = envString(env, 'PLAYWRIGHT_MCP_OUTPUT_MODE', 'stdout');
85
224
  result.PLAYWRIGHT_MCP_TIMEOUT_ACTION = String(envInt(env, 'PLAYWRIGHT_MCP_TIMEOUT_ACTION', 5000));
86
225
  result.PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION = String(envInt(env, 'PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION', 60000));
87
226
  result.CLOAKBROWSER_AUTO_UPDATE = envString(env, 'CLOAKBROWSER_AUTO_UPDATE', 'false');
227
+ const envProxyServer = optionalEnvString(env, 'PLAYWRIGHT_MCP_PROXY_SERVER');
228
+ if (runtimeProxy === undefined && envProxyServer !== undefined && hasProxyCredentials(envProxyServer)) {
229
+ removeProxyEnv(result);
230
+ }
231
+ if (runtimeProxy)
232
+ applyRuntimeProxyEnv(result, runtimeProxy);
88
233
  return result;
89
234
  }
235
+ function applyRuntimeProxyEnv(env, proxy) {
236
+ env.PLAYWRIGHT_MCP_PROXY_SERVER = proxy.server;
237
+ if (proxy.bypass === undefined)
238
+ delete env.PLAYWRIGHT_MCP_PROXY_BYPASS;
239
+ else
240
+ env.PLAYWRIGHT_MCP_PROXY_BYPASS = proxy.bypass;
241
+ if (hasProxyCredentials(proxy.server))
242
+ removeProxyEnv(env);
243
+ }
244
+ function removeProxyEnv(env) {
245
+ delete env.PLAYWRIGHT_MCP_PROXY_SERVER;
246
+ delete env.PLAYWRIGHT_MCP_PROXY_BYPASS;
247
+ }
90
248
  export function getCurrentCloakBinaryInfo() {
91
249
  return binaryInfo();
92
250
  }
@@ -97,13 +255,29 @@ function parseBrowserEngine(value) {
97
255
  }
98
256
  async function suppressStdout(fn) {
99
257
  const stdout = process.stdout;
100
- const write = stdout.write.bind(stdout);
101
- process.stdout.write = (() => true);
258
+ if (stdoutSuppressionDepth === 0) {
259
+ suppressedStdoutWrite = Reflect.get(stdout, 'write');
260
+ process.stdout.write = suppressedProcessStdoutWrite;
261
+ }
262
+ stdoutSuppressionDepth += 1;
102
263
  try {
103
264
  return await fn();
104
265
  }
105
266
  finally {
106
- process.stdout.write = write;
267
+ stdoutSuppressionDepth -= 1;
268
+ if (stdoutSuppressionDepth === 0) {
269
+ const write = suppressedStdoutWrite;
270
+ suppressedStdoutWrite = undefined;
271
+ if (write)
272
+ process.stdout.write = write;
273
+ }
107
274
  }
108
275
  }
276
+ let stdoutSuppressionDepth = 0;
277
+ let suppressedStdoutWrite;
278
+ function suppressedProcessStdoutWrite(_chunk, encodingOrCallback, callback) {
279
+ const writeCallback = typeof encodingOrCallback === 'function' ? encodingOrCallback : callback;
280
+ writeCallback?.();
281
+ return true;
282
+ }
109
283
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/bridge/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/bridge/config.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,5 @@ export declare function envBool(env: EnvReader, name: string, fallback: boolean)
4
4
  export declare function envInt(env: EnvReader, name: string, fallback: number): number;
5
5
  export declare function envList(env: EnvReader, name: string, fallback?: string): string[];
6
6
  export declare function appendNodeOption(existing: string | undefined, option: string): string;
7
+ export declare function quoteNodeOptionValue(value: string): string;
7
8
  //# sourceMappingURL=env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/bridge/env.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAErE,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAIhF;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM7E;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,EAAE,CAc7E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAErF"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/bridge/env.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAErE,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAIhF;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM7E;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,EAAE,CAc7E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAErF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"}
@@ -35,4 +35,7 @@ export function envList(env, name, fallback = '') {
35
35
  export function appendNodeOption(existing, option) {
36
36
  return existing ? `${existing} ${option}` : option;
37
37
  }
38
+ export function quoteNodeOptionValue(value) {
39
+ return /\s/u.test(value) ? `"${value.replaceAll('"', '\\"')}"` : value;
40
+ }
38
41
  //# sourceMappingURL=env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/bridge/env.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAC,GAAc,EAAE,IAAY,EAAE,QAAgB;IACtE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAc,EAAE,IAAY,EAAE,QAAiB;IACrE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACzC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAc,EAAE,IAAY,EAAE,QAAgB;IACnE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,6BAA6B,KAAK,GAAG,CAAC,CAAC;IAC7F,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAc,EAAE,IAAY,EAAE,QAAQ,GAAG,EAAE;IACjE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;IAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAA4B,EAAE,MAAc;IAC3E,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/bridge/env.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAC,GAAc,EAAE,IAAY,EAAE,QAAgB;IACtE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAc,EAAE,IAAY,EAAE,QAAiB;IACrE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACzC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAc,EAAE,IAAY,EAAE,QAAgB;IACnE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,6BAA6B,KAAK,GAAG,CAAC,CAAC;IAC7F,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAc,EAAE,IAAY,EAAE,QAAQ,GAAG,EAAE;IACjE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;IAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAA4B,EAAE,MAAc;IAC3E,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AACzE,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import type { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
2
- import { type BridgeRuntime } from './config.js';
2
+ import { type BridgeRuntime } from '#src/bridge/config';
3
+ export declare const LOCAL_TOOL_BINARY_INFO: "cloakbrowser_binary_info";
4
+ export declare const LOCAL_TOOL_BRIDGE_INFO: "cloakbrowser_bridge_info";
3
5
  export declare const localToolNames: readonly ["cloakbrowser_binary_info", "cloakbrowser_bridge_info"];
4
6
  export type LocalToolName = (typeof localToolNames)[number];
5
7
  export declare function createLocalTools(): Tool[];
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/bridge/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAS5E,eAAO,MAAM,cAAc,mEAAoE,CAAC;AAGhG,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAiC5D,wBAAgB,gBAAgB,IAAI,IAAI,EAAE,CAEzC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,aAAa,CAE/D;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,aAAa,EACtB,iBAAiB,EAAE,MAAM,GACxB,cAAc,CA0BhB"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/bridge/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASnF,eAAO,MAAM,sBAAsB,EAAG,0BAAmC,CAAC;AAC1E,eAAO,MAAM,sBAAsB,EAAG,0BAAmC,CAAC;AAC1E,eAAO,MAAM,cAAc,mEAA4D,CAAC;AAGxF,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAiC5D,wBAAgB,gBAAgB,IAAI,IAAI,EAAE,CAEzC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,aAAa,CAE/D;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,aAAa,EACtB,iBAAiB,EAAE,MAAM,GACxB,cAAc,CA0BhB"}