lasso-mcp 1.18.6 → 1.18.8
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/ARCHITECTURE.md +44 -26
- package/README.en.md +3 -1
- package/README.md +3 -1
- package/dist/browse/ExpectPoll.js +1 -10
- package/dist/browse/ExpectPoll.js.map +1 -1
- package/dist/browse/StealthEngine.js +1 -10
- package/dist/browse/StealthEngine.js.map +1 -1
- package/dist/browse/cdp-actions.d.ts.map +1 -1
- package/dist/browse/cdp-actions.js +1 -12
- package/dist/browse/cdp-actions.js.map +1 -1
- package/dist/browse/stealth-profiles.d.ts +19 -0
- package/dist/browse/stealth-profiles.d.ts.map +1 -1
- package/dist/browse/stealth-profiles.js +21 -0
- package/dist/browse/stealth-profiles.js.map +1 -1
- package/dist/channels/BraveChannel.d.ts +3 -3
- package/dist/channels/BraveChannel.d.ts.map +1 -1
- package/dist/channels/BraveChannel.js +1 -1
- package/dist/channels/BraveChannel.js.map +1 -1
- package/dist/channels/BrowseChannel.d.ts +24 -0
- package/dist/channels/BrowseChannel.d.ts.map +1 -1
- package/dist/channels/BrowseChannel.js +81 -13
- package/dist/channels/BrowseChannel.js.map +1 -1
- package/dist/channels/HeadlessChannel.d.ts +3 -11
- package/dist/channels/HeadlessChannel.d.ts.map +1 -1
- package/dist/channels/HeadlessChannel.js +4 -14
- package/dist/channels/HeadlessChannel.js.map +1 -1
- package/dist/channels/MachineMcpSearchChannel.d.ts.map +1 -1
- package/dist/channels/MachineMcpSearchChannel.js +12 -5
- package/dist/channels/MachineMcpSearchChannel.js.map +1 -1
- package/dist/desktop/desktop-doctor-checks.d.ts +16 -0
- package/dist/desktop/desktop-doctor-checks.d.ts.map +1 -1
- package/dist/desktop/desktop-doctor-checks.js +9 -8
- package/dist/desktop/desktop-doctor-checks.js.map +1 -1
- package/dist/doctor/creepjs-probe.js +1 -10
- package/dist/doctor/creepjs-probe.js.map +1 -1
- package/dist/doctor/doctor-cli.js +4 -1
- package/dist/doctor/doctor-cli.js.map +1 -1
- package/dist/doctor/doctor.d.ts +2 -2
- package/dist/doctor/doctor.d.ts.map +1 -1
- package/dist/doctor/doctor.js +9 -4
- package/dist/doctor/doctor.js.map +1 -1
- package/dist/forest/forest-types.d.ts +0 -6
- package/dist/forest/forest-types.d.ts.map +1 -1
- package/dist/forest/forest-types.js +6 -22
- package/dist/forest/forest-types.js.map +1 -1
- package/dist/index.js +32 -15
- package/dist/index.js.map +1 -1
- package/dist/launcher/chrome-hideshow-cli.d.ts.map +1 -1
- package/dist/launcher/chrome-hideshow-cli.js +9 -1
- package/dist/launcher/chrome-hideshow-cli.js.map +1 -1
- package/dist/launcher/chrome-stop.d.ts +1 -3
- package/dist/launcher/chrome-stop.d.ts.map +1 -1
- package/dist/launcher/chrome-stop.js +1 -1
- package/dist/launcher/chrome-stop.js.map +1 -1
- package/dist/launcher/desired-hide-enforcer.d.ts.map +1 -1
- package/dist/launcher/desired-hide-enforcer.js +9 -3
- package/dist/launcher/desired-hide-enforcer.js.map +1 -1
- package/dist/launcher/launch-chrome.d.ts +20 -11
- package/dist/launcher/launch-chrome.d.ts.map +1 -1
- package/dist/launcher/launch-chrome.js +18 -34
- package/dist/launcher/launch-chrome.js.map +1 -1
- package/dist/search/ContentSecondHop.d.ts +2 -2
- package/dist/search/SearchCache.d.ts +7 -7
- package/dist/search/SearchCache.d.ts.map +1 -1
- package/dist/search/SearchCache.js +15 -17
- package/dist/search/SearchCache.js.map +1 -1
- package/dist/serp/ChangeDetection.d.ts +4 -2
- package/dist/serp/ChangeDetection.d.ts.map +1 -1
- package/dist/serp/ChangeDetection.js +6 -6
- package/dist/serp/ChangeDetection.js.map +1 -1
- package/dist/serp/RecordingStore.d.ts +4 -2
- package/dist/serp/RecordingStore.d.ts.map +1 -1
- package/dist/serp/RecordingStore.js +8 -8
- package/dist/serp/RecordingStore.js.map +1 -1
- package/dist/serp/http-serp.d.ts +2 -2
- package/dist/serp/http-serp.d.ts.map +1 -1
- package/dist/serp/http-serp.js +3 -3
- package/dist/subprocess/SubprocessManager.d.ts +8 -20
- package/dist/subprocess/SubprocessManager.d.ts.map +1 -1
- package/dist/subprocess/SubprocessManager.js +10 -39
- package/dist/subprocess/SubprocessManager.js.map +1 -1
- package/dist/tools/browse.d.ts.map +1 -1
- package/dist/tools/browse.js +7 -6
- package/dist/tools/browse.js.map +1 -1
- package/dist/tools/browserbase.d.ts.map +1 -1
- package/dist/tools/browserbase.js +5 -17
- package/dist/tools/browserbase.js.map +1 -1
- package/dist/tools/descriptions.d.ts.map +1 -1
- package/dist/tools/descriptions.js +17 -17
- package/dist/tools/descriptions.js.map +1 -1
- package/dist/tools/fetch-feed.d.ts +3 -4
- package/dist/tools/fetch-feed.d.ts.map +1 -1
- package/dist/tools/fetch-feed.js +5 -5
- package/dist/tools/fetch-feed.js.map +1 -1
- package/dist/tools/fetch-url.d.ts +6 -7
- package/dist/tools/fetch-url.d.ts.map +1 -1
- package/dist/tools/fetch-url.js +7 -7
- package/dist/tools/fetch-url.js.map +1 -1
- package/dist/tools/network.d.ts +3 -4
- package/dist/tools/network.d.ts.map +1 -1
- package/dist/tools/network.js +4 -5
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/pdf.d.ts +0 -6
- package/dist/tools/pdf.d.ts.map +1 -1
- package/dist/tools/pdf.js +2 -8
- package/dist/tools/pdf.js.map +1 -1
- package/dist/tools/screenshot.d.ts +0 -58
- package/dist/tools/screenshot.d.ts.map +1 -1
- package/dist/tools/screenshot.js +10 -52
- package/dist/tools/screenshot.js.map +1 -1
- package/dist/tools/search.d.ts +1 -1
- package/dist/tools/search.js +1 -1
- package/dist/tools/steel.d.ts.map +1 -1
- package/dist/tools/steel.js +5 -14
- package/dist/tools/steel.js.map +1 -1
- package/dist/tools/wayback.d.ts +3 -4
- package/dist/tools/wayback.d.ts.map +1 -1
- package/dist/tools/wayback.js +5 -5
- package/dist/tools/wayback.js.map +1 -1
- package/dist/types.d.ts +14 -28
- package/dist/types.d.ts.map +1 -1
- package/dist/util/http-pool.d.ts +12 -0
- package/dist/util/http-pool.d.ts.map +1 -0
- package/dist/util/http-pool.js +50 -0
- package/dist/util/http-pool.js.map +1 -0
- package/doc/README.md +12 -11
- package/doc/architecture/02-/345/256/236/346/226/275/346/216/222/346/234/237.md +5 -2
- package/doc/governance/07-/346/226/207/346/241/243/346/237/245/347/274/272/350/241/245/346/274/217/gap-matrix.md +1 -1
- package/doc/governance/11-P2/345/244/204/347/275/256/345/217/260/350/264/246.md +103 -0
- package/doc/testing/01-/345/212/237/350/203/275/346/265/213/350/257/225/346/270/205/345/215/225.md +1 -1
- package/doc/usage/02-TROUBLESHOOTING.md +3 -3
- package/package.json +1 -1
- package/src/browse/ExpectPoll.ts +2 -14
- package/src/browse/StealthEngine.ts +3 -17
- package/src/browse/cdp-actions.ts +7 -23
- package/src/browse/stealth-profiles.ts +22 -0
- package/src/channels/BraveChannel.ts +2 -2
- package/src/channels/BrowseChannel.ts +92 -13
- package/src/channels/HeadlessChannel.ts +4 -14
- package/src/channels/MachineMcpSearchChannel.ts +12 -5
- package/src/desktop/desktop-doctor-checks.ts +23 -12
- package/src/doctor/creepjs-probe.ts +2 -16
- package/src/doctor/doctor-cli.ts +4 -4
- package/src/doctor/doctor.ts +9 -5
- package/src/forest/forest-types.ts +5 -23
- package/src/index.ts +32 -18
- package/src/invariants/check-invariants.mjs +80 -22
- package/src/launcher/chrome-hideshow-cli.ts +10 -1
- package/src/launcher/chrome-stop.ts +5 -4
- package/src/launcher/desired-hide-enforcer.ts +10 -4
- package/src/launcher/launch-chrome.ts +41 -8
- package/src/search/ContentSecondHop.ts +2 -2
- package/src/search/SearchCache.ts +17 -26
- package/src/serp/ChangeDetection.ts +6 -7
- package/src/serp/RecordingStore.ts +8 -9
- package/src/serp/http-serp.ts +5 -5
- package/src/subprocess/SubprocessManager.ts +10 -53
- package/src/tools/browse.ts +7 -6
- package/src/tools/browserbase.ts +5 -17
- package/src/tools/descriptions.ts +17 -17
- package/src/tools/fetch-feed.ts +2 -11
- package/src/tools/fetch-url.ts +7 -9
- package/src/tools/network.ts +7 -6
- package/src/tools/pdf.ts +2 -9
- package/src/tools/screenshot.ts +10 -52
- package/src/tools/search.ts +1 -1
- package/src/tools/steel.ts +5 -14
- package/src/tools/wayback.ts +2 -6
- package/src/types.ts +23 -23
- package/src/util/http-pool.ts +66 -0
- package/profiles/profiles.json +0 -11
- package/src/util/url-safety.ts +0 -40
package/ARCHITECTURE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Lasso 架构
|
|
2
2
|
|
|
3
|
-
> 本文是 Lasso **v1.
|
|
3
|
+
> 本文是 Lasso **v1.18.7** 的架构概览(user-first;深度架构基线见 [`doc/architecture/01`](./doc/architecture/01-功能架构.md)(冻结于 2026-07-21,头部有现状对齐横幅);实施排期与决策记录见 [`doc/architecture/02`](./doc/architecture/02-实施排期.md);doc/ 目录导读见 [`doc/README.md`](./doc/README.md))。头部版本与全文计数由 P2 处置轮刷新(doc/governance/11 台账 + 本轮 20 条机械对账,2026-08-31,事实基准 = HEAD `4a40b7e` 源码实核 + `tools/list` / `npm test` / `check-invariants` / `cargo test` / `doctor` 实跑)。
|
|
4
4
|
|
|
5
5
|
## 1. 项目定位
|
|
6
6
|
|
|
@@ -45,7 +45,8 @@ Lasso 的真实部署形态是**单用户、本地、stdio MCP**:一个用户
|
|
|
45
45
|
│ │ typed call │
|
|
46
46
|
│ ┌────────────────────────▼─────────────────────────────────┐ │
|
|
47
47
|
│ │ Channel Layer(src/channels/ + src/browse/ + src/desktop/│ │
|
|
48
|
-
│ │ + src/search/ + src/search-local
|
|
48
|
+
│ │ + src/search/ + src/logged-in/;search-local 不在此层—— │ │
|
|
49
|
+
│ │ 工具直连范式,见 §1/§3.1) │ │
|
|
49
50
|
│ │ BaseChannel ← MachineMcpSearchChannel / BraveChannel │ │
|
|
50
51
|
│ │ BaseChannel ← UiChannel │ │
|
|
51
52
|
│ │ ← BrowseChannel(abstract) │ │
|
|
@@ -147,7 +148,10 @@ outcome = worked | didnt | unknown
|
|
|
147
148
|
### 3.6 生命周期与稳定性(v1.9 → v1.13)
|
|
148
149
|
|
|
149
150
|
- **无头浏览器**:空闲 5 分钟自动回收(`LASSO_HEADLESS_IDLE_MS`,v1.9;touchKeepalive 防误杀)
|
|
150
|
-
- **launch-chrome**:台账(`launched-chromes.json`)+ `lasso chrome-stop`(只杀 cmdline 验证归属的 pid,防 pid 复用误杀,v1.9);hidden 档默认 + 最后使用后 ~60s 自动关(`LASSO_LAUNCH_MODE` / `LASSO_LAUNCH_IDLE_MS`,v1.10);`admin tab_restore` 恢复用户原 tab(红线:不关用户原有 tab;v1.17.1 修复恒 no-op 缺陷,双 targetId
|
|
151
|
+
- **launch-chrome**:台账(`launched-chromes.json`)+ `lasso chrome-stop`(只杀 cmdline 验证归属的 pid,防 pid 复用误杀,v1.9);hidden 档默认 + 最后使用后 ~60s 自动关(`LASSO_LAUNCH_MODE` / `LASSO_LAUNCH_IDLE_MS`,v1.10);`admin tab_restore` 恢复用户原 tab(红线:不关用户原有 tab;v1.17.1 修复恒 no-op 缺陷,双 targetId 守卫)。**bug02 修复 2(v1.18.6,doc/bugs/02):CLI 显式拉起默认 `idleMs:0`**——用户/工作流手敲命令要的 Chrome 不被后台 server reaper 60s 静默收割(外部 CDP 直连消费者误杀根因);显式配置(env / config.json `LASSO_LAUNCH_IDLE_MS`)与 argv `--idle-ms` 仍最高优先
|
|
152
|
+
- **hide 粘滞复隐看门狗**(v1.18.3,P27):`chrome-hide` 转后台的窗口被任何来源掀出(含上游页面自己弹的)约 1.5s 内自动压回;`chrome-show` 明示解除;粘滞状态跨重启保留(`desired-hide-state.ts`);`chrome-hide/--pid` 台账缺条目时按进程号直达(只认 lasso 自己的 profile);hide 原语异步化(Chrome 正忙时不拖慢并行操作)
|
|
153
|
+
- **chrome-touch 外部活动信号**(v1.18.6 bug02 闭环,`chrome-touch.ts`):约定文件 `~/.cache/lasso/chrome-touch-<port>` 的 **mtime 即活动信号**——任何第二消费者(外部 CDP 工具 / shell 工作流)一行 `touch` 即续命,不需要 lasso API、不改 reaper 写路径;reaper 每 tick 顺带 stat(`chromeTouchMtimeSync`)。修的是 R-INT-07 活案例:touch 活动源曾唯一(LoggedInChannel browse 回调),外部 CDP 直连消费者对 reaper 完全不可见、台账 Chrome 60s 被误收割
|
|
154
|
+
- **desired-hide-enforcer 独立执守**(v1.18.6 bug02,`desired-hide-enforcer.ts`):粘滞看门狗「只活在 server 进程」而 Chrome 是 detached+unref 的失配(server 崩溃 / 3s race 失败 / 纯 CLI 拉起三种窗口)由**独立执守进程**兜底——chrome-hide 成功 / launch-chrome hidden 记账后 `ensureHideEnforcerRunning()`(pidfile + ps cmdline 标记双复验的 detached 单例);执守体复用 `startDesiredHideWatchdog` 单一调度真源 + 账空 2 tick 自退(不留常驻 node);与 server 内看门狗并发安全(reassert「可见才压回」幂等)
|
|
151
155
|
- **stdin-EOF 收尾**(v1.12):CC 异常退出 → 父进程死 → stdin EOF → 复用幂等 shutdown;受管子进程不再孤儿到 zombie reaper 1h 阈值(上游 SDK #2002 的进程侧缓解)
|
|
152
156
|
- **停机链全路径有界**(v1.13):Steel 会话释放双层 3s 上界(停机链 race 3s + fetch `AbortSignal.timeout(3s)`)——自托管 Steel 停摆/endpoint 悬挂(实测可挂 ~301s)不再拖死退出
|
|
153
157
|
- **`LASSO_PROXY` 出口代理**(v1.11):headless 经 `--proxy-server`、Steel 经 session `proxyUrl`;**`browse_logged_in` 永不读取**(用户真实 Chrome 出口原样,铁律);doctor `proxy_config` 回显
|
|
@@ -201,10 +205,10 @@ AxBackend interface(三平台同构 OutlineNode 契约)
|
|
|
201
205
|
2. **页面/界面状态写磁盘**:4× token 效率
|
|
202
206
|
3. **减少推理调用**:多步链式(如 search → click → extract)一次工具调用完成
|
|
203
207
|
4. **fallback 对 CC 透明**:CC 只看到 `worked / didnt`,不感知降级细节
|
|
204
|
-
5. **诚实三态交付**:`worked / didnt / unknown`(unknown 是 fallback 触发器);假成功零容忍(expect 稳定性采样 / VLM 链尾诚实化 / find 拒纯 ref / content_blocks 失败标注 / ref
|
|
208
|
+
5. **诚实三态交付**:`worked / didnt / unknown`(unknown 是 fallback 触发器);假成功零容忍(expect 稳定性采样 / VLM 链尾诚实化 / find 拒纯 ref / content_blocks 失败标注 / ref 失效诚实报错同族);**接口面同样诚实**(v1.18.7 架构重审):browse 族 schema 里「接受但 channel 零消费」的死参数(顶层 `wait_until` / `timeout_ms` / `screenshot.element` / `stealth_profile`)自 schema+描述+转发全链路移除——文档不再承诺不存在的行为(嵌套语义位如 `steps[].expect.timeout_ms` 是真消费,不在清扫之列)
|
|
205
209
|
6. **零侵入跟随上游**:chrome-devtools-mcp 升级时 Lasso 不改业务(契约锁版本,当前 1.7.0)
|
|
206
210
|
7. **第二套做法红线**(R-CI-02):横切关注点变体只允许一套(fallback 范式 / state 模型 / dispatch Map / provider registry 等)
|
|
207
|
-
8. **不变量脚本化**(CI 守门):**
|
|
211
|
+
8. **不变量脚本化**(CI 守门):**84 条 INV** 静态 grep + 形状测,防 refactor 回退;另有 `inv-selftest` 20 样本「注入违规 → 必红」复证(见 §10)
|
|
208
212
|
9. **平台差异隔离在 backend 内部**:AxBackend 三平台同构 OutlineNode 契约;TS 层零平台字面量
|
|
209
213
|
10. **质量轴静态映射**(v1.17 A1):`quality`(api/scrape/stale)按 `served_by` 静态映射,零启发式——宁缺毋假(查不到就不标)
|
|
210
214
|
11. **用户运行守则**(v1.18,doc/governance/09-静默守则审计确立为设计宪法):「能后台静默执行就尽量后台静默执行;不能完全静默则用户介入后**及时恢复**静默执行」。三条可判定子句——S1 能静默则静默(存在零打扰路径时不选非静默实现)/ S2 介入最小化(只在不可避免处介入,信号明确及时,范本 = C1 elicitation 同轮继续)/ S3 及时恢复(自动化三档:L2 系统自动 > L1 CC 可调 > L0 人工;kill 永远不是恢复手段——hide 才是)
|
|
@@ -312,19 +316,19 @@ engine=auto(默认)→ 多源扇出(machine_mcp + brave 两 API 源)
|
|
|
312
316
|
|
|
313
317
|
## 10. 测试策略
|
|
314
318
|
|
|
315
|
-
| 层 | 工具 | 覆盖 | 规模(v1.
|
|
319
|
+
| 层 | 工具 | 覆盖 | 规模(v1.18.7 终态,2026-08-31 本机全量实跑) |
|
|
316
320
|
|---|---|---|---|
|
|
317
|
-
| 架构不变量 | `check-invariants.mjs`(自写) | INV-1..
|
|
318
|
-
| INV 自测 | `inv-selftest.mjs`(`npm run inv-selftest`) | 抽样 INV 做「注入违规 → 必红」复证 |
|
|
319
|
-
| TS 单测 | vitest | channel / fallback / forest / doctor / launcher / outline-contract / replay-baseline / stealth / lifecycle / cdp-actions / search-local / content-second-hop / elicitation / extract-refs / quality / http-serp / fetch-feed 等 | **
|
|
320
|
-
| Rust 单测 | cargo test | ax / applescript / cgevent(+keymap) / screenshot / tcc / windows / protocol / role-map | **207 测试**(cargo test
|
|
321
|
-
| 跨平台编译 | cargo check --target | Windows (x86_64-pc-windows-msvc) + Linux (x86_64-unknown-linux-gnu) | CI
|
|
322
|
-
| 录制回放回归 | npm run replay-baseline | fixtures/serp-baseline/
|
|
321
|
+
| 架构不变量 | `check-invariants.mjs`(自写) | INV-1..84 静态 grep + 形状测 | **84 条** |
|
|
322
|
+
| INV 自测 | `inv-selftest.mjs`(`npm run inv-selftest`) | 抽样 INV 做「注入违规 → 必红」复证 | **样本覆盖 20/84,26 个 pin 红翻转实证**(外部契约类全覆盖;未验证 pin 显性化报告) |
|
|
323
|
+
| TS 单测 | vitest | channel / fallback / forest / doctor / launcher / outline-contract / replay-baseline / stealth / lifecycle / cdp-actions / search-local / content-second-hop / elicitation / extract-refs / quality / http-serp / fetch-feed / tool-descriptions-no-leak 等 | **2471 passed + 1 skipped**(148 文件;#4 裁决落地后本机实跑;1 skip = linux-only ResourceMonitor 在 macOS 对称跳过) |
|
|
324
|
+
| Rust 单测 | cargo test | ax / applescript / cgevent(+keymap) / screenshot / tcc / windows / protocol / role-map | **207 测试**(cargo test 实跑;`rust-helper/src/*.rs` 自 v1.13 零改——v1.18.4 仅动 `build/sign.sh` ad-hoc 签名链) |
|
|
325
|
+
| 跨平台编译 | cargo check --target | Windows (x86_64-pc-windows-msvc) + Linux (x86_64-unknown-linux-gnu) | 本地手测(CI 为 JS 门禁三件套,不含 Rust 步骤——r4 轮改真口径) |
|
|
326
|
+
| 录制回放回归 | npm run replay-baseline | fixtures/serp-baseline/ 三引擎录制基线 | 6 条 HTML fixture(baidu/bing/google ×2;doctor #32 实跑 detail) |
|
|
323
327
|
| 故障注入 | vitest | fallback 链 / 限流 / 政策 gate / SERP 改版 | ~20 场景 |
|
|
324
328
|
| 全量功能测试 | doc/testing/01 清单 + ft 执行记录 | 四面板(search / browse / infra / perf)~170 用例真机 | ft-round1 **ALL-CLEAN**(2026-08-18) |
|
|
325
329
|
| 契约锁 | chrome-devtools-mcp@**1.7.0** version pin(`LOCKED_CDP_MCP_VERSION` 单一真源) | 上游小版本升级不破 Lasso;迁移要点见 §2.1 | SubprocessManager.ts |
|
|
326
330
|
|
|
327
|
-
## 11. 不变量(
|
|
331
|
+
## 11. 不变量(84 条)分类
|
|
328
332
|
|
|
329
333
|
| 范畴 | INV 编号 | 守的是什么 |
|
|
330
334
|
|---|---|---|
|
|
@@ -343,6 +347,7 @@ engine=auto(默认)→ 多源扇出(machine_mcp + brave 两 API 源)
|
|
|
343
347
|
| v1.11 1.7.0 迁移守护 | INV-79 | 版本锁 1.7.0 / 遥测关 / --wsEndpoint / launch 级 stealth / 零哑 flag 形态 |
|
|
344
348
|
| v1.14-v1.17 运营事实与死层清除 | INV-54 / 80 | 死层墓碑:Bing(BingChannel 全链删、配置静默忽略)/ zhipu 直连(无 SearchChannel 类 / engine enum 无 "zhipu" / config 键容忍不消费 / doctor 报 retired) |
|
|
345
349
|
| v1.18 用户运行守则生命周期 | **82** | D-5 exit 钩子 modes:['hidden'](visible 登录窗口不被 server 退出杀死)/ C2 自动 hide 默认 off + 只挂 visible 分支永不进 kill 路径 / 四重护栏(见墙→延迟窗→agent 安静→失败降级)/ hide 走 chrome-hide PID 定向 / 延迟窗默认单一真源 |
|
|
350
|
+
| v1.18.7 架构重审轮(2026-08-31) | **83 / 84** | firstText 全仓唯一定义在 browse/upstream-response.ts(5 份私有拷贝收敛后防回潮)/ doctor 层(src/doctor/*.ts,doctor-cli.ts 组合根除外)禁 import ../channels/*(反向 value 依赖 = ESM 循环温床;defaultHeadlessProfileForHost 已迁 browse/stealth-profiles.ts) |
|
|
346
351
|
|
|
347
352
|
完整 INV 列表 + 释义见 `src/invariants/check-invariants.mjs` 顶部注释。
|
|
348
353
|
|
|
@@ -414,10 +419,10 @@ $ lasso launch-chrome
|
|
|
414
419
|
|
|
415
420
|
| 模块 | 主文件 | 备注 |
|
|
416
421
|
|---|---|---|
|
|
417
|
-
| Tool 注册 / 生命周期 | src/index.ts(stdin-EOF 收尾 / reaper / Steel 3s 上界 / V5_TOOL_TO_CHANNEL 18 键 = 16 默认工具 + browserbase/steel;admin 是虚拟 channel 经 toolManager 直注册,不入表) | ~
|
|
422
|
+
| Tool 注册 / 生命周期 | src/index.ts(stdin-EOF 收尾 / reaper / Steel 3s 上界 / V5_TOOL_TO_CHANNEL 18 键 = 16 默认工具 + browserbase/steel;admin 是虚拟 channel 经 toolManager 直注册,不入表) | ~1580 |
|
|
418
423
|
| Tool handler | src/tools/{search,browse,desktop,admin,doctor,network,fetch-url,fetch-feed,wayback,screenshot,pdf,read-text,interact}.ts + descriptions.ts(描述单一真源) | — |
|
|
419
424
|
| Channel 层 | src/channels/{BaseChannel,UiChannel}.ts | — |
|
|
420
|
-
| BrowseChannel 族 | src/
|
|
425
|
+
| BrowseChannel 族 | src/channels/BrowseChannel.ts(abstract)+ HeadlessChannel(launch 级 stealth + 宿主对齐 profile)+ LoggedInChannel / SteelChannel(session mutex + proxyUrl)+ BrowserbaseChannel——族文件全在 src/channels/ | — |
|
|
421
426
|
| stealth | src/browse/{StealthEngine,stealth-profiles}.ts(16 路 + 4 profile + 值域 2026-07) | — |
|
|
422
427
|
| markdown 抽取 | src/browse/markdown-extractor.ts(defuddle 双激活 + turndown 降级保底);extract-refs.ts(include_refs 三件套,v1.17) | — |
|
|
423
428
|
| 搜索域 | src/search/{FallbackChain,SearchCache,MultiSourceFanout,FreeTierRouter,AttributedSearch,QualityTag,ContentSecondHop,MachineMcpDetector}.ts;src/channels/{MachineMcpSearchChannel,BraveChannel}.ts(BingChannel / SearchChannel〔zhipu 直连〕均已删,INV-54/80 墓碑) | QualityTag/ContentSecondHop = v1.17 |
|
|
@@ -427,20 +432,29 @@ $ lasso launch-chrome
|
|
|
427
432
|
| 交互升级 | src/interact/ElicitationPort.ts(C1);src/browse/{HighRiskGate,extract-refs}.ts | — |
|
|
428
433
|
| desktop 四档 | src/desktop/{AxProvider,AxBackend,AxBackendFactory,OutlineMapper,CGEventProvider,ScreenshotVlmProvider}.ts | AxProvider ~330 |
|
|
429
434
|
| FallbackDecider | src/fallback/FallbackDecider.ts | ~350 |
|
|
430
|
-
| Launcher | src/launcher/{launch-chrome,chrome-paths,chrome-stop,chrome-idle-reaper,chrome-ledger,chrome-hide}.ts(INV-64 不引新 npm dep
|
|
431
|
-
| Doctor | src/doctor/doctor.ts(
|
|
432
|
-
| Invariants | src/invariants/check-invariants.mjs(
|
|
433
|
-
| INV 自测 | scripts/inv-selftest.mjs(20 样本红转复证) | ~
|
|
434
|
-
| Subprocess | src/subprocess/SubprocessManager.ts(`LOCKED_CDP_MCP_VERSION = "1.7.0"
|
|
435
|
-
| Rust helper | rust-helper/src/{ax,uia,atspi,applescript,cgevent,cgevent_keymap,screenshot,tcc,windows,protocol,main,ax_role_map,app_bundle_map}.rs | ~5000
|
|
435
|
+
| Launcher | src/launcher/{launch-chrome,chrome-paths,chrome-stop,chrome-idle-reaper,chrome-ledger,chrome-hide,chrome-hideshow-cli,chrome-touch,desired-hide-state,desired-hide-watchdog,desired-hide-enforcer}.ts(INV-64 不引新 npm dep;chrome-touch / desired-hide-* = v1.18.3~v1.18.6 bug02 链) | 11 文件共 ~2900 |
|
|
436
|
+
| Doctor | src/doctor/doctor.ts(doctor CLI 默认 34 项实跑核;MCP doctor tool / DesktopChannel 装配 desktopChecks:true 时加 #15-#21 共 41 项;--deep 加 #11b brave_deep_probe;#21 event-synthesis / #36 machine_mcp / #37 steel / #38 creepjs / #39 stagehand / zhipu_keys_retired) | ~3060 |
|
|
437
|
+
| Invariants | src/invariants/check-invariants.mjs(84 条 INV) | ~4600 |
|
|
438
|
+
| INV 自测 | scripts/inv-selftest.mjs(20 样本红转复证) | ~410 |
|
|
439
|
+
| Subprocess | src/subprocess/SubprocessManager.ts(`LOCKED_CDP_MCP_VERSION = "1.7.0"`);rust-helper-path.ts(模块锚定:`new URL("../../rust-helper/...", import.meta.url)` 与宿主 cwd 解耦——v1.18.4 根治「非仓库根目录启动 desktop 全报 rust_helper_crashed」) | ~750 |
|
|
440
|
+
| Rust helper | rust-helper/src/{ax,uia,atspi,applescript,applescript_whitelist,cgevent,cgevent_keymap,screenshot,tcc,windows,protocol,main,lib,ax_role_map,app_bundle_map}.rs(15 文件);build/sign.sh(v1.18.4 ad-hoc 兜底签名进构建链) | ~5000;src/*.rs 自 v1.13 零改 |
|
|
436
441
|
|
|
437
442
|
## 14. 版本与发布
|
|
438
443
|
|
|
439
|
-
- **当前版本**:`1.18.
|
|
444
|
+
- **当前版本**:`1.18.7`(架构重审落地版;2026-08-31)
|
|
440
445
|
- **version 真源**:`package.json` + `src/index.ts:LASSO_SERVER_VERSION` + `src/doctor/doctor.ts:LASSO_VERSION`(INV-63 守:三处必字面量一致)
|
|
441
|
-
- **
|
|
446
|
+
- **v1.18.1 ~ v1.18.7 要点**(用户向完整版见 README changelog;决策记录见 doc/architecture/02 排期表):
|
|
447
|
+
- **v1.18.0/1.18.1**:静默守则入宪(doc/governance/09)——D-5 exit 钩子 modes:['hidden'](visible 登录窗口不再被 server 退出杀死)+ C2 登录后自动 hide(opt-in)+ INV-82;批量实战五修(求值失败不静默吞 / 无选中 tab 自愈 / visible 冷启动探活 12s / PDF 上游缺失前置如实报)
|
|
448
|
+
- **v1.18.2**:错配机制审计(doc/governance/10)——威胁模型错配守卫四修 + 默认放行(单用户本地 stdio 形态下「多租户滥用」类限额默认 Infinity / opt-in;瞬态 DNS ≠ 策略拦截,语义 unknown 可重试)
|
|
449
|
+
- **v1.18.3**:hide 粘滞复隐看门狗(~1.5s 压回 + 跨重启)+ chrome-hide `--pid` 直达 + hide 原语异步化
|
|
450
|
+
- **v1.18.4**:rust-helper 路径根治——`rust-helper-path.ts` 模块锚定(`import.meta.url` 相对解析,任意宿主 cwd 可用)+ spawn 四态自诊断(缺文件/指到目录/缺执行位/损坏各说各话)+ ad-hoc 兜底签名进构建链(`scripts/ad-hoc-sign-helper.mjs`)+ GitHub CI 建立
|
|
451
|
+
- **v1.18.5**:发布面清理——npm 包 1.18.1~1.18.4 误含应用域私有文件已弃用,本版起发布面收敛为本体(~28MB → 正常体积);doc/ 目录重整为七组结构(usage/architecture/testing/governance/bugs/history/archive,2026-08-27)
|
|
452
|
+
- **v1.18.6**:bug02 真闭环 + 隐藏全生命周期执守(doc/bugs/02)——CLI 显式拉起默认 `idleMs:0` + `chrome-touch` 约定文件外部活动信号 + `desired-hide-enforcer` 独立执守进程(server 不在也 ≤2s 压回,账空自退)
|
|
453
|
+
- **v1.18.7**:架构重审落地——browse 族接口面死参数清扫(诚实化)+ doctor/channels 解耦(INV-84)+ firstText 单一定义(INV-83)+ 文档改真 + INV 82→84;随后 P2 处置轮(doc/governance/11)46 项三档裁决 + `launch-chrome --help` 误启动修复 + CI actions 升 checkout@v7 / setup-node@v6 并加 Node 24
|
|
454
|
+
- **doctor readiness 现状(如实)**:任一 check fail → `ready:false`。**#15 `rust_helper_signed` 现行语义 = ad-hoc 签名 → warn**(2026-08-31 用户裁决降级:ad-hoc 是官方免费合法方案、功能正常,唯一代价 rebuild 后 TCC 重授权;FAIL 把正常配置判成 ready:false 属噪音。Developer ID 长期方案保留在 next_step;Developer ID 正签仍 pass、未签仍 warn——回归测试 rust-helper-signed-warn.spec 三态锚定)
|
|
442
455
|
- **跨平台 backend**:macOS 本机全证;Win/Linux 编译可证 + 契约可证,真机执行待社区反馈
|
|
443
|
-
-
|
|
456
|
+
- **门禁(本地)**:`npm run build` / `npm test`(vitest 2471 passed + 1 skipped,148 文件 + readme-sync)/ `npm run check-invariants`(84)/ `npm run inv-selftest`(20 样本 26 pin 红翻转)+ `cargo test`(207,CI 不含)
|
|
457
|
+
- **CI(.github/workflows/ci.yml 实况)**:ubuntu-latest × Node **20/22/24** 矩阵(20=下限锚点 / 22=maintenance LTS / 24=active LTS——search-local 的 `node:sqlite` 依赖 NODE_MAJOR>=23,加 24 后该文件 40 测在 CI 真跑);actions checkout@v7 / setup-node@v6;步骤 = npm ci → build → test → check-invariants(**JS 门禁三件套,无 cargo 步骤**——Rust 面靠本地 cargo test/check 守)
|
|
444
458
|
|
|
445
459
|
## 15. 质量与决策主线(doc/governance/01 → doc/governance/06 → doc/testing/01)
|
|
446
460
|
|
|
@@ -451,13 +465,15 @@ $ lasso launch-chrome
|
|
|
451
465
|
3. **方法论检讨与颠覆性调研**(doc/governance/04(含原 23a 作附录A)→ doc/governance/05,v1.16):零基视角制度化(「搜索优化失效」根因 = 只在既有方案内比较);颠覆性扫描按 D-GO / D-DECISION / D-WATCH / D-NOGO 分级裁决 → 落地 D-GO 三项:freshness TTL 耦合 / fetch_feed / README 生态段(v1.16)。
|
|
452
466
|
4. **五项用户裁决**(doc/governance/06,v1.17):A1 quality 轴 / A3 删 zhipu 直连(INV-80)/ A2′ content_blocks 第二跳 / B1 search_local(INV-81)/ C1 elicitation + C2 include_refs。
|
|
453
467
|
5. **全量功能测试轮**(doc/testing/01,v1.17.1):四面板 ~170 用例真机执行,抓出并修复 6 缺陷(🔴IPv6 字面量 SSRF 绕过 / 🔴HighRiskGate 裸 JSON.parse / doWait 假成功 / tab_restore no-op / doctor file 键 / SIGHUP),R1 独立裁决 **ALL-CLEAN**;§6 简单架构 38 条终判见 §6.1。
|
|
468
|
+
6. **静默性 / 守则 / 错配审计三连**(doc/governance/08 / 09 / 10,v1.17.2 → v1.18.2):全通道零抢焦点(S-7/S-10)→ 用户运行守则入宪(S1/S2/S3 三子句 + INV-82)→ 错配机制审计(47 处命中逐个裁决:4 修复 + 5 黄 + 19 保留)。
|
|
469
|
+
7. **全面重审与 P2 处置**(2026-08-31,wf_c02ef3df 15-agent 五路 review + doc/governance/11 台账):首轮五路 34 + 复审 22 = 56 原始 P2 去重合并 46 项,三档裁决 **20 fixed / 25 deferred / 1 rejected(已被 r3 轮修复偿)**;fixed 批次含 types.ts 死字段清理、doctor.spec flake 抬 15s、CI actions 升级 + Node 24 矩阵、`launch-chrome --help` 误启动短路;deferred 项全部留档可追。
|
|
454
470
|
|
|
455
471
|
方法学沉淀(供复用):裁决官不采信文档(关键声称白盒双源亲验);证据阶梯 L0-L3;mutation 即验收;「先拿事实再加参数」;收敛协议前置;零基视角才可见方案级盲区;决策分级(GO/DECISION/WATCH/NOGO)交用户裁决而非默认全做。
|
|
456
472
|
|
|
457
473
|
## 16. 相关文档
|
|
458
474
|
|
|
459
475
|
- [README.md](./README.md) — 用户手册(安装 / 配置 / 工具列表 / 隐私 / 故障排查)
|
|
460
|
-
- [doc/README.md](./doc/README.md) — doc/
|
|
476
|
+
- [doc/README.md](./doc/README.md) — doc/ 目录导读(**七组结构**:usage / architecture / testing / governance / bugs / history / archive,2026-08-27 重整;旧全局编号 08/09/17-29 → 新路径映射表在此;决策时间线 + 新鲜度表)
|
|
461
477
|
- [doc/architecture/01 功能架构](./doc/architecture/01-功能架构.md) — 权威架构基线(F 编号;冻结于 2026-07-21,头部含 v1.17.1 现状对齐横幅 + F 编号 ↔ 现实映射)
|
|
462
478
|
- [doc/architecture/02 实施排期](./doc/architecture/02-实施排期.md) — v0.1 → v1.17.1 能力跃升全路径与决策记录
|
|
463
479
|
- [doc/governance/01 最优性审查轮次](./doc/governance/01-最优性审查轮次/00-总结.md) — 五轮审查全记录(v1.10 → v1.13 质量主线)
|
|
@@ -465,7 +481,9 @@ $ lasso launch-chrome
|
|
|
465
481
|
- [doc/usage/02-TROUBLESHOOTING.md](./doc/usage/02-TROUBLESHOOTING.md) — FAQ + error_kind 释义
|
|
466
482
|
- [doc/usage/03-SELECTOR-MAINTENANCE.md](./doc/usage/03-SELECTOR-MAINTENANCE.md) — selector 债维护手册
|
|
467
483
|
- [doc/governance/07 文档查缺补漏](./doc/governance/07-文档查缺补漏/gap-matrix.md) — 文档盘点矩阵(新鲜度档位 + F 编号映射真源)
|
|
484
|
+
- [doc/governance/11 P2 处置台账](./doc/governance/11-P2处置台账.md) — 全面重审 46 项 P2 三档裁决全记录(20 修 / 25 留档 / 1 已偿)
|
|
485
|
+
- [doc/bugs](./doc/bugs/) — BUG 档案(01 rust-helper 路径 / 02 外部消费与隐藏全生命周期——v1.18.4 / v1.18.6 修复轮的根因链)
|
|
468
486
|
|
|
469
487
|
---
|
|
470
488
|
|
|
471
|
-
本文档是 Lasso v1.
|
|
489
|
+
本文档是 Lasso v1.18.7 架构概览(user-first;2026-08-31 全量对齐刷新,事实基准 = HEAD `4a40b7e` 源码实核 + `tools/list` / `npm test` / `check-invariants` / `inv-selftest` / `cargo test` / `doctor` 实跑,20 条机械断言逐条对账零漂移)。深度架构基线(含 F 编号 / 不变量推导链 / 测试策略)见 [`doc/architecture/01`](./doc/architecture/01-功能架构.md);v0.1 → v1.18.7 实施排期(含每 phase 决策记录)见 [`doc/architecture/02`](./doc/architecture/02-实施排期.md)。
|
package/README.en.md
CHANGED
|
@@ -206,7 +206,7 @@ Goes to the Internet Archive (Wayback Machine) to find the last archived copy of
|
|
|
206
206
|
|
|
207
207
|
## Install
|
|
208
208
|
|
|
209
|
-
**Current version v1.18.
|
|
209
|
+
**Current version v1.18.8** (changelog in the collapsed block at the end of this section).
|
|
210
210
|
|
|
211
211
|
Prerequisites: Node.js ≥ 20 + Claude Code (or any MCP-capable client).
|
|
212
212
|
|
|
@@ -221,6 +221,8 @@ Restart Claude Code → `/mcp` → `lasso ✓ Connected`. **That's the one line
|
|
|
221
221
|
<details>
|
|
222
222
|
<summary>📋 Changelog (v1.8 → v1.18.6 — click to see what each version changed)</summary>
|
|
223
223
|
|
|
224
|
+
- **v1.18.8**: doctor & CLI polish — ① `doctor` no longer reports "unhealthy" due to **ad-hoc signing** (previously a false `ready:false`: ad-hoc is Apple's free legitimate scheme, fully functional — the only cost is re-granting system permissions after rebuilds; a proper Developer ID signature still passes); ② `lasso launch-chrome --help` fixed (previously it actually launched a Chrome; now prints usage); ③ architecture doc fully aligned + 20 legacy cleanups (tests up to 2471 / invariants 84).
|
|
225
|
+
- **v1.18.7**: architecture re-review landed (five-dimension checklist with fix loops) — ① browse-family interface honesty: `wait_until` / `timeout_ms` / `screenshot.element` / `stealth_profile` — four **never-effective dead parameters** — removed from tool descriptions and schema (previously silently ignored; docs no longer promise nonexistent behavior; non-breaking — unknown keys are silently stripped); ② four false statements about the CI cargo face corrected in docs; ③ internals: doctor decoupled from channels, firstText single definition, test-only pass-through methods converged (2 new architecture invariants, INV 82→84; tests 2446→2455).
|
|
224
226
|
- **v1.18.6**: external-consumer & hide-enforcement closure — ① a CLI-launched Chrome **is no longer silently reaped after 60 s** (external CDP-direct tools previously died reliably at 60–75 s, e.g. automation workflows); external consumers can also stay alive with one line, `touch ~/.cache/lasso/chrome-touch-<port>`; ② "the hidden Chrome sometimes won't stay hidden" fixed for good — the hidden tier writes the sticky ledger at birth + a standalone enforcer process presses back within ~2 s even with no server alive (self-exits on an empty ledger, leaving nothing resident).
|
|
225
227
|
- **v1.18.5**: release-package cleanup — ① **the npm packages of v1.18.1 ~ v1.18.4 accidentally shipped application-domain files** (intermediate artifacts of a course-scraping project, unrelated to Lasso itself; those versions are deprecated). Do not install them. From this version on the published package contains only Lasso proper; size drops from ~28 MB back to normal.
|
|
226
228
|
- **v1.18.4**: desktop-channel fix — ① previously, when the server was not started from the repo root (e.g. launched by a host such as Claude Code from any directory), all desktop tools failed with `rust_helper_crashed`; the helper path is now resolved from the install location, **works from any directory**; ② startup failures now fail fast with a self-diagnosing message (actual path, cwd, and fix suggestions; missing file / points-to-directory / no-exec-bit / corrupt-binary each get their own wording, failing in seconds instead of hanging); ③ binaries are ad-hoc signed during build (skipped silently on machines without codesign); ④ GitHub CI added (full test suite on every push).
|
package/README.md
CHANGED
|
@@ -215,7 +215,7 @@ macOS 上能控 Finder / Mail / Safari / Notes / 系统设置等任何原生 app
|
|
|
215
215
|
|
|
216
216
|
## 安装
|
|
217
217
|
|
|
218
|
-
**当前版本 v1.18.
|
|
218
|
+
**当前版本 v1.18.8**(更新日志见本节末尾折叠块)。
|
|
219
219
|
|
|
220
220
|
前提:Node.js ≥ 20 + Claude Code(或任何支持 MCP 的客户端)。
|
|
221
221
|
|
|
@@ -230,6 +230,8 @@ claude mcp add lasso -- npx -y lasso-mcp
|
|
|
230
230
|
<details>
|
|
231
231
|
<summary>📋 更新日志(v1.8 → v1.18.6,点开看每版改了什么)</summary>
|
|
232
232
|
|
|
233
|
+
- **v1.18.8**:doctor 与 CLI 打磨——① `doctor` 不再因 **ad-hoc 签名**报「不健康」(此前 `ready:false` 误报:ad-hoc 是官方免费合法方案,功能正常,唯一代价是重编译后需重新系统授权;Developer ID 正签仍 pass)② `lasso launch-chrome --help` 修复(此前会误启动一个 Chrome,现在正确打印用法说明)③ 架构文档全量对齐 + 20 项历史遗留清理(测试增至 2471 / 不变量 84)。
|
|
234
|
+
- **v1.18.7**:架构重审落地(03 清单五维+循环修复)——① browse 族接口面诚实化:`wait_until` / `timeout_ms` / `screenshot.element` / `stealth_profile` 四个**从未生效的死参数**从工具描述与 schema 移除(此前传入会被静默忽略,现在文档不再承诺不存在的行为;非破坏——传了也会被静默剥离);② 「隐藏的 Chrome」文档中关于 CI 的四处失实描述改真;③ 内部:doctor 与 channels 解耦、firstText 单一定义、测试穿堂方法收敛(新增 2 条架构不变量,INV 总数 82→84;测试 2446→2455)。
|
|
233
235
|
- **v1.18.6**:外部消费与隐藏执守闭环——① 命令行拉起的 Chrome 默认**不再 60s 被后台静默回收**(外部 CDP 直连工具之前稳定 60-75s 被误杀,如自动化工作流);外部消费者还可用 `touch ~/.cache/lasso/chrome-touch-<端口>` 一行续命;② 「隐藏的 Chrome 有时藏不住」根治——hidden 档出生即写粘滞账 + 独立执守进程兜底(server 不在也 ≤2s 压回,账空自退不留常驻进程)。
|
|
234
236
|
- **v1.18.5**:发布包清理——**v1.18.1 ~ v1.18.4 的 npm 包误含应用域文件**(某课程抓取工程的中间产物,与 lasso 本体功能无关,已弃用),这些版本请勿安装;本版起发布面收敛为 lasso 本体,体积从 ~28MB 降回正常。
|
|
235
237
|
- **v1.18.4**:desktop 通道修复——① 此前 server 不是从仓库根目录启动时(比如由 Claude Code 等宿主在任意目录拉起),desktop 工具会全部报错 `rust_helper_crashed`:现在 helper 路径按安装位置自动解析,**任意目录启动都可用**;② desktop 起不来时的报错从「裸错误码」变成一眼自诊断(附实际路径、当前目录、修复办法;缺文件/指到目录/缺执行权限/文件损坏各说各话,秒级失败不空等);③ 二进制构建时自动 ad-hoc 签名(无签名环境的机器跳过不报错);④ 新增 GitHub CI(每次推送自动跑全量测试)。
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { evalTextValue } from "./upstream-response.js";
|
|
1
|
+
import { evalTextValue, firstText } from "./upstream-response.js";
|
|
2
2
|
// ============================================================
|
|
3
3
|
// 常量
|
|
4
4
|
// ============================================================
|
|
@@ -138,13 +138,4 @@ export function buildConditionExpr(cond) {
|
|
|
138
138
|
function sleep(ms) {
|
|
139
139
|
return new Promise((r) => setTimeout(r, ms));
|
|
140
140
|
}
|
|
141
|
-
function firstText(r) {
|
|
142
|
-
if (!r?.content)
|
|
143
|
-
return undefined;
|
|
144
|
-
for (const b of r.content) {
|
|
145
|
-
if (b.type === "text" && b.text)
|
|
146
|
-
return b.text;
|
|
147
|
-
}
|
|
148
|
-
return undefined;
|
|
149
|
-
}
|
|
150
141
|
//# sourceMappingURL=ExpectPoll.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpectPoll.js","sourceRoot":"","sources":["../../src/browse/ExpectPoll.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"ExpectPoll.js","sourceRoot":"","sources":["../../src/browse/ExpectPoll.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { logger } from "../util/logger.js";
|
|
2
|
-
import { evalTextValue } from "./upstream-response.js";
|
|
2
|
+
import { evalTextValue, firstText } from "./upstream-response.js";
|
|
3
3
|
import { STEALTH_PROFILES, STEALTH_INJECTION_SCRIPT, CLOUDFLARE_DETECTION_SCRIPT, CLOUDFLARE_DETECTION_REGEX, } from "./stealth-profiles.js";
|
|
4
4
|
// ============================================================
|
|
5
5
|
// StealthEngine
|
|
@@ -241,13 +241,4 @@ export function buildUserAgentOverrideScript(profile) {
|
|
|
241
241
|
} catch (e) {}
|
|
242
242
|
}`;
|
|
243
243
|
}
|
|
244
|
-
function firstText(r) {
|
|
245
|
-
if (!r?.content)
|
|
246
|
-
return undefined;
|
|
247
|
-
for (const b of r.content) {
|
|
248
|
-
if (b.type === "text" && b.text)
|
|
249
|
-
return b.text;
|
|
250
|
-
}
|
|
251
|
-
return undefined;
|
|
252
|
-
}
|
|
253
244
|
//# sourceMappingURL=StealthEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StealthEngine.js","sourceRoot":"","sources":["../../src/browse/StealthEngine.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"StealthEngine.js","sourceRoot":"","sources":["../../src/browse/StealthEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp-actions.d.ts","sourceRoot":"","sources":["../../src/browse/cdp-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cdp-actions.d.ts","sourceRoot":"","sources":["../../src/browse/cdp-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM/D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB;IAClC,wEAAwE;;IAExE;;;;;OAKG;;IAEH,+BAA+B;;IAE/B;;;OAGG;;IAEH,qEAAqE;;EAErE,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAInE,CAAC;AAuBH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,KAAK,CACzB,CAAC,EAAE,SAAS,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAsChC;AAKD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,SAAS,CAC7B,CAAC,EAAE,SAAS,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAiChC;AAED,uDAAuD;AACvD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAqBD;AAKD;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAC7B,CAAC,EAAE,SAAS,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAgBhC;AAED,+CAA+C;AAC/C,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAuBD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { firstText } from "./upstream-response.js";
|
|
1
2
|
// ============================================================
|
|
2
3
|
// 顶级 const:chrome-devtools-mcp 上游工具名集中表(parse6 §4.4 决策)
|
|
3
4
|
// ============================================================
|
|
@@ -243,16 +244,4 @@ export function parseConsoleMessageLines(text) {
|
|
|
243
244
|
}
|
|
244
245
|
return out;
|
|
245
246
|
}
|
|
246
|
-
// ============================================================
|
|
247
|
-
// helper:firstText(与 BrowseChannel.ts 同构)
|
|
248
|
-
// ============================================================
|
|
249
|
-
function firstText(r) {
|
|
250
|
-
if (!r?.content)
|
|
251
|
-
return undefined;
|
|
252
|
-
for (const b of r.content) {
|
|
253
|
-
if (b.type === "text" && b.text)
|
|
254
|
-
return b.text;
|
|
255
|
-
}
|
|
256
|
-
return undefined;
|
|
257
|
-
}
|
|
258
247
|
//# sourceMappingURL=cdp-actions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp-actions.js","sourceRoot":"","sources":["../../src/browse/cdp-actions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cdp-actions.js","sourceRoot":"","sources":["../../src/browse/cdp-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* 铁律(parse5 §3.3 + INV-30,类比 INV-14 / INV-27 anti-gaming):
|
|
7
7
|
* - 本文件**只放顶级 const 数据**:STEALTH_PROFILES / STEALTH_INJECTION_SCRIPT /
|
|
8
8
|
* CLOUDFLARE_DETECTION_SCRIPT / CLOUDFLARE_CHALLENGE_MARKERS。
|
|
9
|
+
* (例外:defaultHeadlessProfileForHost()——3 行纯选择函数,review-r1 自
|
|
10
|
+
* HeadlessChannel.ts 迁入;仍只读 process.platform,不触 env/config。)
|
|
9
11
|
* - **不从 config / env / ProviderRegistry 读**(防 LLM 通过 channel 改 env 绕过)。
|
|
10
12
|
* - 加新 profile = 加 STEALTH_PROFILES 一行(≤2 处改动守 02 §4)。
|
|
11
13
|
*
|
|
@@ -184,6 +186,23 @@ export declare const STEALTH_PROFILES: {
|
|
|
184
186
|
export type StealthProfileName = keyof typeof STEALTH_PROFILES;
|
|
185
187
|
/** profile 名清单(白盒供 test 遍历 + doctor 自检)。 */
|
|
186
188
|
export declare const STEALTH_PROFILE_NAMES: StealthProfileName[];
|
|
189
|
+
/**
|
|
190
|
+
* v1.12(round2 T2-1):宿主平台对齐的默认 stealth profile。
|
|
191
|
+
*
|
|
192
|
+
* darwin → mac_chrome:chrome-devtools-mcp 1.7.0 不暴露 setExtraHTTPHeaders,
|
|
193
|
+
* 低熵 client hints(sec-ch-ua-platform)发宿主真值——windows profile 在 mac
|
|
194
|
+
* 宿主上产生「UA 称 Windows、hints 招供 macOS」的 OS 级 shape 矛盾(round2-browser
|
|
195
|
+
* E1 实测)。非 darwin → windows_chrome_120(Windows 宿主自洽;Linux 宿主为已知
|
|
196
|
+
* 残余矛盾,round2-verdict T2-1 记档)。
|
|
197
|
+
*
|
|
198
|
+
* 构造期确定性选择(process.platform 只读),非 env/config 可配——不触 INV-30
|
|
199
|
+
* anti-gaming 面(profile 数据本体仍在 stealth-profiles.ts 顶级 const)。
|
|
200
|
+
*
|
|
201
|
+
* 2026-08-31(review-r1):从 channels/HeadlessChannel.ts 迁入本文件(StealthProfileName
|
|
202
|
+
* 的定义处)——消除 doctor → channels 的唯一 value 依赖(doctor 与 channels 保持单向:
|
|
203
|
+
* 组合根实例化只在 doctor-cli.ts / index.ts)。
|
|
204
|
+
*/
|
|
205
|
+
export declare function defaultHeadlessProfileForHost(): StealthProfileName;
|
|
187
206
|
/**
|
|
188
207
|
* 16 路反检测注入脚本(CORE 3 路 + 12 路 vendored evasion;join 成单字符串)。
|
|
189
208
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stealth-profiles.d.ts","sourceRoot":"","sources":["../../src/browse/stealth-profiles.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stealth-profiles.d.ts","sourceRoot":"","sources":["../../src/browse/stealth-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAkBH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAKD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuGsB,CAAC;AAEpD,2EAA2E;AAC3E,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE/D,4CAA4C;AAC5C,eAAO,MAAM,qBAAqB,EAE7B,kBAAkB,EAAE,CAAC;AAE1B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,IAAI,kBAAkB,CAElE;AA8ED;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,QAczB,CAAC;AAKb;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,4BAA4B,qHAM/B,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,QAWtC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAGtC,CAAC"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* 铁律(parse5 §3.3 + INV-30,类比 INV-14 / INV-27 anti-gaming):
|
|
7
7
|
* - 本文件**只放顶级 const 数据**:STEALTH_PROFILES / STEALTH_INJECTION_SCRIPT /
|
|
8
8
|
* CLOUDFLARE_DETECTION_SCRIPT / CLOUDFLARE_CHALLENGE_MARKERS。
|
|
9
|
+
* (例外:defaultHeadlessProfileForHost()——3 行纯选择函数,review-r1 自
|
|
10
|
+
* HeadlessChannel.ts 迁入;仍只读 process.platform,不触 env/config。)
|
|
9
11
|
* - **不从 config / env / ProviderRegistry 读**(防 LLM 通过 channel 改 env 绕过)。
|
|
10
12
|
* - 加新 profile = 加 STEALTH_PROFILES 一行(≤2 处改动守 02 §4)。
|
|
11
13
|
*
|
|
@@ -161,6 +163,25 @@ export const STEALTH_PROFILES = {
|
|
|
161
163
|
};
|
|
162
164
|
/** profile 名清单(白盒供 test 遍历 + doctor 自检)。 */
|
|
163
165
|
export const STEALTH_PROFILE_NAMES = Object.keys(STEALTH_PROFILES);
|
|
166
|
+
/**
|
|
167
|
+
* v1.12(round2 T2-1):宿主平台对齐的默认 stealth profile。
|
|
168
|
+
*
|
|
169
|
+
* darwin → mac_chrome:chrome-devtools-mcp 1.7.0 不暴露 setExtraHTTPHeaders,
|
|
170
|
+
* 低熵 client hints(sec-ch-ua-platform)发宿主真值——windows profile 在 mac
|
|
171
|
+
* 宿主上产生「UA 称 Windows、hints 招供 macOS」的 OS 级 shape 矛盾(round2-browser
|
|
172
|
+
* E1 实测)。非 darwin → windows_chrome_120(Windows 宿主自洽;Linux 宿主为已知
|
|
173
|
+
* 残余矛盾,round2-verdict T2-1 记档)。
|
|
174
|
+
*
|
|
175
|
+
* 构造期确定性选择(process.platform 只读),非 env/config 可配——不触 INV-30
|
|
176
|
+
* anti-gaming 面(profile 数据本体仍在 stealth-profiles.ts 顶级 const)。
|
|
177
|
+
*
|
|
178
|
+
* 2026-08-31(review-r1):从 channels/HeadlessChannel.ts 迁入本文件(StealthProfileName
|
|
179
|
+
* 的定义处)——消除 doctor → channels 的唯一 value 依赖(doctor 与 channels 保持单向:
|
|
180
|
+
* 组合根实例化只在 doctor-cli.ts / index.ts)。
|
|
181
|
+
*/
|
|
182
|
+
export function defaultHeadlessProfileForHost() {
|
|
183
|
+
return process.platform === "darwin" ? "mac_chrome" : "windows_chrome_120";
|
|
184
|
+
}
|
|
164
185
|
// ============================================================
|
|
165
186
|
// STEALTH_INJECTION_SCRIPT 顶级 const(parse5 §3.3.1 + v1.5 parse13 §3.1 16 路)
|
|
166
187
|
// ============================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stealth-profiles.js","sourceRoot":"","sources":["../../src/browse/stealth-profiles.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stealth-profiles.js","sourceRoot":"","sources":["../../src/browse/stealth-profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,7 @@ export interface BraveOpts {
|
|
|
53
53
|
export declare const BRAVE_FRESHNESS_MAP: Record<string, string>;
|
|
54
54
|
/**
|
|
55
55
|
* 注入式 HTTP client,便于测试 mock fetch。
|
|
56
|
-
*
|
|
56
|
+
* util/http-pool acquireHttpClient 返回 keep-alive 版;测试返 vi.fn().
|
|
57
57
|
*/
|
|
58
58
|
export interface BraveHttpClient {
|
|
59
59
|
fetch: typeof fetch;
|
|
@@ -63,7 +63,7 @@ export declare class BraveChannel extends BaseChannel {
|
|
|
63
63
|
private readonly endpoint;
|
|
64
64
|
/** 多 Key 池账本(INV-10:禁直读 env,必须经 ledger)。 */
|
|
65
65
|
private readonly ledger;
|
|
66
|
-
/** HTTP client(注入,便于测试 mock;生产走
|
|
66
|
+
/** HTTP client(注入,便于测试 mock;生产走 util/http-pool acquireHttpClient)。 */
|
|
67
67
|
private readonly httpClient;
|
|
68
68
|
readonly name = "search.brave";
|
|
69
69
|
constructor(
|
|
@@ -71,7 +71,7 @@ export declare class BraveChannel extends BaseChannel {
|
|
|
71
71
|
endpoint: string,
|
|
72
72
|
/** 多 Key 池账本(INV-10:禁直读 env,必须经 ledger)。 */
|
|
73
73
|
ledger: QuotaLedger,
|
|
74
|
-
/** HTTP client(注入,便于测试 mock;生产走
|
|
74
|
+
/** HTTP client(注入,便于测试 mock;生产走 util/http-pool acquireHttpClient)。 */
|
|
75
75
|
httpClient: BraveHttpClient);
|
|
76
76
|
isAvailable(): Promise<boolean>;
|
|
77
77
|
status(): Promise<ChannelStatus>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BraveChannel.d.ts","sourceRoot":"","sources":["../../src/channels/BraveChannel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,cAAc,EAEd,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAQ7D,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CAC/C;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKtD,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,KAAK,CAAC;CACrB;AAKD,qBAAa,YAAa,SAAQ,WAAW;IAIzC,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,
|
|
1
|
+
{"version":3,"file":"BraveChannel.d.ts","sourceRoot":"","sources":["../../src/channels/BraveChannel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,cAAc,EAEd,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAQ7D,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CAC/C;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKtD,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,KAAK,CAAC;CACrB;AAKD,qBAAa,YAAa,SAAQ,WAAW;IAIzC,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAC,UAAU;IAR7B,QAAQ,CAAC,IAAI,kBAAkB;;IAG7B,yEAAyE;IACxD,QAAQ,EAAE,MAAM;IACjC,4CAA4C;IAC3B,MAAM,EAAE,WAAW;IACpC,sEAAsE;IACrD,UAAU,EAAE,eAAe;IAKxC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;IA2BhC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAOpC;;;OAGG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAmF1B,UAAU;CAoDzB;AAKD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAkBxE"}
|
|
@@ -59,7 +59,7 @@ export class BraveChannel extends BaseChannel {
|
|
|
59
59
|
endpoint,
|
|
60
60
|
/** 多 Key 池账本(INV-10:禁直读 env,必须经 ledger)。 */
|
|
61
61
|
ledger,
|
|
62
|
-
/** HTTP client(注入,便于测试 mock;生产走
|
|
62
|
+
/** HTTP client(注入,便于测试 mock;生产走 util/http-pool acquireHttpClient)。 */
|
|
63
63
|
httpClient) {
|
|
64
64
|
super();
|
|
65
65
|
this.endpoint = endpoint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BraveChannel.js","sourceRoot":"","sources":["../../src/channels/BraveChannel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAS/C,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAiB3C;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;CACX,CAAC;AAUF,+DAA+D;AAC/D,eAAe;AACf,+DAA+D;AAC/D,MAAM,OAAO,YAAa,SAAQ,WAAW;IAKxB;IAEA;IAEA;IARV,IAAI,GAAG,cAAc,CAAC;IAE/B;IACE,yEAAyE;IACxD,QAAgB;IACjC,4CAA4C;IAC3B,MAAmB;IACpC,
|
|
1
|
+
{"version":3,"file":"BraveChannel.js","sourceRoot":"","sources":["../../src/channels/BraveChannel.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,8 +82,32 @@ export declare abstract class BrowseChannel extends UiChannel {
|
|
|
82
82
|
/**
|
|
83
83
|
* W2-DEF-N1 的执行体(P6 v1.18.1 抽出以便自愈重试原样复跑):
|
|
84
84
|
* NAV_FIRST 采集类 action 先导航,再跑 handler。
|
|
85
|
+
*
|
|
86
|
+
* review-r3 F3:导航的 final_url 透传进 handler 结果(`partial.final_url ??
|
|
87
|
+
* navFinalUrl`)——此前 nav-first 路径丢弃 nav 返回,browseSingle 兜底
|
|
88
|
+
* `partial.final_url ?? url` 回显请求 url(重定向后即伪造)。
|
|
89
|
+
*
|
|
90
|
+
* review-r3 F3(blank-gated nav-first):snapshot/extract 只在**会话页仍空白**
|
|
91
|
+
* (本 client 生命周期从未导航 → 恒 about:blank)时先导航——兑现工具契约
|
|
92
|
+
* 「url (required) 定向采集」(descriptions:extract — full-page text
|
|
93
|
+
* extraction)。已导航会话保持「作用于当前页」语义(T-BROWSE-33 记录的设计):
|
|
94
|
+
* navigate → click → extract 的点击后观察态不被回灌导航破坏;interact_observe/
|
|
95
|
+
* act(@pN) 经 InteractDispatcher 也走本路径,同享此保证。
|
|
85
96
|
*/
|
|
86
97
|
private dispatchAction;
|
|
98
|
+
/**
|
|
99
|
+
* review-r3 F3:FRESH_PAGE_NAV_ACTIONS 命中 + 本 client 会话从未导航(当前页
|
|
100
|
+
* = 上游新开空白页,L3 实证:此时单发 extract/snapshot 返 about:blank 空内容
|
|
101
|
+
* + outcome=worked)+ url 非占位 about:blank(forest 调度器缺 subtitle 时的
|
|
102
|
+
* 兜底值,无可导航目标)→ 返 true 需先导航。
|
|
103
|
+
*/
|
|
104
|
+
private needsFreshPageNav;
|
|
105
|
+
/**
|
|
106
|
+
* review-r3 F3:已导航会话集(WeakSet——上游 respawn 换 McpClient 实例自动
|
|
107
|
+
* 重置为「空白」,fresh-page 门控重新生效)。单一写者(dispatchAction),
|
|
108
|
+
* 不构成共享 mutable state 耦合面。
|
|
109
|
+
*/
|
|
110
|
+
private readonly navSeenClients;
|
|
87
111
|
/**
|
|
88
112
|
* P6(v1.18.1,得到实战问题集 P6):"No page selected" 零页面自愈钩子。
|
|
89
113
|
* 默认 false(HeadlessChannel 上游自管浏览器无 0-page 形态,行为零变化);
|