@harmonyos-arkts/d2h 0.1.2 → 0.1.5
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 +78 -44
- package/agents/android-to-hmos-00-orchestrator.md +34 -28
- package/agents/d2h.md +266 -95
- package/dist/bin/install-opencode.js +137 -43
- package/dist/src/install-opencode.js +44 -0
- package/dist/src/install-vscode.js +226 -0
- package/dist/src/toolchain.js +83 -0
- package/docs/environment-check.md +86 -0
- package/opencode/agents.json +1 -1
- package/opencode/vscode-d2h-package.json +7 -0
- package/opencode/vscode-d2h-plugin.mjs +29 -0
- package/package.json +6 -4
- package/schemas/task-envelope.schema.json +58 -4
- package/schemas/task-plan.schema.json +281 -63
- package/scripts/check-environment.mjs +321 -0
- package/skills/android2hmos_resources_convert/SKILL.md +37 -19
- package/skills/appgraph-rule-audit/SKILL.md +24 -5
- package/skills/d2h-hypium-forge/SKILL.md +252 -0
- package/skills/d2h-hypium-forge/references/functional-spec-template.md +140 -0
- package/skills/d2h-hypium-forge/references/official-api.md +135 -0
- package/skills/d2h-hypium-forge/references/pitfalls.md +98 -0
- package/skills/d2h-hypium-forge/references/testability-template.md +71 -0
- package/skills/d2h-hypium-forge/scripts/_common_template.py +614 -0
- package/skills/d2h-hypium-forge/scripts/analyze_results.py +156 -0
- package/skills/d2h-hypium-forge/scripts/assert_audit.py +107 -0
- package/skills/d2h-hypium-forge/scripts/collect_runtime_pages.py +169 -0
- package/skills/d2h-hypium-forge/scripts/forge_report.py +325 -0
- package/skills/d2h-hypium-forge/scripts/inject_resource_ids.py +114 -0
- package/skills/d2h-hypium-forge/scripts/lint_asserts.py +80 -0
- package/skills/d2h-hypium-forge/scripts/lint_locate.py +60 -0
- package/skills/d2h-hypium-forge/scripts/merge_appgraph.py +249 -0
- package/skills/d2h-hypium-forge/scripts/precondition.py +140 -0
- package/skills/d2h-hypium-forge/scripts/preinject_ids.py +232 -0
- package/skills/d2h-hypium-forge/scripts/run_direct.py +392 -0
- package/skills/d2h-hypium-forge/scripts/run_parallel.py +121 -0
- package/skills/d2h-hypium-forge/scripts/scan_features.py +255 -0
- package/skills/d2h-hypium-forge/scripts/upgrade_asserts.py +66 -0
- package/skills/d2h-hypium-forge/scripts/validate_scenarios.py +84 -0
- package/skills/d2h-utg-ai-generate/SKILL.md +128 -0
- package/skills/d2h-utg-ai-generate/references/click-paths-schema.json +76 -0
- package/skills/d2h-utg-ai-generate/references/extraction-guide.md +34 -0
- package/skills/d2h-utg-ai-generate/references/facts-contract.md +96 -0
- package/skills/d2h-utg-ai-generate/references/page-schema.json +61 -0
- package/skills/d2h-utg-ai-generate/references/utg-schema.json +89 -0
- package/skills/d2h-utg-ai-generate/scripts/build_page_json.py +314 -0
- package/skills/d2h-utg-ai-generate/scripts/build_utg.py +123 -0
- package/skills/d2h-utg-ai-generate/scripts/capture_from_page_json.ts +280 -0
- package/skills/d2h-utg-ai-generate/scripts/utg_common.py +524 -0
- package/skills/d2h-utg-ai-generate/scripts/utg_html.py +489 -0
- package/skills/d2h-utg-ai-generate/scripts/validate_utg.py +69 -0
- package/skills/d2h-utg-ai-generate/scripts/vendor/D3-LICENSE +13 -0
- package/skills/d2h-utg-ai-generate/scripts/vendor/d3-7.9.0.min.js +2 -0
- package/skills/d2h-utg-ai-generate/tests/test_pipeline.py +369 -0
- package/skills/d2h-utg-static-generate/SKILL.md +73 -0
- package/skills/d2h-utg-static-generate/references/discoveries.md +38 -0
- package/skills/d2h-utg-static-generate/scripts/generate.py +499 -0
- package/skills/d2h-utg-static-generate/tests/test_static.py +335 -0
- package/skills/d2h-utg-static-generate/tests/verify-offline-html.py +60 -0
- package/skills/d2h-utg-static-generate/tests/verify-produced-fixture.py +131 -0
- package/skills/harmonyos-migration-playbook/SKILL.md +30 -3
- package/skills/harmonyos-migration-playbook/references/lesson-lifecycle.md +4 -4
- package/skills/harmonyos-migration-playbook/references/ui-automation.md +4 -3
- package/skills/harmonyos-migration-playbook/references/windows-environment.md +2 -2
- package/skills/maintaining-migration-report/SKILL.md +88 -99
- package/skills/maintaining-migration-report/references/final-acceptance.md +48 -0
- package/skills/maintaining-migration-report/references/source-provenance.md +66 -0
- package/skills/managing-d2h-toolchain/SKILL.md +23 -0
- package/skills/managing-d2h-toolchain/environment-requirements.json +16 -0
- package/skills/managing-d2h-toolchain/toolchain.json +16 -0
- package/skills/preparing-migration-workspace/SKILL.md +76 -69
- package/skills/preparing-migration-workspace/toolchain.json +0 -43
|
@@ -1,124 +1,131 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: preparing-migration-workspace
|
|
3
|
-
description: 在 Android 转 HarmonyOS 迁移开始或恢复时,通过 droid2hmos
|
|
3
|
+
description: 在 Android 转 HarmonyOS 迁移开始或恢复时,通过 droid2hmos 读取状态、执行 Preflight、初始化或校验配置,并采集设备与外部环境就绪度。只负责工作区准备和能力分流;不调度分析、实现、构建、测试、回归或 Git checkpoint。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 准备迁移工作区
|
|
7
7
|
|
|
8
|
-
本 Skill
|
|
8
|
+
本 Skill 只负责回答四个问题:项目和迁移工作区是否定位正确、非设备基线是否可用、设备是否可用、哪些外部条件仍阻塞特定能力。它不决定后续状态,也不把设备失败扩大为整个迁移停止。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
工具安装、精确版本和升级由 `managing-d2h-toolchain` 负责。本 Skill 只消费已检查的 CLI;发现版本或能力不符时返回该 Skill 处理,不运行 npm。
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
只调用 `droid2hmos` 的 `status`、`preflight`、`config init/validate` 和按需的 `device check`。不要直接调用 Node 脚本、Gradle、Hvigor、Hypium、ADB、HDC 或 AppGraph 分析命令,也不要在 `ohos/` 尚不存在时猜测 HarmonyOS 构建配置。
|
|
13
|
+
|
|
14
|
+
迁移产物(`.migration/`)统一位于 Android 工程父目录下的 `<工程名>-migration/.migration/`,由 CLI 创建和维护,不写入 Android 工程内部。下文所有 `.migration/...` 路径均相对该迁移工作区根目录。
|
|
15
|
+
|
|
16
|
+
## 输入与事实来源
|
|
17
|
+
|
|
18
|
+
输入必须包含 Android Gradle 工程根目录。根目录应有 Gradle 标记,应用模块中应有 `AndroidManifest.xml`。
|
|
19
|
+
|
|
20
|
+
开始或恢复时先获取只读快照:
|
|
13
21
|
|
|
14
22
|
```text
|
|
15
23
|
droid2hmos status <ANDROID_PROJECT>
|
|
16
24
|
```
|
|
17
25
|
|
|
18
|
-
|
|
26
|
+
以 CLI 返回的 `workspace`、`allowedActions`、`completion.unmet`、Preflight 检查项、`failedChecks` 和 `retry` 为机器事实。`phase` 只解释当前现场;不得创建或编辑 `.migration/state.json`。
|
|
19
27
|
|
|
20
|
-
|
|
28
|
+
如果 `workspace.projectPresent=false` 且 `workspace.projectCandidates` 非空,说明传入的是包装目录。改用列出的明确候选工程,不得在包装目录初始化第二套迁移工作区或 HarmonyOS 工程。
|
|
21
29
|
|
|
22
|
-
##
|
|
30
|
+
## 首次准备
|
|
23
31
|
|
|
24
|
-
|
|
32
|
+
运行统一预检:
|
|
25
33
|
|
|
26
34
|
```text
|
|
27
35
|
droid2hmos preflight <ANDROID_PROJECT> [--sdk-path <PATH>] [--timeout-ms <MS>]
|
|
28
36
|
```
|
|
29
37
|
|
|
30
|
-
`preflight`
|
|
38
|
+
`preflight` 由 Kernel 选择并判定检查项,可能包含:
|
|
31
39
|
|
|
32
40
|
- Android UI 技术栈支持性;
|
|
33
|
-
- Git 仓库、分支、`HEAD`
|
|
34
|
-
- Git、Node.js
|
|
35
|
-
-
|
|
41
|
+
- Git 仓库、分支、`HEAD` 和用户已有改动;
|
|
42
|
+
- Git、Node.js、npm、Python、JDK、DevEco 和 HarmonyOS SDK(Android SDK 探测已移除,迁移不依赖 Android 编译环境);
|
|
43
|
+
- AppGraph 健康检查;
|
|
36
44
|
- `.migration/config.json` 初始化和校验;
|
|
37
|
-
- Android
|
|
38
|
-
- 已有 HarmonyOS
|
|
39
|
-
-
|
|
45
|
+
- Android 基线状态;
|
|
46
|
+
- 已有 HarmonyOS 工程复用,或在空目标中创建工程壳;
|
|
47
|
+
- Preflight 自身所需的基线构建和设备检查;
|
|
40
48
|
- `.migration/preflight-report.json` 原子生成。
|
|
41
49
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
环境类门禁(`toolchain`、`devecocli-auth`、`appgraph`、`harmony-sdk`、`harmony-device`)只探测一次:它们依赖本机工具、华为账号授权或物理设备,原样重跑 `preflight` 不会自愈。这类失败会返回 `retry.kind=external` 且带 `remediation`;必须把 `remediation` 明确转述给用户、等待用户修改环境,不得在同一环境下连续重跑 `preflight`。其余(非环境类)失败在按 `retry` 指引改变输入后重跑。
|
|
45
|
-
|
|
46
|
-
本 Skill 不单独定义或重算任何子检查门禁。命令成功且报告总体结果为 `passed` 时继续。
|
|
50
|
+
这些是 Preflight 的内部门禁,不授权本 Skill 在预检后继续调度仓库级构建、测试或分析。已有 HarmonyOS 工程不得被覆盖;只校验现有工程且不允许初始化工程壳时使用 `--no-init-harmony`。
|
|
47
51
|
|
|
48
|
-
|
|
52
|
+
命令失败时读取 `failedChecks`、`retry` 和对应日志:
|
|
49
53
|
|
|
50
|
-
|
|
54
|
+
- `retry.kind=transient/bounded`:只在返回的上限内原样重试;
|
|
55
|
+
- `retry.kind=external`:记录为外部阻塞项并返回具体 `remediation`,不要在环境未变化时连续重跑;
|
|
56
|
+
- 其他失败:返回受影响能力和补救建议,不自行推断绕过方式。
|
|
51
57
|
|
|
52
|
-
|
|
53
|
-
- 语言数 = 1:也须在写入首个字符串资源前加载 `arkts-i18n` 确认资源组织方式;
|
|
54
|
-
- 任何情况下不得把用户可见文案硬编码进页面代码来替代字符串资源迁移。
|
|
58
|
+
不要把 `preflight` 非零退出一概解释为“迁移不能继续”。例如 HarmonyOS 设备不可用只阻止设备测试、运行态验收和依赖设备的证据采集;当 `allowedActions` 仍允许时,源码阅读、静态分析和非设备实现可以继续。反之,工程定位、配置或必要工具链缺失可能使 `allowedNonDeviceWork=false`。最终分流必须忠实反映本次 CLI 快照。
|
|
55
59
|
|
|
56
|
-
##
|
|
60
|
+
## 配置
|
|
57
61
|
|
|
58
|
-
|
|
62
|
+
需要显式提供 HarmonyOS 工程路径时使用:
|
|
59
63
|
|
|
60
64
|
```text
|
|
61
|
-
droid2hmos config init <ANDROID_PROJECT> [--harmony-project <PATH>]
|
|
65
|
+
droid2hmos config init <ANDROID_PROJECT> [--harmony-project <PATH>]
|
|
62
66
|
droid2hmos config validate <ANDROID_PROJECT>
|
|
63
67
|
```
|
|
64
68
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
`androidBuild` 默认为 null:迁移流程不编译 Android 工程,`analyze android` 是纯源码静态分析且不要求 APK。只有用户明确要求 Android/HarmonyOS 双端运行对照时,才通过 `--android-build` 显式配置构建命令;未配置时执行 `droid2hmos build android` 会返回引导提示而非自动探测。
|
|
68
|
-
|
|
69
|
-
在首次 Preflight 之后需要针对性诊断或验证时使用:
|
|
70
|
-
|
|
71
|
-
```text
|
|
72
|
-
droid2hmos build <android|harmony|all> <ANDROID_PROJECT> [--timeout-ms <MS>]
|
|
73
|
-
droid2hmos test android <ANDROID_PROJECT> [--task <TASK>] [--timeout-ms <MS>]
|
|
74
|
-
droid2hmos test harmony <ANDROID_PROJECT> (--class <CLASS> [--case <CASE>] | --all) [--target <DEVICE>] [--case-timeout-ms <MS>] [--ref <REPORT_REF>...]
|
|
75
|
-
```
|
|
69
|
+
配置中只保存能够确认的路径。不得保存或猜测 `harmonyBuild`、`harmonyTest`、module、product 或 target;HarmonyOS 参数由 CLI 从真实工程配置解析。
|
|
76
70
|
|
|
77
|
-
|
|
71
|
+
`androidBuild`/`androidTest` 字段仅为兼容旧工作区保留:CLI 不再提供设置入口,也不再执行这些命令(Android 构建与测试能力已移除)。
|
|
78
72
|
|
|
79
|
-
|
|
73
|
+
## 设备状态采集
|
|
80
74
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
Android 和 HarmonyOS 分析统一使用:
|
|
84
|
-
|
|
85
|
-
```text
|
|
86
|
-
droid2hmos analyze <android|harmony|all> <ANDROID_PROJECT>
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
CLI 负责调用 PATH 中的 `appgraph`,HarmonyOS 分析自动读取配置里的 SDK 路径。只有统一命令失败且需要定位工具缺陷时,才直接运行 `appgraph --version` 或查看其帮助;不得自行拼接内部分析参数作为正常工作流。
|
|
90
|
-
|
|
91
|
-
需要单独复查设备时使用:
|
|
75
|
+
当现有 Preflight 报告缺少当前设备状态,或调用方明确需要刷新设备状态时,可运行:
|
|
92
76
|
|
|
93
77
|
```text
|
|
94
|
-
droid2hmos device check
|
|
78
|
+
droid2hmos device check harmony
|
|
95
79
|
```
|
|
96
80
|
|
|
97
|
-
Android
|
|
81
|
+
只记录设备发现、Shell 响应、目标歧义和返回的 remediation(Android 设备检测已移除,仅支持 HarmonyOS)。多个目标、认证、签名或设备离线问题进入 `externalBlockers` 或 `capabilityBlockers`,由调用方决定何时处理。本 Skill 不因设备问题暂停并要求用户作流程选择。
|
|
98
82
|
|
|
99
|
-
##
|
|
83
|
+
## 恢复
|
|
100
84
|
|
|
101
|
-
|
|
85
|
+
恢复时不得重新初始化已有 `ohos/`。运行:
|
|
102
86
|
|
|
103
87
|
```text
|
|
104
88
|
droid2hmos status <ANDROID_PROJECT>
|
|
105
|
-
droid2hmos checkpoint status <ANDROID_PROJECT>
|
|
106
89
|
droid2hmos config validate <ANDROID_PROJECT>
|
|
107
90
|
```
|
|
108
91
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
92
|
+
仅当工具链、配置、工程壳或设备环境可能变化,或 CLI 明确要求刷新 Preflight 时,重新运行 `preflight`。不要在这里检查或创建 checkpoint,也不要补跑 `analyze`、`build`、`test` 或全量回归;这些属于调用方根据当前工作单元和状态决定的后续动作。
|
|
93
|
+
|
|
94
|
+
不得处理、覆盖、提交或删除用户已有改动。
|
|
95
|
+
|
|
96
|
+
## 结构化结果
|
|
97
|
+
|
|
98
|
+
始终返回同一就绪度结构:
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"baselineReady": true,
|
|
103
|
+
"deviceReady": false,
|
|
104
|
+
"externalBlockers": [],
|
|
105
|
+
"capabilityBlockers": [
|
|
106
|
+
{
|
|
107
|
+
"capability": "device-validation",
|
|
108
|
+
"check": "harmony-device",
|
|
109
|
+
"reason": "no responsive target",
|
|
110
|
+
"remediation": "connect or start one HarmonyOS target"
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"allowedNonDeviceWork": true,
|
|
114
|
+
"allowedActions": [],
|
|
115
|
+
"evidence": [".migration/preflight-report.json"],
|
|
116
|
+
"suggestedRemediation": []
|
|
117
|
+
}
|
|
115
118
|
```
|
|
116
119
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
## 继续条件
|
|
120
|
+
字段语义:
|
|
120
121
|
|
|
121
|
-
- `
|
|
122
|
-
-
|
|
122
|
+
- `baselineReady`:工程定位、迁移配置和非设备基础能力是否足以支持 CLI 明确允许的后续工作;不能仅用 Preflight 总体退出码代替;
|
|
123
|
+
- `deviceReady`:当前 HarmonyOS 目标是否满足设备类工作要求;
|
|
124
|
+
- `externalBlockers`:需要用户、账号、签名、物理设备或外部环境变化的阻塞项;
|
|
125
|
+
- `capabilityBlockers`:按能力说明阻塞范围,不能写成笼统的“迁移停止”;
|
|
126
|
+
- `allowedNonDeviceWork`:当前是否仍可继续源码阅读、静态分析或非设备实现;
|
|
127
|
+
- `allowedActions`:原样返回 CLI 快照中的允许动作;
|
|
128
|
+
- `evidence`:本次读取或生成的状态、配置和 Preflight 报告;
|
|
129
|
+
- `suggestedRemediation`:CLI 给出的可执行补救,不臆造成功结论。
|
|
123
130
|
|
|
124
|
-
|
|
131
|
+
本 Skill 不推进外部状态机、不更新迁移报告、不创建 checkpoint、不调用 `complete`,也不决定定向测试或全量回归。调用方根据上述结果决定下一步。
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"orchestrator": {
|
|
3
|
-
"command": "droid2hmos",
|
|
4
|
-
"preflight": ["preflight"],
|
|
5
|
-
"requiredCapabilities": [
|
|
6
|
-
"status",
|
|
7
|
-
"complete",
|
|
8
|
-
"config init",
|
|
9
|
-
"config validate",
|
|
10
|
-
"checkpoint status",
|
|
11
|
-
"checkpoint create",
|
|
12
|
-
"build android",
|
|
13
|
-
"build harmony",
|
|
14
|
-
"test android",
|
|
15
|
-
"test harmony",
|
|
16
|
-
"device check android",
|
|
17
|
-
"device check harmony",
|
|
18
|
-
"analyze android",
|
|
19
|
-
"analyze harmony",
|
|
20
|
-
"evidence capture",
|
|
21
|
-
"evidence flow",
|
|
22
|
-
"evidence compare",
|
|
23
|
-
"report init",
|
|
24
|
-
"report update",
|
|
25
|
-
"report validate",
|
|
26
|
-
"report render",
|
|
27
|
-
"mock init",
|
|
28
|
-
"service start",
|
|
29
|
-
"service status",
|
|
30
|
-
"service stop",
|
|
31
|
-
"logs list",
|
|
32
|
-
"logs show",
|
|
33
|
-
"logs failures",
|
|
34
|
-
"logs stats"
|
|
35
|
-
]
|
|
36
|
-
},
|
|
37
|
-
"appgraph": {
|
|
38
|
-
"command": "appgraph",
|
|
39
|
-
"versionProbe": ["--version"],
|
|
40
|
-
"healthProbe": ["spec-analysis", "--help"],
|
|
41
|
-
"managedBy": "droid2hmos preflight"
|
|
42
|
-
}
|
|
43
|
-
}
|