@harmonyos-arkts/d2h 0.1.20 → 0.1.21

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.
Files changed (151) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +40 -0
  3. package/agents/android-to-hmos-00-orchestrator.md +3 -315
  4. package/agents/d2h.md +53 -38
  5. package/contracts/workflow/artifacts.md +22 -0
  6. package/contracts/workflow/delivery.md +54 -0
  7. package/contracts/workflow/dispatch.md +26 -0
  8. package/contracts/workflow/execution.md +125 -0
  9. package/contracts/workflow/generation.md +40 -0
  10. package/contracts/workflow/orchestration.md +49 -0
  11. package/contracts/workflow/overview.md +58 -0
  12. package/contracts/workflow/plan.md +119 -0
  13. package/contracts/workflow/scope.md +151 -0
  14. package/dist/bin/install-opencode.js +34 -15
  15. package/dist/src/install-codex.js +131 -0
  16. package/dist/src/install-opencode.js +5 -5
  17. package/dist/src/workflow.js +54 -0
  18. package/docs/architecture-plan-guide.zh-CN.md +70 -0
  19. package/docs/incremental-spec-evaluation-design.md +670 -0
  20. package/docs/spec-plan-guide.md +226 -0
  21. package/docs/workflow-decoupling.md +59 -0
  22. package/opencode/interactive-tools/advance-progress-demo.mjs +21 -0
  23. package/opencode/interactive-tools/browser-host.ts +110 -0
  24. package/opencode/interactive-tools/core.ts +242 -0
  25. package/opencode/interactive-tools/demo-workflow.ts +55 -0
  26. package/opencode/interactive-tools/demo.mjs +37 -0
  27. package/opencode/interactive-tools/package-lock.json +1876 -0
  28. package/opencode/interactive-tools/package.json +23 -0
  29. package/opencode/interactive-tools/panel.ts +40 -0
  30. package/opencode/interactive-tools/prepare-demo.mjs +17 -0
  31. package/opencode/interactive-tools/prepare-progress-demo.mjs +13 -0
  32. package/opencode/interactive-tools/progress.ts +118 -0
  33. package/opencode/interactive-tools/server-legacy.mjs +2 -0
  34. package/opencode/interactive-tools/server.mjs +40 -0
  35. package/opencode/interactive-tools/tui.tsx +230 -0
  36. package/package.json +9 -1
  37. package/schemas/native-libs-analysis-report.schema.json +695 -0
  38. package/schemas/native-libs-verify-report.schema.json +566 -0
  39. package/schemas/spec-native-libs-shard.schema.json +110 -0
  40. package/skills/arkts-icon-sizing/SKILL.md +0 -10
  41. package/skills/cpp/d2h-native-library-analyse/SKILL.md +91 -0
  42. package/skills/cpp/d2h-native-library-analyse/scripts/analyse-android-so.py +630 -0
  43. package/skills/cpp/d2h-native-library-build/SKILL.md +403 -0
  44. package/skills/cpp/d2h-native-library-build/references/build-config-mapping.md +180 -0
  45. package/skills/cpp/d2h-native-library-build/references/jni-to-napi-mapping.md +74 -0
  46. package/skills/cpp/d2h-native-library-build/scripts/check-android-so.py +580 -0
  47. package/skills/cpp/d2h-native-library-verify/SKILL.md +111 -0
  48. package/skills/cpp/d2h-native-library-verify/references/demo-build-sign-run.md +67 -0
  49. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/AppScope/app.json5 +1 -0
  50. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/AppScope/resources/base/element/string.json +1 -0
  51. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/README.md +25 -0
  52. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/build-profile.json5 +24 -0
  53. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/build-profile.json5 +1 -0
  54. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/hvigorfile.ts +2 -0
  55. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/oh-package.json5 +1 -0
  56. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/ets/entryability/EntryAbility.ets +5 -0
  57. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/ets/pages/Index.ets +3 -0
  58. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/ets/pages/NativeVerifyDemo.ets +276 -0
  59. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/module.json5 +1 -0
  60. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/resources/base/element/color.json +1 -0
  61. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/resources/base/element/string.json +1 -0
  62. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/main/resources/base/profile/main_pages.json +1 -0
  63. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/ohosTest/ets/test/FFmpegVerify.test.ets +176 -0
  64. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/ohosTest/ets/test/List.test.ets +2 -0
  65. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/entry/src/ohosTest/module.json5 +1 -0
  66. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/hvigor/hvigor-config.json5 +1 -0
  67. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/hvigorfile.ts +2 -0
  68. package/skills/cpp/d2h-native-library-verify/references/demo-project-template/oh-package.json5 +9 -0
  69. package/skills/cpp/d2h-native-library-verify/references/demo-template.md +176 -0
  70. package/skills/cpp/d2h-native-library-verify/references/hypium-test-template.md +163 -0
  71. package/skills/cpp/d2h-native-library-verify/scripts/__pycache__/native_common.cpython-313.pyc +0 -0
  72. package/skills/cpp/d2h-native-library-verify/scripts/device-verify.py +304 -0
  73. package/skills/cpp/d2h-native-library-verify/scripts/native_common.py +341 -0
  74. package/skills/cpp/d2h-native-library-verify/scripts/verify-ohos-native.py +1099 -0
  75. package/skills/d2h-app-solution/SKILL.md +198 -0
  76. package/skills/d2h-app-solution/agents/openai.yaml +4 -0
  77. package/skills/d2h-app-solution/references/framework-evidence.md +117 -0
  78. package/skills/d2h-app-solution/references/hierarchy-rules.md +88 -0
  79. package/skills/d2h-app-solution/references/inventory-schema.md +305 -0
  80. package/skills/d2h-app-solution/references/technical-analysis.md +101 -0
  81. package/skills/d2h-app-solution/scripts/scan_repositories.py +350 -0
  82. package/skills/d2h-app-solution/scripts/validate_inventory.py +337 -0
  83. package/skills/d2h-architecture-plan/SKILL.md +35 -0
  84. package/skills/d2h-architecture-plan/references/directory-creation.md +43 -0
  85. package/skills/d2h-architecture-plan/references/hybrid-design.md +84 -0
  86. package/skills/d2h-architecture-plan/references/layout-reference.md +83 -0
  87. package/skills/d2h-architecture-plan/references/plan-contract.md +51 -0
  88. package/skills/d2h-architecture-plan/references/source-review.md +50 -0
  89. package/skills/d2h-cloud-knowledge/SKILL.md +28 -7
  90. package/skills/d2h-cloud-knowledge/kb_query.mjs +8 -0
  91. package/skills/d2h-dashboard/SKILL.md +56 -0
  92. package/skills/d2h-product-family-migration/SKILL.md +103 -0
  93. package/skills/d2h-product-family-migration/agents/openai.yaml +3 -0
  94. package/skills/d2h-product-family-migration/assets/incremental-plan.template.md +55 -0
  95. package/skills/d2h-product-family-migration/references/advanced/behavioral-verification.md +59 -0
  96. package/skills/d2h-product-family-migration/references/advanced/existing-skill-integration.md +30 -0
  97. package/skills/d2h-product-family-migration/references/advanced/packaging-and-verification.md +43 -0
  98. package/skills/d2h-product-family-migration/references/advanced/platform-probes.md +26 -0
  99. package/skills/d2h-product-family-migration/references/advanced/product-line-design.md +40 -0
  100. package/skills/d2h-product-family-migration/references/baseline-and-delta.md +50 -0
  101. package/skills/d2h-product-family-migration/tests/markdown-cases.md +76 -0
  102. package/skills/{d2h-page-develop → d2h-spec-develop}/SKILL.md +143 -126
  103. package/skills/d2h-spec-develop/agents/openai.yaml +7 -0
  104. package/skills/d2h-spec-develop/references/worker-workflow.md +26 -0
  105. package/skills/{d2h-page-spec-generate → d2h-spec-generate}/SKILL.md +24 -13
  106. package/skills/d2h-spec-generate/assets/spec-template.md +109 -0
  107. package/skills/d2h-spec-generate/references/from-plan.md +19 -0
  108. package/skills/d2h-spec-generate/references/spec-content.md +34 -0
  109. package/skills/{d2h-page-spec-generate → d2h-spec-generate}/scripts/build_batch_report.py +35 -84
  110. package/skills/d2h-spec-plan/SKILL.md +38 -0
  111. package/skills/d2h-spec-plan/agents/openai.yaml +4 -0
  112. package/skills/d2h-spec-plan/references/architecture-handoff.md +9 -0
  113. package/skills/d2h-spec-plan/references/plan-contract.md +13 -0
  114. package/skills/d2h-spec-plan/references/planning-method.md +46 -0
  115. package/skills/d2h-spec-plan/references/round-scope-assessment.md +49 -0
  116. package/skills/d2h-spec-plan/references/work-packets.md +61 -0
  117. package/skills/d2h-utg-ai-generate/references/click-paths-schema.json +2 -2
  118. package/skills/d2h-utg-ai-generate/references/page-schema.json +2 -2
  119. package/skills/d2h-utg-ai-generate/references/utg-schema.json +2 -2
  120. package/skills/d2h-utg-static-generate/SKILL.md +2 -2
  121. package/skills/managing-d2h-toolchain/environment-requirements.json +1 -1
  122. package/skills/managing-d2h-toolchain/toolchain.json +1 -1
  123. package/skills/preparing-migration-workspace/SKILL.md +32 -2
  124. package/workflow/__pycache__/artifact_bindings.cpython-313.pyc +0 -0
  125. package/workflow/__pycache__/spec_runtime.cpython-313.pyc +0 -0
  126. package/workflow/artifact_bindings.py +224 -0
  127. package/workflow/assets/dashboard.html +88 -0
  128. package/workflow/build_batch_report.py +8 -0
  129. package/workflow/collect_code_metrics.py +75 -0
  130. package/workflow/dashboard_overview.py +109 -0
  131. package/workflow/delivery_view.py +82 -0
  132. package/workflow/feature_plan.py +234 -0
  133. package/workflow/page_batches.py +223 -0
  134. package/workflow/spec_generation.py +120 -0
  135. package/workflow/spec_runtime.py +890 -0
  136. package/workflow/work_packets.py +85 -0
  137. package/skills/d2h-page-develop/agents/openai.yaml +0 -7
  138. package/skills/harmonyos-migration-playbook/SKILL.md +0 -83
  139. package/skills/harmonyos-migration-playbook/agents/openai.yaml +0 -7
  140. package/skills/harmonyos-migration-playbook/references/arkts-compile.md +0 -24
  141. package/skills/harmonyos-migration-playbook/references/harmony-runtime.md +0 -53
  142. package/skills/harmonyos-migration-playbook/references/lesson-lifecycle.md +0 -45
  143. package/skills/harmonyos-migration-playbook/references/protocol-e2e.md +0 -23
  144. package/skills/harmonyos-migration-playbook/references/ui-automation.md +0 -53
  145. package/skills/harmonyos-migration-playbook/references/windows-environment.md +0 -38
  146. package/skills/native-library-substitution/SKILL.md +0 -385
  147. package/skills/native-library-substitution/references/native-library-substitution.json +0 -56906
  148. package/skills/native-library-substitution/references/native-library-substitution.md +0 -163
  149. package/skills/porting-cmake-native-libraries/SKILL.md +0 -57
  150. package/skills/porting-cmake-native-libraries/references/platform-adaptation.md +0 -49
  151. package/skills/porting-cmake-native-libraries/references/report-and-build.md +0 -60
