@flrande/browserctl 0.1.0-dev.7.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.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README-CN.md +66 -0
  3. package/README.md +66 -0
  4. package/apps/browserctl/src/commands/a11y-snapshot.ts +20 -0
  5. package/apps/browserctl/src/commands/act.ts +20 -0
  6. package/apps/browserctl/src/commands/common.test.ts +87 -0
  7. package/apps/browserctl/src/commands/common.ts +191 -0
  8. package/apps/browserctl/src/commands/console-list.ts +20 -0
  9. package/apps/browserctl/src/commands/cookie-clear.ts +18 -0
  10. package/apps/browserctl/src/commands/cookie-get.ts +18 -0
  11. package/apps/browserctl/src/commands/cookie-set.ts +22 -0
  12. package/apps/browserctl/src/commands/dialog-arm.ts +20 -0
  13. package/apps/browserctl/src/commands/dom-query-all.ts +18 -0
  14. package/apps/browserctl/src/commands/dom-query.ts +18 -0
  15. package/apps/browserctl/src/commands/download-trigger.ts +22 -0
  16. package/apps/browserctl/src/commands/download-wait.test.ts +67 -0
  17. package/apps/browserctl/src/commands/download-wait.ts +27 -0
  18. package/apps/browserctl/src/commands/element-screenshot.ts +20 -0
  19. package/apps/browserctl/src/commands/frame-list.ts +16 -0
  20. package/apps/browserctl/src/commands/frame-snapshot.ts +18 -0
  21. package/apps/browserctl/src/commands/network-wait-for.ts +100 -0
  22. package/apps/browserctl/src/commands/profile-list.ts +16 -0
  23. package/apps/browserctl/src/commands/profile-use.ts +18 -0
  24. package/apps/browserctl/src/commands/response-body.ts +24 -0
  25. package/apps/browserctl/src/commands/screenshot.ts +16 -0
  26. package/apps/browserctl/src/commands/snapshot.ts +16 -0
  27. package/apps/browserctl/src/commands/status.ts +10 -0
  28. package/apps/browserctl/src/commands/storage-get.ts +20 -0
  29. package/apps/browserctl/src/commands/storage-set.ts +22 -0
  30. package/apps/browserctl/src/commands/tab-close.ts +20 -0
  31. package/apps/browserctl/src/commands/tab-focus.ts +20 -0
  32. package/apps/browserctl/src/commands/tab-open.ts +19 -0
  33. package/apps/browserctl/src/commands/tabs.ts +13 -0
  34. package/apps/browserctl/src/commands/upload-arm.ts +26 -0
  35. package/apps/browserctl/src/daemon-client.test.ts +253 -0
  36. package/apps/browserctl/src/daemon-client.ts +632 -0
  37. package/apps/browserctl/src/e2e.test.ts +99 -0
  38. package/apps/browserctl/src/main.test.ts +215 -0
  39. package/apps/browserctl/src/main.ts +372 -0
  40. package/apps/browserctl/src/smoke.test.ts +16 -0
  41. package/apps/browserctl/src/smoke.ts +5 -0
  42. package/apps/browserd/src/bootstrap.ts +432 -0
  43. package/apps/browserd/src/chrome-relay-extension-bridge.test.ts +275 -0
  44. package/apps/browserd/src/chrome-relay-extension-bridge.ts +506 -0
  45. package/apps/browserd/src/container.ts +1531 -0
  46. package/apps/browserd/src/main.test.ts +864 -0
  47. package/apps/browserd/src/main.ts +7 -0
  48. package/bin/browserctl.cjs +21 -0
  49. package/bin/browserd.cjs +21 -0
  50. package/extensions/chrome-relay/README-CN.md +38 -0
  51. package/extensions/chrome-relay/README.md +38 -0
  52. package/extensions/chrome-relay/background.js +1687 -0
  53. package/extensions/chrome-relay/manifest.json +15 -0
  54. package/extensions/chrome-relay/popup.html +369 -0
  55. package/extensions/chrome-relay/popup.js +972 -0
  56. package/package.json +51 -0
  57. package/packages/core/src/bootstrap.test.ts +10 -0
  58. package/packages/core/src/driver-registry.test.ts +45 -0
  59. package/packages/core/src/driver-registry.ts +22 -0
  60. package/packages/core/src/driver.ts +47 -0
  61. package/packages/core/src/index.ts +5 -0
  62. package/packages/core/src/ref-cache.test.ts +61 -0
  63. package/packages/core/src/ref-cache.ts +28 -0
  64. package/packages/core/src/session-store.test.ts +49 -0
  65. package/packages/core/src/session-store.ts +33 -0
  66. package/packages/core/src/types.ts +9 -0
  67. package/packages/driver-chrome-relay/src/chrome-relay-driver.test.ts +634 -0
  68. package/packages/driver-chrome-relay/src/chrome-relay-driver.ts +2206 -0
  69. package/packages/driver-chrome-relay/src/chrome-relay-extension-runtime.test.ts +264 -0
  70. package/packages/driver-chrome-relay/src/chrome-relay-extension-runtime.ts +521 -0
  71. package/packages/driver-chrome-relay/src/index.ts +26 -0
  72. package/packages/driver-managed/src/index.ts +22 -0
  73. package/packages/driver-managed/src/managed-driver.test.ts +59 -0
  74. package/packages/driver-managed/src/managed-driver.ts +125 -0
  75. package/packages/driver-managed/src/managed-local-driver.test.ts +506 -0
  76. package/packages/driver-managed/src/managed-local-driver.ts +2021 -0
  77. package/packages/driver-remote-cdp/src/index.ts +19 -0
  78. package/packages/driver-remote-cdp/src/remote-cdp-driver.test.ts +617 -0
  79. package/packages/driver-remote-cdp/src/remote-cdp-driver.ts +2042 -0
  80. package/packages/protocol/src/envelope.test.ts +25 -0
  81. package/packages/protocol/src/envelope.ts +31 -0
  82. package/packages/protocol/src/errors.test.ts +17 -0
  83. package/packages/protocol/src/errors.ts +11 -0
  84. package/packages/protocol/src/index.ts +3 -0
  85. package/packages/protocol/src/tools.ts +3 -0
  86. package/packages/transport-mcp-stdio/src/index.ts +3 -0
  87. package/packages/transport-mcp-stdio/src/sdk-server.ts +139 -0
  88. package/packages/transport-mcp-stdio/src/server.test.ts +281 -0
  89. package/packages/transport-mcp-stdio/src/server.ts +183 -0
  90. package/packages/transport-mcp-stdio/src/tool-map.ts +67 -0
  91. package/scripts/smoke.ps1 +127 -0
