@ohos-cpf/3rdloop 0.0.1 → 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.
- package/README.md +245 -425
- package/bin/3rdloop.mjs +46 -46
- package/lib/cli.js +781 -740
- package/lib/config-cmd.js +452 -0
- package/lib/config.js +318 -317
- package/lib/doctor.js +113 -113
- package/lib/exit-codes.js +30 -30
- package/lib/opencode.js +155 -155
- package/lib/orch.js +426 -426
- package/lib/queries.js +263 -263
- package/lib/step.js +325 -325
- package/lib/ui.js +222 -222
- package/lib/update.js +280 -0
- package/lib/workflow.js +308 -290
- package/lib/workflows.js +131 -131
- package/package.json +50 -50
- package/vendor/Server/Agent/SkillSelector/README.md +343 -343
- package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -207
- package/vendor/Server/Agent/SkillSelector/index.js +14 -14
- package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -313
- package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -161
- package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -144
- package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -433
- package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -382
- package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +59 -59
- package/vendor/Server/Brain/AnalysisStrategies.js +422 -422
- package/vendor/Server/Brain/Brain.js +686 -686
- package/vendor/Server/Brain/DecompositionStrategies.js +621 -621
- package/vendor/Server/Brain/PlanPersistence.js +196 -196
- package/vendor/Server/Brain/SkillExecutor.js +251 -251
- package/vendor/Server/Brain/index.js +11 -11
- package/vendor/Server/CLI/cli.js +275 -243
- package/vendor/Server/CLI/deveco-code/index.js +71 -0
- package/vendor/Server/CLI/deveco-code.js +5 -0
- package/vendor/Server/CLI/opencode/index.js +817 -804
- package/vendor/Server/CLI/opencode.js +5 -5
- package/vendor/Server/DbUse/MessageArchive.js +61 -61
- package/vendor/Server/DbUse/StorageManager.js +107 -107
- package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -94
- package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -138
- package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -138
- package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -114
- package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -157
- package/vendor/Server/DbUse/index.js +160 -160
- package/vendor/Server/DbUse/stores/SessionStore.js +279 -279
- package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -133
- package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -262
- package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -279
- package/vendor/Server/FlexRunner/FlexRunner.js +1759 -1759
- package/vendor/Server/FlexRunner/index.js +12 -12
- package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -523
- package/vendor/Server/Knowledge/KnowledgeManager.js +341 -341
- package/vendor/Server/Knowledge/index.js +33 -33
- package/vendor/Server/LoopEngine/LoopEngine.js +1133 -1133
- package/vendor/Server/LoopEngine/index.js +11 -11
- package/vendor/Server/Orchestrator/Orchestrator.js +0 -3
- package/vendor/Server/Orchestrator/StepNode.js +312 -312
- package/vendor/Server/Orchestrator/index.js +13 -13
- package/vendor/Server/Routes/controllers/BrainController.js +241 -241
- package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -1125
- package/vendor/Server/Routes/controllers/HealthController.js +44 -44
- package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -355
- package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -788
- package/vendor/Server/Routes/controllers/StatsController.js +57 -57
- package/vendor/Server/Routes/controllers/StreamController.js +67 -67
- package/vendor/Server/Routes/library/logger.js +179 -179
- package/vendor/Server/Routes/library/zipArchive.js +172 -172
- package/vendor/Server/Routes/router/Router.js +204 -204
- package/vendor/Server/Routes/routes/brain.js +47 -47
- package/vendor/Server/Routes/routes/flexrunner.js +72 -72
- package/vendor/Server/Routes/routes/health.js +28 -28
- package/vendor/Server/Routes/routes/index.js +57 -57
- package/vendor/Server/Routes/routes/knowledge.js +55 -55
- package/vendor/Server/Routes/routes/loopengine.js +58 -58
- package/vendor/Server/Routes/routes/orchestrator.js +61 -61
- package/vendor/Server/Routes/routes/registry.js +97 -97
- package/vendor/Server/Routes/routes/stats.js +23 -23
- package/vendor/Server/Routes/routes/stream.js +30 -30
- package/vendor/Server/Routes/server.js +203 -202
- package/vendor/Server/Routes/sse/SseHub.js +308 -308
- package/vendor/Server/Skills/acceptance-check/SKILL.md +191 -174
- package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -52
- package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -77
- package/vendor/Server/Skills/acceptance-check/references/PHASE2_EVIDENCE_VERIFICATION.md +70 -0
- package/vendor/Server/Skills/arkts-code-check/SKILL.md +320 -313
- package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +210 -159
- package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +28 -28
- package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +233 -222
- package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +219 -219
- package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +328 -328
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -291
- package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -68
- package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -184
- package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -337
- package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -400
- package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +98 -98
- package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -544
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -174
- package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -321
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -100
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -185
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +233 -233
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +102 -102
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -89
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -62
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +107 -107
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -124
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -90
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -57
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -97
- package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +391 -391
- package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -113
- package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +312 -312
- package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -154
- package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +165 -165
- package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +308 -308
- package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -90
- package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -282
- package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +360 -360
- package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +145 -145
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +252 -252
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +114 -114
- package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +262 -262
- package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -455
- package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -60
- package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -76
- package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -200
- package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +518 -518
- package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -276
- package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +92 -92
- package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -767
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -221
- package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +228 -228
- package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -97
- package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -194
- package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +575 -575
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +574 -574
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -182
- package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +490 -490
- package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -217
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -299
- package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +311 -311
- package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -190
- package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +133 -133
- package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/flutter-interface/README.md +75 -75
- package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -291
- package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -336
- package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -190
- package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -258
- package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -254
- package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +517 -517
- package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +381 -381
- package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +341 -341
- package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -71
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +518 -518
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +406 -406
- package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +652 -652
- package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +396 -396
- package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +744 -744
- package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +720 -720
- package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -414
- package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -150
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -304
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -265
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -286
- package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -383
- package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -165
- package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -91
- package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -127
- package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +453 -301
- package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_CHECKLIST.md +151 -0
- package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +257 -105
- package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +191 -127
- package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +317 -208
- package/vendor/Server/Skills/rn-code-check/SKILL.md +320 -320
- package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +234 -234
- package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +188 -188
- package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +246 -246
- package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -198
- package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -40
- package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -78
- package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -70
- package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -47
- package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -252
- package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -176
- package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -5
- package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -35
- package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -137
- package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -33
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -40
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -429
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -105
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -90
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -213
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -73
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -258
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -341
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -67
- package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -299
- package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -293
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -857
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -856
- package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -157
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -801
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +683 -683
- package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -233
- package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -1373
- package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -220
- package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -245
- package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -263
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -414
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -413
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -311
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -355
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -115
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -139
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -586
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -57
- package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -259
- package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -301
- package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -148
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -118
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -168
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -176
- package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -274
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -45
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -25
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -61
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -165
- package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -239
- package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -263
- package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -96
- package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +57 -57
- package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -99
- package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -64
- package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +74 -74
- package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -164
- package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +356 -339
- package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +85 -83
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +905 -859
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +124 -122
- package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +287 -279
- package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -273
- package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -129
- package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -581
- package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -138
- package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -168
- package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +526 -506
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +321 -280
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -221
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +220 -209
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -325
- package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -279
- package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -404
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -185
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -265
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -189
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -203
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -147
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -148
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -165
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -195
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -249
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -235
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -161
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -413
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -235
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -245
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -282
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -251
- package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -469
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -310
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -303
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -421
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -358
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -114
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -274
- package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -185
- package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -191
- package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -216
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -107
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -120
- package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -108
- package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -237
- package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -261
- package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -112
- package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +497 -497
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -270
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -164
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -556
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -459
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -65
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -512
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -132
- package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -424
- package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -137
- package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -306
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -485
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -172
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -422
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -95
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -169
- package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -554
- package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -106
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -216
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -413
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -269
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -98
- package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -337
- package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -722
- package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -219
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -345
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -269
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -173
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -267
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -174
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -111
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -186
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -150
- package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -296
- package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -371
- package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -212
- package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -345
- package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -223
- package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -1053
- package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +295 -255
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +82 -77
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -224
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +175 -174
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -967
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -1798
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -5
- package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +180 -137
- package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -145
- package/vendor/Server/Skills/skill-generator/SKILL.md +365 -365
- package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -183
- package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -82
- package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -110
- package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -122
- package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -121
- package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/task-analysis/SKILL.md +234 -234
- package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -160
- package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -190
- package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -224
- package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -162
- package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -55
- package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -126
- package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -256
- package/vendor/Server/Skills/task-decomposition/SKILL.md +528 -528
- package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -451
- package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -179
- package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -152
- package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -175
- package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -195
- package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -226
- package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -263
- package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -29
- package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -376
- package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -259
- package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -216
- package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +424 -424
- package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -427
- package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -214
- package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -235
- package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -250
- package/vendor/Server/TestCheck/TestCheck.js +775 -775
- package/vendor/Server/TestCheck/index.js +11 -11
- package/vendor/Server/library/McpToolGuide.js +280 -280
- package/vendor/Server/library/StatsService.js +126 -126
- package/vendor/Server/library/cstTime.js +16 -16
- package/vendor/VERSION +3 -3
- package/workflows/pr-check.mjs +105 -105
- package/workflows/pr-push.mjs +193 -0
- package/vendor/Server/Agent/SkillSelector/types.js +0 -63
|
@@ -1,301 +1,453 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ohos-lib-pr-push
|
|
3
|
-
description: 'GitCode 三方库自动提 PR 工具。工作区为 fork 仓库克隆:在代码修改完成后复用当前分支提交推送,自动总结修改点、在源仓库(上游)创建 Issue、必要时同步更新 CHANGELOG(条目附 Issue 链接)、从 fork 向源仓库创建绑定 Issue 的 PR、评论 Start build 触发 CI。USE FOR: 三方库适配/修复/用例补充等本地修改完成后,从 fork 向 GitCode 源仓库(如 CPF-RN 组织仓库)自动提交 PR。'
|
|
4
|
-
license: Apache-2.0
|
|
5
|
-
compatibility: 需要 Node.js 18+(执行 scripts/gitcode-api.cjs),需要 git 命令行,需要 GitCode API Token(默认读取 3rdLibraryLoop/Server/.env 的 GIT_TOKEN)
|
|
6
|
-
metadata:
|
|
7
|
-
author: LoopEngine
|
|
8
|
-
version: "1.
|
|
9
|
-
category: gitcode-pr
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# OHOS Lib PR Push — 三方库自动提 PR
|
|
13
|
-
|
|
14
|
-
将本地工作区(**fork 仓库的克隆**)的代码修改自动提交为**源仓库(上游)**的 PR,并创建绑定 Issue、触发 CI 门禁。
|
|
15
|
-
|
|
16
|
-
> ⚠️ **核心原则:① 工作区是 fork 仓库,PR 必须“从 fork 提交到源仓库”,禁止提交到 fork 自身;② 不修改分支——当前在哪个分支,就在该分支上提交并推送,PR head 就是该分支;③ 不修改任何业务代码,只做"总结修改 → 提交 → 建 Issue → 建 PR → 触发 CI"的发布链路;④ Token 绝不写入日志和报告。**
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## 任务参数
|
|
21
|
-
|
|
22
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
23
|
-
|------|------|------|------|
|
|
24
|
-
| `workspaceDir` | string | ✅ | 本地工作区(git 仓库根目录)绝对路径,修改已在该目录完成 |
|
|
25
|
-
| `upstreamUrl` | string | ❌ | 源仓库(上游)URL(如 `https://gitcode.com/CPF-RN/rntpc_react-native-image-crop-picker`)。不提供时按 Phase 1.1 的上游推断规则确定 |
|
|
26
|
-
| `token` | string | ❌ | GitCode Token。不提供时读取 `3rdLibraryLoop/Server/.env` 的 `GIT_TOKEN`(见 Phase 1) |
|
|
27
|
-
| `baseBranch` | string | ❌ | PR 目标(上游)分支。默认为上游与当前分支同名的分支(见 Phase 1.5) |
|
|
28
|
-
| `branchName` | string | ❌ | **已废弃自动生成新分支**:默认使用当前分支。仅当用户明确要求指定分支名时才生效,且仍不得切换已有工作分支 |
|
|
29
|
-
| `commitMessage` | string | ❌ | 提交信息。默认由修改点总结自动生成 |
|
|
30
|
-
| `changelog` | string | ❌ | 默认 `auto`:按 Phase 2.4 判定是否更新 CHANGELOG;`true` 强制更新;`false` 强制跳过 |
|
|
31
|
-
| `dryRun` | boolean | ❌ | 默认 `false`。`true` 时只总结修改点和生成报告,不执行 Issue/CHANGELOG 写入/提交推送/PR/CI |
|
|
32
|
-
|
|
33
|
-
## 输入依赖
|
|
34
|
-
|
|
35
|
-
- 前置SKILL: 无(通常在 `rnoh-lib-code-adapt` / `rnoh-cptf-demo-test` 等修改类 SKILL 完成后调用)
|
|
36
|
-
- 输入文件: `workspaceDir` 内的未提交/已提交修改(`git status` / `git log` 可见)
|
|
37
|
-
- 输入前提: `workspaceDir` 是某 GitCode 仓库的 **fork 克隆**(本地 origin 指向 fork;可能另有 upstream remote 指向源仓库)
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## 工作流程概览
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
Phase 1: 确定工作区与 Token
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
↓
|
|
54
|
-
Phase
|
|
55
|
-
↓
|
|
56
|
-
Phase
|
|
57
|
-
↓
|
|
58
|
-
Phase
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
2
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
1
|
+
---
|
|
2
|
+
name: ohos-lib-pr-push
|
|
3
|
+
description: 'GitCode 三方库自动提 PR 工具。工作区为 fork 仓库克隆:在代码修改完成后复用当前分支提交推送,自动总结修改点、在源仓库(上游)创建 Issue、必要时同步更新 CHANGELOG(条目附 Issue 链接)、从 fork 向源仓库创建绑定 Issue 的 PR、评论 Start build 触发 CI。USE FOR: 三方库适配/修复/用例补充等本地修改完成后,从 fork 向 GitCode 源仓库(如 CPF-RN 组织仓库)自动提交 PR。'
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
compatibility: 需要 Node.js 18+(执行 scripts/gitcode-api.cjs),需要 git 命令行,需要 GitCode API Token(默认读取 3rdLibraryLoop/Server/.env 的 GIT_TOKEN)
|
|
6
|
+
metadata:
|
|
7
|
+
author: LoopEngine
|
|
8
|
+
version: "1.5.0"
|
|
9
|
+
category: gitcode-pr
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# OHOS Lib PR Push — 三方库自动提 PR
|
|
13
|
+
|
|
14
|
+
将本地工作区(**fork 仓库的克隆**)的代码修改自动提交为**源仓库(上游)**的 PR,并创建绑定 Issue、触发 CI 门禁。
|
|
15
|
+
|
|
16
|
+
> ⚠️ **核心原则:① 工作区是 fork 仓库,PR 必须“从 fork 提交到源仓库”,禁止提交到 fork 自身;② 不修改分支——当前在哪个分支,就在该分支上提交并推送,PR head 就是该分支;③ 不修改任何业务代码,只做"总结修改 → 提交 → 建 Issue → 建 PR → 触发 CI"的发布链路;④ Token 绝不写入日志和报告。**
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 任务参数
|
|
21
|
+
|
|
22
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
23
|
+
|------|------|------|------|
|
|
24
|
+
| `workspaceDir` | string | ✅ | 本地工作区(git 仓库根目录)绝对路径,修改已在该目录完成 |
|
|
25
|
+
| `upstreamUrl` | string | ❌ | 源仓库(上游)URL(如 `https://gitcode.com/CPF-RN/rntpc_react-native-image-crop-picker`)。不提供时按 Phase 1.1 的上游推断规则确定 |
|
|
26
|
+
| `token` | string | ❌ | GitCode Token。不提供时读取 `3rdLibraryLoop/Server/.env` 的 `GIT_TOKEN`(见 Phase 1) |
|
|
27
|
+
| `baseBranch` | string | ❌ | PR 目标(上游)分支。默认为上游与当前分支同名的分支(见 Phase 1.5) |
|
|
28
|
+
| `branchName` | string | ❌ | **已废弃自动生成新分支**:默认使用当前分支。仅当用户明确要求指定分支名时才生效,且仍不得切换已有工作分支 |
|
|
29
|
+
| `commitMessage` | string | ❌ | 提交信息。默认由修改点总结自动生成 |
|
|
30
|
+
| `changelog` | string | ❌ | 默认 `auto`:按 Phase 2.4 判定是否更新 CHANGELOG;`true` 强制更新;`false` 强制跳过 |
|
|
31
|
+
| `dryRun` | boolean | ❌ | 默认 `false`。`true` 时只总结修改点和生成报告,不执行 Issue/CHANGELOG 写入/提交推送/PR/CI |
|
|
32
|
+
|
|
33
|
+
## 输入依赖
|
|
34
|
+
|
|
35
|
+
- 前置SKILL: 无(通常在 `rnoh-lib-code-adapt` / `rnoh-cptf-demo-test` 等修改类 SKILL 完成后调用)
|
|
36
|
+
- 输入文件: `workspaceDir` 内的未提交/已提交修改(`git status` / `git log` 可见)
|
|
37
|
+
- 输入前提: `workspaceDir` 是某 GitCode 仓库的 **fork 克隆**(本地 origin 指向 fork;可能另有 upstream remote 指向源仓库)
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 工作流程概览
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
Phase 1: 确定工作区与 Token(含 1.6 探测 Issue 模板、
|
|
45
|
+
1.7 分支推送状态判定 + open PR 幂等检测)
|
|
46
|
+
↓
|
|
47
|
+
Phase 2: 总结代码修改点(基线 upstream/{base} 优先;
|
|
48
|
+
含 CHANGELOG 必要性判定、Issue 分类归类、
|
|
49
|
+
测试同步门禁:源码修复无测试即终止)
|
|
50
|
+
↓
|
|
51
|
+
Phase 3: 创建 Issue(有模板按模板渲染标题与 body;
|
|
52
|
+
无模板用 [类型] 标题 + PR_CHECKLIST 字段结构)
|
|
53
|
+
↓
|
|
54
|
+
Phase 4: 更新 CHANGELOG(仅当三方库内部源码有修改,英文条目带 Issue 链接)
|
|
55
|
+
↓
|
|
56
|
+
Phase 5: 提交并推送分支(已推送跳过;分叉禁强推)
|
|
57
|
+
↓
|
|
58
|
+
Phase 6: 创建绑定 Issue 的 PR(body 按 PR_CHECKLIST 描述模板,
|
|
59
|
+
Checklist 如实勾选;409 用 list-prs 兜底)
|
|
60
|
+
↓
|
|
61
|
+
Phase 7: 评论 Start build 触发 CI
|
|
62
|
+
↓
|
|
63
|
+
Phase 8: 生成报告
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
> 各阶段使用的 GitCode API 细节、参数表与踩坑记录统一参见 [GitCode API 参考](references/GITCODE_API.md)
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Phase 1:确定工作区与 Token
|
|
71
|
+
|
|
72
|
+
### 1.1 确定工作区与上游关系(fork → 源仓库)
|
|
73
|
+
|
|
74
|
+
1. 将 `workspaceDir` 设为当前工作目录
|
|
75
|
+
2. 校验是 git 仓库:执行 `git rev-parse --show-toplevel`
|
|
76
|
+
3. 记录当前分支:`git branch --show-current`(**此分支即提交分支与 PR head,禁止切换**);remote 信息:`git remote -v`
|
|
77
|
+
4. **确定 fork 仓库与源仓库**:
|
|
78
|
+
- 本地 `origin`(或其它 remote)指向的仓库视为 fork 仓库(如 `https://gitcode.com/{user}/rntpc_react-native-image-crop-picker`)
|
|
79
|
+
- 源仓库(上游)按优先级确定:
|
|
80
|
+
a. 用户传入的 `upstreamUrl`
|
|
81
|
+
b. 本地名为 `upstream` 的 remote 指向的仓库
|
|
82
|
+
c. `git remote -v` 中与 origin **同名不同 owner** 的 GitCode 仓库(如 origin 是 `{user}/rntpc_react-native-image-crop-picker`,另一 remote 或仓库推导出 `CPF-RN/rntpc_react-native-image-crop-picker`)
|
|
83
|
+
d. 通过 GitCode API 查询 fork 仓库的 `parent` 字段(`GET /repos/{forkOwner}/{repo}`,取响应中 `parent.path_with_namespace`)
|
|
84
|
+
5. 无法确定源仓库 → **终止并询问用户**,禁止默认提交到 fork 自身
|
|
85
|
+
6. **Monorepo 判断**:若 `upstreamUrl` 含 `/tree/{branch}/{subpath}`,记录子库路径,Phase 2 总结修改时标注其在仓库内的相对位置
|
|
86
|
+
|
|
87
|
+
### 1.2 确定 Token
|
|
88
|
+
|
|
89
|
+
按优先级取值:
|
|
90
|
+
|
|
91
|
+
1. 用户显式传入的 `token` 参数
|
|
92
|
+
2. 读取 `{3rdLibraryLoop根目录}/3rdLibraryLoop/Server/.env` 中的 `GIT_TOKEN`(该目录通常是 `/Users/lalhan/Desktop/3rdLibraryLoop/3rdLibraryLoop/Server/.env`,亦可从本 SKILL 目录向上回溯:`SKILL 目录 = Server/Skills/ohos-lib-pr-push`,故 `.env` 位于 `../../../.env`)
|
|
93
|
+
3. 都没有 → **终止并提示用户提供 Token**
|
|
94
|
+
|
|
95
|
+
### 1.3 获取 Token 用户信息
|
|
96
|
+
|
|
97
|
+
执行(用 Token 换取提交人身份,用于 git config):
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
node scripts/gitcode-api.cjs get-user --token "$GIT_TOKEN"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
记录返回的 `username`(登录名)、`name`、`email`。
|
|
104
|
+
|
|
105
|
+
### 1.4 获取源仓库(上游)信息
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
node scripts/gitcode-api.cjs get-repo --token "$GIT_TOKEN" --owner {upstreamOwner} --repo {repo}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
记录:`id`(源仓库 project_id,Phase 6 必需)、`default_branch`、`path_with_namespace`。
|
|
112
|
+
|
|
113
|
+
### 1.5 确定 PR base 分支(上游目标分支)
|
|
114
|
+
|
|
115
|
+
按优先级确定 PR 的 `base`:
|
|
116
|
+
|
|
117
|
+
1. 用户传入的 `baseBranch`
|
|
118
|
+
2. 上游存在与**当前分支同名**的分支 → 用同名分支(典型场景:当前在 `br_rnoh0.82`,上游也有 `br_rnoh0.82`)。API 探测:`GET /repos/{upstreamOwner}/{repo}/branches/{branch}` 存在即用
|
|
119
|
+
3. 上游无同名分支 → 使用上游 `default_branch`,并在报告中**明显标注**"当前分支 {branch} 在上游无同名分支,PR base 回退到 {default_branch}"
|
|
120
|
+
|
|
121
|
+
### 1.6 探测源仓库 Issue 模板(决定 Phase 2.3/3 的标题与 body 规则)
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
node scripts/gitcode-api.cjs get-issue-templates --token "$GIT_TOKEN" --owner {upstreamOwner} --repo {repo}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
脚本按顺序探测(命中即停):
|
|
128
|
+
|
|
129
|
+
1. 源仓库自身 `.gitcode/ISSUE_TEMPLATE/`
|
|
130
|
+
2. 源仓库自身 `.github/ISSUE_TEMPLATE/`
|
|
131
|
+
3. **组织级模板仓库** `{upstreamOwner}/.gitcode` 的 `.gitcode/ISSUE_TEMPLATE/`(实测 `CPF-ApplicationTPC/lottie_turbo` 即此情况:仓库自身无模板,模板来自 `CPF-ApplicationTPC/.gitcode` 组织仓库)
|
|
132
|
+
|
|
133
|
+
返回 `source: repo|org|none`、`blankIssuesEnabled`、`templates[]`(每项含 `file/name/title/labels/type/yaml` 原文)。
|
|
134
|
+
|
|
135
|
+
**三组织实测状态**(2026-09):
|
|
136
|
+
|
|
137
|
+
| 组织 | Issue 模板 | 处理 |
|
|
138
|
+
|------|-----------|------|
|
|
139
|
+
| `CPF-ApplicationTPC` | 组织级 `.gitcode` 仓库(9 个模板,`blank_issues_enabled: false`) | 按模板渲染标题与 body(Phase 2.3 / 3.1) |
|
|
140
|
+
| `cpf-rn` | 无(组织级/仓库级均 404) | 默认规范格式:`[类型] {摘要}` 标题 + PR_CHECKLIST 字段结构 body |
|
|
141
|
+
| `cpf-flutter` | 无(组织级/仓库级均 404) | 同 cpf-rn |
|
|
142
|
+
|
|
143
|
+
- **`source: none`(无模板)** → Phase 2.3/3 沿用默认规范格式(`[类型] {摘要}` 标题 + 与 [PR_CHECKLIST.md](assets/PR_CHECKLIST.md) Issue 必填内容对齐的 body 字段结构,见 [PR_ISSUE_TEMPLATE.md](assets/PR_ISSUE_TEMPLATE.md) 默认模板)
|
|
144
|
+
- **有模板** → 记录 `source`、`blankIssuesEnabled`、模板清单;Phase 2.3 标题、Phase 3 body **必须按选中模板渲染**(见 2.3 分类映射与 3.1 渲染规则)。模板为 GitHub Issue Forms YAML 格式(`name/description/title/labels/type/body[]`)
|
|
145
|
+
|
|
146
|
+
> 注意:`blank_issues_enabled: false` 表示该仓库网页端只允许按模板建 Issue,API 同样应遵循模板结构提交。
|
|
147
|
+
|
|
148
|
+
### 1.7 判定分支推送状态与幂等检测(覆盖"已推送到 fork 未提 PR"场景)
|
|
149
|
+
|
|
150
|
+
**推送状态三态判定**(先同步远端引用,fetch 只更新 remote-tracking 不动工作区,安全):
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
git fetch origin
|
|
154
|
+
git rev-list --left-right --count origin/{当前分支}...HEAD # 输出 "远端领先数<TAB>本地领先数"
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
| 判定 | 输出特征 | 处理 |
|
|
158
|
+
|------|---------|------|
|
|
159
|
+
| **已推送(一致)** | 本地领先 0(工作区亦干净) | 记录"分支已在 fork 远端,Phase 5 跳过 commit/push";修改点采集走"已推送"路径(2.1) |
|
|
160
|
+
| **本地领先** | 本地领先 >0 | 正常流程(commit 未提交内容后 push) |
|
|
161
|
+
| **远端领先/分叉** | 远端领先 >0 | **终止并报告**:说明远端分支与本地分叉(可能被 rebase/force push/网页修改),**禁止自动 force push / pull / rebase**,交由用户处理 |
|
|
162
|
+
|
|
163
|
+
**open PR 幂等检测**(防止重复建 Issue / create-pr 409——发布链路非幂等,maxRetries=0):
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
node scripts/gitcode-api.cjs list-prs --token "$GIT_TOKEN" \
|
|
167
|
+
--owner {upstreamOwner} --repo {repo} --state open --head {当前分支}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
- 在返回的 `prs[]` 中过滤 `headUser` 为 fork 仓库 owner(Token 用户或 fork 所属组织)的条目
|
|
171
|
+
- **命中** → 该分支已有指向源仓库的 open PR:**终止并报告**,写明已有 PR 编号与链接(`url` 字段),提示如需更新走该 PR 的评论区/重新执行前先处理
|
|
172
|
+
- **未命中** → 继续流程。此检测同时覆盖两种情形:① 用户已手动推送但尚未提 PR(正常继续,Issue/PR 一次建好);② 此前 pr-push 中途失败重跑(避免重复产物)
|
|
173
|
+
|
|
174
|
+
> 失败恢复入口:从 push 之后任意阶段中断重跑时,1.7 的 PR 检测可拦住"PR 已建"的重复;但 **Issue 已建、PR 未建**的中间态无法自动识别(无关联标记),重跑会重复建 Issue——此类情形应在重跑前人工确认,报告中如出现两个同主题 Issue 属预期。
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Phase 2:总结代码修改点
|
|
179
|
+
|
|
180
|
+
### 2.1 采集修改
|
|
181
|
+
|
|
182
|
+
在工作区内依序执行并汇总:
|
|
183
|
+
|
|
184
|
+
| 命令 | 用途 |
|
|
185
|
+
|------|------|
|
|
186
|
+
| `git status --porcelain` | 未提交修改文件清单 |
|
|
187
|
+
| `git diff --stat` + `git diff` | 未暂存修改的统计与详情 |
|
|
188
|
+
| `git diff --cached --stat` | 已暂存修改 |
|
|
189
|
+
| `git log --oneline {diffBase}..HEAD` | 本分支相对基线的提交(`{diffBase}` 确定规则见下) |
|
|
190
|
+
|
|
191
|
+
**`{diffBase}` 基线确定**(按优先级取第一个可用者,fetch 均为只读安全操作):
|
|
192
|
+
|
|
193
|
+
1. 存在 `upstream` remote:`git fetch upstream` 后用 `upstream/{Phase 1.5 确定的 base 分支}`
|
|
194
|
+
2. 无 upstream remote 但要精确基线:`git fetch https://gitcode.com/{upstreamOwner}/{repo}.git {base分支}` 后用 `FETCH_HEAD`(不添加 remote,无侵入)
|
|
195
|
+
3. 兜底(现行为):`origin/{defaultBranch}`(注意:fork 的默认分支可能落后上游,导致多算与上游的同步提交——发现基线包含大量非本次修改的提交时,改用方式 2 并在报告标注)
|
|
196
|
+
|
|
197
|
+
**已推送场景**(Phase 1.7 判定"已推送(一致)"):`git status`/`git diff` 全空属预期,修改点**全部来自 `git log {diffBase}..HEAD` + `git diff --stat {diffBase}..HEAD`**(已推送提交的文件级变化);同时用 `git rev-list --count origin/{当前分支}..HEAD` 应为 0 佐证。
|
|
198
|
+
|
|
199
|
+
> 注意:若用户已在某分支做过提交,不要重复提交;只需 `git log` 提取已有提交。
|
|
200
|
+
|
|
201
|
+
### 2.2 归纳修改点清单
|
|
202
|
+
|
|
203
|
+
对每个修改文件/提交,整理为:
|
|
204
|
+
|
|
205
|
+
| 序号 | 文件路径 | 修改类型(新增/修改/删除) | 修改说明 |
|
|
206
|
+
|------|---------|--------------------------|---------|
|
|
207
|
+
|
|
208
|
+
修改说明需具体(如"新增 ImageCropPicker.openPicker 的 crop 场景 CPTF 用例 12 条"),避免笼统的"更新文件"。
|
|
209
|
+
|
|
210
|
+
### 2.3 生成提交文案
|
|
211
|
+
|
|
212
|
+
- `commitMessage`(未提供时):一句话概括 + 修改点数量,如 `feat: 补充 image-crop-picker 裁剪场景 CPTF 用例并完善 demo`
|
|
213
|
+
- PR 标题:`{commitMessage 摘要}`(不加 `[auto]` 之类前缀)
|
|
214
|
+
- Issue 标题与分类:先按修改性质归类,再按 Phase 1.6 探测结果决定标题格式。**禁止使用 `[auto]` 等无意义前缀**
|
|
215
|
+
|
|
216
|
+
**修改性质归类**(六选一,取最贴近项):
|
|
217
|
+
|
|
218
|
+
| 分类 | 适用场景 |
|
|
219
|
+
|------|---------|
|
|
220
|
+
| `新需求` | 新增/补充 demo 演示、示例页面、用例展示、新功能 |
|
|
221
|
+
| `bug` | 缺陷修复 |
|
|
222
|
+
| `咨询` | 问题咨询、方案确认类 |
|
|
223
|
+
| `文档` | README/文档/注释类改进 |
|
|
224
|
+
| `工程化改进` | CI 配置、构建脚本、工程结构类改进 |
|
|
225
|
+
| `代码重构` | 不改变行为、仅改善结构的重构 |
|
|
226
|
+
|
|
227
|
+
**标题格式(按 Phase 1.6 探测结果)**:
|
|
228
|
+
|
|
229
|
+
- **无模板(source: none,cpf-rn / cpf-flutter 等)**:`[类型] {摘要}`(与 [PR_CHECKLIST.md](assets/PR_CHECKLIST.md) 示例一致,如 `[Bug] ScrollView 在 xxx 场景上滑动卡顿`),类型取 `Bug` / `新需求` / `咨询` / `文档` / `工程化` / `重构` 六选一
|
|
230
|
+
- **有模板**:从 `templates[]` 中选与修改性质最贴近的模板(映射见下表),标题按该模板 `title` 字段的格式生成:
|
|
231
|
+
|
|
232
|
+
| 修改性质 | 模板 name(参考) | 模板 title 格式(参考) |
|
|
233
|
+
|---------|------------------|------------------------|
|
|
234
|
+
| 新需求 | `新需求\|Feature` | `[新需求]: {摘要}` |
|
|
235
|
+
| bug | `缺陷反馈\|Bug` | `[Bug]: 【等级:严重/一般/提示】【分类:稳定性/性能/功能/工程/工具】【三方库版本】【组件】【属性】问题描述` —— 各 `【】` 占位需按实际情况填充真实值 |
|
|
236
|
+
| 咨询 | `问题咨询\|Question` | `[Question]: {摘要}` |
|
|
237
|
+
| 文档 | `文档资料\|Document` | `[Document]: {摘要}` |
|
|
238
|
+
| 工程化改进 | `工程化改进\|Engineering` | `[Engineering]: {摘要}` |
|
|
239
|
+
| 代码重构 | `代码重构\|Refactor` | `[Refactor]: {摘要}` |
|
|
240
|
+
|
|
241
|
+
> 表中模板 name/title 为 `CPF-ApplicationTPC/.gitcode` 组织模板实测值,**以 Phase 1.6 实际拉取的 `templates[].title` 为准**(各仓库/组织可能自定义);找不到贴近模板时回退无模板格式并在报告标注。
|
|
242
|
+
> Bug 模板标题等级判定参考:崩溃/功能不可用=严重,功能异常但有绕过=一般,体验/提示类=提示。
|
|
243
|
+
- PR/Issue body:PR body **所有仓库统一按 [PR_CHECKLIST.md](assets/PR_CHECKLIST.md) 的 PR 描述模板**生成(修改点/根因分析/方案说明/测试情况/资料修改/依赖变更/Checklist,删除不适用章节);Issue body 无模板时按 PR_CHECKLIST 的 Issue 必填字段结构填写,有模板时按 Phase 3.1 规则渲染模板;body 内容一律写入 `/tmp` 临时文件,流程结束后删除,**不得写入工作目录**
|
|
244
|
+
|
|
245
|
+
### 2.4 判定是否需要更新 CHANGELOG
|
|
246
|
+
|
|
247
|
+
逐条审视 2.2 的修改点清单,按涉及范围判定:
|
|
248
|
+
|
|
249
|
+
| 判定 | 涉及范围(示例) | 结果 |
|
|
250
|
+
|------|------------------|------|
|
|
251
|
+
| **需要** | **三方库内部源码**:库源码目录(如 `library/`、`src/` 主代码)、harmony 模块、package 业务代码、进入交付产物的缺陷修复/行为变更 | Phase 4 更新 CHANGELOG |
|
|
252
|
+
| **不需要** | demo/example 页面、测试用例、README 等文档、CI 配置、注释等**不涉及三方库内部**的修改 | 跳过,报告记录"未修改三方库内部源码,跳过 CHANGELOG" |
|
|
253
|
+
|
|
254
|
+
边界拿不准或用户传了 `changelog` 参数时,以用户为准。
|
|
255
|
+
|
|
256
|
+
> CHANGELOG 格式遵循 [Keep a Changelog](https://keepachangelog.com/)(与 `rn-lib-update-doc` SKILL 的 Step 6 约定一致)。
|
|
257
|
+
|
|
258
|
+
### 2.5 判定测试用例同步情况(PR_CHECKLIST 硬性要求)
|
|
259
|
+
|
|
260
|
+
[PR_CHECKLIST.md](assets/PR_CHECKLIST.md) 要求:**修复代码与对应测试用例必须同时提交,不接受无测试的 PR**。对 Phase 2.2 修改点清单逐条判定:
|
|
261
|
+
|
|
262
|
+
1. **识别测试类修改**:路径命中测试/用例特征即算——`test/`、`__tests__/`、`ohosTest/`、`integration_test/`、`*.test.*`、`*.spec.*`、CPTF/demo 用例文件、`example/` 下的用例页面(新增 demo 演示/用例补充类提交,其本身即测试资产)
|
|
263
|
+
2. **识别库内部源码修改**:`library/`、`src/`、harmony 模块、package 主代码(与 2.4 的 CHANGELOG 判定同口径)
|
|
264
|
+
3. 按组合处置:
|
|
265
|
+
|
|
266
|
+
| 情况 | 处置 |
|
|
267
|
+
|------|------|
|
|
268
|
+
| 含测试类修改(含"本次即用例补充") | 通过;PR body「测试情况」列出新增用例清单 |
|
|
269
|
+
| 仅库内部源码修改(bug 修复类)、无任何测试 | **终止并报告**:说明"按 PR 提交 checklist,修复代码与测试用例必须同步提交",引导先补用例再重跑本流程 |
|
|
270
|
+
| 已有测试可覆盖(工作区存在能覆盖本次修改的测试文件,但本次未改动) | 通过;PR body「触发的已有测试用例」列出文件与分支 |
|
|
271
|
+
| 纯文档/工程化/CI 配置类(不涉及行为变更) | 通过;PR body 删除测试小节并标注"不适用" |
|
|
272
|
+
|
|
273
|
+
> 判定拿不准时(如源码修改是否属行为变更存疑),**从严处理**:终止并在报告中说明存疑点,交由人工确认。
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Phase 3:创建 Issue
|
|
278
|
+
|
|
279
|
+
> **必须在提交与 PR 之前创建**:CHANGELOG 条目(Phase 4)与 PR body(Phase 6)都要引用 Issue 编号/链接;绑定关系必须创建时写入,后续 PATCH PR 可能因权限不足失败。
|
|
280
|
+
|
|
281
|
+
### 3.1 生成 Issue body(按 Phase 1.6 探测结果二选一)
|
|
282
|
+
|
|
283
|
+
**无模板(source: none)** → 按 [assets/PR_ISSUE_TEMPLATE.md](assets/PR_ISSUE_TEMPLATE.md) 的 Issue Body 默认模板(字段与 PR_CHECKLIST 的 Issue 必填内容对齐):问题描述、复现步骤、预期结果、实际结果、复现概率、环境信息、DEMO(如有)、日志/截图(如有)、影响范围 + 修改点清单。**bug 类**复现步骤/预期/实际/复现概率必填;**需求/咨询类**删除不适用小节。环境信息中库版本从 `workspaceDir` 的 `oh-package.json5` / `package.json` 读取,其余可得的如实填写、不可得写"未提供"。
|
|
284
|
+
|
|
285
|
+
**有模板** → 按选中模板的 `yaml` 中 `body[]` 字段**逐项渲染**为 markdown(GitCode API 的 body 是纯 markdown,网页端模板表单即由此生成):
|
|
286
|
+
|
|
287
|
+
1. `type: markdown` 项 → 原样输出 `value`(通常是致谢/说明文字)
|
|
288
|
+
2. `type: textarea` / `type: input` 项 → 输出 `### {label}` 小节;`description`/`placeholder` 有助于理解字段意图时以引用块附上;正文填**真实内容**(基于 Phase 2 修改点总结),非必填且无合适内容时填 `无`
|
|
289
|
+
3. `validations.required: true` 的字段**必须填充真实内容,禁止留空/原样保留 placeholder**
|
|
290
|
+
4. `type: checkboxes` 项 → 逐条输出 `- [x] {label}`(自动提交场景默认全部勾选)
|
|
291
|
+
5. 模板字段之外的补充内容(修改点清单、PR 关联说明、自动创建标记)统一追加到 body 末尾的 `---` 分隔线之后
|
|
292
|
+
|
|
293
|
+
渲染示例与各类型字段的映射细节见 [assets/PR_ISSUE_TEMPLATE.md](assets/PR_ISSUE_TEMPLATE.md)「Issue 模板渲染规则」章节。
|
|
294
|
+
|
|
295
|
+
### 3.2 创建 Issue
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
node scripts/gitcode-api.cjs create-issue \
|
|
299
|
+
--token "$GIT_TOKEN" --owner {upstreamOwner} --repo {repo} \
|
|
300
|
+
--title "{issue标题,按 2.3 规则}" --body-file /tmp/issue-body.md \
|
|
301
|
+
--labels "{模板 labels 逗号分隔}"
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
- body 内容:按 3.1 生成(无模板时 = PR_CHECKLIST 字段结构 + Phase 2 修改点清单;有模板时 = 模板逐项渲染)
|
|
305
|
+
- `--labels`(可选):有模板时传该模板的 `labels`(如 `bug,triage`);无模板仓库可按分类传(`bug` / `feature` 等,可选);脚本对 labels 不被接受的情况会自动去掉重试,不影响创建
|
|
306
|
+
- 记录返回的 `number`(Issue 编号),Phase 4 与 Phase 6 使用
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## Phase 4:更新 CHANGELOG(仅当三方库内部源码有修改)
|
|
311
|
+
|
|
312
|
+
按 Phase 2.4 的判定执行(`changelog` 参数为 `true`/`false` 时强制覆盖判定):
|
|
313
|
+
|
|
314
|
+
**判定为"不需要"** → 跳过本阶段,报告中记录"未修改三方库内部源码,跳过 CHANGELOG"。
|
|
315
|
+
|
|
316
|
+
**判定为"需要"** → 在 `{workspaceDir}/CHANGELOG.md` 新增条目:
|
|
317
|
+
|
|
318
|
+
1. 遵循仓库现有 CHANGELOG 格式:Keep a Changelog 格式时写入 `## [Unreleased]` 下对应分类(`### Added` / `### Changed` / `### Fixed` / `### Deprecated`),无该节则创建;仓库为其他格式时遵循现状;无 CHANGELOG.md 时按 Keep a Changelog 新建
|
|
319
|
+
2. 条目描述**使用英文书写**,与 Phase 2 修改点一致,具体到模块/场景(禁止笼统的 "update code")
|
|
320
|
+
3. **条目末尾必须附上 Phase 3 创建的 Issue 链接**:`- {英文描述} ([#{issueNumber}](https://gitcode.com/{upstreamOwner}/{repo}/issues/{issueNumber}))`
|
|
321
|
+
4. 该文件修改随 Phase 5 一并提交(`git add -A` 自然包含)
|
|
322
|
+
|
|
323
|
+
条目示例:
|
|
324
|
+
|
|
325
|
+
```markdown
|
|
326
|
+
## [Unreleased]
|
|
327
|
+
|
|
328
|
+
### Added
|
|
329
|
+
- Add 12 CPTF crop-scenario test cases for image-crop-picker and enhance the demo ([#42](https://gitcode.com/CPF-RN/rntpc_react-native-image-crop-picker/issues/42))
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## Phase 5:在当前分支提交并推送(禁止切换分支)
|
|
335
|
+
|
|
336
|
+
1. `dryRun=true` → 跳过 Phase 3~7,直接进 Phase 8
|
|
337
|
+
2. 设置仓库级提交人(与 Token 用户一致,避免本地全局配置冒名):
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
cd "{workspaceDir}"
|
|
341
|
+
git config user.name "{name}"
|
|
342
|
+
git config user.email "{email}"
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
3. **在当前分支直接提交**(含 Phase 4 的 CHANGELOG 修改)。**禁止 `git checkout -b` / `git switch` 创建或切换分支**:
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
git add -A
|
|
349
|
+
git commit --signoff -m "{commitMessage}"
|
|
350
|
+
# 仅当工作区完全干净(无待提交内容且有已存在提交)时,跳过 commit
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
4. 推送**当前分支**到 origin(fork 仓库),按 Phase 1.7 判定结果执行:
|
|
354
|
+
|
|
355
|
+
| 1.7 判定 | 执行 |
|
|
356
|
+
|----------|------|
|
|
357
|
+
| 已推送(一致) | **跳过 push**(报告注明"分支已推送至 fork,跳过"),直接进 Phase 6 |
|
|
358
|
+
| 本地领先 | `git push -u origin HEAD` |
|
|
359
|
+
| 远端领先/分叉 | 应已在 1.7 终止;此处兜底**禁止 `--force` 强推**,终止并报告 |
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
git push -u origin HEAD
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
push 报 non-fast-forward(rejections/远端有新提交)→ 同分叉处理:**禁止 force push、禁止自动 pull/rebase 合并**,保留现场终止报告,由用户决定。
|
|
366
|
+
|
|
367
|
+
推送失败(fork 无写权限/无 fork remote)→ 参照 [GitCode API 参考](references/GITCODE_API.md) 的"Fork 模式"章节,用 Token Fork 后添加 remote 再推,仍推送当前分支。
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## Phase 6:从 fork 向源仓库创建绑定 Issue 的 PR
|
|
372
|
+
|
|
373
|
+
### 6.1 生成 PR body(按 PR_CHECKLIST 描述模板,所有仓库通用)
|
|
374
|
+
|
|
375
|
+
按 [assets/PR_ISSUE_TEMPLATE.md](assets/PR_ISSUE_TEMPLATE.md)「PR Body 模板」生成,章节包括:修改点、根因分析(需求/文档类删除)、方案说明(AI输出,含影响范围/兼容性分析)、测试情况(新增用例 / 触发的已有用例 / 手动验证,按 Phase 2.5 判定结果填写)、资料修改、依赖关系变更、关联 Issue、Checklist。
|
|
376
|
+
|
|
377
|
+
- **删除不适用的章节**(checklist 模板自身约定),不适用而非必删时标注原因
|
|
378
|
+
- Checklist 勾选原则:本流程能保证/已验证的项勾选 `[x]`;**AI 扫描、手动验证等需外部确认的项保持 `[ ]` 并括注说明,禁止无凭据全勾**(上游已跑 pr-check 扫描时方可勾选 AI 扫描项)
|
|
379
|
+
- 测试工程名按实际填写(RN 库为 RNT 工程,Flutter 库为对应测试工程)
|
|
380
|
+
|
|
381
|
+
### 6.2 创建 PR
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
node scripts/gitcode-api.cjs create-pr \
|
|
385
|
+
--token "$GIT_TOKEN" --owner {forkOwner} --repo {repo} \
|
|
386
|
+
--head "{当前分支名}" --base "{Phase 1.5 确定的上游 base 分支}" \
|
|
387
|
+
--title "{pr标题}" --body-file /tmp/pr-body.md \
|
|
388
|
+
--fork-repo "{upstreamOwner}/{repo}" --target-project-id "{源仓库 project_id}"
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
关键规则(详细踩坑说明见 [GitCode API 参考](references/GITCODE_API.md)):
|
|
392
|
+
|
|
393
|
+
1. **PR 方向恒为 fork → 源仓库(上游)**:调用 fork 仓库的 pulls API,**必须传 `--fork-repo`(源仓库路径)和 `--target-project-id`(源仓库 id)**,否则 PR 变成 fork 仓库内部 PR,源仓库不可见。**禁止**向 fork 自身提 PR
|
|
394
|
+
2. **`head` = 当前分支**(Phase 1.1 记录,随推送更新到 fork);**`base` = Phase 1.5 确定的上游分支**,不默认使用 `default_branch`
|
|
395
|
+
3. PR body 中**必须**包含 `Closes #{issue_number}`(创建时写入,不事后 PATCH)
|
|
396
|
+
4. body 从 `--body-file` 读取,脚本内部以 UTF-8 form-encoded 发送,避免中文乱码
|
|
397
|
+
5. **返回 409 兜底**:同一 source branch 只能有 1 个 open PR(正常已在 Phase 1.7 幂等检测拦截);若仍遇 409,用 `list-prs --owner {upstreamOwner} --repo {repo} --state open --head {当前分支}` 找回已有 PR 链接写入报告,终止(不重复创建)
|
|
398
|
+
|
|
399
|
+
验证:检查响应 `target_project.path_with_namespace` 是否为源仓库(`{upstreamOwner}/{repo}`);记录 PR `number` 与网页地址(格式 `https://gitcode.com/{upstreamOwner}/{repo}/merge_requests/{number}`)。
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
## Phase 7:评论 Start build 触发 CI
|
|
404
|
+
|
|
405
|
+
在**源仓库(上游)**的 PR 下评论(注意 owner/repo 用源仓库,不是 fork):
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
node scripts/gitcode-api.cjs comment-pr \
|
|
409
|
+
--token "$GIT_TOKEN" --owner {upstreamOwner} --repo {repo} \
|
|
410
|
+
--pr "{prNumber}" --body "Start build"
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
记录评论是否成功(报告的 CI 状态字段)。
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## Phase 8:生成报告
|
|
418
|
+
|
|
419
|
+
在 `{workspaceDir}` 下生成 `ohos-lib-pr-push-report.md`——**这是整个流程在工作目录产出的唯一文档**(Issue/PR body 等中间文件一律放 `/tmp` 并在流程结束后删除),模板见 [assets/PR_ISSUE_TEMPLATE.md](assets/PR_ISSUE_TEMPLATE.md),包含:
|
|
420
|
+
|
|
421
|
+
- 基本信息(仓库、分支、时间、模式:直推/Fork、**分支推送状态**:新推送 / 已推送跳过 / 分叉终止)
|
|
422
|
+
- 执行结果(PR 地址与编号、Issue 地址与编号、Issue 绑定状态、CI 触发状态)
|
|
423
|
+
- 幂等检测(Phase 1.7 结果:未发现已有 open PR / 发现并终止(附已有 PR 链接))
|
|
424
|
+
- Issue 模板使用情况(有模板:`{模板 name}`(来源:仓库级/组织级)+ 渲染的标题;无模板:标注"仓库未配置 Issue 模板,使用默认规范字段(PR_CHECKLIST 对齐)")
|
|
425
|
+
- 测试同步情况(Phase 2.5 判定结果:新增用例 N 条 / 已有用例覆盖 / 本次即用例补充 / 不适用原因;被门禁拦截时说明原因与引导)
|
|
426
|
+
- AI 扫描状态(已通过(上游 pr-check)/ 未执行——PR body 已如实括注)
|
|
427
|
+
- CHANGELOG 状态(已更新并附 Issue 链接;或跳过及原因,如"未修改三方库本身内容")
|
|
428
|
+
- 修改文件清单(Phase 2 成果)
|
|
429
|
+
- 错误信息(如有)
|
|
430
|
+
|
|
431
|
+
> **Token 安全**:报告中不得出现 Token 明文。
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
## 注意事项
|
|
436
|
+
|
|
437
|
+
- **只发布不修改**:发现代码问题应停下报告,不顺手改代码
|
|
438
|
+
- **幂等与推送状态**(Phase 1.7):已推送到 fork 未提 PR 属正常输入——跳过 commit/push 直接建 Issue/PR;远端分叉时**禁止 force push / 自动 pull / rebase**,终止交由用户处理;发现已有同源 open PR 时终止并报告链接,不重复建产物
|
|
439
|
+
- **PR 方向**:恒为 fork → 源仓库(上游)。Issue 建、PR 提、CI 评论均在**源仓库**进行;禁止提交到 fork 自身
|
|
440
|
+
- **分支不变**:当前在哪个分支,就在该分支提交、推送并作为 PR head;禁止 `checkout -b`/`git switch` 创建或切换分支(用户明确指定 `branchName` 并说明目标时除外)
|
|
441
|
+
- **修改点先行**:Issue/PR 的标题与 body 必须基于 Phase 2 的真实修改总结,禁止编造
|
|
442
|
+
- **CHANGELOG 条件更新**:仅当修改了**三方库内部源码**(如 `library/` 目录、harmony 模块、交付产物行为变更)才更新 CHANGELOG,条目使用**英文**描述且必须附 Issue 链接;demo 页面、测试用例、文档、CI 配置等不涉及库内部的修改一律跳过并在报告说明原因
|
|
443
|
+
- **Issue 模板优先**:Phase 1.6 探测到模板时(如 CPF-ApplicationTPC),Issue 标题与 body **必须按模板渲染**(title 格式 + body 字段逐项填充),不得再用默认格式;模板 `required` 字段必须填真实内容。两种情况都禁止 `[auto]` 等无意义前缀
|
|
444
|
+
- **Issue 分类与标题**:修改性质六分类(新需求/bug/咨询/文档/工程化改进/代码重构);有模板时映射到 `templates[]` 中最贴近的模板并按其 title 格式;无模板时(cpf-rn / cpf-flutter 等)用 `[类型] {摘要}` 格式(如 `[Bug] {摘要}`),body 按 PR_CHECKLIST 的 Issue 必填字段结构
|
|
445
|
+
- **PR checklist 硬性要求**:PR body **所有仓库统一**按 [PR_CHECKLIST.md](assets/PR_CHECKLIST.md) 描述模板(修改点/根因分析/方案说明/测试情况/资料修改/依赖变更/Checklist);**修复代码与测试用例必须同步提交**(Phase 2.5 门禁,无测试的源码修复终止并报告);Checklist 中 AI 扫描/手动验证等外部确认项保持 `[ ]` 并括注,禁止无凭据全勾
|
|
446
|
+
- **单一产出到工作目录**:整个流程只允许在 `{workspaceDir}` 下生成 `ohos-lib-pr-push-report.md` 一个文档;Issue/PR body 等中间文件一律放 `/tmp`,流程结束后删除
|
|
447
|
+
- **Monorepo**:PR body 中标注子库路径;分支名建议带子库名前缀
|
|
448
|
+
- **顺序不可颠倒**:Issue(Phase 3)→ CHANGELOG(Phase 4)→ 提交推送(Phase 5)→ PR(Phase 6)→ CI 评论(Phase 7)
|
|
449
|
+
- **失败恢复**:某步失败时保留已完成产物的编号与链接写入报告,终止后续步骤;重跑前先走 Phase 1.7 幂等检测(可拦住"PR 已建"的重复);"Issue 已建、PR 未建"的中间态无法自动识别,重跑会重复建 Issue,此类情形需人工确认
|
|
450
|
+
|
|
451
|
+
## 流程步骤顺序速查
|
|
452
|
+
|
|
453
|
+
1. 确定工作区 + fork/上游关系 + 当前分支 → 2. 确定 Token(用户传入 or `Server/.env` 的 `GIT_TOKEN`)→ 3. 获取用户与源仓库信息(project_id、base 分支探测)→ 4. **探测 Issue 模板(仓库级 → 组织级 `{owner}/.gitcode`;CPF-ApplicationTPC 有组织模板,cpf-rn/cpf-flutter 无 → 默认规范格式)** → 5. **分支推送状态三态判定 + open PR 幂等检测(已推送未提 PR → 跳过 commit/push;分叉 → 终止禁强推;已有 open PR → 终止报链接)** → 6. 总结修改点(基线 `upstream/{base}` 优先,已推送场景从 log+diff 采集;判定 CHANGELOG 必要性 + **测试同步门禁:源码修复无测试即终止**)→ **7. 在源仓库创建 Issue(有模板按模板 title 格式 + body 逐字段渲染;无模板用 `[类型] {摘要}` + PR_CHECKLIST 字段结构 body)** → 8. 更新 CHANGELOG(仅三方库内部源码有修改时,英文条目带 Issue 链接)→ 9. **在当前分支提交并推送到 fork(禁止切分支;已推送则跳过;分叉禁强推)** → 10. 从 fork 向源仓库创建 PR(head=当前分支, base=上游对应分支, **body 按 PR_CHECKLIST 描述模板**,含 `Closes #{issue_number}`,Checklist 如实勾选;409 用 list-prs 兜底)→ 11. 在源仓库评论 Start build → 12. 生成报告(工作目录唯一产出文档,含推送状态/幂等检测/Issue 模板/测试同步/AI 扫描状态,清理 /tmp 中间文件)
|