@@ -0,0 +1,54 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { spawnSync } from 'node:child_process';
4
+ const contracts = {
5
+ plan: 'plan.md', scope: 'scope.md', execution: 'execution.md',
6
+ dispatch: 'dispatch.md', artifacts: 'artifacts.md',
7
+ orchestration: 'orchestration.md', delivery: 'delivery.md', overview: 'overview.md', generation: 'generation.md',
8
+ };
9
+ export function runWorkflow(packageRoot, args) {
10
+ if (args[0] === 'contract') {
11
+ const name = args[1];
12
+ if (args.length !== 2 || !Object.hasOwn(contracts, name)) {
13
+ throw new Error(`Usage: d2h workflow contract <${Object.keys(contracts).join('|')}>`);
14
+ }
15
+ process.stdout.write(fs.readFileSync(path.join(packageRoot, 'contracts', 'workflow', contracts[name]), 'utf8'));
16
+ return 0;
17
+ }
18
+ if (!args.length || ['--help', '-h'].includes(args[0])) {
19
+ console.log(`D2H artifact workflow tools (no Skill directory required).
20
+ Usage: d2h workflow <validate|init|derive|context|event|reconcile|render|dashboard|generation> [options]
21
+ d2h workflow validate-scope <features.json> [--previous <file>] [--require-delivery]
22
+ d2h workflow metrics --project <source-project>
23
+ d2h workflow contract <${Object.keys(contracts).join('|')}>
24
+
25
+ Use d2h workflow <action> --help for artifact arguments.
26
+ init/event/reconcile synchronize execution.json, batch_report.json and batch_report.md.
27
+ Python 3.10+ required; set D2H_PYTHON to select an interpreter.`);
28
+ return 0;
29
+ }
30
+ const action = args[0];
31
+ const scripts = { 'validate-scope': 'feature_plan.py', metrics: 'collect_code_metrics.py' };
32
+ const runtimeActions = ['validate', 'init', 'derive', 'context', 'event', 'reconcile', 'render', 'dashboard', 'generation'];
33
+ if (!Object.hasOwn(scripts, action) && !runtimeActions.includes(action)) {
34
+ throw new Error(`unknown workflow action: ${action}`);
35
+ }
36
+ const explicit = process.env.D2H_PYTHON || process.env.PYTHON;
37
+ const candidates = explicit ? [explicit] : ['python3', 'python'];
38
+ const python = candidates.find(command => {
39
+ const probe = spawnSync(command, ['-c', 'import sys; sys.exit(0 if sys.version_info >= (3, 10) else 1)'], {
40
+ encoding: 'utf8', timeout: 5000, windowsHide: true,
41
+ });
42
+ return !probe.error && probe.status === 0;
43
+ });
44
+ if (!python)
45
+ throw new Error('D2H workflow requires Python 3.10+; set D2H_PYTHON to its executable path');
46
+ const file = path.join(packageRoot, 'workflow', scripts[action] ?? 'spec_runtime.py');
47
+ const result = spawnSync(python, [file, ...(scripts[action] ? args.slice(1) : args)], {
48
+ stdio: 'inherit', windowsHide: true,
49
+ env: { ...process.env, PYTHONDONTWRITEBYTECODE: '1' },
50
+ });
51
+ if (result.error)
52
+ throw result.error;
53
+ return result.status ?? 1;
54
+ }
@@ -0,0 +1,70 @@
1
+ # d2h-architecture-plan 使用说明
2
+
3
+ 当前Skill由模型直接查找、阅读和交叉核对Android源码,交付三套鸿蒙架构与目录方案。执行规则以[SKILL.md](../skills/d2h-architecture-plan/SKILL.md)为准;不需要专用Python分析器、扫描JSON、渲染命令或前置功能报告。
4
+
5
+ ## 输入与启动
6
+
7
+ 提供Android源码根目录,以及已有的目标设备/范围约束即可。混合应用应能定位Android宿主和实际业务源码;缺失部分先分析可见内容并标明影响。已有功能清单、Facts、鸿蒙参考工程或历史方案均为可选线索,用当前源码核验。
8
+
9
+ 可直接向Agent提出:
10
+
11
+ > 使用d2h-architecture-plan分析指定Android工程,输出安卓原结构对照、鸿蒙优选架构和融合结构三套完整目录方案,并推荐一套,考虑原开发者的维护便利性。只做规划。
12
+
13
+ 独立规划直接进入该Skill,不要求启动完整迁移的工具准备、Facts、设备采集或构建流程。原工程及参考工程只读;已有规划先读取并保留用户批注。
14
+
15
+ ## 分析与设计
16
+
17
+ 先从构建、Manifest、源码/资源根和入口建立范围地图,再沿影响边界的真实链路查调用、状态所有者、数据、平台接口及生命周期。单模块、多模块、不同设备和混合技术栈走同一主线,按源码证据展开专项,不套某个项目的业务清单。
18
+
19
+ 三套共用一次源理解,分别说明目标决定:
20
+
21
+ | 方案 | 要点 |
22
+ |---|---|
23
+ | android-mirror | 保留运行时模块、关键包族及内部模块依赖,含原有扁平组织;平台必需适配单列,外部SDK保留能力对照,不照搬Android包坐标 |
24
+ | harmony-practice | 根据业务内聚、状态、平台与共享边界重组,按需参考products/features/commons |
25
+ | hybrid | 保留原作者熟悉且合理的边界,有证据地拆合或改名,说明收益和维护代价 |
26
+
27
+ 每套均有完整关键目录、职责/依赖、源码定位、关键链所有者和风险;树只列目录,不逐类造目录或预定实现文件。简单工程可以三套均为单HAP,不为制造差异拆空库,也不设独立顶层components类别。
28
+
29
+ ## 产物与评审
30
+
31
+ 默认写入Android同级 `<工程名>-migration/.migration/architecture-plan/`:
32
+
33
+ | 文件 | 何时需要 | 用途 |
34
+ |---|---|---|
35
+ | architecture-plan.md | 默认 | 当前规划真源:共享项目理解、三套目录/职责/依赖、状态与平台承接、成本及推荐 |
36
+ | source-map.md | 映射较长时 | 一张源到三套目标的对照表,覆盖已知业务、支撑、资源与入口 |
37
+ | shell-receipt.json及CLI日志 | 实际创建时 | 记录选中方案、实际目标、授权、创建/复用目录和未完成项 |
38
+
39
+ 不默认输出多份重复JSON、扫描基线或树文件。有明确下游schema时,按其真实契约提供必要结构化数据,不能把历史ready字段当作当前复核或用户确认。
40
+
41
+ 模型把三套分别代入真实调用复核:每个已知区域有去向,导航与数据/事件契约能闭合,状态和资源所有权清楚,树/映射/依赖一致;未确认项按影响标明。目录完整不代表可构建或已完成迁移。
42
+
43
+ 只请求分析时,交付推荐与取舍即可完成;用户可随后批注或选型。源码可回答的问题由模型继续查证,不转成无必要的确认题。
44
+
45
+ ## 用户确认后的创建
46
+
47
+ 只有用户实际选定当前方案并要求创建/搬迁时,才读取[目录创建说明](../skills/d2h-architecture-plan/references/directory-creation.md)。已有“采用推荐并创建”的明确委托直接记录后执行,不重复索取确认。
48
+
49
+ 使用本机DevEco CLI,先通过当前帮助核对创建参数;已有工程检查注册模块、设备配置与本地依赖,保留模板和用户文件。普通文件工具只补齐选中方案目录,不一次创建三套,不生成业务实现或额外模块配置,不构建运行。
50
+
51
+ 执行后核对实际配置/目录并保存receipt,区分complete、partial、blocked以及未注册的目录壳子。CLI缺失或目标设备不支持时如实记录,空目录不能冒充基础工程。
52
+
53
+ ## 参考文件分工
54
+
55
+ | 文件 | 负责内容 |
56
+ |---|---|
57
+ | [source-review.md](../skills/d2h-architecture-plan/references/source-review.md) | 范围地图、代表链、条件分支、反证与停止扩读条件 |
58
+ | [layout-reference.md](../skills/d2h-architecture-plan/references/layout-reference.md) | 架构方法、三套差别、粒度与目录字典、官方依据 |
59
+ | [plan-contract.md](../skills/d2h-architecture-plan/references/plan-contract.md) | Markdown交付内容、一致性复核及选型交接 |
60
+ | [directory-creation.md](../skills/d2h-architecture-plan/references/directory-creation.md) | 确认后的CLI/已有工程检查、目录落地和实际记录 |
61
+
62
+ 按当前步骤读取相应参考,不要求一开始加载全部内容。控制成本依靠局部搜索、按风险深读、共享事实、紧凑对照与局部修订;发现矛盾或高影响未知仍须追踪,不以节约为由伪称全面,也不承诺固定token或耗时下降比例。
63
+
64
+ ## 旧流程与验证边界
65
+
66
+ 旧的inspect/query/audit/render及Python壳子命令已移除,不再提供脚本兼容层;历史JSON和评估文档只作参考。应按本说明调用当前Skill,而不是恢复旧解析器或改用历史测试驱动规划。
67
+
68
+ 工作流可选inputs.architecturePlan保存当前Markdown路径;inputs.shellReceipt只在实际创建后填写。调用方仍须核验最终选择、模块/目录、共享边界和风险。公共workflow不解析架构Markdown,不自动证明用户确认、SDK可用性或架构正确。
69
+
70
+ 自动测试检查Markdown资源可达、实际安装/更新和公共工作流的可选上下文交接;模型判断质量通过真实源码前向评审验证。安装或测试通过均不能替代架构语义复核。