@ohos-cpf/3rdloop 0.0.2 → 0.0.3

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 (393) hide show
  1. package/README.md +244 -244
  2. package/bin/3rdloop.mjs +46 -46
  3. package/lib/cli.js +781 -781
  4. package/lib/config-cmd.js +451 -451
  5. package/lib/config.js +318 -318
  6. package/lib/doctor.js +113 -113
  7. package/lib/exit-codes.js +30 -30
  8. package/lib/opencode.js +155 -155
  9. package/lib/orch.js +426 -426
  10. package/lib/queries.js +263 -263
  11. package/lib/step.js +325 -325
  12. package/lib/ui.js +222 -222
  13. package/lib/update.js +279 -279
  14. package/lib/workflow.js +308 -308
  15. package/lib/workflows.js +131 -131
  16. package/package.json +50 -50
  17. package/vendor/Server/Agent/SkillSelector/README.md +343 -343
  18. package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -207
  19. package/vendor/Server/Agent/SkillSelector/index.js +14 -14
  20. package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -313
  21. package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -161
  22. package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -144
  23. package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -433
  24. package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -382
  25. package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +59 -59
  26. package/vendor/Server/Brain/AnalysisStrategies.js +422 -422
  27. package/vendor/Server/Brain/Brain.js +686 -686
  28. package/vendor/Server/Brain/DecompositionStrategies.js +621 -621
  29. package/vendor/Server/Brain/PlanPersistence.js +196 -196
  30. package/vendor/Server/Brain/SkillExecutor.js +251 -251
  31. package/vendor/Server/Brain/index.js +11 -11
  32. package/vendor/Server/CLI/cli.js +275 -275
  33. package/vendor/Server/CLI/deveco-code/index.js +71 -71
  34. package/vendor/Server/CLI/deveco-code.js +5 -5
  35. package/vendor/Server/CLI/opencode/index.js +817 -818
  36. package/vendor/Server/CLI/opencode.js +5 -5
  37. package/vendor/Server/DbUse/MessageArchive.js +61 -61
  38. package/vendor/Server/DbUse/StorageManager.js +107 -107
  39. package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -94
  40. package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -138
  41. package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -138
  42. package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -114
  43. package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -157
  44. package/vendor/Server/DbUse/index.js +160 -160
  45. package/vendor/Server/DbUse/stores/SessionStore.js +279 -279
  46. package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -133
  47. package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -262
  48. package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -279
  49. package/vendor/Server/FlexRunner/FlexRunner.js +1759 -1759
  50. package/vendor/Server/FlexRunner/index.js +12 -12
  51. package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -523
  52. package/vendor/Server/Knowledge/KnowledgeManager.js +341 -341
  53. package/vendor/Server/Knowledge/index.js +33 -33
  54. package/vendor/Server/LoopEngine/LoopEngine.js +1133 -1133
  55. package/vendor/Server/LoopEngine/index.js +11 -11
  56. package/vendor/Server/Orchestrator/Orchestrator.js +0 -3
  57. package/vendor/Server/Orchestrator/StepNode.js +312 -312
  58. package/vendor/Server/Orchestrator/index.js +13 -13
  59. package/vendor/Server/Routes/controllers/BrainController.js +241 -241
  60. package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -1125
  61. package/vendor/Server/Routes/controllers/HealthController.js +44 -44
  62. package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -355
  63. package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -788
  64. package/vendor/Server/Routes/controllers/StatsController.js +57 -57
  65. package/vendor/Server/Routes/controllers/StreamController.js +67 -67
  66. package/vendor/Server/Routes/library/logger.js +179 -179
  67. package/vendor/Server/Routes/library/zipArchive.js +172 -172
  68. package/vendor/Server/Routes/router/Router.js +204 -204
  69. package/vendor/Server/Routes/routes/brain.js +47 -47
  70. package/vendor/Server/Routes/routes/flexrunner.js +72 -72
  71. package/vendor/Server/Routes/routes/health.js +28 -28
  72. package/vendor/Server/Routes/routes/index.js +57 -57
  73. package/vendor/Server/Routes/routes/knowledge.js +55 -55
  74. package/vendor/Server/Routes/routes/loopengine.js +58 -58
  75. package/vendor/Server/Routes/routes/orchestrator.js +61 -61
  76. package/vendor/Server/Routes/routes/registry.js +97 -97
  77. package/vendor/Server/Routes/routes/stats.js +23 -23
  78. package/vendor/Server/Routes/routes/stream.js +30 -30
  79. package/vendor/Server/Routes/server.js +203 -203
  80. package/vendor/Server/Routes/sse/SseHub.js +308 -308
  81. package/vendor/Server/Skills/acceptance-check/SKILL.md +191 -191
  82. package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -52
  83. package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -77
  84. package/vendor/Server/Skills/acceptance-check/references/PHASE2_EVIDENCE_VERIFICATION.md +70 -70
  85. package/vendor/Server/Skills/arkts-code-check/SKILL.md +320 -320
  86. package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +210 -210
  87. package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +28 -28
  88. package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +233 -233
  89. package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +219 -219
  90. package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +328 -328
  91. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -93
  92. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +432 -432
  93. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -851
  94. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +788 -788
  95. package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -291
  96. package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -68
  97. package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -184
  98. package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -337
  99. package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -400
  100. package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +98 -98
  101. package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -544
  102. package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -93
  103. package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +432 -432
  104. package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -851
  105. package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +788 -788
  106. package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -174
  107. package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -321
  108. package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -100
  109. package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -185
  110. package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +233 -233
  111. package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +102 -102
  112. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -89
  113. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -62
  114. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +107 -107
  115. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -124
  116. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -90
  117. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -57
  118. package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -259
  119. package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -97
  120. package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +391 -391
  121. package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -113
  122. package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +312 -312
  123. package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -154
  124. package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +165 -165
  125. package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +308 -308
  126. package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -90
  127. package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -282
  128. package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +360 -360
  129. package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +145 -145
  130. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +252 -252
  131. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +114 -114
  132. package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +262 -262
  133. package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -455
  134. package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -60
  135. package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -76
  136. package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -200
  137. package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +518 -518
  138. package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -276
  139. package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +92 -92
  140. package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -767
  141. package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -93
  142. package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +432 -432
  143. package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -851
  144. package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +788 -788
  145. package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -221
  146. package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +228 -228
  147. package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -97
  148. package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -194
  149. package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +575 -575
  150. package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +574 -574
  151. package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -182
  152. package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +490 -490
  153. package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -217
  154. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -93
  155. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +432 -432
  156. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -851
  157. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +788 -788
  158. package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -299
  159. package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +311 -311
  160. package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -190
  161. package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +133 -133
  162. package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -259
  163. package/vendor/Server/Skills/flutter-interface/README.md +75 -75
  164. package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -291
  165. package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -336
  166. package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -190
  167. package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -258
  168. package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -254
  169. package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +517 -517
  170. package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +381 -381
  171. package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +341 -341
  172. package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -71
  173. package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +518 -518
  174. package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +406 -406
  175. package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +652 -652
  176. package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +396 -396
  177. package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +744 -744
  178. package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +720 -720
  179. package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -414
  180. package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -150
  181. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -304
  182. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -265
  183. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -286
  184. package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -383
  185. package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -165
  186. package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -91
  187. package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -127
  188. package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +453 -301
  189. package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_CHECKLIST.md +151 -0
  190. package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +257 -105
  191. package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +191 -127
  192. package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +317 -208
  193. package/vendor/Server/Skills/rn-code-check/SKILL.md +320 -320
  194. package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +234 -234
  195. package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +188 -188
  196. package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +246 -246
  197. package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -198
  198. package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -40
  199. package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -78
  200. package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -70
  201. package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -47
  202. package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -252
  203. package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -176
  204. package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -5
  205. package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -35
  206. package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -137
  207. package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -33
  208. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -40
  209. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -429
  210. package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -105
  211. package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -90
  212. package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -213
  213. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -73
  214. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -258
  215. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -341
  216. package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -67
  217. package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -299
  218. package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -293
  219. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -857
  220. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -856
  221. package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -157
  222. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -801
  223. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +683 -683
  224. package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -233
  225. package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -1373
  226. package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -220
  227. package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -245
  228. package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -263
  229. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -414
  230. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -413
  231. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -311
  232. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -355
  233. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -115
  234. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -139
  235. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -586
  236. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -57
  237. package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -259
  238. package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -301
  239. package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -148
  240. package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -118
  241. package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -168
  242. package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -176
  243. package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -274
  244. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -45
  245. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -25
  246. package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -61
  247. package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -165
  248. package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -239
  249. package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -263
  250. package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -96
  251. package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +57 -57
  252. package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -99
  253. package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -64
  254. package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +74 -74
  255. package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -164
  256. package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +356 -339
  257. package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +85 -83
  258. package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +905 -859
  259. package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +124 -122
  260. package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +287 -279
  261. package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -273
  262. package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -129
  263. package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -581
  264. package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -138
  265. package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -168
  266. package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +526 -506
  267. package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +321 -280
  268. package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -221
  269. package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +220 -209
  270. package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -325
  271. package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -279
  272. package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -404
  273. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -185
  274. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -265
  275. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -189
  276. package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -203
  277. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -147
  278. package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -148
  279. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -165
  280. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -195
  281. package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -249
  282. package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -235
  283. package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -161
  284. package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -413
  285. package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -235
  286. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -245
  287. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -282
  288. package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -251
  289. package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -469
  290. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -310
  291. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -303
  292. package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -421
  293. package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -358
  294. package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -114
  295. package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -274
  296. package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -185
  297. package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -191
  298. package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -216
  299. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -107
  300. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -120
  301. package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -108
  302. package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -237
  303. package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -261
  304. package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -112
  305. package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +497 -497
  306. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -270
  307. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -164
  308. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -556
  309. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -459
  310. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -65
  311. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -512
  312. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -132
  313. package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -424
  314. package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -137
  315. package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -306
  316. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -485
  317. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -172
  318. package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -422
  319. package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -95
  320. package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -169
  321. package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -554
  322. package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -106
  323. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -216
  324. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -413
  325. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -269
  326. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -98
  327. package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -337
  328. package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -722
  329. package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -219
  330. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -345
  331. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -269
  332. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -173
  333. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -267
  334. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -174
  335. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -111
  336. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -186
  337. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -150
  338. package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -296
  339. package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -371
  340. package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -212
  341. package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -345
  342. package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -223
  343. package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -1053
  344. package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +295 -255
  345. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +82 -77
  346. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -224
  347. package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +175 -174
  348. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -967
  349. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -1798
  350. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -5
  351. package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +180 -137
  352. package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -145
  353. package/vendor/Server/Skills/skill-generator/SKILL.md +365 -365
  354. package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -183
  355. package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -82
  356. package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -110
  357. package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -122
  358. package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -121
  359. package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -259
  360. package/vendor/Server/Skills/task-analysis/SKILL.md +234 -234
  361. package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -160
  362. package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -190
  363. package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -224
  364. package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -162
  365. package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -55
  366. package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -126
  367. package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -256
  368. package/vendor/Server/Skills/task-decomposition/SKILL.md +528 -528
  369. package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -451
  370. package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -179
  371. package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -152
  372. package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -175
  373. package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -195
  374. package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -226
  375. package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -263
  376. package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -29
  377. package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -376
  378. package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -259
  379. package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -216
  380. package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +424 -424
  381. package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -427
  382. package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -214
  383. package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -235
  384. package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -250
  385. package/vendor/Server/TestCheck/TestCheck.js +775 -775
  386. package/vendor/Server/TestCheck/index.js +11 -11
  387. package/vendor/Server/library/McpToolGuide.js +280 -280
  388. package/vendor/Server/library/StatsService.js +126 -126
  389. package/vendor/Server/library/cstTime.js +16 -16
  390. package/vendor/VERSION +3 -3
  391. package/workflows/pr-check.mjs +105 -105
  392. package/workflows/pr-push.mjs +192 -192
  393. package/vendor/Server/Agent/SkillSelector/types.js +0 -63
