cloakbrowser-mcp 1.2.7 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -17
- package/dist/bridge/config.d.ts +1 -1
- package/dist/bridge/config.d.ts.map +1 -1
- package/dist/bridge/config.js +4 -4
- package/dist/bridge/config.js.map +1 -1
- package/dist/bridge/env.d.ts +1 -0
- package/dist/bridge/env.d.ts.map +1 -1
- package/dist/bridge/env.js +3 -0
- package/dist/bridge/env.js.map +1 -1
- package/dist/bridge/tools.d.ts +3 -1
- package/dist/bridge/tools.d.ts.map +1 -1
- package/dist/bridge/tools.js +8 -6
- package/dist/bridge/tools.js.map +1 -1
- package/dist/cli/doctor.d.ts +31 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +157 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/options.d.ts +13 -2
- package/dist/cli/options.d.ts.map +1 -1
- package/dist/cli/options.js +103 -5
- package/dist/cli/options.js.map +1 -1
- package/dist/cli.js +26 -7
- package/dist/cli.js.map +1 -1
- package/dist/http/nodeServer.d.ts +9 -0
- package/dist/http/nodeServer.d.ts.map +1 -0
- package/dist/http/nodeServer.js +65 -0
- package/dist/http/nodeServer.js.map +1 -0
- package/dist/http/options.d.ts +20 -2
- package/dist/http/options.d.ts.map +1 -1
- package/dist/http/options.js +20 -4
- package/dist/http/options.js.map +1 -1
- package/dist/http/requests.d.ts +11 -0
- package/dist/http/requests.d.ts.map +1 -0
- package/dist/http/requests.js +54 -0
- package/dist/http/requests.js.map +1 -0
- package/dist/http/responses.d.ts +6 -0
- package/dist/http/responses.d.ts.map +1 -0
- package/dist/http/responses.js +24 -0
- package/dist/http/responses.js.map +1 -0
- package/dist/http/server.d.ts +5 -3
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +95 -102
- package/dist/http/server.js.map +1 -1
- package/dist/http/sessionStore.d.ts +3 -1
- package/dist/http/sessionStore.d.ts.map +1 -1
- package/dist/http/sessionStore.js +8 -5
- package/dist/http/sessionStore.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/logging/logger.d.ts +17 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +107 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/protocol/constants.d.ts +5 -0
- package/dist/protocol/constants.d.ts.map +1 -0
- package/dist/protocol/constants.js +5 -0
- package/dist/protocol/constants.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.js +4 -4
- package/package.json +36 -21
- package/server.json +5 -5
package/README.md
CHANGED
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
[](https://glama.ai/mcp/servers/swimmwatch/cloakbrowser-mcp)
|
|
17
17
|
[](https://www.npmjs.com/package/cloakbrowser-mcp)
|
|
18
18
|
[](https://hub.docker.com/r/swimmwatch/cloakbrowser-mcp)
|
|
19
|
-
[](https://nodejs.org/)
|
|
20
|
+
[](docs/version-compatibility.md)
|
|
21
|
+
[](https://codeguilds.dev/packages/cloakbrowser-mcp)
|
|
20
22
|
[](https://modelcontextprotocol.io/)
|
|
21
23
|
[](docs/docker.md)
|
|
22
24
|
[](LICENSE)
|
|
@@ -25,6 +27,8 @@
|
|
|
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,19 +38,25 @@ The server is intentionally thin:
|
|
|
34
38
|
|
|
35
39
|
## Version compatibility
|
|
36
40
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
| `1.
|
|
42
|
-
| `1.
|
|
43
|
-
| `1.2.
|
|
44
|
-
| `1.2.
|
|
45
|
-
| `1.2.
|
|
46
|
-
| `1.
|
|
47
|
-
| `1.
|
|
48
|
-
| `1.
|
|
49
|
-
| `1.
|
|
41
|
+
<!-- compatibility-table:start -->
|
|
42
|
+
|
|
43
|
+
| cloakbrowser-mcp | @playwright/mcp | CloakBrowser | Node.js | Platform |
|
|
44
|
+
| ---------------- | --------------- | ------------ | --------- | ----------------------------------------------------------------------------------------- |
|
|
45
|
+
| `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` |
|
|
46
|
+
| `1.3.0` | `^0.0.75` | `^0.3.31` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
47
|
+
| `1.2.7` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
48
|
+
| `1.2.6` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
49
|
+
| `1.2.5` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
50
|
+
| `1.2.3` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
51
|
+
| `1.2.2` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
52
|
+
| `1.2.1` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
53
|
+
| `1.2.0` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
54
|
+
| `1.1.0` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
55
|
+
| `1.0.2` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
56
|
+
| `1.0.1` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
57
|
+
| `1.0.0` | `^0.0.75` | `^0.3.30` | `>=20` | Docker `linux/amd64`, Node.js local |
|
|
58
|
+
|
|
59
|
+
<!-- compatibility-table:end -->
|
|
50
60
|
|
|
51
61
|
See [Version Compatibility](docs/version-compatibility.md) for the maintained compatibility table.
|
|
52
62
|
|
|
@@ -66,12 +76,16 @@ Use `npm run registry:check:strict` only when GitHub MCP listing visibility shou
|
|
|
66
76
|
|
|
67
77
|
```bash
|
|
68
78
|
npx -y cloakbrowser-mcp@latest --help
|
|
79
|
+
npx -y cloakbrowser-mcp@latest doctor
|
|
80
|
+
npx -y cloakbrowser-mcp@latest doctor --json
|
|
69
81
|
npx -y cloakbrowser-mcp@latest
|
|
70
82
|
npx -y cloakbrowser-mcp@latest --transport streamable-http --http-port 3000
|
|
83
|
+
npx -y cloakbrowser-mcp@latest --transport streamable-http --http-protocol https --https-cert ./cert.pem --https-key ./key.pem
|
|
71
84
|
```
|
|
72
85
|
|
|
73
|
-
Requires Node.js
|
|
74
|
-
|
|
86
|
+
Requires Node.js 22.12 or newer. The first real browser action may download the CloakBrowser binary unless it is already cached.
|
|
87
|
+
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.
|
|
88
|
+
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.
|
|
75
89
|
For the complete generated CLI flag reference, see the published [CLI Reference](https://swimmwatch.github.io/cloakbrowser-mcp/generated/cli/).
|
|
76
90
|
|
|
77
91
|
## Run from Docker
|
|
@@ -86,9 +100,23 @@ docker run --rm --init -p 127.0.0.1:3000:3000 \
|
|
|
86
100
|
-v "$PWD/artifacts:/data" \
|
|
87
101
|
swimmwatch/cloakbrowser-mcp:latest \
|
|
88
102
|
--transport streamable-http --http-host 0.0.0.0 --http-port 3000
|
|
103
|
+
|
|
104
|
+
curl http://127.0.0.1:3000/healthz
|
|
105
|
+
curl http://127.0.0.1:3000/readyz
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
For direct HTTPS from the container, mount your TLS files and select HTTPS:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
docker run --rm --init -p 127.0.0.1:3000:3000 \
|
|
112
|
+
-v "$PWD/artifacts:/data" \
|
|
113
|
+
-v "$PWD/certs:/certs:ro" \
|
|
114
|
+
swimmwatch/cloakbrowser-mcp:latest \
|
|
115
|
+
--transport streamable-http --http-host 0.0.0.0 --http-port 3000 \
|
|
116
|
+
--http-protocol https --https-cert /certs/cert.pem --https-key /certs/key.pem
|
|
89
117
|
```
|
|
90
118
|
|
|
91
|
-
The Docker image is based on the pinned official Playwright MCP image, installs the bridge under `/opt/cloakbrowser-mcp`,
|
|
119
|
+
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`.
|
|
92
120
|
The same tags are also published to `ghcr.io/swimmwatch/cloakbrowser-mcp`.
|
|
93
121
|
|
|
94
122
|
## MCP client configuration
|
|
@@ -141,6 +169,7 @@ Common variables:
|
|
|
141
169
|
| Variable | Default | Description |
|
|
142
170
|
| --- | --- | --- |
|
|
143
171
|
| `CLOAK_PLAYWRIGHT_MCP_TRANSPORT` | `stdio` | MCP transport exposed by the bridge: `stdio` or `streamable-http`. |
|
|
172
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTP_PROTOCOL` | `http` | Streamable HTTP listener protocol: `http` or `https`. |
|
|
144
173
|
| `CLOAK_PLAYWRIGHT_MCP_HTTP_HOST` | `127.0.0.1` | Streamable HTTP bind host. |
|
|
145
174
|
| `CLOAK_PLAYWRIGHT_MCP_HTTP_PORT` | `3000` | Streamable HTTP bind port. |
|
|
146
175
|
| `CLOAK_PLAYWRIGHT_MCP_HTTP_ENDPOINT` | `/mcp` | Streamable HTTP endpoint path. |
|
|
@@ -148,6 +177,11 @@ Common variables:
|
|
|
148
177
|
| `CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_BACKEND` | `memory` | Session metadata backend. Only `memory` is implemented in this release. |
|
|
149
178
|
| `CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_IDLE_TTL_MS` | `3600000` | Idle TTL for Streamable HTTP sessions. |
|
|
150
179
|
| `CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_MAX` | `32` | Maximum active Streamable HTTP sessions in one process. |
|
|
180
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTPS_CERT` | unset | TLS certificate PEM path for HTTPS Streamable HTTP. |
|
|
181
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTPS_KEY` | unset | TLS private key PEM path for HTTPS Streamable HTTP. |
|
|
182
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTPS_PFX` | unset | TLS PFX/PKCS12 path for HTTPS Streamable HTTP. |
|
|
183
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTPS_PASSPHRASE` | unset | Passphrase for an encrypted HTTPS key or PFX. |
|
|
184
|
+
| `CLOAK_PLAYWRIGHT_MCP_LOG_LEVEL` | `info` | Streamable HTTP operational log level: `trace`, `debug`, `info`, `warn`, `error`, `fatal`, or `silent`. |
|
|
151
185
|
| `PLAYWRIGHT_MCP_BROWSER_ENGINE` | `cloak` | `cloak` uses CloakBrowser. `playwright` uses the upstream Playwright MCP browser runtime. |
|
|
152
186
|
| `PLAYWRIGHT_MCP_HEADLESS` | `true` | Runs Chromium headless. |
|
|
153
187
|
| `PLAYWRIGHT_MCP_OUTPUT_DIR` | `.playwright-mcp` | Artifact directory for npm usage. Docker defaults to `/data`. |
|
package/dist/bridge/config.d.ts
CHANGED
|
@@ -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,
|
|
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,EAOL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AAIzB,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,CA+DxB;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"}
|
package/dist/bridge/config.js
CHANGED
|
@@ -2,9 +2,9 @@ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
|
2
2
|
import { tmpdir } from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { binaryInfo, ensureBinary, getDefaultStealthArgs } from 'cloakbrowser';
|
|
5
|
-
import { appendNodeOption, envBool, envInt, envList, envString } from '
|
|
6
|
-
import { resolvePlaywrightCoreBundlePath } from '
|
|
7
|
-
import { consoleFallbackInitScript, consoleFallbackPreloadScript } from '
|
|
5
|
+
import { appendNodeOption, envBool, envInt, envList, envString, quoteNodeOptionValue, } from '#src/bridge/env';
|
|
6
|
+
import { resolvePlaywrightCoreBundlePath } from '#src/bridge/paths';
|
|
7
|
+
import { consoleFallbackInitScript, consoleFallbackPreloadScript } from '#src/runtime/consoleFallback';
|
|
8
8
|
const ignoredAutomationArgs = ['--enable-automation', '--enable-unsafe-swiftshader'];
|
|
9
9
|
export async function prepareBridgeRuntime(options = {}) {
|
|
10
10
|
const env = options.env ?? process.env;
|
|
@@ -43,7 +43,7 @@ export async function prepareBridgeRuntime(options = {}) {
|
|
|
43
43
|
writeFileSync(initScriptPath, consoleFallbackInitScript);
|
|
44
44
|
writeFileSync(preloadPath, consoleFallbackPreloadScript(resolvePlaywrightCoreBundlePath()));
|
|
45
45
|
config.browser.initScript = [...(config.browser.initScript ?? []), initScriptPath];
|
|
46
|
-
childEnv.NODE_OPTIONS = appendNodeOption(childEnv.NODE_OPTIONS, `--require=${preloadPath}`);
|
|
46
|
+
childEnv.NODE_OPTIONS = appendNodeOption(childEnv.NODE_OPTIONS, `--require=${quoteNodeOptionValue(preloadPath)}`);
|
|
47
47
|
}
|
|
48
48
|
const configPath = path.join(tempDir, 'playwright-mcp.config.json');
|
|
49
49
|
writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/bridge/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/bridge/config.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge/env.d.ts
CHANGED
|
@@ -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
|
package/dist/bridge/env.d.ts.map
CHANGED
|
@@ -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"}
|
package/dist/bridge/env.js
CHANGED
|
@@ -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
|
package/dist/bridge/env.js.map
CHANGED
|
@@ -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"}
|
package/dist/bridge/tools.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
-
import { type BridgeRuntime } from '
|
|
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,
|
|
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"}
|
package/dist/bridge/tools.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { getCurrentCloakBinaryInfo } from '
|
|
2
|
-
import { CLOAKBROWSER_TOOL_COUNT, PLAYWRIGHT_MCP_BROWSER_TOOL_COUNT, PLAYWRIGHT_MCP_PACKAGE, PLAYWRIGHT_MCP_VERSION, PROJECT_METADATA, } from '
|
|
3
|
-
export const
|
|
1
|
+
import { getCurrentCloakBinaryInfo } from '#src/bridge/config';
|
|
2
|
+
import { CLOAKBROWSER_TOOL_COUNT, PLAYWRIGHT_MCP_BROWSER_TOOL_COUNT, PLAYWRIGHT_MCP_PACKAGE, PLAYWRIGHT_MCP_VERSION, PROJECT_METADATA, } from '#src/project/metadata';
|
|
3
|
+
export const LOCAL_TOOL_BINARY_INFO = 'cloakbrowser_binary_info';
|
|
4
|
+
export const LOCAL_TOOL_BRIDGE_INFO = 'cloakbrowser_bridge_info';
|
|
5
|
+
export const localToolNames = [LOCAL_TOOL_BINARY_INFO, LOCAL_TOOL_BRIDGE_INFO];
|
|
4
6
|
const localToolNameSet = new Set(localToolNames);
|
|
5
7
|
const emptyInputSchema = {
|
|
6
8
|
type: 'object',
|
|
@@ -9,7 +11,7 @@ const emptyInputSchema = {
|
|
|
9
11
|
};
|
|
10
12
|
const localTools = [
|
|
11
13
|
{
|
|
12
|
-
name:
|
|
14
|
+
name: LOCAL_TOOL_BINARY_INFO,
|
|
13
15
|
title: 'CloakBrowser binary info',
|
|
14
16
|
description: 'Return CloakBrowser package, cache, platform, and resolved browser binary information.',
|
|
15
17
|
inputSchema: emptyInputSchema,
|
|
@@ -20,7 +22,7 @@ const localTools = [
|
|
|
20
22
|
},
|
|
21
23
|
},
|
|
22
24
|
{
|
|
23
|
-
name:
|
|
25
|
+
name: LOCAL_TOOL_BRIDGE_INFO,
|
|
24
26
|
title: 'CloakBrowser bridge info',
|
|
25
27
|
description: 'Return runtime metadata for the CloakBrowser bridge over upstream Playwright MCP.',
|
|
26
28
|
inputSchema: emptyInputSchema,
|
|
@@ -38,7 +40,7 @@ export function isLocalTool(name) {
|
|
|
38
40
|
return localToolNameSet.has(name);
|
|
39
41
|
}
|
|
40
42
|
export function callLocalTool(name, runtime, upstreamToolCount) {
|
|
41
|
-
if (name ===
|
|
43
|
+
if (name === LOCAL_TOOL_BINARY_INFO) {
|
|
42
44
|
return jsonResult({
|
|
43
45
|
browserEngine: runtime.browserEngine,
|
|
44
46
|
executablePath: runtime.cloakBinaryPath ?? null,
|
package/dist/bridge/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/bridge/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAsB,MAAM,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/bridge/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAsB,MAAM,oBAAoB,CAAC;AACnF,OAAO,EACL,uBAAuB,EACvB,iCAAiC,EACjC,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAAmC,CAAC;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAAmC,CAAC;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,sBAAsB,EAAE,sBAAsB,CAAU,CAAC;AACxF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;AAIzD,MAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,EAAE;IACd,oBAAoB,EAAE,KAAK;CACnB,CAAC;AAEX,MAAM,UAAU,GAAW;IACzB;QACE,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,wFAAwF;QACrG,WAAW,EAAE,gBAAgB;QAC7B,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,mFAAmF;QAChG,WAAW,EAAE,gBAAgB;QAC7B,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,gBAAgB;IAC9B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,IAAmB,EACnB,OAAsB,EACtB,iBAAyB;IAEzB,IAAI,IAAI,KAAK,sBAAsB,EAAE,CAAC;QACpC,OAAO,UAAU,CAAC;YAChB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,cAAc,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI;YAC/C,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,yBAAyB,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,gBAAgB,CAAC,KAAK;QAC7B,OAAO,EAAE,gBAAgB,CAAC,OAAO;QACjC,OAAO,EAAE,uBAAuB;QAChC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,QAAQ,EAAE;YACR,OAAO,EAAE,sBAAsB;YAC/B,OAAO,EAAE,sBAAsB;YAC/B,SAAS,EAAE,iBAAiB,IAAI,iCAAiC;SAClE;QACD,UAAU,EAAE;YACV,SAAS,EAAE,uBAAuB;YAClC,KAAK,EAAE,cAAc;SACtB;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,KAA8B;IAChD,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACjE,iBAAiB,EAAE,KAAK;KACzB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getCurrentCloakBinaryInfo } from '#src/bridge/config';
|
|
2
|
+
export type DoctorStatus = 'ok' | 'warning' | 'error';
|
|
3
|
+
export interface DoctorCheck {
|
|
4
|
+
name: string;
|
|
5
|
+
status: DoctorStatus;
|
|
6
|
+
message: string;
|
|
7
|
+
details?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export interface DoctorReport {
|
|
10
|
+
status: DoctorStatus;
|
|
11
|
+
project: {
|
|
12
|
+
packageName: string;
|
|
13
|
+
mcpName: string;
|
|
14
|
+
version: string;
|
|
15
|
+
nodeEngine: string;
|
|
16
|
+
};
|
|
17
|
+
node: {
|
|
18
|
+
version: string;
|
|
19
|
+
supported: boolean;
|
|
20
|
+
};
|
|
21
|
+
upstream: {
|
|
22
|
+
package: string;
|
|
23
|
+
version: string;
|
|
24
|
+
cliPath: string | null;
|
|
25
|
+
};
|
|
26
|
+
cloakbrowser: ReturnType<typeof getCurrentCloakBinaryInfo> | null;
|
|
27
|
+
checks: DoctorCheck[];
|
|
28
|
+
}
|
|
29
|
+
export declare function createDoctorReport(): DoctorReport;
|
|
30
|
+
export declare function renderDoctorReport(report: DoctorReport): string;
|
|
31
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAI/D,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC;IACF,YAAY,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,GAAG,IAAI,CAAC;IAClE,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AA6BD,wBAAgB,kBAAkB,IAAI,YAAY,CAoFjD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAU/D"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import { getCurrentCloakBinaryInfo } from '#src/bridge/config';
|
|
4
|
+
import { resolvePlaywrightMcpCliPath } from '#src/bridge/paths';
|
|
5
|
+
import { PLAYWRIGHT_MCP_PACKAGE, PLAYWRIGHT_MCP_VERSION, PROJECT_METADATA } from '#src/project/metadata';
|
|
6
|
+
const packageMetadata = JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf8'));
|
|
7
|
+
const doctorReportTemplate = `CloakBrowser MCP doctor
|
|
8
|
+
Status: {{status}}
|
|
9
|
+
Project: {{project}}
|
|
10
|
+
Node.js: {{node}}
|
|
11
|
+
Upstream: {{upstream}}
|
|
12
|
+
Upstream CLI: {{upstreamCli}}
|
|
13
|
+
CloakBrowser: {{cloakbrowser}}
|
|
14
|
+
|
|
15
|
+
Checks:
|
|
16
|
+
{{checks}}
|
|
17
|
+
`;
|
|
18
|
+
export function createDoctorReport() {
|
|
19
|
+
const checks = [];
|
|
20
|
+
const nodeEngine = packageMetadata.engines?.node ?? 'unknown';
|
|
21
|
+
const nodeSupported = isNodeVersionSupported(process.versions.node, nodeEngine);
|
|
22
|
+
checks.push({
|
|
23
|
+
name: 'node',
|
|
24
|
+
status: nodeSupported ? 'ok' : 'error',
|
|
25
|
+
message: nodeSupported
|
|
26
|
+
? `Node.js ${process.version} satisfies ${nodeEngine}`
|
|
27
|
+
: `Node.js ${process.version} does not satisfy ${nodeEngine}`,
|
|
28
|
+
details: {
|
|
29
|
+
version: process.version,
|
|
30
|
+
required: nodeEngine,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
let playwrightMcpCliPath = null;
|
|
34
|
+
try {
|
|
35
|
+
playwrightMcpCliPath = resolvePlaywrightMcpCliPath();
|
|
36
|
+
checks.push({
|
|
37
|
+
name: 'playwright-mcp-cli',
|
|
38
|
+
status: existsSync(playwrightMcpCliPath) ? 'ok' : 'error',
|
|
39
|
+
message: existsSync(playwrightMcpCliPath)
|
|
40
|
+
? `Resolved ${PLAYWRIGHT_MCP_PACKAGE} CLI`
|
|
41
|
+
: `Resolved ${PLAYWRIGHT_MCP_PACKAGE} CLI path does not exist`,
|
|
42
|
+
details: {
|
|
43
|
+
package: PLAYWRIGHT_MCP_PACKAGE,
|
|
44
|
+
version: PLAYWRIGHT_MCP_VERSION,
|
|
45
|
+
cliPath: playwrightMcpCliPath,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
checks.push({
|
|
51
|
+
name: 'playwright-mcp-cli',
|
|
52
|
+
status: 'error',
|
|
53
|
+
message: error instanceof Error ? error.message : 'Failed to resolve Playwright MCP CLI',
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
let cloakbrowser = null;
|
|
57
|
+
try {
|
|
58
|
+
cloakbrowser = getCurrentCloakBinaryInfo();
|
|
59
|
+
checks.push({
|
|
60
|
+
name: 'cloakbrowser-binary',
|
|
61
|
+
status: cloakbrowser.installed ? 'ok' : 'warning',
|
|
62
|
+
message: cloakbrowser.installed
|
|
63
|
+
? 'CloakBrowser binary is installed'
|
|
64
|
+
: 'CloakBrowser binary is not installed; the first browser action may download it',
|
|
65
|
+
details: {
|
|
66
|
+
version: cloakbrowser.version,
|
|
67
|
+
platform: cloakbrowser.platform,
|
|
68
|
+
binaryPath: cloakbrowser.binaryPath,
|
|
69
|
+
cacheDir: cloakbrowser.cacheDir,
|
|
70
|
+
installed: cloakbrowser.installed,
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
checks.push({
|
|
76
|
+
name: 'cloakbrowser-binary',
|
|
77
|
+
status: 'error',
|
|
78
|
+
message: error instanceof Error ? error.message : 'Failed to read CloakBrowser binary metadata',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
status: summarizeStatus(checks),
|
|
83
|
+
project: {
|
|
84
|
+
packageName: PROJECT_METADATA.packageName,
|
|
85
|
+
mcpName: PROJECT_METADATA.mcpName,
|
|
86
|
+
version: PROJECT_METADATA.version,
|
|
87
|
+
nodeEngine,
|
|
88
|
+
},
|
|
89
|
+
node: {
|
|
90
|
+
version: process.version,
|
|
91
|
+
supported: nodeSupported,
|
|
92
|
+
},
|
|
93
|
+
upstream: {
|
|
94
|
+
package: PLAYWRIGHT_MCP_PACKAGE,
|
|
95
|
+
version: PLAYWRIGHT_MCP_VERSION,
|
|
96
|
+
cliPath: playwrightMcpCliPath,
|
|
97
|
+
},
|
|
98
|
+
cloakbrowser,
|
|
99
|
+
checks,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export function renderDoctorReport(report) {
|
|
103
|
+
return formatDoctorReportTemplate({
|
|
104
|
+
status: report.status,
|
|
105
|
+
project: `${report.project.packageName} ${report.project.version} (${report.project.mcpName})`,
|
|
106
|
+
node: `${report.node.version} (requires ${report.project.nodeEngine})`,
|
|
107
|
+
upstream: `${report.upstream.package} ${report.upstream.version}`,
|
|
108
|
+
upstreamCli: report.upstream.cliPath ?? 'unresolved',
|
|
109
|
+
cloakbrowser: formatCloakbrowserSummary(report),
|
|
110
|
+
checks: report.checks.map((check) => `- [${check.status}] ${check.name}: ${check.message}`).join('\n'),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
function formatCloakbrowserSummary(report) {
|
|
114
|
+
if (!report.cloakbrowser)
|
|
115
|
+
return 'unavailable';
|
|
116
|
+
const installed = report.cloakbrowser.installed ? 'installed' : 'not installed';
|
|
117
|
+
return `${report.cloakbrowser.version} (${report.cloakbrowser.platform}, ${installed})`;
|
|
118
|
+
}
|
|
119
|
+
function formatDoctorReportTemplate(values) {
|
|
120
|
+
let output = doctorReportTemplate;
|
|
121
|
+
for (const [key, value] of Object.entries(values)) {
|
|
122
|
+
output = output.replaceAll(`{{${key}}}`, value);
|
|
123
|
+
}
|
|
124
|
+
return output;
|
|
125
|
+
}
|
|
126
|
+
function summarizeStatus(checks) {
|
|
127
|
+
if (checks.some((check) => check.status === 'error'))
|
|
128
|
+
return 'error';
|
|
129
|
+
if (checks.some((check) => check.status === 'warning'))
|
|
130
|
+
return 'warning';
|
|
131
|
+
return 'ok';
|
|
132
|
+
}
|
|
133
|
+
function isNodeVersionSupported(version, range) {
|
|
134
|
+
const minimum = parseMinimumNodeVersion(range);
|
|
135
|
+
if (!minimum)
|
|
136
|
+
return true;
|
|
137
|
+
return compareVersions(parseVersion(version), minimum) >= 0;
|
|
138
|
+
}
|
|
139
|
+
function parseMinimumNodeVersion(range) {
|
|
140
|
+
const match = /^>=\s*(\d+)(?:\.(\d+))?(?:\.(\d+))?$/.exec(range);
|
|
141
|
+
if (!match)
|
|
142
|
+
return undefined;
|
|
143
|
+
return [Number(match[1]), Number(match[2] ?? 0), Number(match[3] ?? 0)];
|
|
144
|
+
}
|
|
145
|
+
function parseVersion(version) {
|
|
146
|
+
const [major = '0', minor = '0', patch = '0'] = version.replace(/^v/, '').split('.');
|
|
147
|
+
return [Number(major), Number(minor), Number(patch)];
|
|
148
|
+
}
|
|
149
|
+
function compareVersions(actual, expected) {
|
|
150
|
+
for (const index of [0, 1, 2]) {
|
|
151
|
+
const difference = actual[index] - expected[index];
|
|
152
|
+
if (difference !== 0)
|
|
153
|
+
return difference;
|
|
154
|
+
}
|
|
155
|
+
return 0;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAsCzG,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAChC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAClD,CAAC;AAErB,MAAM,oBAAoB,GAAG;;;;;;;;;;CAU5B,CAAC;AAOF,MAAM,UAAU,kBAAkB;IAChC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,IAAI,SAAS,CAAC;IAC9D,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAChF,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;QACtC,OAAO,EAAE,aAAa;YACpB,CAAC,CAAC,WAAW,OAAO,CAAC,OAAO,cAAc,UAAU,EAAE;YACtD,CAAC,CAAC,WAAW,OAAO,CAAC,OAAO,qBAAqB,UAAU,EAAE;QAC/D,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,UAAU;SACrB;KACF,CAAC,CAAC;IAEH,IAAI,oBAAoB,GAAkB,IAAI,CAAC;IAC/C,IAAI,CAAC;QACH,oBAAoB,GAAG,2BAA2B,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;YACzD,OAAO,EAAE,UAAU,CAAC,oBAAoB,CAAC;gBACvC,CAAC,CAAC,YAAY,sBAAsB,MAAM;gBAC1C,CAAC,CAAC,YAAY,sBAAsB,0BAA0B;YAChE,OAAO,EAAE;gBACP,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE,oBAAoB;aAC9B;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sCAAsC;SACzF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,GAAwD,IAAI,CAAC;IAC7E,IAAI,CAAC;QACH,YAAY,GAAG,yBAAyB,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACjD,OAAO,EAAE,YAAY,CAAC,SAAS;gBAC7B,CAAC,CAAC,kCAAkC;gBACpC,CAAC,CAAC,gFAAgF;YACpF,OAAO,EAAE;gBACP,OAAO,EAAE,YAAY,CAAC,OAAO;gBAC7B,QAAQ,EAAE,YAAY,CAAC,QAAQ;gBAC/B,UAAU,EAAE,YAAY,CAAC,UAAU;gBACnC,QAAQ,EAAE,YAAY,CAAC,QAAQ;gBAC/B,SAAS,EAAE,YAAY,CAAC,SAAS;aAClC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,6CAA6C;SAChG,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE;YACP,WAAW,EAAE,gBAAgB,CAAC,WAAW;YACzC,OAAO,EAAE,gBAAgB,CAAC,OAAO;YACjC,OAAO,EAAE,gBAAgB,CAAC,OAAO;YACjC,UAAU;SACX;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,aAAa;SACzB;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,sBAAsB;YAC/B,OAAO,EAAE,sBAAsB;YAC/B,OAAO,EAAE,oBAAoB;SAC9B;QACD,YAAY;QACZ,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,OAAO,0BAA0B,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG;QAC9F,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,cAAc,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG;QACtE,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;QACjE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,YAAY;QACpD,YAAY,EAAE,yBAAyB,CAAC,MAAM,CAAC;QAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KACvG,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAoB;IACrD,IAAI,CAAC,MAAM,CAAC,YAAY;QAAE,OAAO,aAAa,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC;IAChF,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,KAAK,MAAM,CAAC,YAAY,CAAC,QAAQ,KAAK,SAAS,GAAG,CAAC;AAC1F,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAkC;IACpE,IAAI,MAAM,GAAG,oBAAoB,CAAC;IAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,MAA8B;IACrD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACrE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACzE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe,EAAE,KAAa;IAC5D,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,MAAM,KAAK,GAAG,sCAAsC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,MAAgC,EAAE,QAAkC;IAC3F,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,UAAU,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/dist/cli/options.d.ts
CHANGED
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import { type BridgeTransportMode, type CliOptions, type HttpSessionBackend } from '
|
|
2
|
+
import { type BridgeTransportMode, type CliOptions, type HttpProtocol, type HttpSessionBackend } from '#src/http/options';
|
|
3
3
|
export declare const cliDescription = "Playwright MCP bridge backed by CloakBrowser.";
|
|
4
4
|
interface CommanderCliOptions {
|
|
5
5
|
transport: BridgeTransportMode;
|
|
6
|
+
httpProtocol: HttpProtocol;
|
|
6
7
|
httpHost: string;
|
|
7
8
|
httpPort: number;
|
|
8
9
|
httpEndpoint: string;
|
|
9
10
|
httpAuthToken?: string;
|
|
11
|
+
httpsCert?: string;
|
|
12
|
+
httpsKey?: string;
|
|
13
|
+
httpsPfx?: string;
|
|
14
|
+
httpsPassphrase?: string;
|
|
10
15
|
httpSessionBackend: HttpSessionBackend;
|
|
11
16
|
httpSessionIdleTtlMs: number;
|
|
12
17
|
httpSessionMax: number;
|
|
13
18
|
}
|
|
19
|
+
interface DoctorCliOptions {
|
|
20
|
+
json?: boolean;
|
|
21
|
+
}
|
|
22
|
+
interface CreateCliCommandOptions {
|
|
23
|
+
doctorAction?: (options: DoctorCliOptions) => Promise<void> | void;
|
|
24
|
+
}
|
|
14
25
|
type CliOptionValue = string | number;
|
|
15
26
|
interface CliOptionDefinition {
|
|
16
27
|
name: keyof CommanderCliOptions;
|
|
@@ -23,7 +34,7 @@ interface CliOptionDefinition {
|
|
|
23
34
|
parser?: (value: string) => CliOptionValue;
|
|
24
35
|
}
|
|
25
36
|
export declare const cliOptionDefinitions: readonly CliOptionDefinition[];
|
|
26
|
-
export declare function createCliCommand(version: string): Command;
|
|
37
|
+
export declare function createCliCommand(version: string, options?: CreateCliCommandOptions): Command;
|
|
27
38
|
export declare function parseCliOptions(args: readonly string[]): CliOptions;
|
|
28
39
|
export declare function readCliOptions(command: Command): CliOptions;
|
|
29
40
|
export declare function renderCliReferenceMarkdown(version: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgC,MAAM,WAAW,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgC,MAAM,WAAW,CAAC;AAClE,OAAO,EASL,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EAExB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,cAAc,kDAAkD,CAAC;AAE9E,UAAU,mBAAmB;IAC3B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,uBAAuB;IAC/B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACpE;AAED,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtC,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,mBAAmB,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,cAAc,CAAC;CAC5C;AAED,eAAO,MAAM,oBAAoB,EAAE,SAAS,mBAAmB,EAiH9D,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAiBhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CASnE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAE3D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAwBlE"}
|