cloakbrowser-mcp 1.0.1 → 1.1.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 +21 -1
- package/dist/bridge/config.d.ts +2 -0
- package/dist/bridge/config.d.ts.map +1 -1
- package/dist/bridge/config.js +4 -0
- package/dist/bridge/config.js.map +1 -1
- package/dist/cli/options.d.ts +31 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +228 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli.js +22 -41
- package/dist/cli.js.map +1 -1
- package/dist/http/options.d.ts +20 -0
- package/dist/http/options.d.ts.map +1 -0
- package/dist/http/options.js +15 -0
- package/dist/http/options.js.map +1 -0
- package/dist/http/server.d.ts +19 -0
- package/dist/http/server.d.ts.map +1 -0
- package/dist/http/server.js +315 -0
- package/dist/http/server.js.map +1 -0
- package/dist/http/sessionStore.d.ts +31 -0
- package/dist/http/sessionStore.d.ts.map +1 -0
- package/dist/http/sessionStore.js +60 -0
- package/dist/http/sessionStore.js.map +1 -0
- package/dist/http/status.d.ts +18 -0
- package/dist/http/status.d.ts.map +1 -0
- package/dist/http/status.js +20 -0
- package/dist/http/status.js.map +1 -0
- package/dist/server.d.ts +2 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/package.json +9 -4
- package/server.json +99 -3
package/README.md
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
[](https://github.com/swimmwatch/cloakbrowser-mcp/actions/workflows/ci.yml)
|
|
8
|
+
[](https://codecov.io/gh/swimmwatch/cloakbrowser-mcp)
|
|
8
9
|
[](https://github.com/swimmwatch/cloakbrowser-mcp/actions/workflows/actionlint.yml)
|
|
9
10
|
[](https://github.com/swimmwatch/cloakbrowser-mcp/actions/workflows/codeql.yml)
|
|
10
11
|
[](https://github.com/swimmwatch/cloakbrowser-mcp/actions/workflows/dependency-review.yml)
|
|
@@ -19,7 +20,7 @@
|
|
|
19
20
|
[](docs/docker.md)
|
|
20
21
|
[](LICENSE)
|
|
21
22
|
|
|
22
|
-
`cloakbrowser-mcp` is a
|
|
23
|
+
`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.
|
|
23
24
|
|
|
24
25
|
Documentation: [swimmwatch.github.io/cloakbrowser-mcp](https://swimmwatch.github.io/cloakbrowser-mcp/)
|
|
25
26
|
|
|
@@ -34,6 +35,8 @@ The server is intentionally thin:
|
|
|
34
35
|
|
|
35
36
|
| cloakbrowser-mcp | @playwright/mcp | Playwright MCP Docker base | CloakBrowser | Node.js | Transport | Platform | Parity |
|
|
36
37
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
38
|
+
| `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. |
|
|
39
|
+
| `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. |
|
|
37
40
|
| `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. |
|
|
38
41
|
| `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. |
|
|
39
42
|
|
|
@@ -44,9 +47,12 @@ See [Version Compatibility](docs/version-compatibility.md) for the maintained co
|
|
|
44
47
|
```bash
|
|
45
48
|
npx -y cloakbrowser-mcp@latest --help
|
|
46
49
|
npx -y cloakbrowser-mcp@latest
|
|
50
|
+
npx -y cloakbrowser-mcp@latest --transport streamable-http --http-port 3000
|
|
47
51
|
```
|
|
48
52
|
|
|
49
53
|
Requires Node.js 20 or newer. The first real browser action may download the CloakBrowser binary unless it is already cached.
|
|
54
|
+
The default transport is stdio. Streamable HTTP binds to `127.0.0.1` by default and serves MCP at `/mcp`.
|
|
55
|
+
For the complete generated CLI flag reference, see the published [CLI Reference](https://swimmwatch.github.io/cloakbrowser-mcp/generated/cli/).
|
|
50
56
|
|
|
51
57
|
## Run from Docker
|
|
52
58
|
|
|
@@ -55,6 +61,11 @@ docker pull ghcr.io/swimmwatch/cloakbrowser-mcp:latest
|
|
|
55
61
|
docker run --rm --init -i \
|
|
56
62
|
-v "$PWD/artifacts:/data" \
|
|
57
63
|
ghcr.io/swimmwatch/cloakbrowser-mcp:latest
|
|
64
|
+
|
|
65
|
+
docker run --rm --init -p 127.0.0.1:3000:3000 \
|
|
66
|
+
-v "$PWD/artifacts:/data" \
|
|
67
|
+
ghcr.io/swimmwatch/cloakbrowser-mcp:latest \
|
|
68
|
+
--transport streamable-http --http-host 0.0.0.0 --http-port 3000
|
|
58
69
|
```
|
|
59
70
|
|
|
60
71
|
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.
|
|
@@ -102,11 +113,20 @@ The Docker image is based on the pinned official Playwright MCP image, installs
|
|
|
102
113
|
## Configuration
|
|
103
114
|
|
|
104
115
|
Use upstream `PLAYWRIGHT_MCP_*` variables for browser, artifact, timeout, network, and tool capability settings. Cloak-specific bridge toggles use `CLOAK_PLAYWRIGHT_MCP_*`.
|
|
116
|
+
CLI flags are documented in the generated [CLI Reference](https://swimmwatch.github.io/cloakbrowser-mcp/generated/cli/).
|
|
105
117
|
|
|
106
118
|
Common variables:
|
|
107
119
|
|
|
108
120
|
| Variable | Default | Description |
|
|
109
121
|
| --- | --- | --- |
|
|
122
|
+
| `CLOAK_PLAYWRIGHT_MCP_TRANSPORT` | `stdio` | MCP transport exposed by the bridge: `stdio` or `streamable-http`. |
|
|
123
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTP_HOST` | `127.0.0.1` | Streamable HTTP bind host. |
|
|
124
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTP_PORT` | `3000` | Streamable HTTP bind port. |
|
|
125
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTP_ENDPOINT` | `/mcp` | Streamable HTTP endpoint path. |
|
|
126
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTP_AUTH_TOKEN` | unset | Optional Bearer token for Streamable HTTP. |
|
|
127
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_BACKEND` | `memory` | Session metadata backend. Only `memory` is implemented in this release. |
|
|
128
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_IDLE_TTL_MS` | `3600000` | Idle TTL for Streamable HTTP sessions. |
|
|
129
|
+
| `CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_MAX` | `32` | Maximum active Streamable HTTP sessions in one process. |
|
|
110
130
|
| `PLAYWRIGHT_MCP_BROWSER_ENGINE` | `cloak` | `cloak` uses CloakBrowser. `playwright` uses the upstream Playwright MCP browser runtime. |
|
|
111
131
|
| `PLAYWRIGHT_MCP_HEADLESS` | `true` | Runs Chromium headless. |
|
|
112
132
|
| `PLAYWRIGHT_MCP_OUTPUT_DIR` | `.playwright-mcp` | Artifact directory for npm usage. Docker defaults to `/data`. |
|
package/dist/bridge/config.d.ts
CHANGED
|
@@ -15,10 +15,12 @@ export interface PrepareBridgeRuntimeOptions {
|
|
|
15
15
|
env?: EnvReader;
|
|
16
16
|
tempRoot?: string;
|
|
17
17
|
ensureCloakBinary?: () => Promise<string>;
|
|
18
|
+
browserIsolated?: boolean;
|
|
18
19
|
}
|
|
19
20
|
export interface PlaywrightMcpBridgeConfig {
|
|
20
21
|
browser?: {
|
|
21
22
|
browserName?: 'chromium';
|
|
23
|
+
isolated?: boolean;
|
|
22
24
|
launchOptions?: {
|
|
23
25
|
executablePath?: string;
|
|
24
26
|
headless?: boolean;
|
|
@@ -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;
|
|
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"}
|
package/dist/bridge/config.js
CHANGED
|
@@ -26,6 +26,10 @@ export async function prepareBridgeRuntime(options = {}) {
|
|
|
26
26
|
launchOptions,
|
|
27
27
|
},
|
|
28
28
|
};
|
|
29
|
+
if (options.browserIsolated === true) {
|
|
30
|
+
config.browser.isolated = true;
|
|
31
|
+
childEnv.PLAYWRIGHT_MCP_ISOLATED = 'true';
|
|
32
|
+
}
|
|
29
33
|
let cloakBinaryPath;
|
|
30
34
|
if (useCloak) {
|
|
31
35
|
cloakBinaryPath = await suppressStdout(options.ensureCloakBinary ?? ensureBinary);
|
|
@@ -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,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAkB,MAAM,UAAU,CAAC;AACjG,OAAO,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/bridge/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { type BridgeTransportMode, type CliOptions, type HttpSessionBackend } from '../http/options.js';
|
|
3
|
+
export declare const cliDescription = "Playwright MCP bridge backed by CloakBrowser.";
|
|
4
|
+
interface CommanderCliOptions {
|
|
5
|
+
transport: BridgeTransportMode;
|
|
6
|
+
httpHost: string;
|
|
7
|
+
httpPort: number;
|
|
8
|
+
httpEndpoint: string;
|
|
9
|
+
httpAuthToken?: string;
|
|
10
|
+
httpSessionBackend: HttpSessionBackend;
|
|
11
|
+
httpSessionIdleTtlMs: number;
|
|
12
|
+
httpSessionMax: number;
|
|
13
|
+
}
|
|
14
|
+
type CliOptionValue = string | number;
|
|
15
|
+
interface CliOptionDefinition {
|
|
16
|
+
name: keyof CommanderCliOptions;
|
|
17
|
+
flags: string;
|
|
18
|
+
description: string;
|
|
19
|
+
env: string;
|
|
20
|
+
group: string;
|
|
21
|
+
defaultValue?: CliOptionValue;
|
|
22
|
+
choices?: readonly string[];
|
|
23
|
+
parser?: (value: string) => CliOptionValue;
|
|
24
|
+
}
|
|
25
|
+
export declare const cliOptionDefinitions: readonly CliOptionDefinition[];
|
|
26
|
+
export declare function createCliCommand(version: string): Command;
|
|
27
|
+
export declare function parseCliOptions(args: readonly string[]): CliOptions;
|
|
28
|
+
export declare function readCliOptions(command: Command): CliOptions;
|
|
29
|
+
export declare function renderCliReferenceMarkdown(version: string): string;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +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,EAIL,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,cAAc,kDAAkD,CAAC;AAE9E,UAAU,mBAAmB;IAC3B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;CACxB;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,EAwE9D,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAczD;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,CAgBlE"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { Command, InvalidArgumentError, Option } from 'commander';
|
|
2
|
+
import { bridgeTransportModes, defaultStreamableHttpOptions, httpSessionBackends, } from '../http/options.js';
|
|
3
|
+
export const cliDescription = 'Playwright MCP bridge backed by CloakBrowser.';
|
|
4
|
+
export const cliOptionDefinitions = [
|
|
5
|
+
{
|
|
6
|
+
name: 'transport',
|
|
7
|
+
flags: '--transport <mode>',
|
|
8
|
+
description: 'MCP transport exposed by the bridge.',
|
|
9
|
+
env: 'CLOAK_PLAYWRIGHT_MCP_TRANSPORT',
|
|
10
|
+
group: 'Transport',
|
|
11
|
+
defaultValue: 'stdio',
|
|
12
|
+
choices: bridgeTransportModes,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'httpHost',
|
|
16
|
+
flags: '--http-host <host>',
|
|
17
|
+
description: 'Streamable HTTP bind host.',
|
|
18
|
+
env: 'CLOAK_PLAYWRIGHT_MCP_HTTP_HOST',
|
|
19
|
+
group: 'Streamable HTTP',
|
|
20
|
+
defaultValue: defaultStreamableHttpOptions.host,
|
|
21
|
+
parser: parseNonEmptyString('HTTP host must not be empty'),
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'httpPort',
|
|
25
|
+
flags: '--http-port <port>',
|
|
26
|
+
description: 'Streamable HTTP bind port. Use 0 for an ephemeral port in tests.',
|
|
27
|
+
env: 'CLOAK_PLAYWRIGHT_MCP_HTTP_PORT',
|
|
28
|
+
group: 'Streamable HTTP',
|
|
29
|
+
defaultValue: defaultStreamableHttpOptions.port,
|
|
30
|
+
parser: parseIntegerInRange('HTTP port', 0, 65_535),
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'httpEndpoint',
|
|
34
|
+
flags: '--http-endpoint <path>',
|
|
35
|
+
description: 'Streamable HTTP endpoint path.',
|
|
36
|
+
env: 'CLOAK_PLAYWRIGHT_MCP_HTTP_ENDPOINT',
|
|
37
|
+
group: 'Streamable HTTP',
|
|
38
|
+
defaultValue: defaultStreamableHttpOptions.endpoint,
|
|
39
|
+
parser: parseHttpEndpoint,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'httpAuthToken',
|
|
43
|
+
flags: '--http-auth-token <token>',
|
|
44
|
+
description: 'Optional Bearer token required on Streamable HTTP requests.',
|
|
45
|
+
env: 'CLOAK_PLAYWRIGHT_MCP_HTTP_AUTH_TOKEN',
|
|
46
|
+
group: 'Streamable HTTP',
|
|
47
|
+
parser: parseNonEmptyString('HTTP auth token must not be empty'),
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'httpSessionBackend',
|
|
51
|
+
flags: '--http-session-backend <backend>',
|
|
52
|
+
description: 'Session metadata backend. Only memory is implemented in this release.',
|
|
53
|
+
env: 'CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_BACKEND',
|
|
54
|
+
group: 'Streamable HTTP',
|
|
55
|
+
defaultValue: defaultStreamableHttpOptions.sessionBackend,
|
|
56
|
+
choices: httpSessionBackends,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'httpSessionIdleTtlMs',
|
|
60
|
+
flags: '--http-session-idle-ttl-ms <ms>',
|
|
61
|
+
description: 'Idle TTL for Streamable HTTP sessions.',
|
|
62
|
+
env: 'CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_IDLE_TTL_MS',
|
|
63
|
+
group: 'Streamable HTTP',
|
|
64
|
+
defaultValue: defaultStreamableHttpOptions.sessionIdleTtlMs,
|
|
65
|
+
parser: parsePositiveInteger('HTTP session idle TTL'),
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'httpSessionMax',
|
|
69
|
+
flags: '--http-session-max <count>',
|
|
70
|
+
description: 'Maximum active Streamable HTTP sessions in one process.',
|
|
71
|
+
env: 'CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_MAX',
|
|
72
|
+
group: 'Streamable HTTP',
|
|
73
|
+
defaultValue: defaultStreamableHttpOptions.sessionMax,
|
|
74
|
+
parser: parsePositiveInteger('HTTP session max'),
|
|
75
|
+
},
|
|
76
|
+
];
|
|
77
|
+
export function createCliCommand(version) {
|
|
78
|
+
const command = new Command()
|
|
79
|
+
.name('cloakbrowser-mcp')
|
|
80
|
+
.description(cliDescription)
|
|
81
|
+
.version(version)
|
|
82
|
+
.showHelpAfterError()
|
|
83
|
+
.showSuggestionAfterError()
|
|
84
|
+
.allowExcessArguments(false);
|
|
85
|
+
for (const definition of cliOptionDefinitions) {
|
|
86
|
+
command.addOption(createCommanderOption(definition));
|
|
87
|
+
}
|
|
88
|
+
return command;
|
|
89
|
+
}
|
|
90
|
+
export function parseCliOptions(args) {
|
|
91
|
+
const command = createCliCommand('0.0.0');
|
|
92
|
+
command.exitOverride();
|
|
93
|
+
command.configureOutput({
|
|
94
|
+
writeOut: () => undefined,
|
|
95
|
+
writeErr: () => undefined,
|
|
96
|
+
});
|
|
97
|
+
command.parse(args, { from: 'user' });
|
|
98
|
+
return readCliOptions(command);
|
|
99
|
+
}
|
|
100
|
+
export function readCliOptions(command) {
|
|
101
|
+
return toCliOptions(command.opts());
|
|
102
|
+
}
|
|
103
|
+
export function renderCliReferenceMarkdown(version) {
|
|
104
|
+
const command = createCliCommand(version);
|
|
105
|
+
return `${renderCliReferenceFrontMatter()}# CLI Reference
|
|
106
|
+
|
|
107
|
+
This page is generated from the Commander.js CLI definition during MkDocs builds. Update the CLI definition in source code instead of editing this page by hand.
|
|
108
|
+
|
|
109
|
+
## Usage
|
|
110
|
+
|
|
111
|
+
\`\`\`text
|
|
112
|
+
${command.helpInformation().trimEnd()}
|
|
113
|
+
\`\`\`
|
|
114
|
+
|
|
115
|
+
## Options
|
|
116
|
+
|
|
117
|
+
${renderOptionsTable()}
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
120
|
+
function createCommanderOption(definition) {
|
|
121
|
+
const option = new Option(definition.flags, definition.description)
|
|
122
|
+
.env(definition.env)
|
|
123
|
+
.helpGroup(definition.group);
|
|
124
|
+
const parser = definition.parser;
|
|
125
|
+
if (parser) {
|
|
126
|
+
option.argParser((value) => parser(value));
|
|
127
|
+
}
|
|
128
|
+
if (definition.choices) {
|
|
129
|
+
option.choices(definition.choices);
|
|
130
|
+
}
|
|
131
|
+
if (definition.defaultValue !== undefined) {
|
|
132
|
+
option.default(definition.defaultValue, String(definition.defaultValue));
|
|
133
|
+
}
|
|
134
|
+
return option;
|
|
135
|
+
}
|
|
136
|
+
function toCliOptions(options) {
|
|
137
|
+
return {
|
|
138
|
+
transport: options.transport,
|
|
139
|
+
http: {
|
|
140
|
+
host: options.httpHost,
|
|
141
|
+
port: options.httpPort,
|
|
142
|
+
endpoint: options.httpEndpoint,
|
|
143
|
+
authToken: optionalString(options.httpAuthToken),
|
|
144
|
+
sessionBackend: options.httpSessionBackend,
|
|
145
|
+
sessionIdleTtlMs: options.httpSessionIdleTtlMs,
|
|
146
|
+
sessionMax: options.httpSessionMax,
|
|
147
|
+
bodyLimitBytes: defaultStreamableHttpOptions.bodyLimitBytes,
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
function renderCliReferenceFrontMatter() {
|
|
152
|
+
return `---
|
|
153
|
+
description: Generated CLI reference for cloakbrowser-mcp.
|
|
154
|
+
icon: material/console-line
|
|
155
|
+
tags:
|
|
156
|
+
- Configuration
|
|
157
|
+
- User Guide
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
`;
|
|
161
|
+
}
|
|
162
|
+
function renderOptionsTable() {
|
|
163
|
+
const rows = cliOptionDefinitions.map((definition) => [
|
|
164
|
+
code(definition.flags),
|
|
165
|
+
code(definition.env),
|
|
166
|
+
definition.defaultValue === undefined ? 'unset' : code(String(definition.defaultValue)),
|
|
167
|
+
definition.choices ? definition.choices.map((choice) => code(choice)).join(', ') : '',
|
|
168
|
+
definition.description,
|
|
169
|
+
].join(' | '));
|
|
170
|
+
return [
|
|
171
|
+
['Option', 'Environment', 'Default', 'Values', 'Description'].join(' | '),
|
|
172
|
+
['---', '---', '---', '---', '---'].join(' | '),
|
|
173
|
+
...rows,
|
|
174
|
+
]
|
|
175
|
+
.map((line) => `| ${line} |`)
|
|
176
|
+
.join('\n');
|
|
177
|
+
}
|
|
178
|
+
function parseIntegerInRange(label, min, max) {
|
|
179
|
+
return (value) => {
|
|
180
|
+
const parsed = parseInteger(label, value);
|
|
181
|
+
if (parsed < min || parsed > max) {
|
|
182
|
+
throw new InvalidArgumentError(`${label} must be an integer between ${min} and ${max}`);
|
|
183
|
+
}
|
|
184
|
+
return parsed;
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function parsePositiveInteger(label) {
|
|
188
|
+
return (value) => {
|
|
189
|
+
const parsed = parseInteger(label, value);
|
|
190
|
+
if (parsed <= 0) {
|
|
191
|
+
throw new InvalidArgumentError(`${label} must be greater than 0`);
|
|
192
|
+
}
|
|
193
|
+
return parsed;
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
function parseInteger(label, value) {
|
|
197
|
+
if (!/^-?\d+$/.test(value)) {
|
|
198
|
+
throw new InvalidArgumentError(`${label} must be an integer`);
|
|
199
|
+
}
|
|
200
|
+
const parsed = Number(value);
|
|
201
|
+
if (!Number.isSafeInteger(parsed)) {
|
|
202
|
+
throw new InvalidArgumentError(`${label} must be a safe integer`);
|
|
203
|
+
}
|
|
204
|
+
return parsed;
|
|
205
|
+
}
|
|
206
|
+
function parseHttpEndpoint(value) {
|
|
207
|
+
if (!value.startsWith('/') || value.includes('?') || value.includes('#')) {
|
|
208
|
+
throw new InvalidArgumentError('HTTP endpoint must be an absolute path such as "/mcp"');
|
|
209
|
+
}
|
|
210
|
+
if (value.length > 1 && value.endsWith('/')) {
|
|
211
|
+
throw new InvalidArgumentError('HTTP endpoint must not end with "/"');
|
|
212
|
+
}
|
|
213
|
+
return value;
|
|
214
|
+
}
|
|
215
|
+
function parseNonEmptyString(message) {
|
|
216
|
+
return (value) => {
|
|
217
|
+
if (!value.trim())
|
|
218
|
+
throw new InvalidArgumentError(message);
|
|
219
|
+
return value;
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
function optionalString(value) {
|
|
223
|
+
return value === undefined || value === '' ? undefined : value;
|
|
224
|
+
}
|
|
225
|
+
function code(value) {
|
|
226
|
+
return `\`${value.replaceAll('`', '\\`')}\``;
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -1,58 +1,39 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import process from 'node:process';
|
|
4
|
+
import { createCliCommand, readCliOptions } from './cli/options.js';
|
|
5
|
+
import { startStreamableHttpBridge } from './http/server.js';
|
|
4
6
|
import { PROJECT_METADATA } from './project/metadata.js';
|
|
5
7
|
import { startBridge } from './server.js';
|
|
6
8
|
const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
|
|
7
|
-
const help = `cloakbrowser-mcp ${pkg.version}
|
|
8
|
-
|
|
9
|
-
Playwright MCP bridge backed by CloakBrowser.
|
|
10
|
-
|
|
11
|
-
Usage:
|
|
12
|
-
cloakbrowser-mcp
|
|
13
|
-
cloakbrowser-mcp --help
|
|
14
|
-
cloakbrowser-mcp --version
|
|
15
|
-
|
|
16
|
-
Primary configuration is provided with PLAYWRIGHT_MCP_* environment variables.
|
|
17
|
-
Cloak-specific toggles use CLOAK_PLAYWRIGHT_MCP_*.
|
|
18
|
-
|
|
19
|
-
Common environment variables:
|
|
20
|
-
PLAYWRIGHT_MCP_BROWSER_ENGINE cloak | playwright (default: cloak)
|
|
21
|
-
PLAYWRIGHT_MCP_HEADLESS true | false (default: true)
|
|
22
|
-
PLAYWRIGHT_MCP_OUTPUT_DIR artifact directory (default: .playwright-mcp)
|
|
23
|
-
PLAYWRIGHT_MCP_OUTPUT_MODE stdout | file (default: stdout)
|
|
24
|
-
PLAYWRIGHT_MCP_VIEWPORT_SIZE WIDTHxHEIGHT
|
|
25
|
-
PLAYWRIGHT_MCP_TIMEOUT_ACTION action timeout ms (default: 5000)
|
|
26
|
-
PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION navigation timeout ms (default: 60000)
|
|
27
|
-
CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK true | false (default: true)
|
|
28
|
-
CLOAK_PLAYWRIGHT_MCP_STEALTH_ARGS true | false (default: true)
|
|
29
|
-
CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS comma-separated or JSON array Chromium args
|
|
30
|
-
`;
|
|
31
9
|
async function main() {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
if (args.includes('--version') || args.includes('-V')) {
|
|
38
|
-
process.stdout.write(`${pkg.version}\n`);
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const bridge = await startBridge({
|
|
42
|
-
serverInfo: {
|
|
10
|
+
const command = createCliCommand(pkg.version);
|
|
11
|
+
command.action(async () => {
|
|
12
|
+
const options = readCliOptions(command);
|
|
13
|
+
const serverInfo = {
|
|
43
14
|
name: PROJECT_METADATA.mcpName,
|
|
44
15
|
title: PROJECT_METADATA.title,
|
|
45
16
|
version: pkg.version,
|
|
46
17
|
description: PROJECT_METADATA.description,
|
|
47
18
|
websiteUrl: PROJECT_METADATA.websiteUrl,
|
|
48
19
|
icons: PROJECT_METADATA.icons,
|
|
49
|
-
}
|
|
20
|
+
};
|
|
21
|
+
const running = options.transport === 'streamable-http'
|
|
22
|
+
? await startStreamableHttpBridge({ ...options.http, serverInfo })
|
|
23
|
+
: await startStdioBridge(serverInfo);
|
|
24
|
+
for (const signal of ['SIGINT', 'SIGTERM']) {
|
|
25
|
+
process.once(signal, () => {
|
|
26
|
+
void running.close().finally(() => process.exit(0));
|
|
27
|
+
});
|
|
28
|
+
}
|
|
50
29
|
});
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
30
|
+
await command.parseAsync(process.argv);
|
|
31
|
+
}
|
|
32
|
+
async function startStdioBridge(serverInfo) {
|
|
33
|
+
const bridge = await startBridge({ serverInfo });
|
|
34
|
+
return {
|
|
35
|
+
close: () => bridge.dispose(),
|
|
36
|
+
};
|
|
56
37
|
}
|
|
57
38
|
void main().catch((error) => {
|
|
58
39
|
process.stderr.write(`fatal: ${error.message}\n`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,OAAO,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAEvF,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,gBAAgB,CAAC,OAAO;YAC9B,KAAK,EAAE,gBAAgB,CAAC,KAAK;YAC7B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,WAAW,EAAE,gBAAgB,CAAC,WAAW;YACzC,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,KAAK,EAAE,gBAAgB,CAAC,KAAK;SAC9B,CAAC;QAEF,MAAM,OAAO,GACX,OAAO,CAAC,SAAS,KAAK,iBAAiB;YACrC,CAAC,CAAC,MAAM,yBAAyB,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;YAClE,CAAC,CAAC,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEzC,KAAK,MAAM,MAAM,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAU,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACxB,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,UAAmC;IACjE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACjD,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;KAC9B,CAAC;AACJ,CAAC;AAED,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAW,KAAe,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type BridgeTransportMode = 'stdio' | 'streamable-http';
|
|
2
|
+
export type HttpSessionBackend = 'memory';
|
|
3
|
+
export declare const bridgeTransportModes: readonly ["stdio", "streamable-http"];
|
|
4
|
+
export declare const httpSessionBackends: readonly ["memory"];
|
|
5
|
+
export interface StreamableHttpOptions {
|
|
6
|
+
host: string;
|
|
7
|
+
port: number;
|
|
8
|
+
endpoint: string;
|
|
9
|
+
authToken?: string;
|
|
10
|
+
sessionBackend: HttpSessionBackend;
|
|
11
|
+
sessionIdleTtlMs: number;
|
|
12
|
+
sessionMax: number;
|
|
13
|
+
bodyLimitBytes: number;
|
|
14
|
+
}
|
|
15
|
+
export interface CliOptions {
|
|
16
|
+
transport: BridgeTransportMode;
|
|
17
|
+
http: StreamableHttpOptions;
|
|
18
|
+
}
|
|
19
|
+
export declare const defaultStreamableHttpOptions: StreamableHttpOptions;
|
|
20
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/http/options.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,iBAAiB,CAAC;AAC9D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE1C,eAAO,MAAM,oBAAoB,uCAGkB,CAAC;AACpD,eAAO,MAAM,mBAAmB,qBAA8D,CAAC;AAE/F,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,kBAAkB,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,IAAI,EAAE,qBAAqB,CAAC;CAC7B;AAED,eAAO,MAAM,4BAA4B,EAAE,qBAQ1C,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const bridgeTransportModes = [
|
|
2
|
+
'stdio',
|
|
3
|
+
'streamable-http',
|
|
4
|
+
];
|
|
5
|
+
export const httpSessionBackends = ['memory'];
|
|
6
|
+
export const defaultStreamableHttpOptions = {
|
|
7
|
+
host: '127.0.0.1',
|
|
8
|
+
port: 3000,
|
|
9
|
+
endpoint: '/mcp',
|
|
10
|
+
sessionBackend: 'memory',
|
|
11
|
+
sessionIdleTtlMs: 3_600_000,
|
|
12
|
+
sessionMax: 32,
|
|
13
|
+
bodyLimitBytes: 1_048_576,
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/http/options.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO;IACP,iBAAiB;CACgC,CAAC;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,CAAkD,CAAC;AAkB/F,MAAM,CAAC,MAAM,4BAA4B,GAA0B;IACjE,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,MAAM;IAChB,cAAc,EAAE,QAAQ;IACxB,gBAAgB,EAAE,SAAS;IAC3B,UAAU,EAAE,EAAE;IACd,cAAc,EAAE,SAAS;CAC1B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type IncomingMessage } from 'node:http';
|
|
2
|
+
import type { AddressInfo } from 'node:net';
|
|
3
|
+
import { type Implementation } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
import { type SessionStore } from './sessionStore.js';
|
|
5
|
+
import type { HttpSessionBackend, StreamableHttpOptions } from './options.js';
|
|
6
|
+
export interface StartStreamableHttpBridgeOptions extends StreamableHttpOptions {
|
|
7
|
+
serverInfo?: Partial<Implementation>;
|
|
8
|
+
sessionStore?: SessionStore;
|
|
9
|
+
}
|
|
10
|
+
export interface StreamableHttpBridgeServer {
|
|
11
|
+
url: string;
|
|
12
|
+
address: AddressInfo;
|
|
13
|
+
close(): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export declare function startStreamableHttpBridge(options: StartStreamableHttpBridgeOptions): Promise<StreamableHttpBridgeServer>;
|
|
16
|
+
export declare function isAuthorizedRequest(req: IncomingMessage, authToken: string | undefined): boolean;
|
|
17
|
+
export declare function isEndpointRequest(req: IncomingMessage, endpoint: string, fallbackHost: string): boolean;
|
|
18
|
+
export type { HttpSessionBackend };
|
|
19
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,eAAe,EAAoC,MAAM,WAAW,CAAC;AACjG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAE9F,OAAO,EAA8C,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAO9E,MAAM,WAAW,gCAAiC,SAAQ,qBAAqB;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAQD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,0BAA0B,CAAC,CAGrC;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAUhG;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAIvG;AA+WD,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|