@@ -1,345 +1,345 @@
1
- # 设备运行时崩溃排错指南
2
-
3
- RN 0.84 + React 19 + RNOH 0.84 环境下,测试 demo 移植到鸿蒙设备后遇到的运行时崩溃及解决方案。
4
-
5
- 本文档基于 rntpc_react-native-netinfo 库的实战调试经验整理。
6
-
7
- ## 崩溃 1:Element type is invalid: got: object
8
-
9
- ### 症状
10
-
11
- 应用启动即崩溃,错误信息:`Element type is invalid: got: object`。
12
-
13
- ### 根因
14
-
15
- `example/src/index.tsx` 中定义了 `ExampleApp` 组件类,并在文件末尾调用 `AppRegistry.registerComponent('app_name', () => ExampleApp)`,但**缺少 `export default` 导出**。
16
-
17
- `example/index.js` 中 `import App from './src/index'` 要求 `src/index.tsx` 有默认导出。缺少默认导出时,`App` 为 `undefined`,React 注册了一个 `undefined` 组件,运行时报 "Element type is invalid"。
18
-
19
- ### 诊断方法
20
-
21
- ```bash
22
- # 检查 index.tsx 是否有 export default
23
- grep "export default" example/src/index.tsx
24
- ```
25
-
26
- 如果没有输出,即为问题所在。
27
-
28
- ### 解决方案
29
-
30
- 在 `AppRegistry.registerComponent` **之前**添加默认导出:
31
-
32
- ```typescript
33
- // example/src/index.tsx 末尾
34
-
35
- export default ExampleApp;
36
-
37
- AppRegistry.registerComponent('app_name', () => ExampleApp);
38
- ```
39
-
40
- **注意**:`app_name` 必须与 `app.json` 中的 `"name"` 字段一致,且与 `Index.ets` 中 `RNApp` 的 `appKey` 一致。
41
-
42
- ## 崩溃 2:Cannot read property 'useState' of null
43
-
44
- ### 症状
45
-
46
- 应用启动后白屏或崩溃,错误信息:`Cannot read property 'useState' of null`。调用栈指向调用了 `useState()` 的组件(如 NetInfoHook 中的 `useNetInfo()`)。
47
-
48
- ### 根因
49
-
50
- Metro bundler 为 `react` 创建了**两个模块实例**:
51
-
52
- ```
53
- 模块 ID 49: node_modules/react/index.js ← example 代码使用
54
- 模块 ID 640: ../node_modules/react/index.js ← 库代码使用
55
- ```
56
-
57
- 两个 React 实例导致 `ReactSharedInternals.H`(hooks dispatcher)不一致:
58
- - 渲染器在实例 A 上设置 dispatcher
59
- - 组件在实例 B 上调用 `useState()`
60
- - 实例 B 的 `H` 为 null → 崩溃
61
-
62
- #### 为什么会有两个 react
63
-
64
- 库通过 `"file:.."` 安装(symlink 到父目录),目录结构:
65
-
66
- ```
67
- rntpc_react-native-netinfo/ ← 库根目录
68
- ├── node_modules/react/ ← React 副本 A
69
- ├── src/index.ts ← import {useState} from 'react' → 解析到副本 A
70
- └── example/ ← 测试工程
71
- ├── node_modules/react/ ← React 副本 B
72
- └── src/index.tsx ← import * as React from 'react' → 解析到副本 B
73
- ```
74
-
75
- Metro 的 `nodeModulesPaths` 包含了两个目录,对不同的导入上下文解析到不同的 `react` 路径。
76
-
77
- ### 诊断方法
78
-
79
- 构建 dev bundle 并检查 React 模块路径:
80
-
81
- ```bash
82
- npx react-native bundle --platform harmony --dev true \
83
- --entry-file index.js --bundle-output /tmp/test-bundle-dev.js
84
-
85
- grep -oE '(node_modules|\.\./node_modules)/react/index\.js' /tmp/test-bundle-dev.js | sort | uniq -c
86
- ```
87
-
88
- 如果输出包含两个不同路径,即为多副本问题:
89
-
90
- ```
91
- 1 node_modules/react/index.js ← example 的
92
- 1 ../node_modules/react/index.js ← 库根目录的
93
- ```
94
-
95
- ### 解决方案
96
-
97
- 在 `metro.config.js` 中**包装** RNOH 的 `resolveRequest`,拦截裸 `react` 导入:
98
-
99
- ```javascript
100
- const path = require('path');
101
- const {mergeConfig, getDefaultConfig} = require('@react-native/metro-config');
102
- const {createHarmonyMetroConfig} = require('@react-native-oh/react-native-harmony/metro.config');
103
-
104
- const projectRoot = __dirname;
105
- const libraryRoot = path.resolve(projectRoot, '..');
106
- const exampleNodeModules = path.resolve(projectRoot, 'node_modules');
107
-
108
- // 只拦截裸 'react' 导入,强制解析到 example 的 node_modules
109
- const SINGLETON_MODULES = new Set(['react']);
110
-
111
- // 先获取 RNOH 的 resolveRequest
112
- const harmonyConfig = createHarmonyMetroConfig({
113
- reactNativeHarmonyPackageName: '@react-native-oh/react-native-harmony',
114
- });
115
- const rnohResolveRequest = harmonyConfig.resolver?.resolveRequest;
116
-
117
- // 包装:先拦截 react,其余委托给 RNOH
118
- function wrappedResolveRequest(context, moduleName, platform) {
119
- if (SINGLETON_MODULES.has(moduleName)) {
120
- return {
121
- filePath: path.resolve(exampleNodeModules, moduleName, 'index.js'),
122
- type: 'sourceFile',
123
- };
124
- }
125
- if (rnohResolveRequest) {
126
- return rnohResolveRequest(context, moduleName, platform);
127
- }
128
- return context.resolveRequest(context, moduleName, platform);
129
- }
130
-
131
- const config = {
132
- watchFolders: [libraryRoot],
133
- resolver: {
134
- nodeModulesPaths: [
135
- exampleNodeModules,
136
- path.resolve(libraryRoot, 'node_modules'),
137
- ],
138
- resolveRequest: wrappedResolveRequest,
139
- },
140
- transformer: {
141
- getTransformOptions: async () => ({
142
- transform: {
143
- experimentalImportSupport: false,
144
- inlineRequires: true,
145
- },
146
- }),
147
- },
148
- };
149
-
150
- module.exports = mergeConfig(
151
- getDefaultConfig(__dirname),
152
- harmonyConfig,
153
- config,
154
- );
155
- ```
156
-
157
- #### 关键约束
158
-
159
- 1. **不能直接设置 `resolveRequest` 覆盖 RNOH**:`mergeConfig` 按从左到右应用,后面的 config 的 `resolveRequest` 会完全覆盖前面的。RNOH 的 `createHarmonyMetroConfig` 提供了自己的 `resolveRequest`,处理 `.harmony.js` 平台文件解析、`react-native` → `@react-native-oh/react-native-harmony` 重定向等。如果直接覆盖,harmony 平台构建会失败。
160
-
161
- 2. **不要拦截 `react-native`**:RNOH 的 resolver 会将 `react-native` 重定向到 `@react-native-oh/react-native-harmony`。如果也拦截 `react-native`,会破坏这个重定向。只需拦截 `react`(裸导入)。
162
-
163
- 3. **必须先获取 RNOH 的 resolveRequest 引用,再在 config 中包装**:通过 `harmonyConfig.resolver?.resolveRequest` 提取引用,在 `wrappedResolveRequest` 中调用它。
164
-
165
- #### 验证
166
-
167
- ```bash
168
- npx react-native bundle --platform harmony --dev true \
169
- --entry-file index.js --bundle-output /tmp/test-bundle-dev.js
170
-
171
- grep -oE '(node_modules|\.\./node_modules)/react/index\.js' /tmp/test-bundle-dev.js | sort | uniq -c
172
- ```
173
-
174
- 正确结果应只有 1 个:
175
-
176
- ```
177
- 1 node_modules/react/index.js
178
- ```
179
-
180
- ## 崩溃 3:白屏无渲染(加载旧 bundle)
181
-
182
- ### 症状
183
-
184
- 修复 metro.config.js 后 `npm run dev` 构建成功,但设备上仍然白屏或崩溃。Metro dev server 未运行时尤其明显。
185
-
186
- ### 根因
187
-
188
- 鸿蒙应用启动时按优先级尝试多个 bundle 来源(见 `Index.ets` 中的 `AnyJSBundleProvider`):
189
-
190
- 1. `MetroJSBundleProvider` — 从 Metro dev server 加载(需要 Metro 运行中)
191
- 2. `FileJSBundleProvider('/data/storage/el2/base/files/bundle.harmony.js')` — 从设备文件加载
192
- 3. `ResourceJSBundleProvider('hermes_bundle.hbc')` — 从编译好的 Hermes 字节码加载
193
- 4. `ResourceJSBundleProvider('bundle.harmony.js')` — 从 rawfile 资源加载
194
-
195
- 如果 Metro 未运行,且 HAP 未重新构建,设备会加载**编译进 HAP 的旧 `rawfile/bundle.harmony.js`**(包含修复前的重复 React 实例)。
196
-
197
- ### 诊断方法
198
-
199
- ```bash
200
- # 检查 rawfile 中的 bundle 是否有重复 React
201
- grep -oE '(node_modules|\.\./node_modules)/react/index\.js' \
202
- harmony/entry/src/main/resources/rawfile/bundle.harmony.js | sort | uniq -c
203
- ```
204
-
205
- 如果输出两个路径,说明 rawfile 中是旧 bundle。
206
-
207
- ### 解决方案
208
-
209
- 重新构建 bundle 并重新部署 HAP:
210
-
211
- ```bash
212
- # 1. 重新构建 bundle(会更新 harmony/entry/src/main/resources/rawfile/bundle.harmony.js)
213
- npm run dev
214
-
215
- # 2. 在 DevEco Studio 中 Build → Run,重新编译 HAP 并安装到设备
216
- ```
217
-
218
- **注意**:`npm run dev` 只更新源文件目录中的 `bundle.harmony.js`,DevEco Studio 构建时才会将其打包进 HAP。仅执行 `npm run dev` 不重新构建 HAP 是不够的。
219
-
220
- #### 快速验证(不重新构建 HAP)
221
-
222
- 启动 Metro dev server,让设备实时加载最新 bundle:
223
-
224
- ```bash
225
- # 设置端口转发
226
- hdc fport tcp:8081 tcp:8081
227
-
228
- # 启动 Metro(会自动执行 hdc rport)
229
- npm run start
230
- ```
231
-
232
- 在设备上重新打开应用,Metro 会提供最新的 bundle。如果应用正常渲染,说明问题已解决,接下来只需重新构建 HAP 即可。
233
-
234
- ## 崩溃 4:Jest 单元测试中的 React 多副本
235
-
236
- ### 症状
237
-
238
- Jest 测试中调用 hooks 时崩溃:`Cannot read properties of null (reading 'useRef')` 或 `reading 'useState'`。
239
-
240
- ### 根因
241
-
242
- 与崩溃 2 相同的根因——库根目录和 example 目录各有一份 `node_modules/react`。但 Jest 环境下的解决方式不同。
243
-
244
- ### 解决方案
245
-
246
- 在 `jest.config.js` 的 `moduleNameMapper` 中强制统一 React 路径:
247
-
248
- ```javascript
249
- moduleNameMapper: {
250
- '^react-native$': '<rootDir>/__mocks__/react-native.js',
251
- '^react$': '<rootDir>/node_modules/react/index.js',
252
- '^react/jsx-runtime$': '<rootDir>/node_modules/react/jsx-runtime.js',
253
- },
254
- ```
255
-
256
- 详见 [jest-troubleshooting.md](jest-troubleshooting.md) 问题 1。
257
-
258
- ## 崩溃 5:HAP 安装失败 — no signature file
259
-
260
- ### 症状
261
-
262
- `hdc install entry-default-unsigned.hap` 返回错误:
263
-
264
- ```text
265
- error: failed to install bundle. code:9568320 error: no signature file.
266
- ```
267
-
268
- ### 根因
269
-
270
- 工程的 `build-profile.json5` 中 `signingConfigs` 为空数组 `[]` 或缺失。hvigor 构建时跳过签名步骤,生成 unsigned HAP,设备拒绝安装。
271
-
272
- ### 解决方案
273
-
274
- **不要自行创建签名文件**。从平台统一签名配置文件读取并合并:
275
-
276
- **签名配置文件**:`3rdLibraryLoop/Server/` 目录下的 `.signing` 文件(相对于本 SKILL 的 references 目录为 `../../../.signing`)
277
-
278
- ```bash
279
- # 1. 读取签名配置(路径相对于 Server 目录)
280
- cat ../../.signing
281
-
282
- # 2. 将 signingConfigs 数组合并到工程的 build-profile.json5
283
- # 将 .signing 文件中的 "signingConfigs" 数组内容
284
- # 写入 build-profile.json5 的 "app.signingConfigs" 字段
285
- # 确保 products[0].signingConfig = "default" 引用名称匹配
286
-
287
- # 3. 确认签名材料文件存在(路径来自 .signing 文件中的 certpath/profile/storeFile)
288
- ls -la $HOME/.ohos/config/*.cer $HOME/.ohos/config/*.p7b $HOME/.ohos/config/*.p12
289
-
290
- # 4. 清理并使用 devecocli 重新构建
291
- cd <project>/example/harmony
292
- devecocli build clean
293
- devecocli build --modules entry@default --build-mode debug
294
-
295
- # 5. 安装到设备
296
- hdc install <project>/example/harmony/entry/build/default/outputs/default/entry-default-unsigned.hap
297
- ```
298
-
299
- **合并后的 build-profile.json5 示例**:
300
-
301
- ```json5
302
- {
303
- "app": {
304
- "products": [
305
- {
306
- "name": 'default',
307
- "signingConfig": 'default', // 引用下面的 signingConfigs 名称
308
- "compatibleSdkVersion": '5.0.0(12)',
309
- "runtimeOS": 'HarmonyOS'
310
- }
311
- ],
312
- "signingConfigs": [
313
- {
314
- "name": "default",
315
- "type": "HarmonyOS",
316
- "material": {
317
- "certpath": "$HOME/.ohos/config/xxx.cer",
318
- "keyAlias": "debugKey",
319
- "keyPassword": "xxx",
320
- "profile": "$HOME/.ohos/config/xxx.p7b",
321
- "signAlg": "SHA256withECDSA",
322
- "storeFile": "$HOME/.ohos/config/xxx.p12",
323
- "storePassword": "xxx"
324
- }
325
- }
326
- ]
327
- },
328
- // ... modules 配置保持不变
329
- }
330
- ```
331
-
332
- ## 检查清单
333
-
334
- 修复运行时崩溃后,逐项确认:
335
-
336
- - [ ] `example/src/index.tsx` 有 `export default ExampleApp;`
337
- - [ ] `export default` 在 `AppRegistry.registerComponent` 之前
338
- - [ ] `app.json` 的 `name` 与 `Index.ets` 的 `appKey` 一致
339
- - [ ] `metro.config.js` 包装了 RNOH 的 `resolveRequest`(未直接覆盖)
340
- - [ ] dev bundle 中只有 1 个 `react/index.js` 路径
341
- - [ ] `npm run dev` 重新生成了 `rawfile/bundle.harmony.js`
342
- - [ ] `build-profile.json5` 的 `signingConfigs` 已从 `.signing` 文件合并(非空)
343
- - [ ] HAP 构建输出无 `Will skip sign` 警告
344
- - [ ] `hdc install` 成功安装 HAP 到设备
345
- - [ ] 设备上应用正常启动渲染,无崩溃
1
+ # 设备运行时崩溃排错指南
2
+
3
+ RN 0.84 + React 19 + RNOH 0.84 环境下,测试 demo 移植到鸿蒙设备后遇到的运行时崩溃及解决方案。
4
+
5
+ 本文档基于 rntpc_react-native-netinfo 库的实战调试经验整理。
6
+
7
+ ## 崩溃 1:Element type is invalid: got: object
8
+
9
+ ### 症状
10
+
11
+ 应用启动即崩溃,错误信息:`Element type is invalid: got: object`。
12
+
13
+ ### 根因
14
+
15
+ `example/src/index.tsx` 中定义了 `ExampleApp` 组件类,并在文件末尾调用 `AppRegistry.registerComponent('app_name', () => ExampleApp)`,但**缺少 `export default` 导出**。
16
+
17
+ `example/index.js` 中 `import App from './src/index'` 要求 `src/index.tsx` 有默认导出。缺少默认导出时,`App` 为 `undefined`,React 注册了一个 `undefined` 组件,运行时报 "Element type is invalid"。
18
+
19
+ ### 诊断方法
20
+
21
+ ```bash
22
+ # 检查 index.tsx 是否有 export default
23
+ grep "export default" example/src/index.tsx
24
+ ```
25
+
26
+ 如果没有输出,即为问题所在。
27
+
28
+ ### 解决方案
29
+
30
+ 在 `AppRegistry.registerComponent` **之前**添加默认导出:
31
+
32
+ ```typescript
33
+ // example/src/index.tsx 末尾
34
+
35
+ export default ExampleApp;
36
+
37
+ AppRegistry.registerComponent('app_name', () => ExampleApp);
38
+ ```
39
+
40
+ **注意**:`app_name` 必须与 `app.json` 中的 `"name"` 字段一致,且与 `Index.ets` 中 `RNApp` 的 `appKey` 一致。
41
+
42
+ ## 崩溃 2:Cannot read property 'useState' of null
43
+
44
+ ### 症状
45
+
46
+ 应用启动后白屏或崩溃,错误信息:`Cannot read property 'useState' of null`。调用栈指向调用了 `useState()` 的组件(如 NetInfoHook 中的 `useNetInfo()`)。
47
+
48
+ ### 根因
49
+
50
+ Metro bundler 为 `react` 创建了**两个模块实例**:
51
+
52
+ ```
53
+ 模块 ID 49: node_modules/react/index.js ← example 代码使用
54
+ 模块 ID 640: ../node_modules/react/index.js ← 库代码使用
55
+ ```
56
+
57
+ 两个 React 实例导致 `ReactSharedInternals.H`(hooks dispatcher)不一致:
58
+ - 渲染器在实例 A 上设置 dispatcher
59
+ - 组件在实例 B 上调用 `useState()`
60
+ - 实例 B 的 `H` 为 null → 崩溃
61
+
62
+ #### 为什么会有两个 react
63
+
64
+ 库通过 `"file:.."` 安装(symlink 到父目录),目录结构:
65
+
66
+ ```
67
+ rntpc_react-native-netinfo/ ← 库根目录
68
+ ├── node_modules/react/ ← React 副本 A
69
+ ├── src/index.ts ← import {useState} from 'react' → 解析到副本 A
70
+ └── example/ ← 测试工程
71
+ ├── node_modules/react/ ← React 副本 B
72
+ └── src/index.tsx ← import * as React from 'react' → 解析到副本 B
73
+ ```
74
+
75
+ Metro 的 `nodeModulesPaths` 包含了两个目录,对不同的导入上下文解析到不同的 `react` 路径。
76
+
77
+ ### 诊断方法
78
+
79
+ 构建 dev bundle 并检查 React 模块路径:
80
+
81
+ ```bash
82
+ npx react-native bundle --platform harmony --dev true \
83
+ --entry-file index.js --bundle-output /tmp/test-bundle-dev.js
84
+
85
+ grep -oE '(node_modules|\.\./node_modules)/react/index\.js' /tmp/test-bundle-dev.js | sort | uniq -c
86
+ ```
87
+
88
+ 如果输出包含两个不同路径,即为多副本问题:
89
+
90
+ ```
91
+ 1 node_modules/react/index.js ← example 的
92
+ 1 ../node_modules/react/index.js ← 库根目录的
93
+ ```
94
+
95
+ ### 解决方案
96
+
97
+ 在 `metro.config.js` 中**包装** RNOH 的 `resolveRequest`,拦截裸 `react` 导入:
98
+
99
+ ```javascript
100
+ const path = require('path');
101
+ const {mergeConfig, getDefaultConfig} = require('@react-native/metro-config');
102
+ const {createHarmonyMetroConfig} = require('@react-native-oh/react-native-harmony/metro.config');
103
+
104
+ const projectRoot = __dirname;
105
+ const libraryRoot = path.resolve(projectRoot, '..');
106
+ const exampleNodeModules = path.resolve(projectRoot, 'node_modules');
107
+
108
+ // 只拦截裸 'react' 导入,强制解析到 example 的 node_modules
109
+ const SINGLETON_MODULES = new Set(['react']);
110
+
111
+ // 先获取 RNOH 的 resolveRequest
112
+ const harmonyConfig = createHarmonyMetroConfig({
113
+ reactNativeHarmonyPackageName: '@react-native-oh/react-native-harmony',
114
+ });
115
+ const rnohResolveRequest = harmonyConfig.resolver?.resolveRequest;
116
+
117
+ // 包装:先拦截 react,其余委托给 RNOH
118
+ function wrappedResolveRequest(context, moduleName, platform) {
119
+ if (SINGLETON_MODULES.has(moduleName)) {
120
+ return {
121
+ filePath: path.resolve(exampleNodeModules, moduleName, 'index.js'),
122
+ type: 'sourceFile',
123
+ };
124
+ }
125
+ if (rnohResolveRequest) {
126
+ return rnohResolveRequest(context, moduleName, platform);
127
+ }
128
+ return context.resolveRequest(context, moduleName, platform);
129
+ }
130
+
131
+ const config = {
132
+ watchFolders: [libraryRoot],
133
+ resolver: {
134
+ nodeModulesPaths: [
135
+ exampleNodeModules,
136
+ path.resolve(libraryRoot, 'node_modules'),
137
+ ],
138
+ resolveRequest: wrappedResolveRequest,
139
+ },
140
+ transformer: {
141
+ getTransformOptions: async () => ({
142
+ transform: {
143
+ experimentalImportSupport: false,
144
+ inlineRequires: true,
145
+ },
146
+ }),
147
+ },
148
+ };
149
+
150
+ module.exports = mergeConfig(
151
+ getDefaultConfig(__dirname),
152
+ harmonyConfig,
153
+ config,
154
+ );
155
+ ```
156
+
157
+ #### 关键约束
158
+
159
+ 1. **不能直接设置 `resolveRequest` 覆盖 RNOH**:`mergeConfig` 按从左到右应用,后面的 config 的 `resolveRequest` 会完全覆盖前面的。RNOH 的 `createHarmonyMetroConfig` 提供了自己的 `resolveRequest`,处理 `.harmony.js` 平台文件解析、`react-native` → `@react-native-oh/react-native-harmony` 重定向等。如果直接覆盖,harmony 平台构建会失败。
160
+
161
+ 2. **不要拦截 `react-native`**:RNOH 的 resolver 会将 `react-native` 重定向到 `@react-native-oh/react-native-harmony`。如果也拦截 `react-native`,会破坏这个重定向。只需拦截 `react`(裸导入)。
162
+
163
+ 3. **必须先获取 RNOH 的 resolveRequest 引用,再在 config 中包装**:通过 `harmonyConfig.resolver?.resolveRequest` 提取引用,在 `wrappedResolveRequest` 中调用它。
164
+
165
+ #### 验证
166
+
167
+ ```bash
168
+ npx react-native bundle --platform harmony --dev true \
169
+ --entry-file index.js --bundle-output /tmp/test-bundle-dev.js
170
+
171
+ grep -oE '(node_modules|\.\./node_modules)/react/index\.js' /tmp/test-bundle-dev.js | sort | uniq -c
172
+ ```
173
+
174
+ 正确结果应只有 1 个:
175
+
176
+ ```
177
+ 1 node_modules/react/index.js
178
+ ```
179
+
180
+ ## 崩溃 3:白屏无渲染(加载旧 bundle)
181
+
182
+ ### 症状
183
+
184
+ 修复 metro.config.js 后 `npm run dev` 构建成功,但设备上仍然白屏或崩溃。Metro dev server 未运行时尤其明显。
185
+
186
+ ### 根因
187
+
188
+ 鸿蒙应用启动时按优先级尝试多个 bundle 来源(见 `Index.ets` 中的 `AnyJSBundleProvider`):
189
+
190
+ 1. `MetroJSBundleProvider` — 从 Metro dev server 加载(需要 Metro 运行中)
191
+ 2. `FileJSBundleProvider('/data/storage/el2/base/files/bundle.harmony.js')` — 从设备文件加载
192
+ 3. `ResourceJSBundleProvider('hermes_bundle.hbc')` — 从编译好的 Hermes 字节码加载
193
+ 4. `ResourceJSBundleProvider('bundle.harmony.js')` — 从 rawfile 资源加载
194
+
195
+ 如果 Metro 未运行,且 HAP 未重新构建,设备会加载**编译进 HAP 的旧 `rawfile/bundle.harmony.js`**(包含修复前的重复 React 实例)。
196
+
197
+ ### 诊断方法
198
+
199
+ ```bash
200
+ # 检查 rawfile 中的 bundle 是否有重复 React
201
+ grep -oE '(node_modules|\.\./node_modules)/react/index\.js' \
202
+ harmony/entry/src/main/resources/rawfile/bundle.harmony.js | sort | uniq -c
203
+ ```
204
+
205
+ 如果输出两个路径,说明 rawfile 中是旧 bundle。
206
+
207
+ ### 解决方案
208
+
209
+ 重新构建 bundle 并重新部署 HAP:
210
+
211
+ ```bash
212
+ # 1. 重新构建 bundle(会更新 harmony/entry/src/main/resources/rawfile/bundle.harmony.js)
213
+ npm run dev
214
+
215
+ # 2. 在 DevEco Studio 中 Build → Run,重新编译 HAP 并安装到设备
216
+ ```
217
+
218
+ **注意**:`npm run dev` 只更新源文件目录中的 `bundle.harmony.js`,DevEco Studio 构建时才会将其打包进 HAP。仅执行 `npm run dev` 不重新构建 HAP 是不够的。
219
+
220
+ #### 快速验证(不重新构建 HAP)
221
+
222
+ 启动 Metro dev server,让设备实时加载最新 bundle:
223
+
224
+ ```bash
225
+ # 设置端口转发
226
+ hdc fport tcp:8081 tcp:8081
227
+
228
+ # 启动 Metro(会自动执行 hdc rport)
229
+ npm run start
230
+ ```
231
+
232
+ 在设备上重新打开应用,Metro 会提供最新的 bundle。如果应用正常渲染,说明问题已解决,接下来只需重新构建 HAP 即可。
233
+
234
+ ## 崩溃 4:Jest 单元测试中的 React 多副本
235
+
236
+ ### 症状
237
+
238
+ Jest 测试中调用 hooks 时崩溃:`Cannot read properties of null (reading 'useRef')` 或 `reading 'useState'`。
239
+
240
+ ### 根因
241
+
242
+ 与崩溃 2 相同的根因——库根目录和 example 目录各有一份 `node_modules/react`。但 Jest 环境下的解决方式不同。
243
+
244
+ ### 解决方案
245
+
246
+ 在 `jest.config.js` 的 `moduleNameMapper` 中强制统一 React 路径:
247
+
248
+ ```javascript
249
+ moduleNameMapper: {
250
+ '^react-native$': '<rootDir>/__mocks__/react-native.js',
251
+ '^react$': '<rootDir>/node_modules/react/index.js',
252
+ '^react/jsx-runtime$': '<rootDir>/node_modules/react/jsx-runtime.js',
253
+ },
254
+ ```
255
+
256
+ 详见 [jest-troubleshooting.md](jest-troubleshooting.md) 问题 1。
257
+
258
+ ## 崩溃 5:HAP 安装失败 — no signature file
259
+
260
+ ### 症状
261
+
262
+ `hdc install entry-default-unsigned.hap` 返回错误:
263
+
264
+ ```text
265
+ error: failed to install bundle. code:9568320 error: no signature file.
266
+ ```
267
+
268
+ ### 根因
269
+
270
+ 工程的 `build-profile.json5` 中 `signingConfigs` 为空数组 `[]` 或缺失。hvigor 构建时跳过签名步骤,生成 unsigned HAP,设备拒绝安装。
271
+
272
+ ### 解决方案
273
+
274
+ **不要自行创建签名文件**。从平台统一签名配置文件读取并合并:
275
+
276
+ **签名配置文件**:`3rdLibraryLoop/Server/` 目录下的 `.signing` 文件(相对于本 SKILL 的 references 目录为 `../../../.signing`)
277
+
278
+ ```bash
279
+ # 1. 读取签名配置(路径相对于 Server 目录)
280
+ cat ../../.signing
281
+
282
+ # 2. 将 signingConfigs 数组合并到工程的 build-profile.json5
283
+ # 将 .signing 文件中的 "signingConfigs" 数组内容
284
+ # 写入 build-profile.json5 的 "app.signingConfigs" 字段
285
+ # 确保 products[0].signingConfig = "default" 引用名称匹配
286
+
287
+ # 3. 确认签名材料文件存在(路径来自 .signing 文件中的 certpath/profile/storeFile)
288
+ ls -la $HOME/.ohos/config/*.cer $HOME/.ohos/config/*.p7b $HOME/.ohos/config/*.p12
289
+
290
+ # 4. 清理并使用 devecocli 重新构建
291
+ cd <project>/example/harmony
292
+ devecocli build clean
293
+ devecocli build --modules entry@default --build-mode debug
294
+
295
+ # 5. 安装到设备
296
+ hdc install <project>/example/harmony/entry/build/default/outputs/default/entry-default-unsigned.hap
297
+ ```
298
+
299
+ **合并后的 build-profile.json5 示例**:
300
+
301
+ ```json5
302
+ {
303
+ "app": {
304
+ "products": [
305
+ {
306
+ "name": 'default',
307
+ "signingConfig": 'default', // 引用下面的 signingConfigs 名称
308
+ "compatibleSdkVersion": '5.0.0(12)',
309
+ "runtimeOS": 'HarmonyOS'
310
+ }
311
+ ],
312
+ "signingConfigs": [
313
+ {
314
+ "name": "default",
315
+ "type": "HarmonyOS",
316
+ "material": {
317
+ "certpath": "$HOME/.ohos/config/xxx.cer",
318
+ "keyAlias": "debugKey",
319
+ "keyPassword": "xxx",
320
+ "profile": "$HOME/.ohos/config/xxx.p7b",
321
+ "signAlg": "SHA256withECDSA",
322
+ "storeFile": "$HOME/.ohos/config/xxx.p12",
323
+ "storePassword": "xxx"
324
+ }
325
+ }
326
+ ]
327
+ },
328
+ // ... modules 配置保持不变
329
+ }
330
+ ```
331
+
332
+ ## 检查清单
333
+
334
+ 修复运行时崩溃后,逐项确认:
335
+
336
+ - [ ] `example/src/index.tsx` 有 `export default ExampleApp;`
337
+ - [ ] `export default` 在 `AppRegistry.registerComponent` 之前
338
+ - [ ] `app.json` 的 `name` 与 `Index.ets` 的 `appKey` 一致
339
+ - [ ] `metro.config.js` 包装了 RNOH 的 `resolveRequest`(未直接覆盖)
340
+ - [ ] dev bundle 中只有 1 个 `react/index.js` 路径
341
+ - [ ] `npm run dev` 重新生成了 `rawfile/bundle.harmony.js`
342
+ - [ ] `build-profile.json5` 的 `signingConfigs` 已从 `.signing` 文件合并(非空)
343
+ - [ ] HAP 构建输出无 `Will skip sign` 警告
344
+ - [ ] `hdc install` 成功安装 HAP 到设备
345
+ - [ ] 设备上应用正常启动渲染,无崩溃