wsl-chrome-bridge 0.2.0 → 0.3.1
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-zh.md +65 -34
- package/README.md +66 -32
- package/dist/bridge-options.d.ts +2 -0
- package/dist/bridge-options.js +6 -0
- package/dist/bridge-options.js.map +1 -1
- package/dist/bridge-powershell-scripts.d.ts +11 -0
- package/dist/bridge-powershell-scripts.js +475 -0
- package/dist/bridge-powershell-scripts.js.map +1 -0
- package/dist/bridge-runner.js +1099 -375
- package/dist/bridge-runner.js.map +1 -1
- package/dist/bridge-watchdog.d.ts +1 -0
- package/dist/bridge-watchdog.js +189 -0
- package/dist/bridge-watchdog.js.map +1 -0
- package/docs/BRIDGE_CONNECTION_LIFECYCLE-zh.md +217 -0
- package/docs/BRIDGE_CONNECTION_LIFECYCLE.md +216 -0
- package/package.json +4 -3
package/README-zh.md
CHANGED
|
@@ -15,12 +15,21 @@
|
|
|
15
15
|
|
|
16
16
|
若你是從 `0.1.0` 升級,請先閱讀升級說明文件:[UPGRADE-zh.md](./UPGRADE-zh.md)。
|
|
17
17
|
|
|
18
|
+
## 專案特色
|
|
19
|
+
|
|
20
|
+
- 👍 **使用原 MCP 工具**:`wsl-chrome-bridge` 並非取代 `chrome-devtools-mcp` 或 `playwright-mcp`,而是讓你在 WSL2 內沿用原有工具操作 Windows Chrome。
|
|
21
|
+
- ⚡ **無須系統級設定**:不需要設定 WSL Mirrored Mode、portproxy,也不用安裝額外繞路工具。
|
|
22
|
+
- ⚙️ **設定門檻低**:通常只要在原有 MCP 設定中調整 `--executablePath` 與少量參數即可運作。
|
|
23
|
+
- 🛡️ **統一退出行為**:`chrome-devtools-mcp` 與 `playwright-mcp` 退出時對於 Chrome 的關閉行為完全不同,本專案會將這兩種退出行為做一致化處理。
|
|
24
|
+
- 🖥️ headed 模式下,若 MCP 退出,Windows Chrome 視窗仍保持。
|
|
25
|
+
- 🤖 headless 模式下,若 MCP 退出,處於背景執行的 Windows Chrome 行程會被自動銷毀。
|
|
26
|
+
|
|
18
27
|
## 基本運作方式
|
|
19
28
|
|
|
20
29
|
```text
|
|
21
30
|
[Chrome DevTools MCP] [Playwright MCP]
|
|
22
31
|
| |
|
|
23
|
-
stdio pipe
|
|
32
|
+
stdio pipe remote-debugging-port/stdio pipe
|
|
24
33
|
| |
|
|
25
34
|
+------[wsl-chrome-bridge]-----+
|
|
26
35
|
|
|
|
@@ -37,6 +46,9 @@ wsl-chrome-bridge 會:
|
|
|
37
46
|
- 在 `playwright-mcp` 模式下,於本機建立對應 port 的 WebSocket proxy 後轉發 CDP 訊息
|
|
38
47
|
- 透過 PowerShell WebSocket relay 雙向轉發 CDP 訊息到 Windows Chrome
|
|
39
48
|
|
|
49
|
+
> [!NOTE]
|
|
50
|
+
> 我們在實測中觀察到,近期 `playwright-mcp` 版本可能改以 `--remote-debugging-pipe` 啟動 Chrome(官方 release note 未明確標註變更版本,可能介於 `0.0.71`~`0.0.72`)。為保留舊版相容性,bridge 仍同時支援 remote-debugging-port 與 pipe 兩種上游連線模式。
|
|
51
|
+
|
|
40
52
|
|
|
41
53
|
## 使用環境需求
|
|
42
54
|
- Windows 11 安裝最新版 chrome。
|
|
@@ -114,37 +126,9 @@ DISPLAY = ":9999"
|
|
|
114
126
|
> FAQ 章節有介紹 `--executablePath` 的路徑尋找的方式。
|
|
115
127
|
> 其他設定寫法可參考 `agent-config-sample/.codex/`。
|
|
116
128
|
|
|
117
|
-
|
|
118
|
-
## 開發時所用的技術棧
|
|
119
|
-
- Node 24
|
|
120
|
-
- TypeScript v6
|
|
121
|
-
- Commander v14
|
|
122
|
-
- ws v8.20
|
|
123
|
-
- 測試框架: Vitest v4.1
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
## 安裝與建置
|
|
127
|
-
|
|
128
|
-
```bash
|
|
129
|
-
npm install
|
|
130
|
-
npm run build
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## 本地測試
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
npm test
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
測試分成兩層:
|
|
140
|
-
|
|
141
|
-
- 單元測試:路徑轉換、參數標準化、bridge 啟動規劃
|
|
142
|
-
- 情境測試:CLI 對 bridge runner 的參數傳遞整合
|
|
143
|
-
|
|
144
|
-
|
|
145
129
|
## FAQ
|
|
146
130
|
|
|
147
|
-
### `--executablePath` 如何找
|
|
131
|
+
### Q1. `--executablePath` 如何找
|
|
148
132
|
|
|
149
133
|
`chrome-devtools-mcp` 的 `--executablePath` 必須是「檔案路徑」,不能只填指令名(例如 `wsl-chrome-bridge`)。
|
|
150
134
|
|
|
@@ -179,7 +163,7 @@ ls -la ~/.local/share/mise/shims/wsl-chrome-bridge
|
|
|
179
163
|
- 不使用版本管理工具時,透過 `command -v` 找絕對路徑是可行且直接的方法。
|
|
180
164
|
- 使用 mise 多版本 Node 時,建議使用 `/home/<user>/.local/share/mise/shims/wsl-chrome-bridge`,避免 Node 版本切換後路徑失效。
|
|
181
165
|
|
|
182
|
-
### 為什麼 Playwright 需要設定 `DISPLAY`
|
|
166
|
+
### Q2. 為什麼 Playwright 需要設定 `DISPLAY`
|
|
183
167
|
|
|
184
168
|
在 WSL/Linux 環境下,`playwright-mcp` 啟動瀏覽器時會先判斷圖形顯示環境。
|
|
185
169
|
若 `DISPLAY` 沒有設定,Playwright 通常會改成 headless 行為(即使你沒有手動指定 `--headless`)。
|
|
@@ -187,7 +171,20 @@ ls -la ~/.local/share/mise/shims/wsl-chrome-bridge
|
|
|
187
171
|
而這個判斷是在 bridge 之前就完成,所以 `wsl-chrome-bridge` 無法在後段覆蓋該決策。
|
|
188
172
|
如果你希望在 Windows 看到實際 Chrome 視窗,請於 MCP `env` 額外設定 `DISPLAY`(例如 `DISPLAY=:999`)。
|
|
189
173
|
|
|
190
|
-
###
|
|
174
|
+
### Q3. 上游 MCP 結束時,Headless 與非 Headless 行為
|
|
175
|
+
|
|
176
|
+
`wsl-chrome-bridge` 在上游 MCP(例如 `chrome-devtools-mcp` / `playwright-mcp`)結束時,採用以下生命週期策略:
|
|
177
|
+
|
|
178
|
+
- 若 Chrome 是以 headless 啟動,通常是為了進行自動測試,測試完畢大概就沒用了,因此 bridge 一律會結束背景 Chrome 行程,以防 Windows 端殘留背景 Chrome。
|
|
179
|
+
- 若 Chrome 不是以 headless 啟動(headed / non-headless),通常是用戶想看到畫面結果或參與實際操作,bridge 一律保留該 Chrome 行程,這樣用戶的 Chrome 視窗還在,下次重新啟動 AI 助手時,也能接著使用原本開啟的 Chrome。
|
|
180
|
+
|
|
181
|
+
上述的行為是刻意設計的,因為原生 `chrome-devtools-mcp` 與 `playwright-mcp` 的行為是不同的,如下:
|
|
182
|
+
- `chrome-devtools-mcp` 不論是 headed 或 headless 都不會主動關閉 Chrome。
|
|
183
|
+
- `playwright-mcp` 不論是 headed 或 headless 都會主動關閉 Chrome。
|
|
184
|
+
|
|
185
|
+
而 `wsl-chrome-bridge` 統一了兩者的不一致。
|
|
186
|
+
|
|
187
|
+
### Q4. 為什麼 Playwright 可能出現 `--no-sandbox` 警告
|
|
191
188
|
|
|
192
189
|
`playwright-mcp` 若未明確指定 browser channel,可能會產生含 `--no-sandbox` 的啟動參數。
|
|
193
190
|
在有視窗的 Chrome 中,會看到這類警告列:
|
|
@@ -202,7 +199,7 @@ ls -la ~/.local/share/mise/shims/wsl-chrome-bridge
|
|
|
202
199
|
這樣在常見 bridge 設定下可避免上游傳入 `--no-sandbox`。
|
|
203
200
|
|
|
204
201
|
|
|
205
|
-
### `--user-data-dir` 說明
|
|
202
|
+
### Q5. `--user-data-dir` 說明
|
|
206
203
|
|
|
207
204
|
`wsl-chrome-bridge` 現在支援上游 MCP 直接傳入 `--user-data-dir` / `--userDataDir`。
|
|
208
205
|
|
|
@@ -243,8 +240,10 @@ WSL_CHROME_BRIDGE_USER_DATA_DIR = "%TEMP%\\wsl-chrome-bridge\\chrome-profile-xxx
|
|
|
243
240
|
- `WSL_CHROME_BRIDGE_REMOTE_DEBUG_PORT=9222` : 以環境變數指定 Windows Chrome debug port。若都沒指定,bridge 改為隨機 port,不再固定 9222。
|
|
244
241
|
- bridge 會在 Windows 端先探測 port 可用性。若是固定 port 模式且該 port 已被占用,會在啟動前直接報錯。
|
|
245
242
|
- `WSL_CHROME_BRIDGE_DEBUG_FILE=/tmp/xxx.log` : 以環境變數指定 bridge debug log 輸出路徑。
|
|
243
|
+
- `WSL_CHROME_BRIDGE_DEBUG_LEVEL=all|important` : 可選 debug 詳細度。`important`(預設)只記錄 session / 開頁導覽 / 斷線相關的重要 method 與錯誤回應;`all` 會記錄全部 CDP relay 訊息。
|
|
244
|
+
- `WSL_CHROME_BRIDGE_DEBUG_RAW_DIR=/tmp/wsl-chrome-bridge-raw` : 以環境變數指定 raw CDP 內容輸出目錄。每筆 request/response/event 會獨立寫入一個 `raw-<timestamp>.log` 檔案,且 `WSL_CHROME_BRIDGE_DEBUG_FILE` 的 relay log 會包含對應的 `rawPath`。
|
|
246
245
|
|
|
247
|
-
|
|
246
|
+
## 已確認無法使用的參數
|
|
248
247
|
|
|
249
248
|
以下列表為搭配本程式確定無法使用 `chrome-devtools-mcp` 原始參數
|
|
250
249
|
|
|
@@ -252,3 +251,35 @@ WSL_CHROME_BRIDGE_USER_DATA_DIR = "%TEMP%\\wsl-chrome-bridge\\chrome-profile-xxx
|
|
|
252
251
|
|
|
253
252
|
|
|
254
253
|
> 其他 `chrome-devtools-mcp` 提供的原始參數未必全部能使用,本程式尚在開發中,也沒有完全測試過所有原始參數,故只列出目前已經測試過的。
|
|
254
|
+
|
|
255
|
+
## For Developer
|
|
256
|
+
|
|
257
|
+
開發者可參考 bridge 連線生命週期與恢復策略文件:
|
|
258
|
+
|
|
259
|
+
- [docs/BRIDGE_CONNECTION_LIFECYCLE-zh.md](./docs/BRIDGE_CONNECTION_LIFECYCLE-zh.md)
|
|
260
|
+
|
|
261
|
+
### 開發時所用技術棧:
|
|
262
|
+
|
|
263
|
+
- Node 24
|
|
264
|
+
- TypeScript v6
|
|
265
|
+
- Commander v14
|
|
266
|
+
- ws v8.20
|
|
267
|
+
- 測試框架: Vitest v4.1
|
|
268
|
+
|
|
269
|
+
### 安裝與建置
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
npm install
|
|
273
|
+
npm run build
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### 本地測試
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
npm test
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
測試分成兩層:
|
|
283
|
+
|
|
284
|
+
- 單元測試:路徑轉換、參數標準化、bridge 啟動規劃
|
|
285
|
+
- 情境測試:CLI 對 bridge runner 的參數傳遞整合
|
package/README.md
CHANGED
|
@@ -21,12 +21,21 @@ This idea came from [wsl-chrome-mcp](https://github.com/477174/wsl-chrome-mcp),
|
|
|
21
21
|
|
|
22
22
|
If you are upgrading from `0.1.0`, read the upgrade guide first: [UPGRADE.md](./UPGRADE.md).
|
|
23
23
|
|
|
24
|
+
## Project Highlights
|
|
25
|
+
|
|
26
|
+
- 👍 **Keep your existing MCP tools**: `wsl-chrome-bridge` does not replace `chrome-devtools-mcp` or `playwright-mcp`; it lets you keep using your current tools in WSL2 to control Windows Chrome.
|
|
27
|
+
- ⚡ **No system-level setup required**: no WSL Mirrored Mode, no portproxy, and no extra workaround tools to install.
|
|
28
|
+
- ⚙️ **Low setup overhead**: in most cases, you only need to adjust `--executablePath` and a few arguments in your existing MCP config.
|
|
29
|
+
- 🛡️ **Unified shutdown behavior**: `chrome-devtools-mcp` and `playwright-mcp` have different Chrome shutdown behavior on exit; this project normalizes that behavior.
|
|
30
|
+
- 🖥️ In headed mode, if MCP exits, the Windows Chrome window stays open.
|
|
31
|
+
- 🤖 In headless mode, if MCP exits, the background Windows Chrome process is automatically terminated.
|
|
32
|
+
|
|
24
33
|
## How It Works
|
|
25
34
|
|
|
26
35
|
```text
|
|
27
36
|
[Chrome DevTools MCP] [Playwright MCP]
|
|
28
37
|
| |
|
|
29
|
-
stdio pipe
|
|
38
|
+
stdio pipe remote-debugging-port/stdio pipe
|
|
30
39
|
| |
|
|
31
40
|
+------[wsl-chrome-bridge]-----+
|
|
32
41
|
|
|
|
@@ -43,6 +52,9 @@ If you are upgrading from `0.1.0`, read the upgrade guide first: [UPGRADE.md](./
|
|
|
43
52
|
- In `playwright-mcp` mode, create a local WebSocket proxy on the mapped port and forward CDP traffic through it
|
|
44
53
|
- Relay CDP messages bidirectionally to Windows Chrome through PowerShell websocket relay
|
|
45
54
|
|
|
55
|
+
> [!NOTE]
|
|
56
|
+
> Based on our integration tests, recent `playwright-mcp` versions may launch Chrome with `--remote-debugging-pipe` (the official release notes do not clearly mark the exact version transition, and it may be between `0.0.71` and `0.0.72`). To preserve backward compatibility, the bridge continues to support both upstream connection styles: remote-debugging-port and pipe.
|
|
57
|
+
|
|
46
58
|
## Requirements
|
|
47
59
|
|
|
48
60
|
- Windows 11 with the latest Chrome installed
|
|
@@ -119,35 +131,9 @@ In bridge + system Chrome usage, `--browser chrome` helps avoid upstream `--no-s
|
|
|
119
131
|
> See the FAQ for how to locate `--executablePath`.
|
|
120
132
|
> For more configuration patterns, see `agent-config-sample/.codex/`.
|
|
121
133
|
|
|
122
|
-
## Development Stack
|
|
123
|
-
|
|
124
|
-
- Node 24
|
|
125
|
-
- TypeScript v6
|
|
126
|
-
- Commander v14
|
|
127
|
-
- ws v8.20
|
|
128
|
-
- Test framework: Vitest v4.1
|
|
129
|
-
|
|
130
|
-
## Build
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
npm install
|
|
134
|
-
npm run build
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## Local Tests
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
npm test
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
Test layers:
|
|
144
|
-
|
|
145
|
-
- Unit tests: path conversion, argument normalization, bridge launch planning
|
|
146
|
-
- Scenario tests: CLI argument passing integration into bridge runner
|
|
147
|
-
|
|
148
134
|
## FAQ
|
|
149
135
|
|
|
150
|
-
### How to find `--executablePath`
|
|
136
|
+
### Q1. How to find `--executablePath`
|
|
151
137
|
|
|
152
138
|
`chrome-devtools-mcp` expects `--executablePath` to be a file path, not just a command name (for example `wsl-chrome-bridge`).
|
|
153
139
|
|
|
@@ -182,7 +168,7 @@ ls -la ~/.local/share/mise/shims/wsl-chrome-bridge
|
|
|
182
168
|
- Without a version manager, `command -v` is a direct and valid way to get an absolute path.
|
|
183
169
|
- With mise multi-version Node, prefer `/home/<user>/.local/share/mise/shims/wsl-chrome-bridge` so path does not break when Node versions change.
|
|
184
170
|
|
|
185
|
-
### Why Playwright needs `DISPLAY`
|
|
171
|
+
### Q2. Why Playwright needs `DISPLAY`
|
|
186
172
|
|
|
187
173
|
In WSL/Linux, `playwright-mcp` checks display availability before launching the browser.
|
|
188
174
|
If `DISPLAY` is not set, Playwright often switches to headless behavior (even when you did not explicitly pass `--headless`).
|
|
@@ -190,7 +176,21 @@ If `DISPLAY` is not set, Playwright often switches to headless behavior (even wh
|
|
|
190
176
|
That decision happens upstream before bridge logic starts, so `wsl-chrome-bridge` cannot override it later.
|
|
191
177
|
If you want to see a visible Chrome window on Windows, set `DISPLAY` in MCP `env` (for example `DISPLAY=:999`).
|
|
192
178
|
|
|
193
|
-
###
|
|
179
|
+
### Q3. Headless vs headed behavior on upstream MCP exit
|
|
180
|
+
|
|
181
|
+
`wsl-chrome-bridge` applies the following lifecycle policy when upstream MCP exits (for example `chrome-devtools-mcp` / `playwright-mcp`):
|
|
182
|
+
|
|
183
|
+
- If Chrome was started in headless mode, it is usually for automated testing; after the test finishes, it is probably no longer needed, so bridge always terminates that background Chrome process to avoid leaving one behind on Windows.
|
|
184
|
+
- If Chrome was started in headed mode (non-headless), it usually means the user wants to see the result on screen or continue interacting manually; bridge always keeps that Chrome process, so the Chrome window stays open and the next time the AI assistant restarts, it can continue using the original Chrome session.
|
|
185
|
+
|
|
186
|
+
This behavior is intentional, because native `chrome-devtools-mcp` and `playwright-mcp` do not behave the same way:
|
|
187
|
+
|
|
188
|
+
- `chrome-devtools-mcp` does not actively close Chrome, whether it is headed or headless.
|
|
189
|
+
- `playwright-mcp` actively closes Chrome, whether it is headed or headless.
|
|
190
|
+
|
|
191
|
+
`wsl-chrome-bridge` normalizes that mismatch.
|
|
192
|
+
|
|
193
|
+
### Q4. Why Playwright may show `--no-sandbox` warning
|
|
194
194
|
|
|
195
195
|
When `playwright-mcp` is launched without an explicit browser channel, it may resolve to launch args that include `--no-sandbox`. In headed Chrome, this shows the warning banner:
|
|
196
196
|
`You are using an unsupported command-line flag: --no-sandbox`.
|
|
@@ -203,7 +203,7 @@ For bridge usage with system Chrome, recommend adding:
|
|
|
203
203
|
|
|
204
204
|
This keeps Playwright on the Chrome channel and avoids passing `--no-sandbox` in the common setup.
|
|
205
205
|
|
|
206
|
-
### About `--user-data-dir`
|
|
206
|
+
### Q5. About `--user-data-dir`
|
|
207
207
|
|
|
208
208
|
`wsl-chrome-bridge` accepts direct `--user-data-dir` / `--userDataDir` values from upstream MCP.
|
|
209
209
|
|
|
@@ -243,11 +243,45 @@ WSL_CHROME_BRIDGE_USER_DATA_DIR = "%TEMP%\\wsl-chrome-bridge\\chrome-profile-xxx
|
|
|
243
243
|
- `WSL_CHROME_BRIDGE_REMOTE_DEBUG_PORT=9222`: optional environment variable for Windows Chrome debug port. If no port is specified, bridge uses a random port instead of fixed `9222`.
|
|
244
244
|
- Bridge now probes port availability on Windows before launching Chrome. In fixed-port mode, startup fails fast if that port is already occupied.
|
|
245
245
|
- `WSL_CHROME_BRIDGE_DEBUG_FILE=/tmp/xxx.log`: optional debug output file in WSL.
|
|
246
|
+
- `WSL_CHROME_BRIDGE_DEBUG_LEVEL=all|important`: optional debug verbosity level. `important` (default) logs only important session/navigation/disconnect-related CDP methods and error responses. `all` logs all CDP relay traffic.
|
|
247
|
+
- `WSL_CHROME_BRIDGE_DEBUG_RAW_DIR=/tmp/wsl-chrome-bridge-raw`: optional directory to store full raw CDP payload files. Each request/response/event payload is written as a separate `raw-<timestamp>.log` file, and `WSL_CHROME_BRIDGE_DEBUG_FILE` includes the corresponding `rawPath` for each relay log entry.
|
|
246
248
|
|
|
247
|
-
|
|
249
|
+
## Known incompatible original arguments
|
|
248
250
|
|
|
249
251
|
The following original `chrome-devtools-mcp` option is currently known as incompatible in this bridge setup:
|
|
250
252
|
|
|
251
253
|
- `--browser-url`: this enables remote-connection mode in `chrome-devtools-mcp` instead of pipe mode, so it cannot work with `wsl-chrome-bridge`.
|
|
252
254
|
|
|
253
255
|
> Other original `chrome-devtools-mcp` arguments are not all fully validated yet. This project is still under development, so only currently tested limitations are listed here.
|
|
256
|
+
|
|
257
|
+
## For Developer
|
|
258
|
+
|
|
259
|
+
Developer lifecycle and recovery reference:
|
|
260
|
+
|
|
261
|
+
- [docs/BRIDGE_CONNECTION_LIFECYCLE.md](./docs/BRIDGE_CONNECTION_LIFECYCLE.md)
|
|
262
|
+
|
|
263
|
+
### Development stack:
|
|
264
|
+
|
|
265
|
+
- Node 24
|
|
266
|
+
- TypeScript v6
|
|
267
|
+
- Commander v14
|
|
268
|
+
- ws v8.20
|
|
269
|
+
- Test framework: Vitest v4.1
|
|
270
|
+
|
|
271
|
+
### Build
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
npm install
|
|
275
|
+
npm run build
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Local Tests
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
npm test
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Test layers:
|
|
285
|
+
|
|
286
|
+
- Unit tests: path conversion, argument normalization, bridge launch planning
|
|
287
|
+
- Scenario tests: CLI argument passing integration into bridge runner
|
package/dist/bridge-options.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export interface BridgeLaunchPlan {
|
|
|
7
7
|
usePipeTransport: boolean;
|
|
8
8
|
/** Optional bridge debug log file path in WSL. */
|
|
9
9
|
bridgeDebugFile: string | null;
|
|
10
|
+
/** Optional directory for writing one raw CDP payload file per message. */
|
|
11
|
+
bridgeDebugRawDir: string | null;
|
|
10
12
|
/** Optional Chrome executable override from environment variable. */
|
|
11
13
|
bridgeChromeExecutablePath: string | null;
|
|
12
14
|
/** User-data-dir value as seen by the bridge (WSL side). */
|
package/dist/bridge-options.js
CHANGED
|
@@ -74,6 +74,7 @@ export function planBridgeLaunch(chromeArgs, env = {}) {
|
|
|
74
74
|
let userDataDir = null;
|
|
75
75
|
let windowsUserDataDir = null;
|
|
76
76
|
let bridgeDebugFile = null;
|
|
77
|
+
let bridgeDebugRawDir = null;
|
|
77
78
|
let bridgeChromeExecutablePath = null;
|
|
78
79
|
let bridgeRemoteDebugPort = null;
|
|
79
80
|
let requestedLocalDebugPort = null;
|
|
@@ -202,6 +203,10 @@ export function planBridgeLaunch(chromeArgs, env = {}) {
|
|
|
202
203
|
bridgeDebugFile = envDebugFile;
|
|
203
204
|
}
|
|
204
205
|
}
|
|
206
|
+
const envDebugRawDir = env.WSL_CHROME_BRIDGE_DEBUG_RAW_DIR?.trim();
|
|
207
|
+
if (envDebugRawDir) {
|
|
208
|
+
bridgeDebugRawDir = envDebugRawDir;
|
|
209
|
+
}
|
|
205
210
|
const localProxyPort = requestedLocalDebugPort;
|
|
206
211
|
let windowsDebugPortSource = "auto-random";
|
|
207
212
|
let windowsDebugPort = selectRandomDebugPort();
|
|
@@ -233,6 +238,7 @@ export function planBridgeLaunch(chromeArgs, env = {}) {
|
|
|
233
238
|
passthroughArgs,
|
|
234
239
|
usePipeTransport,
|
|
235
240
|
bridgeDebugFile,
|
|
241
|
+
bridgeDebugRawDir,
|
|
236
242
|
bridgeChromeExecutablePath,
|
|
237
243
|
userDataDir,
|
|
238
244
|
windowsUserDataDir,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-options.js","sourceRoot":"","sources":["../src/bridge-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge-options.js","sourceRoot":"","sources":["../src/bridge-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns all PowerShell script sources used by the bridge runner.
|
|
3
|
+
*/
|
|
4
|
+
export declare function getBridgePowerShellScripts(): {
|
|
5
|
+
launchChrome: string;
|
|
6
|
+
findExistingChrome: string;
|
|
7
|
+
getVersion: string;
|
|
8
|
+
resolvePort: string;
|
|
9
|
+
stopChromeByProfilePort: string;
|
|
10
|
+
relay: string;
|
|
11
|
+
};
|