@mobileaidev/ai-app-bridge 0.3.8 → 0.4.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/README.md +52 -39
- package/bin/ai-app-bridge.js +56 -17
- package/bin/command-discovery.js +19 -4
- package/bin/command-registry.js +15 -4
- package/bin/command-request.js +68 -4
- package/bin/execution-host.js +31 -5
- package/bin/execution-runtime.js +17 -10
- package/bin/executors/preparation.js +19 -5
- package/bin/extraction/json-value.js +26 -0
- package/bin/extraction/prepare.js +57 -0
- package/bin/extraction/regex.js +30 -0
- package/bin/extraction/runner.js +77 -0
- package/bin/mcp-server.js +15 -20
- package/bin/public-reply.js +184 -0
- package/bin/response-store.js +60 -0
- package/bin/runtime-client.js +32 -15
- package/bin/runtime-directory.js +37 -8
- package/bin/script/node-runtime-adapter.js +139 -123
- package/bin/script/python-runtime-adapter.js +1 -1
- package/bin/script/script-diagnostics.js +21 -0
- package/bin/script/script-durable-restore.js +1 -0
- package/bin/script/script-sdk.js +39 -4
- package/bin/script/script-sdk.py +79 -7
- package/bin/script/script-session-channel.js +27 -10
- package/bin/script/script-supervisor.js +8 -0
- package/bin/shared-kernel/argument-schema.js +44 -12
- package/bin/shared-kernel/evidence-archive.js +2 -2
- package/bin/shared-kernel/evidence-schema.js +16 -1
- package/bin/shared-kernel/evidence-store.js +3 -3
- package/bin/shared-kernel/execution-contracts.js +13 -5
- package/docs/COMMAND_CONTRACT.md +91 -19
- package/docs/EVIDENCE_ARCHIVE.md +14 -1
- package/docs/INSTALLATION.md +73 -0
- package/docs/INTENT_FOREGROUND.md +4 -1
- package/docs/OPTIONAL_EXECUTORS.md +14 -14
- package/docs/RELEASE.md +60 -122
- package/docs/RESPONSE_EXTRACTION.md +122 -0
- package/docs/SCRIPT_AUTHORING.md +125 -6
- package/node_modules/@mobileaidev/segmented-fact-store-native/PREBUILDS.md +29 -0
- package/node_modules/@mobileaidev/segmented-fact-store-native/binding-path.js +29 -0
- package/node_modules/@mobileaidev/segmented-fact-store-native/binding.gyp +1 -0
- package/node_modules/@mobileaidev/segmented-fact-store-native/index.js +1 -3
- package/node_modules/@mobileaidev/segmented-fact-store-native/install.js +5 -0
- package/node_modules/@mobileaidev/segmented-fact-store-native/package.json +11 -5
- package/node_modules/@mobileaidev/segmented-fact-store-native/prebuilds/darwin-arm64/segmented_fact_store.node +0 -0
- package/node_modules/@mobileaidev/segmented-fact-store-native/prebuilds/darwin-x64/segmented_fact_store.node +0 -0
- package/node_modules/@mobileaidev/segmented-fact-store-native/prebuilds/linux-arm64-glibc/segmented_fact_store.node +0 -0
- package/node_modules/@mobileaidev/segmented-fact-store-native/prebuilds/linux-x64-glibc/segmented_fact_store.node +0 -0
- package/node_modules/@mobileaidev/segmented-fact-store-native/prebuilds/manifest.json +27 -0
- package/node_modules/@mobileaidev/segmented-fact-store-native/scripts/build-release-prebuilds.js +33 -0
- package/node_modules/@mobileaidev/segmented-fact-store-native/scripts/stage-prebuild.js +17 -0
- package/package.json +12 -5
- package/runtime/executors/android/prepare.init.gradle +22 -0
- package/runtime/executors/playwright/package-lock.json +2 -2
- package/runtime/executors/playwright/package.json +1 -1
- package/skills/ai-app-bridge-use/SKILL.md +19 -4
|
@@ -13,12 +13,22 @@ description: 使用 AI App Bridge 观察、操作和验证 Android、iOS、Flutt
|
|
|
13
13
|
|
|
14
14
|
## 共享调用合同
|
|
15
15
|
|
|
16
|
-
MCP 入口是 `capabilities` 和 `run
|
|
16
|
+
MCP 入口是 `capabilities` 和 `run`;`capabilities` 是独立工具,不是 `run` 的命令。命令参数全部放在 `run.arguments`,包括目标和 operation,使用当前命令名与 JSON 类型。默认 capabilities 或 domain 查询只取目录;domain 取值为 execution、evidence、core、app、action、flutter、webview、ios、web、diagnostics、advanced;android 是平台不是 domain,平台筛选只用于 Intent decide 的 `platform`。用 `command` 查合同,Intent/Script/evidence 加 `operation` 只取当前操作。Intent decide 可再加实际 `platform`、`provider`、`action`,例如 `{"command":"intent","operation":"decide","platform":"android","provider":"native","action":"tap"}`。CLI `--help COMMAND` 接受相同筛选;发现正文上限 96 KiB,宽查询超限时按提示用 command/operation 收窄,不反复读取整个 schema。
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
每次 `run` 顶层必填 `extract`:只需整个小结果时显式 `null`;树、网络、日志等大结果优先用 regex 或 JS/Python 提取需要的字段。业务参数仍在 `arguments`;`extract/output` 不传入设备命令。CLI 使用 `--extract null` 或 JSON 对象。
|
|
19
|
+
|
|
20
|
+
CLI 与 MCP 共用独立执行 Runtime、命令合同和 operationId。CLI 响应是一行紧凑 JSON,业务值在 `value`;MCP 工具正文同样是紧凑 JSON。Script 的调用返回值另见下文。客户端退出不会取消任务,用原 operationId 显式 cancel。取消不撤销已派发效果;版本错误会列出两侧身份,只在确定 Runtime 是待更新一侧时安排显式 stop。
|
|
19
21
|
|
|
20
22
|
旧 MCP 实例可能与已安装 CLI 不同。缺少 Intent/Script 或参数不匹配时,核对实际入口版本,选用支持当前合同的入口;不要套用旧 batch、工具别名或外层参数。
|
|
21
23
|
|
|
24
|
+
## 响应与提取
|
|
25
|
+
|
|
26
|
+
先看 `execution` 的原执行事实及 `failureStage`,再消费 `value`;Script 内部 `ctx.call` 仍按 `ok/result` 处理,不加 extract。`control` 保留续跑字段和采集覆盖;当前 Script 问题从 `control.pendingQuestion` 读取,即使 events 被游标过滤也可回答。
|
|
27
|
+
|
|
28
|
+
默认最终正文预算 96 KiB,可用 `output.maxBytes` 设为 16–256 KiB。提取失败或超预算不等于动作失败;存在 `control.source.persisted:true` 时,用 `response` 的 `operation:read`、原 `ref` 和新的 extract 重读,不重发原动作。未保存或留存已过期时没有可恢复的大结果,不捏造 ref。提取会减少交付内容,不承诺减少采集耗时。
|
|
29
|
+
|
|
30
|
+
提取脚本只使用 `ctx.inputs = {kind, response, execution, control}`,返回严格 JSON;没有 `ctx.call`。保留实际断言需要的来源身份、时间和状态,不能将选出的几条成功记录当作完整覆盖。完整示例见 `docs/RESPONSE_EXTRACTION.md`。
|
|
31
|
+
|
|
22
32
|
## 目标与动作
|
|
23
33
|
|
|
24
34
|
- Android:明确 `serial` 和 `packageName`。iOS:`deviceId`/`bundleId`;Native Intent 还需原 WDA Runner/session 绑定。Web:从当前连接取得 `sessionId`/`runtimeEpoch`/`targetId`。
|
|
@@ -34,13 +44,16 @@ CLI 与 MCP 共用独立执行 Runtime、命令合同和 operationId。CLI JSON
|
|
|
34
44
|
`decision` 包含唯一 `decisionId`、当前 `basedOnRevision` 和 `agentDecision`;`act` 的 action 遵循该观察的 provider 合同,控件动作使用唯一 selector。
|
|
35
45
|
需要刷新或切换 provider 时用 `observe`,随后使用新 revision。
|
|
36
46
|
`complete`/`fail`/`inconclusive` 也需要当前 revision,且不带 action;完成决策不能代替实际结果证据。
|
|
47
|
+
supervised 不会仅凭 goal 自动执行:没有决策时停在 `waiting_for_decision` 直到 `timeoutMs`。
|
|
48
|
+
`status` 显式给 `limit`(限制条数,不限制字节);续读历史用上一页的 `history.lastSequence` 作为 `afterSequence`,不能用 Script 的 `eventSequence`。完整 start → decide → status → complete 范例见 `COMMAND_CONTRACT.md` **Execution operation contracts**。
|
|
37
49
|
安装与权限弹窗命令会返回受监督 Intent,须继续观察和决策;具体收尾条件见对应合同章节。
|
|
38
50
|
|
|
39
51
|
## Script
|
|
40
52
|
|
|
41
53
|
`start` 的 `script` 内提供 `target`、`language`(`javascript` 或 `python`),以及 `source`/`sourcePath` 二选一。源码入口、权限和 API 按需查 `SCRIPT_AUTHORING.md`。
|
|
42
54
|
`ctx.call` 返回 envelope:先检查 `ok`,设备数据在 `result`;调用失败和 `ctx.assert` 的 verdict 由源码处理。
|
|
43
|
-
用原 operationId 查询 `status`/`wait
|
|
55
|
+
用原 operationId 查询 `status`/`wait`;每次 `waitMs` 最多 60000,`running` 或 `finishing` 时用上一响应的 `eventSequence` 作为 `afterSequence` 继续等待。
|
|
56
|
+
`waiting_for_agent` 是源码的 `ctx.askAgent`:用 `control.pendingQuestion`(或本页 `agent_question_created` 事件)里的 `requestId`/`revision` 调 `decide`,或 `cancel`;不要等到超时。完整 start → wait → result 范例见 `SCRIPT_AUTHORING.md` **Lifecycle: start, wait, result**。
|
|
44
57
|
`completed` 仅说明源码返回并持久化;status/wait 的 `resultRef` 不是最终值。
|
|
45
58
|
完成后调用 `script` 的 `operation:"result"` 读取 `result`、`resultRef` 和 `persisted`,检查 representation 及实际断言结果。读取失败保留错误,不从进度事件拼出返回值。
|
|
46
59
|
|
|
@@ -56,5 +69,7 @@ CLI 与 MCP 共用独立执行 Runtime、命令合同和 operationId。CLI JSON
|
|
|
56
69
|
从 `command -v ai-app-bridge` 取得入口并解析符号链接;其 `bin/..` 是 CLI 发布包根目录。源码仓库中为 `desktop/ai-app-bridge-cli`。以下路径均相对此包根目录,不相对本技能;先查标题或关键词,只读相关章节。
|
|
57
70
|
|
|
58
71
|
- `docs/COMMAND_CONTRACT.md`:入口与 Runtime 看 **Discovery and entrypoints**;Intent 看 **Execution operation contracts**;目标看 **Target and dispatch** 及对应 iOS/H5/Web 章节;安装/权限看 **Installation is an Intent operation** / **Runtime permission requests use Intent**。
|
|
59
|
-
- `docs/SCRIPT_AUTHORING.md`:首次写脚本看 **Start and observe**、**Calls and assertions**;命令准入看 **Capability selection**;采集或暂停需求再读对应章节。
|
|
72
|
+
- `docs/SCRIPT_AUTHORING.md`:首次写脚本看 **Start and observe**、**Lifecycle: start, wait, result**(含可运行的 JS/Python 回归范例)、**Calls and assertions**;命令准入看 **Capability selection**;采集或暂停需求再读对应章节。
|
|
60
73
|
- `docs/EVIDENCE_ARCHIVE.md`:需要记录、导出或离线校验时读取,包含文件范围与 coverage 的具体边界。
|
|
74
|
+
|
|
75
|
+
- `docs/RESPONSE_EXTRACTION.md`:单次提取、两语言源码、正文预算、失败后原 ref 重读及退出码。
|