@zenalexa/unicli 0.216.3 → 1.0.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/AGENTS.md +1 -1
- package/README.md +13 -5
- package/README.zh-CN.md +12 -5
- package/dist/adapters/_electron/desktop-shared.d.ts.map +1 -1
- package/dist/adapters/_electron/desktop-shared.js +13 -0
- package/dist/adapters/_electron/desktop-shared.js.map +1 -1
- package/dist/adapters/_electron/shared.d.ts +1 -0
- package/dist/adapters/_electron/shared.d.ts.map +1 -1
- package/dist/adapters/_electron/shared.js +49 -2
- package/dist/adapters/_electron/shared.js.map +1 -1
- package/dist/browser/bridge.d.ts +3 -1
- package/dist/browser/bridge.d.ts.map +1 -1
- package/dist/browser/bridge.js +47 -23
- package/dist/browser/bridge.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/browser-operator-runtime.d.ts.map +1 -1
- package/dist/commands/browser-operator-runtime.js +4 -2
- package/dist/commands/browser-operator-runtime.js.map +1 -1
- package/dist/commands/browser-operator.d.ts.map +1 -1
- package/dist/commands/browser-operator.js +110 -38
- package/dist/commands/browser-operator.js.map +1 -1
- package/dist/commands/describe.d.ts.map +1 -1
- package/dist/commands/describe.js +20 -1
- package/dist/commands/describe.js.map +1 -1
- package/dist/commands/dispatch.d.ts +3 -0
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/dispatch.js +70 -4
- package/dist/commands/dispatch.js.map +1 -1
- package/dist/core/schema-v2.d.ts +2 -2
- package/dist/discovery/loader.d.ts.map +1 -1
- package/dist/discovery/loader.js +2 -0
- package/dist/discovery/loader.js.map +1 -1
- package/dist/engine/browser/action-evidence.d.ts +28 -0
- package/dist/engine/browser/action-evidence.d.ts.map +1 -0
- package/dist/engine/browser/action-evidence.js +320 -0
- package/dist/engine/browser/action-evidence.js.map +1 -0
- package/dist/engine/browser/evidence.d.ts +63 -0
- package/dist/engine/browser/evidence.d.ts.map +1 -0
- package/dist/engine/browser/evidence.js +301 -0
- package/dist/engine/browser/evidence.js.map +1 -0
- package/dist/engine/capability-policy.d.ts +39 -0
- package/dist/engine/capability-policy.d.ts.map +1 -0
- package/dist/engine/capability-policy.js +195 -0
- package/dist/engine/capability-policy.js.map +1 -0
- package/dist/engine/executor.d.ts +3 -3
- package/dist/engine/executor.d.ts.map +1 -1
- package/dist/engine/executor.js.map +1 -1
- package/dist/engine/kernel/execute.d.ts +4 -1
- package/dist/engine/kernel/execute.d.ts.map +1 -1
- package/dist/engine/kernel/execute.js +92 -10
- package/dist/engine/kernel/execute.js.map +1 -1
- package/dist/engine/kernel/types.d.ts +2 -0
- package/dist/engine/kernel/types.d.ts.map +1 -1
- package/dist/engine/operation-policy.d.ts +52 -0
- package/dist/engine/operation-policy.d.ts.map +1 -0
- package/dist/engine/operation-policy.js +360 -0
- package/dist/engine/operation-policy.js.map +1 -0
- package/dist/engine/session/events.d.ts +22 -0
- package/dist/engine/session/events.d.ts.map +1 -0
- package/dist/engine/session/events.js +66 -0
- package/dist/engine/session/events.js.map +1 -0
- package/dist/engine/session/run-loop.d.ts +11 -0
- package/dist/engine/session/run-loop.d.ts.map +1 -0
- package/dist/engine/session/run-loop.js +173 -0
- package/dist/engine/session/run-loop.js.map +1 -0
- package/dist/engine/session/store.d.ts +19 -0
- package/dist/engine/session/store.d.ts.map +1 -0
- package/dist/engine/session/store.js +84 -0
- package/dist/engine/session/store.js.map +1 -0
- package/dist/engine/session/types.d.ts +37 -0
- package/dist/engine/session/types.d.ts.map +1 -0
- package/dist/engine/session/types.js +2 -0
- package/dist/engine/session/types.js.map +1 -0
- package/dist/engine/steps/fetch-text.d.ts +1 -1
- package/dist/engine/steps/fetch-text.d.ts.map +1 -1
- package/dist/engine/steps/fetch-text.js +52 -18
- package/dist/engine/steps/fetch-text.js.map +1 -1
- package/dist/engine/steps/fetch.d.ts +1 -0
- package/dist/engine/steps/fetch.d.ts.map +1 -1
- package/dist/engine/steps/fetch.js +7 -1
- package/dist/engine/steps/fetch.js.map +1 -1
- package/dist/engine/steps/parse-rss.d.ts.map +1 -1
- package/dist/engine/steps/parse-rss.js +9 -4
- package/dist/engine/steps/parse-rss.js.map +1 -1
- package/dist/engine/template.d.ts.map +1 -1
- package/dist/engine/template.js +2 -1
- package/dist/engine/template.js.map +1 -1
- package/dist/engine/text-normalize.d.ts +6 -0
- package/dist/engine/text-normalize.d.ts.map +1 -0
- package/dist/engine/text-normalize.js +63 -0
- package/dist/engine/text-normalize.js.map +1 -0
- package/dist/fast-path.d.ts.map +1 -1
- package/dist/fast-path.js +207 -8
- package/dist/fast-path.js.map +1 -1
- package/dist/main.d.ts +1 -1
- package/dist/main.js +1 -1
- package/dist/manifest.json +3357 -600
- package/dist/mcp/dispatch.d.ts +3 -3
- package/dist/mcp/dispatch.d.ts.map +1 -1
- package/dist/mcp/dispatch.js +6 -5
- package/dist/mcp/dispatch.js.map +1 -1
- package/dist/output/error-map.d.ts.map +1 -1
- package/dist/output/error-map.js +21 -0
- package/dist/output/error-map.js.map +1 -1
- package/dist/protocol/acp-helpers.d.ts +2 -2
- package/dist/protocol/acp-helpers.d.ts.map +1 -1
- package/dist/protocol/acp-helpers.js +5 -4
- package/dist/protocol/acp-helpers.js.map +1 -1
- package/dist/registry.d.ts +3 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +2 -0
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +9 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +16 -16
- package/src/adapters/36kr/news.yaml +4 -1
- package/src/adapters/_electron/desktop-shared.ts +14 -0
- package/src/adapters/_electron/shared.ts +54 -2
package/AGENTS.md
CHANGED
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<h1 align="center">Uni-CLI</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<strong>
|
|
8
|
+
<strong>The agent execution substrate for the world's software.</strong>
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
</p>
|
|
18
18
|
|
|
19
19
|
<p align="center">
|
|
20
|
-
Search by intent,
|
|
20
|
+
Search by intent, execute governed commands across web, apps, local tools, and system capabilities, then return evidence-rich AgentEnvelopes that agents can inspect and repair.
|
|
21
21
|
</p>
|
|
22
22
|
|
|
23
23
|
<p align="center">
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
</p>
|
|
29
29
|
|
|
30
30
|
<p align="center">
|
|
31
|
-
<sub><!-- STATS:site_count -->235<!-- /STATS --> sites · <!-- STATS:command_count -->1448<!-- /STATS --> commands · <!-- STATS:pipeline_step_count -->59<!-- /STATS --> pipeline steps · <!-- STATS:test_count -->
|
|
31
|
+
<sub><!-- STATS:site_count -->235<!-- /STATS --> sites · <!-- STATS:command_count -->1448<!-- /STATS --> commands · <!-- STATS:pipeline_step_count -->59<!-- /STATS --> pipeline steps · <!-- STATS:test_count -->7471<!-- /STATS --> tests</sub>
|
|
32
32
|
</p>
|
|
33
33
|
|
|
34
34
|
<p align="center">
|
|
@@ -129,7 +129,7 @@ Prefer native CLI / JSON stream / MCP for agent runtimes. Use ACP as an editor c
|
|
|
129
129
|
|
|
130
130
|
## What It Does
|
|
131
131
|
|
|
132
|
-
Uni-CLI turns software surfaces into commands that agents can discover,
|
|
132
|
+
Uni-CLI sits under agent applications and turns software surfaces into commands that agents can discover, execute, record, and repair.
|
|
133
133
|
|
|
134
134
|
| Surface | What you get |
|
|
135
135
|
| ------------------ | -------------------------------------------------------------------------------------------------- |
|
|
@@ -138,6 +138,8 @@ Uni-CLI turns software surfaces into commands that agents can discover, run, and
|
|
|
138
138
|
| Desktop and macOS | System commands, app adapters, screenshots, clipboard, calendar, brightness, and local tools |
|
|
139
139
|
| External CLIs | 58 registered pass-through bridges with install/status discovery |
|
|
140
140
|
| Agent backends | Route matrix for native CLI, JSON stream, MCP, ACP, HTTP API, OpenAI-compatible, and bridge routes |
|
|
141
|
+
| Operation policy | `open`, `confirm`, and `locked` profiles with effect, risk, approval, and capability scope |
|
|
142
|
+
| Evidence | Optional run traces plus browser pre/post evidence, movement detection, stale-ref details |
|
|
141
143
|
| Output | v2 `AgentEnvelope` in Markdown, JSON, YAML, CSV, or compact format |
|
|
142
144
|
| Repair | Structured errors with `adapter_path`, failing `step`, retryability, suggestions, and alternatives |
|
|
143
145
|
|
|
@@ -156,6 +158,7 @@ Output defaults to structured Markdown for non-TTY and agent-user-agent runs. Fo
|
|
|
156
158
|
```bash
|
|
157
159
|
UNICLI_OUTPUT=json unicli reddit hot --limit 10
|
|
158
160
|
unicli hackernews top --limit 5 -f yaml
|
|
161
|
+
unicli --record --permission-profile confirm twitter search "coding agents" -f json
|
|
159
162
|
```
|
|
160
163
|
|
|
161
164
|
Protocol entry points:
|
|
@@ -288,6 +291,11 @@ Docs:
|
|
|
288
291
|
|
|
289
292
|
- Auth-required sites use local cookie files under `~/.unicli/cookies/<site>.json`.
|
|
290
293
|
- Browser adapters require a reachable Chrome/CDP session.
|
|
294
|
+
- Permission profiles are user-selected runtime policy. The default is `open`;
|
|
295
|
+
stricter `confirm` and `locked` profiles require `--yes` or `UNICLI_APPROVE=1`
|
|
296
|
+
for blocked operations.
|
|
297
|
+
- Run recording is opt-in. Use `--record` or `UNICLI_RECORD_RUN=1` when you need
|
|
298
|
+
append-only evidence under `~/.unicli/runs`.
|
|
291
299
|
- CUA routes require a configured real backend. Declared-but-unavailable providers fail closed with structured errors.
|
|
292
300
|
- User adapters and repairs live in `~/.unicli/adapters/`; committed adapters remain the package baseline.
|
|
293
301
|
- If a site blocks automation or changes a private API, the correct behavior is a clear failure envelope, not a fabricated success.
|
|
@@ -306,5 +314,5 @@ npm run verify
|
|
|
306
314
|
[Apache-2.0](./LICENSE)
|
|
307
315
|
|
|
308
316
|
<p align="center">
|
|
309
|
-
<sub>
|
|
317
|
+
<sub>v1.0.0 — Apollo · Lovell</sub>
|
|
310
318
|
</p>
|
package/README.zh-CN.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<h1 align="center">Uni-CLI</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<strong
|
|
8
|
+
<strong>面向真实软件的 Agent 执行底座。</strong>
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
</p>
|
|
18
18
|
|
|
19
19
|
<p align="center">
|
|
20
|
-
|
|
20
|
+
按意图发现命令,跨 Web、应用、本地工具和系统能力执行可治理操作,再返回带证据的 AgentEnvelope,方便智能体检查和修复。
|
|
21
21
|
</p>
|
|
22
22
|
|
|
23
23
|
<p align="center">
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
</p>
|
|
29
29
|
|
|
30
30
|
<p align="center">
|
|
31
|
-
<sub><!-- STATS:site_count -->235<!-- /STATS --> 个站点 · <!-- STATS:command_count -->1448<!-- /STATS --> 条命令 · <!-- STATS:pipeline_step_count -->59<!-- /STATS --> 个 pipeline step · <!-- STATS:test_count -->
|
|
31
|
+
<sub><!-- STATS:site_count -->235<!-- /STATS --> 个站点 · <!-- STATS:command_count -->1448<!-- /STATS --> 条命令 · <!-- STATS:pipeline_step_count -->59<!-- /STATS --> 个 pipeline step · <!-- STATS:test_count -->7471<!-- /STATS --> 个测试</sub>
|
|
32
32
|
</p>
|
|
33
33
|
|
|
34
34
|
<p align="center">
|
|
@@ -129,7 +129,7 @@ Prefer native CLI / JSON stream / MCP for agent runtimes. Use ACP as an editor c
|
|
|
129
129
|
|
|
130
130
|
## 它解决什么
|
|
131
131
|
|
|
132
|
-
Uni-CLI
|
|
132
|
+
Uni-CLI 位于 Agent 应用之下,把软件表面收敛成 Agent 能发现、能执行、能记录、能修的命令。
|
|
133
133
|
|
|
134
134
|
| 表面 | 能力 |
|
|
135
135
|
| ------------ | ------------------------------------------------------------------------------- |
|
|
@@ -138,6 +138,8 @@ Uni-CLI 把软件表面封装成 Agent 能发现、能执行、能修的命令
|
|
|
138
138
|
| 桌面和 macOS | 系统命令、App adapter、截图、剪贴板、日历、亮度、本地工具 |
|
|
139
139
|
| 外部 CLI | 58 个已登记的 passthrough bridge,支持安装和状态发现 |
|
|
140
140
|
| Agent 后端 | native CLI、JSON stream、MCP、ACP、HTTP API、OpenAI-compatible、bridge 路由矩阵 |
|
|
141
|
+
| 操作策略 | `open`、`confirm`、`locked` profile,暴露 effect、risk、approval、capability |
|
|
142
|
+
| 执行证据 | 可选 run trace,浏览器动作的前后证据、移动检测、stale-ref 细节 |
|
|
141
143
|
| 输出 | v2 `AgentEnvelope`,支持 Markdown、JSON、YAML、CSV、compact |
|
|
142
144
|
| 修复 | 错误里带 `adapter_path`、失败 `step`、是否可重试、修复建议和替代命令 |
|
|
143
145
|
|
|
@@ -156,6 +158,7 @@ unicli repair twitter search
|
|
|
156
158
|
```bash
|
|
157
159
|
UNICLI_OUTPUT=json unicli reddit hot --limit 10
|
|
158
160
|
unicli hackernews top --limit 5 -f yaml
|
|
161
|
+
unicli --record --permission-profile confirm twitter search "coding agents" -f json
|
|
159
162
|
```
|
|
160
163
|
|
|
161
164
|
协议入口:
|
|
@@ -288,6 +291,10 @@ columns: [title, url]
|
|
|
288
291
|
|
|
289
292
|
- 需要登录的网站使用本地 cookie 文件:`~/.unicli/cookies/<site>.json`。
|
|
290
293
|
- Browser adapter 需要可连接的 Chrome/CDP。
|
|
294
|
+
- Permission profile 是用户选择的运行时策略。默认是 `open`;更严格的
|
|
295
|
+
`confirm` 和 `locked` profile 会要求 `--yes` 或 `UNICLI_APPROVE=1`。
|
|
296
|
+
- Run recording 是显式启用能力。需要可审查证据时使用 `--record` 或
|
|
297
|
+
`UNICLI_RECORD_RUN=1`,追加写入 `~/.unicli/runs`。
|
|
291
298
|
- CUA 路由必须配置真实 backend。声明了但不可用的 provider 会失败关闭,并返回结构化错误。
|
|
292
299
|
- 用户 adapter 和修复放在 `~/.unicli/adapters/`;包内 adapter 是基线。
|
|
293
300
|
- 如果网站阻止自动化或私有 API 变了,正确行为是清楚失败,不是伪装成功。
|
|
@@ -306,5 +313,5 @@ npm run verify
|
|
|
306
313
|
[Apache-2.0](./LICENSE)
|
|
307
314
|
|
|
308
315
|
<p align="center">
|
|
309
|
-
<sub>
|
|
316
|
+
<sub>v1.0.0 — Apollo · Lovell</sub>
|
|
310
317
|
</p>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"desktop-shared.d.ts","sourceRoot":"","sources":["../../../src/adapters/_electron/desktop-shared.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,6BAA6B;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAC9B;AAED,eAAO,MAAM,8BAA8B,iGAQjC,CAAC;AAEX,eAAO,MAAM,+BAA+B,oEAOlC,CAAC;
|
|
1
|
+
{"version":3,"file":"desktop-shared.d.ts","sourceRoot":"","sources":["../../../src/adapters/_electron/desktop-shared.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,6BAA6B;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAC9B;AAED,eAAO,MAAM,8BAA8B,iGAQjC,CAAC;AAEX,eAAO,MAAM,+BAA+B,oEAOlC,CAAC;AAOX,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,6BAAkC,GAC1C,IAAI,CAyJN"}
|
|
@@ -19,6 +19,10 @@ export const ELECTRON_DESKTOP_MEDIA_COMMANDS = [
|
|
|
19
19
|
"next",
|
|
20
20
|
"prev",
|
|
21
21
|
];
|
|
22
|
+
const ELECTRON_DESKTOP_COMMAND_META = {
|
|
23
|
+
adapter_path: "src/adapters/electron-desktop/electron-desktop.ts",
|
|
24
|
+
target_surface: "desktop",
|
|
25
|
+
};
|
|
22
26
|
export function registerElectronDesktopCommands(site, profile = {}) {
|
|
23
27
|
const app = getElectronApp(site);
|
|
24
28
|
const displayName = profile.displayName ?? app?.displayName ?? site;
|
|
@@ -27,6 +31,7 @@ export function registerElectronDesktopCommands(site, profile = {}) {
|
|
|
27
31
|
name: "open-app",
|
|
28
32
|
description: `Open ${displayName} desktop Electron app with CDP enabled for AI control. 打开${displayName}桌面版并启用 CDP 控制。`,
|
|
29
33
|
strategy: Strategy.PUBLIC,
|
|
34
|
+
...ELECTRON_DESKTOP_COMMAND_META,
|
|
30
35
|
func: async () => {
|
|
31
36
|
const endpoint = await launchElectronApp(site);
|
|
32
37
|
return [
|
|
@@ -45,6 +50,7 @@ export function registerElectronDesktopCommands(site, profile = {}) {
|
|
|
45
50
|
name: "status-app",
|
|
46
51
|
description: `Inspect current ${displayName} desktop app page, title, URL, visible controls, and text summary. 查看${displayName}桌面版当前状态和可见内容。`,
|
|
47
52
|
strategy: Strategy.PUBLIC,
|
|
53
|
+
...ELECTRON_DESKTOP_COMMAND_META,
|
|
48
54
|
func: async () => [await readDesktopStatus(site, displayName)],
|
|
49
55
|
});
|
|
50
56
|
cli({
|
|
@@ -52,6 +58,7 @@ export function registerElectronDesktopCommands(site, profile = {}) {
|
|
|
52
58
|
name: "dump",
|
|
53
59
|
description: `Dump visible text from the ${displayName} desktop Electron app via CDP DOM. 读取${displayName}桌面版可见文本。`,
|
|
54
60
|
strategy: Strategy.PUBLIC,
|
|
61
|
+
...ELECTRON_DESKTOP_COMMAND_META,
|
|
55
62
|
args: [
|
|
56
63
|
{
|
|
57
64
|
name: "limit",
|
|
@@ -71,6 +78,7 @@ export function registerElectronDesktopCommands(site, profile = {}) {
|
|
|
71
78
|
name: "snapshot-app",
|
|
72
79
|
description: `List visible clickable text, buttons, inputs, and regions in ${displayName}. 枚举${displayName}桌面版可交互内容。`,
|
|
73
80
|
strategy: Strategy.PUBLIC,
|
|
81
|
+
...ELECTRON_DESKTOP_COMMAND_META,
|
|
74
82
|
func: async () => {
|
|
75
83
|
const p = await connectElectronApp(site);
|
|
76
84
|
return (await p.evaluate(visibleInteractivesJs()));
|
|
@@ -81,6 +89,7 @@ export function registerElectronDesktopCommands(site, profile = {}) {
|
|
|
81
89
|
name: "click-text",
|
|
82
90
|
description: `Click visible text, aria-label, title, or button content in ${displayName}. 按文本点击${displayName}桌面版控件。`,
|
|
83
91
|
strategy: Strategy.PUBLIC,
|
|
92
|
+
...ELECTRON_DESKTOP_COMMAND_META,
|
|
84
93
|
args: [
|
|
85
94
|
{
|
|
86
95
|
name: "text",
|
|
@@ -99,6 +108,7 @@ export function registerElectronDesktopCommands(site, profile = {}) {
|
|
|
99
108
|
name: "type-text",
|
|
100
109
|
description: `Type text into the focused field or a text-matched target in ${displayName}. 向${displayName}桌面版输入文本。`,
|
|
101
110
|
strategy: Strategy.PUBLIC,
|
|
111
|
+
...ELECTRON_DESKTOP_COMMAND_META,
|
|
102
112
|
args: [
|
|
103
113
|
{
|
|
104
114
|
name: "text",
|
|
@@ -127,6 +137,7 @@ export function registerElectronDesktopCommands(site, profile = {}) {
|
|
|
127
137
|
name: "press",
|
|
128
138
|
description: `Press a key in ${displayName}, with optional comma-separated modifiers. 在${displayName}桌面版发送按键。`,
|
|
129
139
|
strategy: Strategy.PUBLIC,
|
|
140
|
+
...ELECTRON_DESKTOP_COMMAND_META,
|
|
130
141
|
args: [
|
|
131
142
|
{
|
|
132
143
|
name: "key",
|
|
@@ -163,6 +174,7 @@ function registerMediaCommands(site, displayName, media) {
|
|
|
163
174
|
name: "play-liked",
|
|
164
175
|
description: `Open ${displayName} liked songs and play the liked playlist. 打开${displayName}我喜欢的音乐/喜欢的歌曲并播放。`,
|
|
165
176
|
strategy: Strategy.PUBLIC,
|
|
177
|
+
...ELECTRON_DESKTOP_COMMAND_META,
|
|
166
178
|
func: async () => {
|
|
167
179
|
const p = await connectElectronApp(site);
|
|
168
180
|
const liked = await clickVisibleText(p, media.likedText, displayName);
|
|
@@ -178,6 +190,7 @@ function registerMediaCommands(site, displayName, media) {
|
|
|
178
190
|
name: action,
|
|
179
191
|
description: `${action} playback in the ${displayName} desktop app. 控制${displayName}桌面版播放:${action}。`,
|
|
180
192
|
strategy: Strategy.PUBLIC,
|
|
193
|
+
...ELECTRON_DESKTOP_COMMAND_META,
|
|
181
194
|
func: async () => {
|
|
182
195
|
const p = await connectElectronApp(site);
|
|
183
196
|
const clicked = await clickMediaControl(p, action, displayName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"desktop-shared.js","sourceRoot":"","sources":["../../../src/adapters/_electron/desktop-shared.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"desktop-shared.js","sourceRoot":"","sources":["../../../src/adapters/_electron/desktop-shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ export interface AIChatConfig {
|
|
|
22
22
|
sendButtonSelector?: string;
|
|
23
23
|
displayName?: string;
|
|
24
24
|
}
|
|
25
|
+
export declare function isRequestedModelActive(currentModelText: string, requestedModel: string): boolean;
|
|
25
26
|
/**
|
|
26
27
|
* Register standard AI chat commands for an Electron app.
|
|
27
28
|
* Each app gets: ask, send, read, model, status, new, screenshot, dump
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/adapters/_electron/shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAU3E;AAED,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,GACnB,IAAI,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/adapters/_electron/shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAU3E;AAED,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACrB,OAAO,CAKT;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,GACnB,IAAI,CAqON"}
|
|
@@ -25,12 +25,26 @@ export async function connectElectronApp(site) {
|
|
|
25
25
|
await injectStealth(page.sendCDP.bind(page));
|
|
26
26
|
return page;
|
|
27
27
|
}
|
|
28
|
+
function normalizeModelText(value) {
|
|
29
|
+
return value.trim().toLowerCase().replace(/\s+/g, " ");
|
|
30
|
+
}
|
|
31
|
+
export function isRequestedModelActive(currentModelText, requestedModel) {
|
|
32
|
+
const observed = normalizeModelText(currentModelText);
|
|
33
|
+
const requested = normalizeModelText(requestedModel);
|
|
34
|
+
if (!observed || !requested || observed === "unknown")
|
|
35
|
+
return false;
|
|
36
|
+
return observed === requested || observed.includes(requested);
|
|
37
|
+
}
|
|
28
38
|
/**
|
|
29
39
|
* Register standard AI chat commands for an Electron app.
|
|
30
40
|
* Each app gets: ask, send, read, model, status, new, screenshot, dump
|
|
31
41
|
*/
|
|
32
42
|
export function registerAIChatCommands(site, config) {
|
|
33
43
|
const { inputSelector, responseSelector, modelSelector, newChatSelector, sendMethod = "enter", sendButtonSelector, displayName = site, } = config;
|
|
44
|
+
const desktopCommandMeta = {
|
|
45
|
+
adapter_path: `src/adapters/${site}/${site}.ts`,
|
|
46
|
+
target_surface: "desktop",
|
|
47
|
+
};
|
|
34
48
|
/** Escape single quotes in selectors for use in evaluate strings */
|
|
35
49
|
const esc = (s) => s.replace(/'/g, "\\'");
|
|
36
50
|
// ask <prompt> -- Send and wait for response
|
|
@@ -39,6 +53,7 @@ export function registerAIChatCommands(site, config) {
|
|
|
39
53
|
name: "ask",
|
|
40
54
|
description: `Send a prompt to ${displayName} and wait for response`,
|
|
41
55
|
strategy: Strategy.PUBLIC,
|
|
56
|
+
...desktopCommandMeta,
|
|
42
57
|
args: [
|
|
43
58
|
{
|
|
44
59
|
name: "prompt",
|
|
@@ -81,6 +96,7 @@ export function registerAIChatCommands(site, config) {
|
|
|
81
96
|
name: "send",
|
|
82
97
|
description: `Send text to ${displayName} without waiting`,
|
|
83
98
|
strategy: Strategy.PUBLIC,
|
|
99
|
+
...desktopCommandMeta,
|
|
84
100
|
args: [{ name: "text", required: true, positional: true }],
|
|
85
101
|
func: async (_page, kwargs) => {
|
|
86
102
|
const p = await connectElectronApp(site);
|
|
@@ -102,6 +118,7 @@ export function registerAIChatCommands(site, config) {
|
|
|
102
118
|
name: "read",
|
|
103
119
|
description: `Read the last response from ${displayName}`,
|
|
104
120
|
strategy: Strategy.PUBLIC,
|
|
121
|
+
...desktopCommandMeta,
|
|
105
122
|
func: async () => {
|
|
106
123
|
const p = await connectElectronApp(site);
|
|
107
124
|
const text = (await p.evaluate(`document.querySelector('${esc(responseSelector)}')?.innerText ?? ''`));
|
|
@@ -115,11 +132,37 @@ export function registerAIChatCommands(site, config) {
|
|
|
115
132
|
name: "model",
|
|
116
133
|
description: `Read or switch the current model in ${displayName}`,
|
|
117
134
|
strategy: Strategy.PUBLIC,
|
|
135
|
+
...desktopCommandMeta,
|
|
118
136
|
args: [{ name: "name", required: false, positional: true }],
|
|
119
|
-
func: async (_page,
|
|
137
|
+
func: async (_page, kwargs) => {
|
|
120
138
|
const p = await connectElectronApp(site);
|
|
139
|
+
const requested = typeof kwargs.name === "string" ? kwargs.name.trim() : "";
|
|
140
|
+
if (requested) {
|
|
141
|
+
await p.click(modelSelector);
|
|
142
|
+
await p.wait(0.5);
|
|
143
|
+
await p.evaluate(`(() => {
|
|
144
|
+
const wanted = ${JSON.stringify(requested.toLowerCase())};
|
|
145
|
+
const nodes = Array.from(document.querySelectorAll('button,[role="button"],[role="menuitem"],[role="option"],li,div,span'));
|
|
146
|
+
const candidate = nodes.find((node) => {
|
|
147
|
+
const text = (node.textContent || '').trim().toLowerCase();
|
|
148
|
+
return text === wanted || text.includes(wanted);
|
|
149
|
+
});
|
|
150
|
+
if (!candidate) return false;
|
|
151
|
+
candidate.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));
|
|
152
|
+
return true;
|
|
153
|
+
})()`);
|
|
154
|
+
await p.wait(0.8);
|
|
155
|
+
}
|
|
121
156
|
const current = (await p.evaluate(`document.querySelector('${esc(modelSelector)}')?.innerText ?? 'unknown'`));
|
|
122
|
-
return
|
|
157
|
+
return requested
|
|
158
|
+
? [
|
|
159
|
+
{
|
|
160
|
+
model: current,
|
|
161
|
+
requested,
|
|
162
|
+
switched: isRequestedModelActive(current, requested),
|
|
163
|
+
},
|
|
164
|
+
]
|
|
165
|
+
: [{ model: current }];
|
|
123
166
|
},
|
|
124
167
|
});
|
|
125
168
|
}
|
|
@@ -129,6 +172,7 @@ export function registerAIChatCommands(site, config) {
|
|
|
129
172
|
name: "status",
|
|
130
173
|
description: `Check ${displayName} app status`,
|
|
131
174
|
strategy: Strategy.PUBLIC,
|
|
175
|
+
...desktopCommandMeta,
|
|
132
176
|
func: async () => {
|
|
133
177
|
const p = await connectElectronApp(site);
|
|
134
178
|
const title = await p.title();
|
|
@@ -146,6 +190,7 @@ export function registerAIChatCommands(site, config) {
|
|
|
146
190
|
name: "new",
|
|
147
191
|
description: `Start a new conversation in ${displayName}`,
|
|
148
192
|
strategy: Strategy.PUBLIC,
|
|
193
|
+
...desktopCommandMeta,
|
|
149
194
|
func: async () => {
|
|
150
195
|
const p = await connectElectronApp(site);
|
|
151
196
|
if (newChatSelector.startsWith("key:")) {
|
|
@@ -168,6 +213,7 @@ export function registerAIChatCommands(site, config) {
|
|
|
168
213
|
name: "screenshot",
|
|
169
214
|
description: `Capture screenshot of ${displayName}`,
|
|
170
215
|
strategy: Strategy.PUBLIC,
|
|
216
|
+
...desktopCommandMeta,
|
|
171
217
|
args: [
|
|
172
218
|
{
|
|
173
219
|
name: "path",
|
|
@@ -189,6 +235,7 @@ export function registerAIChatCommands(site, config) {
|
|
|
189
235
|
name: "dump",
|
|
190
236
|
description: `Dump full page content from ${displayName}`,
|
|
191
237
|
strategy: Strategy.PUBLIC,
|
|
238
|
+
...desktopCommandMeta,
|
|
192
239
|
func: async () => {
|
|
193
240
|
const p = await connectElectronApp(site);
|
|
194
241
|
const snapshot = await p.snapshot({ compact: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/adapters/_electron/shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACL,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,IAAI,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC;AAcD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,MAAoB;IAEpB,MAAM,EACJ,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,UAAU,GAAG,OAAO,EACpB,kBAAkB,EAClB,WAAW,GAAG,IAAI,GACnB,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/adapters/_electron/shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACL,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,IAAI,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC;AAcD,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,gBAAwB,EACxB,cAAsB;IAEtB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACpE,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,MAAoB;IAEpB,MAAM,EACJ,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,UAAU,GAAG,OAAO,EACpB,kBAAkB,EAClB,WAAW,GAAG,IAAI,GACnB,GAAG,MAAM,CAAC;IACX,MAAM,kBAAkB,GAAG;QACzB,YAAY,EAAE,gBAAgB,IAAI,IAAI,IAAI,KAAK;QAC/C,cAAc,EAAE,SAAkB;KACnC,CAAC;IAEF,oEAAoE;IACpE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE1D,6CAA6C;IAC7C,GAAG,CAAC;QACF,IAAI;QACJ,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,oBAAoB,WAAW,wBAAwB;QACpE,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,GAAG,kBAAkB;QACrB,IAAI,EAAE;YACJ;gBACE,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI;gBAChB,WAAW,EAAE,oBAAoB;aAClC;SACF;QACD,IAAI,EAAE,KAAK,EAAE,KAAc,EAAE,MAA+B,EAAE,EAAE;YAC9D,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC7B,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,UAAU,KAAK,QAAQ,IAAI,kBAAkB,EAAE,CAAC;gBAClD,MAAM,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YACD,2DAA2D;YAC3D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,EAAE,CAAC;gBAC7C,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAC5B,2BAA2B,GAAG,CAAC,gBAAgB,CAAC,qBAAqB,CACtE,CAAW,CAAC;gBACb,IAAI,IAAI,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjD,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9B,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,IAAI,eAAe,EAAE,CAAC,CAAC;QACrD,CAAC;KACF,CAAC,CAAC;IAEH,sCAAsC;IACtC,GAAG,CAAC;QACF,IAAI;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,gBAAgB,WAAW,kBAAkB;QAC1D,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,GAAG,kBAAkB;QACrB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC1D,IAAI,EAAE,KAAK,EAAE,KAAc,EAAE,MAA+B,EAAE,EAAE;YAC9D,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC7B,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,IAAI,UAAU,KAAK,QAAQ,IAAI,kBAAkB,EAAE,CAAC;gBAClD,MAAM,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxB,CAAC;KACF,CAAC,CAAC;IAEH,6BAA6B;IAC7B,GAAG,CAAC;QACF,IAAI;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,+BAA+B,WAAW,EAAE;QACzD,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,GAAG,kBAAkB;QACrB,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAC5B,2BAA2B,GAAG,CAAC,gBAAgB,CAAC,qBAAqB,CACtE,CAAW,CAAC;YACb,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC,CAAC;IAEH,uCAAuC;IACvC,IAAI,aAAa,EAAE,CAAC;QAClB,GAAG,CAAC;YACF,IAAI;YACJ,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,uCAAuC,WAAW,EAAE;YACjE,QAAQ,EAAE,QAAQ,CAAC,MAAM;YACzB,GAAG,kBAAkB;YACrB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YAC3D,IAAI,EAAE,KAAK,EAAE,KAAc,EAAE,MAA+B,EAAE,EAAE;gBAC9D,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,SAAS,GACb,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;oBAC7B,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,MAAM,CAAC,CAAC,QAAQ,CAAC;6BACE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;;;;;;;;;eASrD,CAAC,CAAC;oBACP,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC;gBACD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAC/B,2BAA2B,GAAG,CAAC,aAAa,CAAC,4BAA4B,CAC1E,CAAW,CAAC;gBACb,OAAO,SAAS;oBACd,CAAC,CAAC;wBACE;4BACE,KAAK,EAAE,OAAO;4BACd,SAAS;4BACT,QAAQ,EAAE,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAC;yBACrD;qBACF;oBACH,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3B,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IACvB,GAAG,CAAC;QACF,IAAI;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,SAAS,WAAW,aAAa;QAC9C,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,GAAG,kBAAkB;QACrB,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,aAAa;gBACzB,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAChB,2BAA2B,GAAG,CAAC,aAAa,CAAC,4BAA4B,CAC1E,CAAY;gBACf,CAAC,CAAC,KAAK,CAAC;YACV,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,CAAC;KACF,CAAC,CAAC;IAEH,0BAA0B;IAC1B,IAAI,eAAe,EAAE,CAAC;QACpB,GAAG,CAAC;YACF,IAAI;YACJ,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,+BAA+B,WAAW,EAAE;YACzD,QAAQ,EAAE,QAAQ,CAAC,MAAM;YACzB,GAAG,kBAAkB;YACrB,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;oBACzB,MAAM,CAAC,CAAC,KAAK,CACX,GAAG,EACH,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAClC,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACjC,CAAC;gBACD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACxB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,qCAAqC;IACrC,GAAG,CAAC;QACF,IAAI;QACJ,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,yBAAyB,WAAW,EAAE;QACnD,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,GAAG,kBAAkB;QACrB,IAAI,EAAE;YACJ;gBACE,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,KAAK,IAAI,iBAAiB;aACpC;SACF;QACD,IAAI,EAAE,KAAK,EAAE,KAAc,EAAE,MAA+B,EAAE,EAAE;YAC9D,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,IAAI,iBAAiB,CAAC,CAAC;YACnE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC;KACF,CAAC,CAAC;IAEH,oCAAoC;IACpC,GAAG,CAAC;QACF,IAAI;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,+BAA+B,WAAW,EAAE;QACzD,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,GAAG,kBAAkB;QACrB,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/browser/bridge.d.ts
CHANGED
|
@@ -59,7 +59,9 @@ export declare class BrowserBridge {
|
|
|
59
59
|
* Handles Cloudflare Browser Rendering and any standard CDP WebSocket.
|
|
60
60
|
*/
|
|
61
61
|
private connectRemote;
|
|
62
|
-
private
|
|
62
|
+
private connectLocalCdp;
|
|
63
|
+
private waitForExtension;
|
|
64
|
+
private ensureDaemonBestEffort;
|
|
63
65
|
}
|
|
64
66
|
export declare class DaemonPage implements IPage {
|
|
65
67
|
private readonly workspace;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/browser/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/browser/bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/bridge.js
CHANGED
|
@@ -11,7 +11,7 @@ import { dirname, join } from "node:path";
|
|
|
11
11
|
import { fetchDaemonStatus, sendCommand } from "./daemon-client.js";
|
|
12
12
|
import { getRemoteEndpoint, CDPClient } from "./cdp-client.js";
|
|
13
13
|
import { BrowserPage } from "./page.js";
|
|
14
|
-
import { isRemoteBrowser } from "./launcher.js";
|
|
14
|
+
import { getCDPPort, isCDPAvailable, isRemoteBrowser, launchChrome, } from "./launcher.js";
|
|
15
15
|
// ── Errors ────────────────────────────────────────────────────────
|
|
16
16
|
/**
|
|
17
17
|
* Structured connection error for AI agent consumption.
|
|
@@ -66,6 +66,7 @@ export class RemoteConnectionError extends Error {
|
|
|
66
66
|
// ── Constants ──────────────────────────────────────────────────────
|
|
67
67
|
const DAEMON_SPAWN_TIMEOUT = 10_000; // 10s to start daemon
|
|
68
68
|
const DAEMON_POLL_INTERVAL = 200;
|
|
69
|
+
const EXTENSION_FAST_WAIT_MS = 2_000;
|
|
69
70
|
const REMOTE_CONNECT_RETRIES = 2;
|
|
70
71
|
const REMOTE_RETRY_DELAY = 1000;
|
|
71
72
|
// ── BrowserBridge ──────────────────────────────────────────────────
|
|
@@ -87,8 +88,27 @@ export class BrowserBridge {
|
|
|
87
88
|
}
|
|
88
89
|
const timeout = opts?.timeout ?? DAEMON_SPAWN_TIMEOUT;
|
|
89
90
|
const workspace = opts?.workspace ?? "default";
|
|
90
|
-
await this.
|
|
91
|
-
|
|
91
|
+
const daemonStatus = await this.ensureDaemonBestEffort(timeout);
|
|
92
|
+
if (daemonStatus?.extensionConnected) {
|
|
93
|
+
this._page = new DaemonPage(workspace);
|
|
94
|
+
this._state = "connected";
|
|
95
|
+
return this._page;
|
|
96
|
+
}
|
|
97
|
+
const extensionStatus = await this.waitForExtension(Math.min(timeout, EXTENSION_FAST_WAIT_MS));
|
|
98
|
+
if (extensionStatus?.extensionConnected) {
|
|
99
|
+
this._page = new DaemonPage(workspace);
|
|
100
|
+
this._state = "connected";
|
|
101
|
+
return this._page;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
const page = await this.connectLocalCdp();
|
|
105
|
+
this._page = page;
|
|
106
|
+
this._remotePage = page;
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
110
|
+
throw new BridgeConnectionError(`Browser automation unavailable: daemon is ${daemonStatus ? "running" : "not reachable"}, extension is not connected, and CDP auto-start failed: ${message}`);
|
|
111
|
+
}
|
|
92
112
|
this._state = "connected";
|
|
93
113
|
return this._page;
|
|
94
114
|
}
|
|
@@ -125,23 +145,27 @@ export class BrowserBridge {
|
|
|
125
145
|
}
|
|
126
146
|
throw new RemoteConnectionError(`Failed to connect to remote CDP endpoint after ${String(REMOTE_CONNECT_RETRIES + 1)} attempts: ${lastError?.message ?? "unknown error"}`, remote.endpoint);
|
|
127
147
|
}
|
|
128
|
-
async
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
143
|
-
return;
|
|
148
|
+
async connectLocalCdp() {
|
|
149
|
+
const port = getCDPPort();
|
|
150
|
+
if (!(await isCDPAvailable(port))) {
|
|
151
|
+
await launchChrome(port);
|
|
152
|
+
}
|
|
153
|
+
return BrowserPage.connect(port);
|
|
154
|
+
}
|
|
155
|
+
async waitForExtension(timeout) {
|
|
156
|
+
const deadline = Date.now() + timeout;
|
|
157
|
+
while (Date.now() < deadline) {
|
|
158
|
+
const status = await fetchDaemonStatus({ timeout: 300 });
|
|
159
|
+
if (status?.extensionConnected)
|
|
160
|
+
return status;
|
|
161
|
+
await new Promise((r) => setTimeout(r, DAEMON_POLL_INTERVAL));
|
|
144
162
|
}
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
async ensureDaemonBestEffort(timeout) {
|
|
166
|
+
const existing = await fetchDaemonStatus({ timeout: 500 });
|
|
167
|
+
if (existing)
|
|
168
|
+
return existing;
|
|
145
169
|
// Not running — spawn daemon
|
|
146
170
|
const daemonPath = join(dirname(fileURLToPath(import.meta.url)), "daemon.js");
|
|
147
171
|
const proc = spawn(process.execPath, [daemonPath], {
|
|
@@ -149,15 +173,15 @@ export class BrowserBridge {
|
|
|
149
173
|
stdio: "ignore",
|
|
150
174
|
});
|
|
151
175
|
proc.unref();
|
|
152
|
-
// Poll until daemon is reachable
|
|
176
|
+
// Poll until daemon is reachable within the caller's connection budget.
|
|
153
177
|
const deadline = Date.now() + timeout;
|
|
154
178
|
while (Date.now() < deadline) {
|
|
155
179
|
await new Promise((r) => setTimeout(r, DAEMON_POLL_INTERVAL));
|
|
156
|
-
status = await fetchDaemonStatus({ timeout:
|
|
180
|
+
const status = await fetchDaemonStatus({ timeout: 300 });
|
|
157
181
|
if (status)
|
|
158
|
-
return;
|
|
182
|
+
return status;
|
|
159
183
|
}
|
|
160
|
-
|
|
184
|
+
return null;
|
|
161
185
|
}
|
|
162
186
|
}
|
|
163
187
|
export class DaemonPage {
|