@@ -0,0 +1,7 @@
1
+ import { bootstrapBrowserd } from "./bootstrap";
2
+
3
+ export function main() {
4
+ return bootstrapBrowserd();
5
+ }
6
+
7
+ void main();
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ const { spawn } = require("node:child_process");
3
+ const { resolve } = require("node:path");
4
+
5
+ const repoRoot = resolve(__dirname, "..");
6
+ const entry = resolve(repoRoot, "apps/browserctl/src/main.ts");
7
+
8
+ const child = spawn(process.execPath, ["--import", "tsx", entry, ...process.argv.slice(2)], {
9
+ cwd: repoRoot,
10
+ env: process.env,
11
+ stdio: "inherit"
12
+ });
13
+
14
+ child.on("exit", (code, signal) => {
15
+ if (signal) {
16
+ process.kill(process.pid, signal);
17
+ return;
18
+ }
19
+
20
+ process.exit(code ?? 1);
21
+ });
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ const { spawn } = require("node:child_process");
3
+ const { resolve } = require("node:path");
4
+
5
+ const repoRoot = resolve(__dirname, "..");
6
+ const entry = resolve(repoRoot, "apps/browserd/src/main.ts");
7
+
8
+ const child = spawn(process.execPath, ["--import", "tsx", entry, ...process.argv.slice(2)], {
9
+ cwd: repoRoot,
10
+ env: process.env,
11
+ stdio: "inherit"
12
+ });
13
+
14
+ child.on("exit", (code, signal) => {
15
+ if (signal) {
16
+ process.kill(process.pid, signal);
17
+ return;
18
+ }
19
+
20
+ process.exit(code ?? 1);
21
+ });
@@ -0,0 +1,38 @@
1
+ # BrowserCtl Relay 扩展
2
+
3
+ [English](README.md) | 简体中文
4
+
5
+ 此扩展用于将 Chromium 系浏览器标签页层连接到本地 BrowserCtl 扩展桥接服务。
6
+
7
+ ## 加载已解压扩展
8
+
9
+ 1. 打开 `chrome://extensions`(Edge 使用 `edge://extensions`)。
10
+ 2. 开启**开发者模式**。
11
+ 3. 点击**加载已解压的扩展程序**。
12
+ 4. 选择目录:`extensions/chrome-relay`。
13
+
14
+ 该扩展使用 `debugger` 权限采集控制台/网络遥测,以供 agent 侧诊断与分析。
15
+
16
+ ## 配置
17
+
18
+ 1. 打开扩展弹窗。
19
+ 2. 将 `Bridge URL` 设置为桥接地址。
20
+ 3. 将 token 设置为与 `BROWSERD_CHROME_RELAY_EXTENSION_TOKEN` 一致(必填)。
21
+ 4. 点击 **Save**,然后点击 **Reconnect**。
22
+
23
+ 默认 Bridge URL:
24
+
25
+ - `ws://127.0.0.1:9223/bridge`
26
+
27
+ ## 弹窗故障排查
28
+
29
+ 弹窗内置了专门的排查区域:
30
+
31
+ - **Run Diagnostics**:对比扩展侧连接状态与 relay 侧 `/browserctl/relay/status`。
32
+ - **Copy Report**:复制包含状态快照与建议动作的 JSON 诊断报告。
33
+ - **Guidance list**:给出常见问题的定向建议(URL 不匹配、token 不匹配、relay 不可达、连接陈旧等)。
34
+
35
+ ## 语言切换
36
+
37
+ 使用弹窗语言选择器可切换 **English** 与 **中文**。
38
+ 所选语言会保存到扩展本地存储,并在下次打开弹窗时自动应用。
@@ -0,0 +1,38 @@
1
+ # BrowserCtl Relay Extension
2
+
3
+ English | [简体中文](README-CN.md)
4
+
5
+ This extension connects a Chromium-based browser tab layer to the local BrowserCtl extension bridge.
6
+
7
+ ## Load Unpacked
8
+
9
+ 1. Open `chrome://extensions` (or `edge://extensions` in Edge).
10
+ 2. Enable **Developer mode**.
11
+ 3. Click **Load unpacked**.
12
+ 4. Select this folder: `extensions/chrome-relay`.
13
+
14
+ This extension uses the `debugger` permission to collect console/network telemetry for agent-side inspection.
15
+
16
+ ## Configure
17
+
18
+ 1. Open the extension popup.
19
+ 2. Set `Bridge URL` to your bridge endpoint.
20
+ 3. Set token to match `BROWSERD_CHROME_RELAY_EXTENSION_TOKEN` (required).
21
+ 4. Click **Save** and then **Reconnect**.
22
+
23
+ Default bridge URL:
24
+
25
+ - `ws://127.0.0.1:9223/bridge`
26
+
27
+ ## Troubleshooting In Popup
28
+
29
+ The popup now includes a dedicated troubleshooting section:
30
+
31
+ - **Run Diagnostics**: compares extension-side connection state with relay-side `/browserctl/relay/status`.
32
+ - **Copy Report**: copies a JSON diagnostics report with status snapshots and recommended actions.
33
+ - **Guidance list**: shows targeted fixes for common issues (URL mismatch, token mismatch, relay unreachable, stale connection).
34
+
35
+ ## Language Switch
36
+
37
+ Use the popup language selector to switch between **English** and **Chinese (中文)**.
38
+ The selected language is persisted in extension local storage and applied on the next popup open.