@ohos-cpf/3rdloop 0.0.1
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 +425 -0
- package/bin/3rdloop.mjs +48 -0
- package/lib/cli.js +741 -0
- package/lib/config.js +318 -0
- package/lib/doctor.js +114 -0
- package/lib/exit-codes.js +31 -0
- package/lib/opencode.js +156 -0
- package/lib/orch.js +427 -0
- package/lib/queries.js +264 -0
- package/lib/runner.js +979 -0
- package/lib/step.js +326 -0
- package/lib/ui.js +223 -0
- package/lib/workflow.js +291 -0
- package/lib/workflows.js +132 -0
- package/package.json +50 -0
- package/vendor/Server/Agent/SkillSelector/README.md +344 -0
- package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -0
- package/vendor/Server/Agent/SkillSelector/index.js +14 -0
- package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -0
- package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -0
- package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -0
- package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -0
- package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -0
- package/vendor/Server/Agent/SkillSelector/types.js +63 -0
- package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +60 -0
- package/vendor/Server/Brain/AnalysisStrategies.js +422 -0
- package/vendor/Server/Brain/Brain.js +686 -0
- package/vendor/Server/Brain/DecompositionStrategies.js +621 -0
- package/vendor/Server/Brain/PlanPersistence.js +196 -0
- package/vendor/Server/Brain/SkillExecutor.js +251 -0
- package/vendor/Server/Brain/index.js +11 -0
- package/vendor/Server/CLI/cli.js +243 -0
- package/vendor/Server/CLI/opencode/index.js +804 -0
- package/vendor/Server/CLI/opencode.js +5 -0
- package/vendor/Server/DbUse/MessageArchive.js +61 -0
- package/vendor/Server/DbUse/StorageManager.js +107 -0
- package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -0
- package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -0
- package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -0
- package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -0
- package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -0
- package/vendor/Server/DbUse/index.js +160 -0
- package/vendor/Server/DbUse/stores/SessionStore.js +279 -0
- package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -0
- package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -0
- package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -0
- package/vendor/Server/FlexRunner/FlexRunner.js +1759 -0
- package/vendor/Server/FlexRunner/index.js +12 -0
- package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -0
- package/vendor/Server/Knowledge/KnowledgeManager.js +341 -0
- package/vendor/Server/Knowledge/index.js +33 -0
- package/vendor/Server/LoopEngine/LoopEngine.js +1133 -0
- package/vendor/Server/LoopEngine/index.js +11 -0
- package/vendor/Server/Orchestrator/Orchestrator.js +1425 -0
- package/vendor/Server/Orchestrator/StepNode.js +312 -0
- package/vendor/Server/Orchestrator/index.js +13 -0
- package/vendor/Server/Routes/controllers/BrainController.js +241 -0
- package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -0
- package/vendor/Server/Routes/controllers/HealthController.js +44 -0
- package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -0
- package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -0
- package/vendor/Server/Routes/controllers/OrchestratorController.js +911 -0
- package/vendor/Server/Routes/controllers/StatsController.js +57 -0
- package/vendor/Server/Routes/controllers/StreamController.js +67 -0
- package/vendor/Server/Routes/library/logger.js +179 -0
- package/vendor/Server/Routes/library/zipArchive.js +172 -0
- package/vendor/Server/Routes/router/Router.js +204 -0
- package/vendor/Server/Routes/routes/brain.js +47 -0
- package/vendor/Server/Routes/routes/flexrunner.js +72 -0
- package/vendor/Server/Routes/routes/health.js +28 -0
- package/vendor/Server/Routes/routes/index.js +57 -0
- package/vendor/Server/Routes/routes/knowledge.js +55 -0
- package/vendor/Server/Routes/routes/loopengine.js +58 -0
- package/vendor/Server/Routes/routes/orchestrator.js +61 -0
- package/vendor/Server/Routes/routes/registry.js +98 -0
- package/vendor/Server/Routes/routes/stats.js +23 -0
- package/vendor/Server/Routes/routes/stream.js +30 -0
- package/vendor/Server/Routes/server.js +202 -0
- package/vendor/Server/Routes/sse/SseHub.js +308 -0
- package/vendor/Server/Skills/acceptance-check/SKILL.md +174 -0
- package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -0
- package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -0
- package/vendor/Server/Skills/arkts-code-check/SKILL.md +314 -0
- package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +160 -0
- package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +29 -0
- package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +222 -0
- package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +220 -0
- package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +329 -0
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -0
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +433 -0
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -0
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +789 -0
- package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -0
- package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -0
- package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -0
- package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -0
- package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -0
- package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +99 -0
- package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -0
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -0
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +433 -0
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -0
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +789 -0
- package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -0
- package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -0
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -0
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -0
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +234 -0
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +103 -0
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -0
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -0
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +108 -0
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -0
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -0
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -0
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -0
- package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -0
- package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +392 -0
- package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -0
- package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +313 -0
- package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -0
- package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +166 -0
- package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +309 -0
- package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -0
- package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -0
- package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +361 -0
- package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +146 -0
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +253 -0
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +115 -0
- package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +263 -0
- package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -0
- package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -0
- package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -0
- package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -0
- package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +519 -0
- package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -0
- package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +93 -0
- package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -0
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -0
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +433 -0
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -0
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +789 -0
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -0
- package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +229 -0
- package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -0
- package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -0
- package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +576 -0
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +575 -0
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -0
- package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +491 -0
- package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -0
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -0
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +433 -0
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -0
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +789 -0
- package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -0
- package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +312 -0
- package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -0
- package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +134 -0
- package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -0
- package/vendor/Server/Skills/flutter-interface/README.md +75 -0
- package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -0
- package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -0
- package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -0
- package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -0
- package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -0
- package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +518 -0
- package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +382 -0
- package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +342 -0
- package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -0
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +519 -0
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +407 -0
- package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +653 -0
- package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +397 -0
- package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +745 -0
- package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +721 -0
- package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -0
- package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -0
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -0
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -0
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -0
- package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -0
- package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -0
- package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -0
- package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -0
- package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +301 -0
- package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +105 -0
- package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +127 -0
- package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +208 -0
- package/vendor/Server/Skills/rn-code-check/SKILL.md +321 -0
- package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +235 -0
- package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +189 -0
- package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +247 -0
- package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -0
- package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -0
- package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -0
- package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -0
- package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -0
- package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -0
- package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -0
- package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -0
- package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -0
- package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -0
- package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -0
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -0
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -0
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -0
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -0
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -0
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -0
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -0
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -0
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -0
- package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -0
- package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -0
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -0
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -0
- package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -0
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -0
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +684 -0
- package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -0
- package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -0
- package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -0
- package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -0
- package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -0
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -0
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -0
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -0
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -0
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -0
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -0
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -0
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -0
- package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -0
- package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -0
- package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -0
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -0
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -0
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -0
- package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -0
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -0
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -0
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -0
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -0
- package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -0
- package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -0
- package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -0
- package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +58 -0
- package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -0
- package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -0
- package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +75 -0
- package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -0
- package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +339 -0
- package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +83 -0
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +859 -0
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +122 -0
- package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +279 -0
- package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -0
- package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -0
- package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -0
- package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -0
- package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -0
- package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +506 -0
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +280 -0
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -0
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +209 -0
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -0
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -0
- package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -0
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -0
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -0
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -0
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -0
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -0
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -0
- package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -0
- package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -0
- package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -0
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -0
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -0
- package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -0
- package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -0
- package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -0
- package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -0
- package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +498 -0
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -0
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -0
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -0
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -0
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -0
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -0
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -0
- package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -0
- package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -0
- package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -0
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -0
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -0
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -0
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -0
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -0
- package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -0
- package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -0
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -0
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -0
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -0
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -0
- package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -0
- package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -0
- package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -0
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -0
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -0
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -0
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -0
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -0
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -0
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -0
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -0
- package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -0
- package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -0
- package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -0
- package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -0
- package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -0
- package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -0
- package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +255 -0
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +77 -0
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -0
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +174 -0
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -0
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -0
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -0
- package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +137 -0
- package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -0
- package/vendor/Server/Skills/skill-generator/SKILL.md +365 -0
- package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -0
- package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -0
- package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -0
- package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -0
- package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -0
- package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -0
- package/vendor/Server/Skills/task-analysis/SKILL.md +234 -0
- package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -0
- package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -0
- package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -0
- package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -0
- package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -0
- package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -0
- package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -0
- package/vendor/Server/Skills/task-decomposition/SKILL.md +529 -0
- package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -0
- package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -0
- package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -0
- package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -0
- package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -0
- package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -0
- package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -0
- package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -0
- package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -0
- package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -0
- package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -0
- package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +425 -0
- package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -0
- package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -0
- package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -0
- package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -0
- package/vendor/Server/TestCheck/TestCheck.js +775 -0
- package/vendor/Server/TestCheck/index.js +11 -0
- package/vendor/Server/library/McpToolGuide.js +280 -0
- package/vendor/Server/library/StatsService.js +127 -0
- package/vendor/Server/library/cstTime.js +16 -0
- package/vendor/Server/package.json +17 -0
- package/vendor/VERSION +3 -0
- package/workflows/pr-check.mjs +106 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: arkts-library-demo-code
|
|
3
|
+
description: 基于 Demo 场景文档(由 ArkTsLibraryDemoScenarioSkill 生成)生成可在 OpenHarmony/HarmonyOS 上编译运行的 ArkTS 测试 Demo 页面代码。页面统一平铺在 pages/ 目录({三位序号}_{PascalCase}Page.ets,多文档全局连续编号),由 DemoIndex 主页面统一导航,同步生成 base/zh_CN/en_US 三语字符串资源;接口签名逐个对照库源码与系统 API 文档查证,生成后执行工程迁移、Code Linter 与编译验证(5 轮修复 + ohpm 线上版本兜底)。当需要将 Demo 场景描述文档转化为可编译运行的鸿蒙 ArkTS Demo 代码时使用。
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
compatibility: 需要 Node.js、devecocli(docs/lint/build)、hdc(可选设备探测)、ohpm(可选兜底)、MCP Gateway 的 script_deveco_docs 工具(系统 API 查证);Windows 用 build.ps1 执行编译,macOS/Linux 用日志重定向等效命令
|
|
6
|
+
metadata:
|
|
7
|
+
author: lalhan
|
|
8
|
+
version: "1.2.0"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# 鸿蒙 ArkTS 原生库 Demo 代码生成
|
|
12
|
+
|
|
13
|
+
读取 Demo 场景文档,为每个 Demo 生成独立的 ArkTS 页面、统一的主导航页面与三语字符串资源,并通过迁移 → Linter → 编译验证闭环确保代码可在鸿蒙系统上编译运行。
|
|
14
|
+
|
|
15
|
+
> ⚠️ **核心约束(违反任一项视为任务失败)**:
|
|
16
|
+
> 1. **数量完整**:场景文档有 N 个 Demo → 必须生成 N 个页面,禁止合并、省略、跳过。
|
|
17
|
+
> 2. **不捏造接口**:只调用场景文档列出的接口;签名**以库源码为准**(逐接口 read_file 核对,场景文档签名可能过时)。
|
|
18
|
+
> 3. **命名与结构**:`{三位序号}_{PascalCase}Page.ets` 平铺于 `pages/`(严禁子目录);多文档全局连续编号。
|
|
19
|
+
> 4. **国际化**:UI 静态文本一律 `$r('app.string.xxx')`,base/zh_CN/en_US 三文件同步;`DemoEntry.title/description` 用 `Resource` 类型。
|
|
20
|
+
> 5. **@Builder 禁动态数据**:`@Builder` 参数按值快照,ArkUI 会跳过重渲染;动态 `@State` 节点必须内联在 `build()` 中。
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 任务参数
|
|
25
|
+
|
|
26
|
+
| 参数 | 必需 | 说明 |
|
|
27
|
+
|------|------|------|
|
|
28
|
+
| `sourcePath` | ✅ | 目标鸿蒙工程根目录(含 `entry/` 和 `library/` 模块) |
|
|
29
|
+
| `outputDir` | ✅ | 输出目录(场景文档和覆盖率报告所在目录) |
|
|
30
|
+
| `scenarioDocPath` | 可选 | 单个场景文档路径;未提供则从 `outputDir` 搜索所有 `*未覆盖接口Demo场景*.md` |
|
|
31
|
+
| `interfaceSpecPath` | 可选 | 接口规格文档路径(查询依赖类型的完整定义);未提供则从 `outputDir` 搜索 `arktscoverage-interface-spec.md` |
|
|
32
|
+
|
|
33
|
+
## 输入依赖
|
|
34
|
+
|
|
35
|
+
- 前置 SKILL:`ArkTsLibraryDemoScenarioSkill`(生成 Demo 场景文档)
|
|
36
|
+
- 输入文件:Demo 场景文档(`*未覆盖接口Demo场景*.md`)、库源码(`sourcePath/library/`)
|
|
37
|
+
- 场景文档"对应函数接口"列自带签名;依赖类型细节(回调字段、枚举成员、interface/class 区分)以接口规格文档 + 库源码核对为准
|
|
38
|
+
|
|
39
|
+
## 工作流程概览
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
阶段零 准备(解析场景文档 → 探查工程 → 文件规划)
|
|
43
|
+
→ 阶段一 逐 Demo 生成页面 ETS + 三语字符串资源
|
|
44
|
+
→ 阶段二 生成 DemoIndex 主导航 + 路由注册 + 入口改造
|
|
45
|
+
→ 阶段三 权限与系统能力适配
|
|
46
|
+
→ 阶段四 工程迁移 → Code Linter → 编译验证(5 轮修复 + ohpm 兜底)→ 自查
|
|
47
|
+
→ 阶段五 输出报告
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 阶段零:准备工作
|
|
53
|
+
|
|
54
|
+
### 0.1 解析场景文档
|
|
55
|
+
|
|
56
|
+
- 确定 `scenarioDocPath`(或搜索 `outputDir` 下 `*未覆盖接口Demo场景*.md`);多文档按文件名(一)(二)… 排序后全部读取
|
|
57
|
+
- 提取库名称(用于代码中的 TAG 等标识符);逐行解析"测试 Demo 描述列表"表格:文档内序号 / 名称 / 描述 / 步骤 / 预期结果 / 对应函数接口
|
|
58
|
+
- **跨文档全局编号**:按文档输入顺序连续递增(文档 A 5 个 → 001–005,文档 B 3 个 → 006–008),禁止各文档独立从 001 开始
|
|
59
|
+
- 解析"接口覆盖矩阵";统计 Demo 总数,规划生成文件列表(DemoIndex + N 个页面 + 3 个 string.json)
|
|
60
|
+
|
|
61
|
+
**错误处理**:缺必需字段的 Demo 跳过并在最终报告标注;文档缺"测试 Demo 描述列表"表格则立即停止并报告格式问题;接口签名缺失则标记"需手动验证接口",代码用占位注释提醒。
|
|
62
|
+
|
|
63
|
+
### 0.2 探查工程结构与类型词典
|
|
64
|
+
|
|
65
|
+
- 识别 entry/、library/ 模块;读取 `entry/src/main/ets/` 目录结构、`main_pages.json`(路由)、`module.json5`(已声明权限)、一个现有页面 ETS(代码风格与导入惯例)、zh_CN/en_US `string.json`(已有键名,避免冲突)
|
|
66
|
+
- 运行 `devecocli --version` 确认 CLI 可用
|
|
67
|
+
- **UI 组件装饰器预检**:读 `library/Index.ets` 导出的 `@Component` 源码,搜索 `@ObjectLink`/`@Prop`/`@Link`,确认关联类带 `@Observed` 装饰器(接口规格文档第 5 章如有兼容性表可直接对照);标注不兼容组件,场景规划时排除
|
|
68
|
+
- **建立依赖类型词典**(来源:`interfaceSpecPath` / `arktscoverage-interface-spec.md` + 库源码):
|
|
69
|
+
- 每个接口/类的**类型种类**:`(interface)` 不可 new / `(class)` 可 new / `@ObservedV2` 不可用于 `@State`
|
|
70
|
+
- 每个回调接口的**完整字段签名**(如 `OnLoadCallBack.onLoadFailed: (err: string, imageInfo: ImageInfo) => void`)
|
|
71
|
+
- 每个类的**属性名列表**(代码中只能使用列表内的属性名)
|
|
72
|
+
|
|
73
|
+
### 0.3 文件规划
|
|
74
|
+
|
|
75
|
+
建立内部规划表:`DemoIndex.ets` + N 个 `{序号}_{PascalCase}Page.ets`(全部平铺 `pages/`)+ base/zh_CN/en_US 三个 `string.json`。
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 阶段一:生成各 Demo 页面代码
|
|
80
|
+
|
|
81
|
+
### 1.1 文件命名
|
|
82
|
+
|
|
83
|
+
格式 `{三位序号}_{PascalCase功能描述}Page.ets`,如 `001_CheckSupportAndConfigPage.ets`、`010_PictureMetaPage.ets`。序号三位补零保证文件排序与 Demo 顺序一致;`main_pages.json` 路由与 `router.pushUrl` URL 均使用 `pages/001_XxxPage`(无子目录)。详见 [CODE_STANDARDS.md](references/CODE_STANDARDS.md) 第 1 节。
|
|
84
|
+
|
|
85
|
+
### 1.2 分析权限需求
|
|
86
|
+
|
|
87
|
+
按优先级推断各 Demo 所需权限:
|
|
88
|
+
|
|
89
|
+
1. 场景文档"步骤/描述"中的权限关键词(网络、文件、相册、位置、蓝牙等)
|
|
90
|
+
2. `library/` 源码 import 与 API 调用(`http` → `ohos.permission.INTERNET`;`photoAccessHelper` → `READ_MEDIA`;sensor/蓝牙同理)
|
|
91
|
+
3. `module.json5` 已声明清单(避免重复声明)
|
|
92
|
+
|
|
93
|
+
区分系统自动授权权限(声明即可)与用户授权权限(须运行时动态申请)。常见权限速查见 [CODE_STANDARDS.md](references/CODE_STANDARDS.md) 第 6 节。
|
|
94
|
+
|
|
95
|
+
### 1.3 接口与系统 API 预检(强制,未完成禁止生成代码)
|
|
96
|
+
|
|
97
|
+
对当前 Demo 涉及的**每一个接口**执行核心检查:
|
|
98
|
+
|
|
99
|
+
| 检查项 | 要点 |
|
|
100
|
+
|-------|------|
|
|
101
|
+
| 签名核对 | read_file 库源码逐接口确认参数/返回类型,**以源码为准**(场景文档签名可能过时:string/boolean/数字差异、容器类型、rest 参数差异) |
|
|
102
|
+
| 类型种类 | `(interface)` 不可 `new`(用对象字面量);`(class)` 可 `new`;`@ObservedV2` 类不可用于 `@State`/`@Prop`/`@Link`,改用 `@Local`/`@Param` |
|
|
103
|
+
| 回调与属性 | 回调字段名与参数类型逐字匹配;只使用依赖类型词典列出的属性名 |
|
|
104
|
+
| undefined 守卫 | 返回 `\| undefined` 或 `?:` 的调用须 `if (result)` 判空再访问属性 |
|
|
105
|
+
| import 链 | 每个 `import { X }` 必须在 `library/Index.ets` 导出链中;未导出类型用对象字面量匹配结构,禁止 import;库源码也无定义则降级 `Record<string, Object>` 并标注 |
|
|
106
|
+
| 结构化类型 | 禁止 `new Uint8Array([..]).buffer` 赋值给 `ArrayBuffer`(`arkts-no-structural-typing`),改用 `new ArrayBuffer(n)` + 视图逐元素写入 |
|
|
107
|
+
|
|
108
|
+
完整检查表(含错误示例、场景文档差异四类专项核对)参见 [API_SIGNATURE_CHECKS.md](references/API_SIGNATURE_CHECKS.md) 第 1、2 节。
|
|
109
|
+
|
|
110
|
+
**系统 API 强制查证**:Demo 涉及的每个系统 API 依赖(`@kit.*` / `@ohos.*` / `@hms.*` 的方法签名、参数/返回值、枚举成员名、import 路径、权限、系统能力)必须调用 MCP 工具 `script_deveco_docs`(action=search → action=read)确认,**禁止凭记忆猜测**;**检索边界**:库自身 API 不在系统语料中,返回"未找到"时不检索、直接按接口规格文档/库源码编写。用法详见 [SYSTEM_API_LOOKUP.md](references/SYSTEM_API_LOOKUP.md)。
|
|
111
|
+
|
|
112
|
+
**import 类型链追踪**:代码中每个 import 的类型须验证存在于 `library/Index.ets` 导出链;回调签名中的衍生类型(如 `ImageInfo`)须在库源码中定位定义,未导出则用对象字面量匹配结构,禁止 import。详见 [API_SIGNATURE_CHECKS.md](references/API_SIGNATURE_CHECKS.md) 第 1 节 #8。
|
|
113
|
+
|
|
114
|
+
### 1.4 生成页面 ETS 代码
|
|
115
|
+
|
|
116
|
+
按 [TEMPLATE.md](references/TEMPLATE.md) 第 1/2 节标准模板生成(无权限版 / 含动态权限版),结构要点:
|
|
117
|
+
|
|
118
|
+
- 文件头 JSDoc(功能说明、对应接口);`DOMAIN`/`TAG` 日志常量(TAG 格式 `{LibraryName}_{ComponentName}`)
|
|
119
|
+
- `@State` 状态变量具体类型;`aboutToAppear` 初始化,`aboutToDisappear` 释放资源(库实例、订阅、Timer)
|
|
120
|
+
- 核心方法:入口 `hilog.debug`、成功节点 `hilog.info`、异常 `hilog.error`;异步调用必须 `try/catch/finally`(finally 重置 Loading)
|
|
121
|
+
|
|
122
|
+
质量检查表:
|
|
123
|
+
|
|
124
|
+
| 要求 | 标准 |
|
|
125
|
+
|------|------|
|
|
126
|
+
| 日志覆盖 | 方法/事件回调入口 debug,成功节点 info,捕获异常 error |
|
|
127
|
+
| 错误处理 | 异步全部 try/catch;同步失败在 UI 展示错误信息 |
|
|
128
|
+
| 资源释放 | `aboutToDisappear` 释放库实例、取消订阅、清理 Timer |
|
|
129
|
+
| 类型安全 | 禁止 `any`/`unknown`/`ESObject`/`Object` |
|
|
130
|
+
| 权限申请 | 用户授权权限使用前通过 `abilityAccessCtrl.requestPermissionsFromUser` 动态申请 |
|
|
131
|
+
| 注释完整性 | 组件级 JSDoc + 核心方法 JSDoc + 关键逻辑行内注释 |
|
|
132
|
+
| UI 完整性 | 标题、操作控件、Loading/Error 状态指示、结果展示区域 |
|
|
133
|
+
| **@Builder 禁动态数据** | 展示动态 `@State`(耗时、计数器、状态标志)的节点必须内联在 `build()` 中;`@Builder` 仅用于不依赖 `@State` 的静态布局复用(如 DemoCard 传入静态数据对象属合法用法) |
|
|
134
|
+
|
|
135
|
+
ArkTS 编码规范(禁止项速查、日志格式、错误处理模式、资源生命周期、UI 规范)详见 [CODE_STANDARDS.md](references/CODE_STANDARDS.md)。
|
|
136
|
+
|
|
137
|
+
### 1.5 生成多语言字符串资源
|
|
138
|
+
|
|
139
|
+
键名规则 `demo_{三位序号}_{语义描述}`(如 `demo_001_title`、`demo_001_check_btn`);每个 Demo 额外添加 `demo_NNN_index_desc` 键(主导航列表描述),主导航标题用 `demo_index_title`。
|
|
140
|
+
|
|
141
|
+
> 🔴 **三文件同步(强制)**:每个 `$r('app.string.xxx')` 键必须同时在 `base/element/string.json`(默认值,建议中文)、`zh_CN/element/string.json`(值用【序号】前缀)、`en_US/element/string.json`(值用 Title Case)添加同名条目。遗漏 base 会报 `Warning: the string of 'xxx' does not have a base resource.`。键名以序号前缀隔离避免冲突。
|
|
142
|
+
|
|
143
|
+
- 动态文本(运行时错误信息 `this.resultText` 等)不属于静态字符串,不需要资源键,代码中直接赋值
|
|
144
|
+
- `reason` 等资源引用同理必须走 `$string:xxx`
|
|
145
|
+
|
|
146
|
+
### 1.6 复杂 Demo 辅助生成
|
|
147
|
+
|
|
148
|
+
满足任一条件时调用 `ohos-library-feature-adder` 技能辅助生成:涉及 PixelMap/AVPlayer/Camera 等重型系统 API、需实现复杂异步状态机、涉及 C/C++ NDK 接口调用。提供工程路径 + 功能描述(从场景文档提取的步骤和接口),生成后须按本技能规范(命名、日志、注释)二次校验和修改。
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 阶段二:生成主页面导航
|
|
153
|
+
|
|
154
|
+
### 2.1 DemoIndex.ets
|
|
155
|
+
|
|
156
|
+
按 [TEMPLATE.md](references/TEMPLATE.md) 第 3 节模板生成。要点:
|
|
157
|
+
|
|
158
|
+
- `DemoEntry { id: string; title: Resource; description: Resource; route: string }`,title/description 用 `$r('app.string.demo_NNN_title')` / `$r('app.string.demo_NNN_index_desc')` 赋值,禁止硬编码字符串
|
|
159
|
+
- `DEMO_LIST` 覆盖全部 Demo(数量与场景文档一致),route 为 `pages/001_XxxPage`(带序号前缀、无子目录)
|
|
160
|
+
- 跳转使用 `this.getUIContext().getRouter().pushUrl({ url })`,`.catch` 记录 `hilog.error`
|
|
161
|
+
- 若工程已有原始库演示页面(如 `pages/Tab`,经 `pages/Index` 跳转),**必须**保留其入口:按 [TEMPLATE.md](references/TEMPLATE.md) 第 6 节 OriginalDemoCard 模板(橙色徽章与蓝色序号卡片视觉区分)追加,字符串键 `demo_original_title` / `demo_original_index_desc` 同样三文件同步
|
|
162
|
+
|
|
163
|
+
### 2.2 路由注册与入口改造
|
|
164
|
+
|
|
165
|
+
- `main_pages.json`:`pages/DemoIndex` 列首位,其余按序号顺序排列(模板见 TEMPLATE.md 第 4 节)
|
|
166
|
+
- **EntryAbility**:将 `entry/src/main/ets/entryability/EntryAbility.ts` 中 `onWindowStageCreate` 的 `loadContent` 路径改为 `pages/DemoIndex`。⚠️ 须在 DemoIndex 生成并注册路由**之后**执行,否则路由未注册导致运行时白屏
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 阶段三:权限与系统能力适配
|
|
171
|
+
|
|
172
|
+
- 汇总各 Demo 所需权限,更新 `module.json5` 的 `requestPermissions`(`reason` 必须引用 `$string:xxx` 资源并在 string.json 添加对应键;模板见 TEMPLATE.md 第 5 节)
|
|
173
|
+
- 用户授权权限在页面 `aboutToAppear` 中动态申请,标准代码模式见 [CODE_STANDARDS.md](references/CODE_STANDARDS.md) 第 6.2 节
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 阶段四:质量检查与编译验证
|
|
178
|
+
|
|
179
|
+
> 核心原则:**编译是验证生成代码质量的唯一方式**;源库问题也必须尝试修复(仅限机械性操作:SDK 版本、依赖、构建配置,不改业务逻辑)。详细操作手册(迁移校验细节、Linter 判定、源库错误修复表、ohpm 兜底全流程)参见 [BUILD_VALIDATION.md](references/BUILD_VALIDATION.md)。
|
|
180
|
+
|
|
181
|
+
### 4.1 工程迁移(migrate.cjs,必做不可跳过)
|
|
182
|
+
|
|
183
|
+
> 🔴 无论工程类型(OpenHarmony/HarmonyOS)、无论 `compileSdkVersion` 是否与已安装 SDK 匹配,都必须执行迁移——源工程 hvigor 文件、`oh-package.json5`、`runtimeOS`/`compatibleSdkVersion` 等配置仍可能不兼容当前构建环境。禁止自行判断跳过。
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# 有设备:先探测设备 API 版本(记录作为 --compatible-api)
|
|
187
|
+
hdc list targets
|
|
188
|
+
hdc shell param get const.ohos.apiversion
|
|
189
|
+
|
|
190
|
+
node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}} --compatible-api {deviceApi}
|
|
191
|
+
|
|
192
|
+
# 无设备(脚本自动探测已安装 SDK API 版本)
|
|
193
|
+
node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**执行后校验(未通过不得进入 4.2)**:输出以 `[migrate] 迁移完成。` 结尾;日志含 `[migrate] SDK版本: compatibleSdkVersion=...` 行;`build-profile.json5` 每个 product 的 `runtimeOS` 为 `HarmonyOS`;API 版本 ≤ 设备 API(有设备)或 = 已安装 SDK API(无设备)。任一项不满足 → 重新执行直至通过。
|
|
197
|
+
|
|
198
|
+
### 4.2 Code Linter 静态检查(编译前必做)
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
node {{skillDir}}/scripts/code-linter.cjs --source {{sourcePath}} --target entry/src/main/ets/pages
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
| 退出码 | 含义 | 处理 |
|
|
205
|
+
|-------|------|------|
|
|
206
|
+
| 0 | 0 Error | 进入 4.3 |
|
|
207
|
+
| 2 | 存在 Error | 逐条修复(生成代码错误按签名修正协议同源修复,见 API_SIGNATURE_CHECKS.md 第 3 节),重跑直至 0 Error,计入编译修复轮次 |
|
|
208
|
+
| 1 | 环境不可用(devecocli 不可用) | 标注"跳过",进入 4.3(编译同样依赖该环境,届时会暴露) |
|
|
209
|
+
|
|
210
|
+
Warning 不阻塞编译:`file-naming-convention`(数字前缀与大驼峰规则的固有冲突)属可接受项;`addTryCatch`/未使用变量等为 P2 优化项;`.ets` 的 any/unknown 由 ArkTS 编译器强制把关。
|
|
211
|
+
|
|
212
|
+
### 4.3 编译验证(5 轮修复循环)
|
|
213
|
+
|
|
214
|
+
> 🔴 必须通过 build.ps1 执行——直接调用 devecocli build 会因 hvigor daemon 继承 Agent 管道句柄导致 session 永久阻塞。
|
|
215
|
+
> macOS/Linux(无 PowerShell)等效替代:`devecocli build --modules entry > build.log 2>&1`(重定向到文件同样规避句柄继承,实测多轮无阻塞),错误从 build.log 读取。
|
|
216
|
+
|
|
217
|
+
```powershell
|
|
218
|
+
powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -Cmd "devecocli build clean"
|
|
219
|
+
powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -Cmd "devecocli build --modules entry"
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
编译通过 → 进入 4.4。失败则进入修复循环(最多 5 轮),每轮:
|
|
223
|
+
|
|
224
|
+
1. 逐条读取构建日志错误
|
|
225
|
+
2. **判断错误来源分级修复**:
|
|
226
|
+
- **生成代码错误**(文件在 `entry/src/main/ets/pages/0XX_*`、`DemoIndex.ets`):执行签名修正协议——按编译错误关键词对照 8 类修复表批量修正(见 [API_SIGNATURE_CHECKS.md](references/API_SIGNATURE_CHECKS.md) 第 3 节);同文件同类错误一次性批量替换
|
|
227
|
+
- **源库错误**(文件在 `library/`、源库原有 pages/、CMakeLists.txt、hvigorfile.ts、build-profile.json5):仅机械性修复(SDK 版本/依赖/构建配置,修复表见 BUILD_VALIDATION.md 第 3.3 节);业务逻辑错误不修复仅标注
|
|
228
|
+
3. 重新编译
|
|
229
|
+
|
|
230
|
+
**终止判定**:连续 2 轮错误均为源库不可修复错误 → 立即终止循环,标注原因后跳转 4.4。
|
|
231
|
+
|
|
232
|
+
**ohpm 线上版本兜底**(源库原生库 .so 需复杂构建导致编译失败时,触发条件与脚本行为详见 BUILD_VALIDATION.md 第 4 节):
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
node {{skillDir}}/scripts/ohpm-switch.cjs --source {{sourcePath}}
|
|
236
|
+
cd {{sourcePath}} && ohpm install
|
|
237
|
+
# 然后按上述方式重新编译
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
替换后**必须做版本降级 API 兼容核验**:对照 `library/index.ets` 导出链逐一确认生成代码 import 的类型/常量/枚举仍存在;缺失则换更接近版本重跑脚本,或降级为对象字面量并标注。改动保留不回滚,但在报告中如实记录(引用 `ohpm-switch-report.json`)。
|
|
241
|
+
|
|
242
|
+
**降级(5 轮仍失败 / 提前终止)**:编译验证标注"跳过",报告中分类列出未修复错误(需加入检查表 / 需源库作者修复 / 需 DevEco Studio 迁移工具升级项目结构);任务状态仍为"完成"(代码生成本身已完成)。
|
|
243
|
+
|
|
244
|
+
### 4.4 代码规范自查清单
|
|
245
|
+
|
|
246
|
+
| 检查项 | 标准 |
|
|
247
|
+
|-------|------|
|
|
248
|
+
| 文件命名 | `{三位序号}_{PascalCase}Page.ets`,平铺 `pages/` 无子目录,数量与场景文档一致 |
|
|
249
|
+
| 日志 | 每文件独立 TAG、工程统一 DOMAIN;方法入口/异常日志无遗漏 |
|
|
250
|
+
| 异步与资源 | 无裸 await(全部 try/catch);资源在 `aboutToDisappear` 释放 |
|
|
251
|
+
| 类型安全 | 无 any/ESObject/Object |
|
|
252
|
+
| 权限 | module.json5 声明 + 运行时动态申请齐全 |
|
|
253
|
+
| 国际化 | UI 文本全部 `$r()`;base/zh_CN/en_US 三文件键完全同步(含 `demo_NNN_index_desc`) |
|
|
254
|
+
| 主导航 | DEMO_LIST 数量一致;title/description 为 `Resource` 类型;main_pages.json 已注册全部路由;原始 Demo 入口已保留(如有) |
|
|
255
|
+
| 接口签名 | 全部对照库源码/规格文档验证,无猜测的属性名/回调参数/枚举成员(编译前快速兜底对照表见 [API_SIGNATURE_CHECKS.md](references/API_SIGNATURE_CHECKS.md)) |
|
|
256
|
+
|
|
257
|
+
### 4.5 功能验证点
|
|
258
|
+
|
|
259
|
+
按场景文档"预期结果",在代码中贴近产生该结果的代码行添加注释标记(规范见 CODE_STANDARDS.md 第 8 节):
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// ✅ 验证点 1: {从 Demo 预期结果提取的可观测指标}
|
|
263
|
+
// ✅ 验证点 2: {下一条预期结果}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## 阶段五:输出 Demo 代码生成报告
|
|
269
|
+
|
|
270
|
+
`write_file` 到 `{{outputDir}}/arkts-demo-code-report.md`,包含以下章节:
|
|
271
|
+
|
|
272
|
+
- **生成文件列表**:`DemoIndex.ets`(主导航)+ N 个 `{序号}_XxxPage.ets`(各 Demo 名称)
|
|
273
|
+
- **路由配置更新**:main_pages.json 新增 N 个路由(格式 `pages/{序号}_{PascalCaseName}Page`,无子目录)
|
|
274
|
+
- **字符串资源更新**:base / zh_CN / en_US 三个 string.json 新增键数量
|
|
275
|
+
- **权限变更**:module.json5 新增权限及用途说明
|
|
276
|
+
- **Code Linter 检查**:结果(通过 0 Error / 已修复 / 环境不可用跳过);引用 `{{sourcePath}}/code-linter-report.json`;需人工确认的 Warning(如 file-naming-convention)
|
|
277
|
+
- **编译验证**:通过 / ⚠️ 跳过(原因与修复建议)。若执行了 ohpm 替换,附加:源库原生编译失败原因、切换的 `{库包名}@{版本号}`、依赖改动记录(引用 `ohpm-switch-report.json`)、版本降级 API 兼容核验结论、base 资源同步检查结论
|
|
278
|
+
- **验证步骤**:DevEco Studio 打开工程运行到鸿蒙设备 → 主导航点击 [001] 验证 → 按各 Demo 页面内"验证点"注释检查功能
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## 参考资料
|
|
283
|
+
|
|
284
|
+
| 文档 | 内容 |
|
|
285
|
+
|------|------|
|
|
286
|
+
| [references/CODE_STANDARDS.md](references/CODE_STANDARDS.md) | 命名规则、ArkTS 禁止项、日志/错误处理/资源管理/权限/UI 规范速查 |
|
|
287
|
+
| [references/TEMPLATE.md](references/TEMPLATE.md) | Demo 页面、主导航、OriginalDemoCard、路由、权限声明代码模板 |
|
|
288
|
+
| [references/API_SIGNATURE_CHECKS.md](references/API_SIGNATURE_CHECKS.md) | 接口签名预检表、场景文档差异四类核对、编译错误签名修正协议 |
|
|
289
|
+
| [references/BUILD_VALIDATION.md](references/BUILD_VALIDATION.md) | 工程迁移、Code Linter、编译修复循环、ohpm 线上版本兜底操作手册 |
|
|
290
|
+
| [references/SYSTEM_API_LOOKUP.md](references/SYSTEM_API_LOOKUP.md) | 系统 API 检索工具 `script_deveco_docs` 使用指南 |
|
|
291
|
+
| [references/EXAMPLES.md](references/EXAMPLES.md) | ohos-blur-kit 完整生成示例(输入文档 → 页面代码 → 资源文件) |
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# 接口签名预检与修复对照表
|
|
2
|
+
|
|
3
|
+
> 本文档为 SKILL.md 1.3(生成前逐接口预检)与 4.3/4.4(编译期签名错误修复)的详细参考。
|
|
4
|
+
> 核心原则:**签名以库源码为准,禁止凭记忆或场景文档字面值编写**。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、生成前逐接口预检表
|
|
9
|
+
|
|
10
|
+
对当前 Demo 涉及的每一个接口,逐项检查并记录结论:
|
|
11
|
+
|
|
12
|
+
| # | 检查项 | 查询来源 | 错误示例 → 正确做法 |
|
|
13
|
+
|---|-------|---------|------------------|
|
|
14
|
+
| 1 | **类型种类** | 接口规格文档第 4 章 | `(interface)` 不可 `new`,用对象字面量 `{ ... }`;`(class)` 可 `new`;`@ObservedV2` 类不可用于 `@State`/`@Prop`/`@Link`(V1 装饰器),须改用 V2 装饰器 `@Local`/`@Param`/`@Provider`/`@Consumer`(如 `@State option: ImageKnifeOptionV2` ❌ → `@Local option: ImageKnifeOptionV2` ✅) |
|
|
15
|
+
| 2 | **签名 vs 场景报告一致性** | 场景文档「对应函数接口」列 + 库源码 `library/Index.ets` | 场景报告是规划层面描述,参数/返回类型可能与源码不一致(实测案例:`setLoopCount` 报告写传常量、源码实际收 `boolean`;`setCacheShare` 报告写 `boolean`、源码收 `string`;`seekTo` 报告写数字、源码收 `string`)。**每个接口必须 read_file 库源码确认参数类型与返回值,以源码签名为准** |
|
|
16
|
+
| 3 | **返回值守卫** | 接口规格文档签名 | 返回类型含 `\| undefined` 或 `?:` → 调用后必须 `if (result)` 判空再访问属性(`result.imageWidth` ❌ → `if (result) { result.imageWidth }` ✅) |
|
|
17
|
+
| 4 | **参数类型匹配** | 接口规格文档签名 | 参数声明为 `common.UIAbilityContext` → 传 `appContext as common.UIAbilityContext`,不可直接传 `common.Context` |
|
|
18
|
+
| 5 | **回调参数签名** | 接口规格文档第 4 章回调接口定义 | 回调的每个字段名和参数类型逐字匹配(`(errorInfo: ErrorInfo) => void` ❌ → `(err: string, imageInfo: ImageInfo) => void` ✅) |
|
|
19
|
+
| 6 | **属性名准确性** | 接口规格文档第 3 章属性列表 | 只能使用文档列出的属性名(`obj.transformationType` ❌ → `obj.type` ✅) |
|
|
20
|
+
| 7 | **组件名/类名准确性** | `library/Index.ets` 导出名 | 与导出名**逐字符一致**,禁止自行追加 "V2"/"New" 等后缀(`ImageKnifeComponentV2` ❌ → `ImageKnifeComponent` ✅) |
|
|
21
|
+
| 8 | **import 类型存在性** | `library/Index.ets` 导出链 | 代码中 `import { X }` 的每个 X 必须在导出链中;未导出类型用**对象字面量**匹配结构,禁止 import;回调签名中的衍生类型须 read_file 库源码定位定义,库源码中也找不到则降级 `Record<string, Object>` 并标注"不可用" |
|
|
22
|
+
| 9 | **组件装饰器兼容** | 库组件源码 / 接口规格文档第 5 章 | 库组件使用 `@ObjectLink`/`@Prop`/`@Link` 时,关联类必须带 `@Observed` 装饰器(SKILL.md 0.2 预检应已识别) |
|
|
23
|
+
| 10 | **结构化类型禁令** | ArkTS 严格模式 | `new Uint8Array([..]).buffer` 类型为 `ArrayBufferLike`(结构化类型),直接赋值给 `ArrayBuffer` 触发 `arkts-no-structural-typing` → 改用 `new ArrayBuffer(n)` + `new Uint8Array(buf)` 视图逐元素写入 |
|
|
24
|
+
| 11 | **系统 API 签名/枚举/权限** | MCP 工具 `script_deveco_docs`(见 [SYSTEM_API_LOOKUP.md](SYSTEM_API_LOOKUP.md)) | 系统接口的方法签名、参数/返回值、import 路径、权限、系统能力必须查证,禁止凭记忆;枚举成员不做大小写假设(`ImageFit.CONTAIN` ❌ → `ImageFit.Contain` ✅) |
|
|
25
|
+
|
|
26
|
+
> **检索边界**:库自身 API 不在系统语料中,`script_deveco_docs` 会返回"未找到",此时不检索、直接按接口规格文档/库源码编写。
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 二、场景文档差异四类专项核对
|
|
31
|
+
|
|
32
|
+
场景文档签名与库源码存在四类系统性差异,逐接口 read_file 源码专项核对(比全量核对更聚焦):
|
|
33
|
+
|
|
34
|
+
1. **容器类型**:文档 `Array<T>` vs 源码 `JList<T>` 等 → 以源码为准
|
|
35
|
+
2. **rest 参数 vs 数组参数**:文档 `arrays: any[]` vs 源码 `...arrays` → 调用须展开为多参数 `func(...arr)`
|
|
36
|
+
3. **声明返回类型 vs 实际返回**:库 `.ts` 文件带 `@ts-nocheck` 时高发(编译器不校验)→ 按声明类型接值后用 `String(result)` 容错展示
|
|
37
|
+
4. **无条件抛异常方法**:文档预期成功、源码直接 `throw` → 按真实行为 try/catch 展示
|
|
38
|
+
|
|
39
|
+
命中任一类时以源码为准,并在 Demo 代码注释中说明差异。
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 三、编译错误签名修正协议(修复循环每轮执行)
|
|
44
|
+
|
|
45
|
+
生成代码的接口签名错误是系统性错误(未对照预检生成)。编译报错后按以下协议批量修正:
|
|
46
|
+
|
|
47
|
+
1. `read_file` 读取每个报错文件
|
|
48
|
+
2. 对照接口规格文档 + `library/Index.ets`,按错误关键词匹配修复:
|
|
49
|
+
|
|
50
|
+
| # | 编译错误关键词 | 修复方式 |
|
|
51
|
+
|---|--------------|---------|
|
|
52
|
+
| 1 | `Property 'xxx' does not exist` | 方法名拼写错误 → 查规格/源码替换(如 `rawQuery` → `queryRaw`) |
|
|
53
|
+
| 2 | `Expected N arguments, but got M` | 参数数量不匹配 → 查签名参数表补全/删除 |
|
|
54
|
+
| 3 | `Argument of type 'X[]' is not assignable` | rest 参数当数组传 → `func(...arr)` 展开 |
|
|
55
|
+
| 4 | `Property 'xxx' does not exist on type 'Y'` | 方法归属类错误 → 补中间链(`qb.list()` → `qb.build().list()`) |
|
|
56
|
+
| 5 | `arkts-no-any-unknown` / `arkts-no-inferred-generic-params` | any/unknown 类型 → 定义具体 interface,禁 `as` |
|
|
57
|
+
| 6 | `Module has no exported member` | import 不存在 → 对照 Index.ets,改用对象字面量 |
|
|
58
|
+
| 7 | `arkts-no-structural-typing` | `TypedArray.buffer`(`ArrayBufferLike`)赋值 `ArrayBuffer` → 见预检表 #10 |
|
|
59
|
+
| 8 | `neither type sufficiently overlaps` | 接口类型 `as` 强转实现类(如 `ID3v2` → `ID3v23Tag`)→ 先 `if (!(x instanceof ImplClass)) return;` 类型收窄,再赋值给目标类型 |
|
|
60
|
+
|
|
61
|
+
3. 同文件同类错误一次性批量替换
|
|
62
|
+
4. **修复引入新类型时同步补 import**:instanceof 收窄等修复会引入新类型引用,下轮编译将报 `Cannot find name 'X'`;每轮修复后检查改动文件的 import 区是否覆盖全部新引用类型
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 四、表外新错误
|
|
67
|
+
|
|
68
|
+
编译失败出现本表之外的错误:对照接口规格文档 + 库源码分析修复 → 记录错误模式 → 合并到本表,供下次任务复用。
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# 编译验证操作手册
|
|
2
|
+
|
|
3
|
+
> SKILL.md 阶段四(工程迁移 → Code Linter → 编译修复循环 → ohpm 兜底 → 降级)的详细操作规程。
|
|
4
|
+
> 核心原则:**编译是验证生成代码质量的唯一方式**;源库问题也必须尝试修复(仅限机械性操作,不改业务逻辑)。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、工程迁移(migrate.cjs)
|
|
9
|
+
|
|
10
|
+
### 1.1 为什么必做
|
|
11
|
+
|
|
12
|
+
鸿蒙原生库源码多为历史工程,`build-profile.json5` 的 SDK 版本配置、hvigor 文件、`oh-package.json5`、product 的 `runtimeOS`/`compatibleSdkVersion` 等经常不兼容当前构建环境。
|
|
13
|
+
|
|
14
|
+
> 🔴 **无论工程类型(OpenHarmony / HarmonyOS)、无论 `compileSdkVersion` 是否与已安装 SDK 匹配,都必须执行迁移**。禁止以"工程已是新版本""compileSdkVersion 已匹配已安装 SDK""工程为 OpenHarmony 无需切换到 HarmonyOS"等理由自行判断并跳过——即使 SDK 版本匹配,hvigor、oh-package 等配置仍可能不兼容。
|
|
15
|
+
|
|
16
|
+
### 1.2 预迁移设备探测(有设备时)
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
hdc list targets
|
|
20
|
+
hdc shell param get const.ohos.apiversion
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
记录设备 API 版本(如 `23`),作为 `--compatible-api` 参数传入迁移脚本。若无设备,跳过此步(脚本将自动探测已安装 SDK API 版本)。
|
|
24
|
+
|
|
25
|
+
> ⚠️ **compatible-api 版本上限陷阱**:`migrate.cjs` 的 API_VERSION_MAP 存在版本上限(当前最高 24)。设备 API 版本超出映射表上限(如设备 API 26)时直接传入会报 `未知 compatible-api 版本` 错误。此时读取 `DevEco-Studio.app/Contents/sdk/default/sdk-pkg.json` 的 `apiVersion` 字段获取已安装 SDK API 版本,取 **min(设备 API, 已安装 SDK API)** 作为 `--compatible-api`(编译面向已安装 SDK,实际以已安装 SDK API 为准)。
|
|
26
|
+
|
|
27
|
+
### 1.3 执行
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 有设备时(deviceApi 从 1.2 获取)
|
|
31
|
+
node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}} --compatible-api {deviceApi}
|
|
32
|
+
|
|
33
|
+
# 无设备时
|
|
34
|
+
node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 1.4 执行后强制校验(未通过不得进入编译)
|
|
38
|
+
|
|
39
|
+
- 迁移脚本正常执行完成,输出以 `[migrate] 迁移完成。` 结尾
|
|
40
|
+
- 迁移日志包含 `[migrate] SDK版本: compatibleSdkVersion=..., targetSdkVersion=...` 行
|
|
41
|
+
- `{{sourcePath}}/build-profile.json5` 中每个 product 的 `runtimeOS` 已为 `HarmonyOS`
|
|
42
|
+
- `compatibleSdkVersion` 的 API 版本 ≤ 设备 API 版本(有设备时)或 = 已安装 SDK API 版本(无设备时)
|
|
43
|
+
- 任一项不满足 → 重新执行迁移脚本,直至校验通过
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 二、Code Linter 静态检查(code-linter.cjs)
|
|
48
|
+
|
|
49
|
+
### 2.1 脚本行为
|
|
50
|
+
|
|
51
|
+
1. 探测 `devecocli --version`;不可用 → 报「构建环境不可用」退出码 1
|
|
52
|
+
2. 检测工程根 `code-linter.json5`;缺失则按推荐规则集自动创建(否则 `devecocli check lint` 会报 `--config-path does not exist`)
|
|
53
|
+
3. 执行 `devecocli check lint "<target>" --format json --output-path code-linter-raw.json`(仅传 1 个路径,满足命令路径参数限制)
|
|
54
|
+
4. 解析 `{ issues }`,按 Error / Warning 统计,输出 `{{sourcePath}}/code-linter-report.json`
|
|
55
|
+
|
|
56
|
+
### 2.2 结果判定
|
|
57
|
+
|
|
58
|
+
| 退出码 | 含义 | 处理 |
|
|
59
|
+
|-------|------|------|
|
|
60
|
+
| 0 | 0 Error | 静态检查通过,进入编译验证 |
|
|
61
|
+
| 2 | 存在 Error | 逐条修复(属生成代码的错误按第三节签名修正协议同源修复),重跑脚本直至 0 Error;计入编译修复轮次 |
|
|
62
|
+
| 1 | 环境不可用 | 标注"Code Linter 环境不可用,跳过",进入编译验证(编译同样依赖该环境,届时会暴露) |
|
|
63
|
+
|
|
64
|
+
### 2.3 Warning 处理原则
|
|
65
|
+
|
|
66
|
+
- `@hw-stylistic/file-naming-convention`:多因 `001_` 数字前缀文件名(规则要求大驼峰),**不阻塞编译**,无需强制改为大驼峰;若需零警告可调整命名,但不属于本 SKILL 阻断项
|
|
67
|
+
- `addTryCatch` / `addAsyncCatch` / 未使用变量等:P2 优化项,编译通过后按需处理,不阻塞进入编译
|
|
68
|
+
- `any`/`unknown` 说明:Linter 的 `@typescript-eslint/no-explicit-any` 仅对 `.js/.ts` 生效;`.ets` 的 any/unknown 由 ArkTS 编译器强制(`arkts-no-any-unknown`),需在编译验证中确认
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 三、编译修复循环(5 轮)
|
|
73
|
+
|
|
74
|
+
### 3.1 执行方式
|
|
75
|
+
|
|
76
|
+
> 🔴 必须通过 build.ps1 执行:直接调用 devecocli build 会导致 session 永久阻塞(hvigor daemon 继承 Agent pipe 句柄不释放)。
|
|
77
|
+
|
|
78
|
+
```powershell
|
|
79
|
+
powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -Cmd "devecocli build clean"
|
|
80
|
+
powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -Cmd "devecocli build --modules entry"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**macOS/Linux(无 PowerShell)等效替代**:bash 重定向到日志文件执行:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
devecocli build --modules entry > build.log 2>&1
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
原理:daemon 继承的是文件句柄而非管道句柄,同样规避 pipe 句柄继承导致的 session 阻塞(实测多轮编译无阻塞)。构建错误从 build.log 读取。
|
|
90
|
+
|
|
91
|
+
### 3.2 每轮流程
|
|
92
|
+
|
|
93
|
+
1. 逐条读取构建日志中的错误
|
|
94
|
+
2. 判断错误来源并分级修复:
|
|
95
|
+
- **生成代码错误**(文件路径在 `entry/src/main/ets/pages/0XX_*`、`DemoIndex.ets`):执行签名修正协议(见 [API_SIGNATURE_CHECKS.md](API_SIGNATURE_CHECKS.md) 第 3 节)
|
|
96
|
+
- **源库错误**:按 3.3 修复表处理
|
|
97
|
+
- 表外新错误:分析 → 修复 → 记录到修复表
|
|
98
|
+
3. 重新编译
|
|
99
|
+
|
|
100
|
+
### 3.3 源库错误修复表
|
|
101
|
+
|
|
102
|
+
源库错误(文件路径在 `library/`、源库原有 pages/、CMakeLists.txt、hvigorfile.ts、build-profile.json5):
|
|
103
|
+
|
|
104
|
+
| 错误类型 | 修复方式 | 可修复? |
|
|
105
|
+
|---------|---------|---------|
|
|
106
|
+
| SDK 版本不匹配(compileSdkVersion) | 修正 `build-profile.json5` | ✅ |
|
|
107
|
+
| 依赖缺失(oh-package.json5) | 补充 devDependencies | ✅ |
|
|
108
|
+
| CMake 选项冲突(-D 参数覆盖) | 修改 `build-profile.json5` 的 `externalNativeOptions` | ✅ |
|
|
109
|
+
| hvigorfile.ts 缺失 | `git submodule update --init --recursive` | ✅ |
|
|
110
|
+
| 缺失头文件(如 avif.h) | 关闭对应 CMake 选项或补充子模块 | ⚠️ 尝试 |
|
|
111
|
+
| 源库 ArkTS 类型错误 | 修正类型注解/补充 @Observed | ⚠️ 仅机械性 |
|
|
112
|
+
| 源库业务逻辑错误 | 不修复,标注 | ❌ |
|
|
113
|
+
|
|
114
|
+
### 3.4 终止判定(立即退出循环)
|
|
115
|
+
|
|
116
|
+
构建日志中连续 2 轮出现的错误均为源库不可修复错误(❌ 行)→ **立即终止修复循环**,不再尝试后续轮次,直接进入代码规范自查,在报告中标注编译跳过原因和修复建议。
|
|
117
|
+
|
|
118
|
+
### 3.5 降级(5 轮仍失败 / 提前终止)
|
|
119
|
+
|
|
120
|
+
- 编译验证标注"⚠️ 已跳过",报告中列出:
|
|
121
|
+
- 生成代码未修复的错误 → 标注"需加入检查表"
|
|
122
|
+
- 源库不可修复的错误 → 标注"需源库作者修复"
|
|
123
|
+
- 项目结构迁移类错误 → 标注"需在 DevEco Studio 中使用迁移工具升级项目结构"
|
|
124
|
+
- 任务状态仍为"完成"(代码生成本身已完成,编译验证因源库问题跳过)
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 四、ohpm 线上版本替换(源库原生编译失败兜底)
|
|
129
|
+
|
|
130
|
+
> 当源库**原生库(.so)需复杂构建**(GN/Ninja、FFmpeg、libyuv、NDK、prebuild 等)导致 `devecocli build` 失败时,用 **ohpm 线上发行版本**替换本地依赖后继续编译,避免被源库构建问题阻塞验证。
|
|
131
|
+
> 本流程由共享脚本 `ohpm-switch.cjs` 自动化完成(与 XTSCodeSkill / XTSExecutionSkill 同源)。
|
|
132
|
+
|
|
133
|
+
### 4.1 触发条件(必须全部满足,任一条不满足则跳过本分支直接走降级)
|
|
134
|
+
|
|
135
|
+
| # | 条件 | 判定方式 |
|
|
136
|
+
|---|------|---------|
|
|
137
|
+
| 1 | `ohpm` 可用 | 运行 `ohpm --version` 成功 |
|
|
138
|
+
| 2 | README 明确源码编译步骤复杂 | 读取 `README.md` / `README_zh.md`,出现以下特征词即判定命中:`.so`、`libyuv`、`FFmpeg`、`soundtouch`、`NDK`、`GN`、`Ninja`、`prebuild`、`预编译`、`编译三方依赖库`、`从源码编译` |
|
|
139
|
+
| 3 | 该库存在 ohpm 线上版本 | `ohpm info <库包名>` 有版本列表,或使用 `--version` 显式指定 |
|
|
140
|
+
| 4 | 出现在修复循环内且编译仍失败 | 首次编译失败后即可尝试;或连续 2 轮为源库不可修复错误(❌ 行)时触发 |
|
|
141
|
+
|
|
142
|
+
### 4.2 执行
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
node {{skillDir}}/scripts/ohpm-switch.cjs --source {{sourcePath}}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
若脚本定位到多个本地 file 依赖,按脚本输出的候选逐个用 `--pkg <库包名>` 指定重复执行。脚本行为:
|
|
149
|
+
|
|
150
|
+
- 扫描工程内所有 `oh-package.json5`,定位 `file:` / 相对路径依赖
|
|
151
|
+
- 匹配 `build-profile.json5` `modules[]` 中注册的同名本地模块
|
|
152
|
+
- 通过 `ohpm info <库包名>` 自动查询最新稳定版(亦可 `--version <版本号>` 显式指定,如 `--version 2.0.9`)
|
|
153
|
+
- 将 `oh-package.json5` 中该库依赖改为线上版本号(如 `"@ohos/ijkplayer": "2.0.9"`)
|
|
154
|
+
- 从工程级 `build-profile.json5` 的 `modules[]` 中**移除**该库本地模块条目,避免本地原生库模块再次参与构建触发相同失败
|
|
155
|
+
- 保留 `@ohos/hypium` 等 devDependencies 不变;不修改 `.so`/`.aar`/`.har` 等编译产物映射依赖
|
|
156
|
+
|
|
157
|
+
### 4.3 核验改动清单
|
|
158
|
+
|
|
159
|
+
脚本完成后校验 `{{sourcePath}}/ohpm-switch-report.json`,确认:依赖版本变更、build-profile modules 移除项、涉及的库包名与版本号,均与本次任务目标一致。
|
|
160
|
+
|
|
161
|
+
### 4.4 重新安装依赖并编译
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
cd {{sourcePath}} && ohpm install
|
|
165
|
+
# 然后按 3.1 的方式重新编译
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 4.5 版本降级 API 兼容性核验(必做,踩坑核心教训)
|
|
169
|
+
|
|
170
|
+
线上最新版可能与本地源码版本不一致(如 ijkplayer 本地 `2.0.11-rc.0`,线上最新稳定版 `2.0.9`)。替换后编译通过前,必须对照 `library/index.ets` 导出链逐一确认本任务生成代码 import 的类型/常量/枚举仍存在(如 IjkMediaPlayer、MessageType、PropertiesType、LogUtils、AudioInterrupt、AudioDeviceChange、InterruptEvent):
|
|
171
|
+
|
|
172
|
+
- 全部存在 → 继续后续步骤
|
|
173
|
+
- 有缺失 → 优先用 `ohpm info <库包名>` 已列出的其他更接近版本重跑脚本(`--version <旧版本>`)
|
|
174
|
+
- 所有线上版本均不满足 → 生成代码对缺失类型降级为对象字面量/标注"需手动验证接口",并在报告备注
|
|
175
|
+
|
|
176
|
+
### 4.6 结果判定
|
|
177
|
+
|
|
178
|
+
| 情况 | 处理 |
|
|
179
|
+
|------|------|
|
|
180
|
+
| 替换后编译通过 | 编译验证记为通过,报告标注"源库本地原生编译失败,已切换 @ohos/xxx 线上版本 vX.Y.Z 后编译通过",并附 `ohpm-switch-report.json` 改动清单 |
|
|
181
|
+
| 替换后仍失败 | 归为源库不可修复,走降级路径,报告追加"已尝试 ohpm 线上替换仍失败" |
|
|
182
|
+
| 无对应 ohpm 线上版本 | 维持原流程,报告说明"未找到对应 ohpm 线上版本" |
|
|
183
|
+
|
|
184
|
+
> ⚠️ **修改保留不回滚**,但必须在最终报告中如实记录本次改动(依赖版本变更、build-profile.json5 modules 移除两项,可直接引用 `ohpm-switch-report.json`)。
|