feat: add send connector preflight probes
This commit is contained in:
@@ -160,7 +160,7 @@ VERIFY_FAILED
|
||||
|
||||
## 6. 当前只读 helper op
|
||||
|
||||
当前 helper 只支持只读探测类 op。`version`、`self_check`、`scan_windows`、`dump_uia` 是第一阶段窗口/UIA 基线;`probe_client_runtime` 是 C30 为 B 路线发送连接器新增的只读运行时探测。
|
||||
当前 helper 只支持只读探测类 op。`version`、`self_check`、`scan_windows`、`dump_uia` 是第一阶段窗口/UIA 基线;`probe_client_runtime` 是 C30 为 B 路线发送连接器新增的只读运行时探测;`probe_send_entrypoints` 和 `probe_send_uia_controls` 是 R6a/C31 为发送连接器新增的只读预检。
|
||||
|
||||
### 6.1 `version`
|
||||
|
||||
@@ -182,7 +182,7 @@ VERIFY_FAILED
|
||||
```json
|
||||
{
|
||||
"helper_name": "ISphereWinHelper",
|
||||
"helper_version": "0.3.0",
|
||||
"helper_version": "0.4.0",
|
||||
"protocol": "isphere.helper.v1",
|
||||
"runtime": ".NET Framework"
|
||||
}
|
||||
@@ -334,6 +334,120 @@ C# helper 文件输出通过未来 `out_path` 参数控制。
|
||||
|
||||
该 op 是 C30 的 B 路线入口检查。它暂不等于发送能力,只用于判断后续是否值得做 sidecar / in-process 调用验证。
|
||||
|
||||
### 6.6 `probe_send_entrypoints`
|
||||
|
||||
用途:对复制或安装目录里的 iSphere / IMPlatformClient 二进制做只读元数据检查,确认 B 路线是否存在文本发送和文件发送候选入口。
|
||||
|
||||
这个 op 只做文件存在、版本、SHA256、.NET 反射/字符串元数据检查:
|
||||
|
||||
- 不发送消息;
|
||||
- 不上传文件;
|
||||
- 不点击、不输入;
|
||||
- 不注入、不 hook;
|
||||
- 不抓包;
|
||||
- 不读取聊天内容。
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"protocol": "isphere.helper.v1",
|
||||
"request_id": "...",
|
||||
"op": "probe_send_entrypoints",
|
||||
"timeout_ms": 15000,
|
||||
"args": {
|
||||
"install_dir": "C:\\Program Files (x86)\\Impp"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
响应 data 示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"probe_mode": "read_only_send_entrypoint_metadata",
|
||||
"summary": {
|
||||
"entrypoint_count": 7,
|
||||
"available_count": 7,
|
||||
"required_count": 5,
|
||||
"required_available_count": 5,
|
||||
"all_required_available": true,
|
||||
"b_route_entrypoint_preflight": "pass"
|
||||
},
|
||||
"entrypoints": [
|
||||
{
|
||||
"id": "text_high_level_by_jid",
|
||||
"assembly": "IMPlatformClient.exe",
|
||||
"type_name": "IMPP.Client.Core.Plugins.Manager.AppContextManager",
|
||||
"method_name": "SendTxtMessageByJid",
|
||||
"available": true
|
||||
}
|
||||
],
|
||||
"safety": {
|
||||
"sent_message": false,
|
||||
"sent_file": false,
|
||||
"uploaded_file": false,
|
||||
"clicked_ui": false,
|
||||
"typed_text": false,
|
||||
"captured_network": false,
|
||||
"attached_hook": false,
|
||||
"modified_client_data": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
该 op 是 R6a/C31 的 B 路线入口可达性预检。它证明“值得继续做 preview/dry-run”,但不等于生产发送能力。
|
||||
|
||||
### 6.7 `probe_send_uia_controls`
|
||||
|
||||
用途:对指定窗口做只读 UIA 分类,判断 A 路线 fallback 所需的搜索框、接收区、发送编辑区、发送按钮、发送文件菜单和离线发送阻断状态是否可识别。
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"protocol": "isphere.helper.v1",
|
||||
"request_id": "...",
|
||||
"op": "probe_send_uia_controls",
|
||||
"timeout_ms": 5000,
|
||||
"args": {
|
||||
"hwnd": "0x001A0B2C",
|
||||
"max_depth": 8,
|
||||
"max_children": 200
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
响应 data 示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"probe_mode": "read_only_uia_send_control_classifier",
|
||||
"flags": {
|
||||
"has_search_edit": true,
|
||||
"has_receive_document": true,
|
||||
"has_send_editor": true,
|
||||
"has_send_button": true,
|
||||
"has_file_menu": true,
|
||||
"offline_blocker_visible": true,
|
||||
"send_button_enabled": false,
|
||||
"route_hint": "A_ROUTE_OFFLINE_BLOCKED"
|
||||
},
|
||||
"safety": {
|
||||
"sent_message": false,
|
||||
"sent_file": false,
|
||||
"uploaded_file": false,
|
||||
"clicked_ui": false,
|
||||
"typed_text": false,
|
||||
"captured_network": false,
|
||||
"attached_hook": false,
|
||||
"modified_client_data": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
该 op 不返回聊天内容。控件名只返回固定 safe label 或是否存在,用于判断后续是否能进入 A 路线 draft-only 预检。
|
||||
|
||||
## 7. 后续 op 扩展顺序
|
||||
|
||||
必须等真实登录窗口的 UIA dump 被确认后,再扩展真实动作。
|
||||
|
||||
Reference in New Issue
Block a user