@cnbcool/cnb-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/.cnb.yml +37 -0
  2. package/DEVELOPMENT.md +345 -0
  3. package/LICENSE.md +9 -0
  4. package/README.md +119 -0
  5. package/bin/cnb.js +3 -0
  6. package/cag.config.js +57 -0
  7. package/downloads/1773729361207-dsfgely.png +0 -0
  8. package/package.json +20 -0
  9. package/skills/artifact-migrate/README.md +79 -0
  10. package/skills/artifact-migrate/SKILL.md +674 -0
  11. package/skills/auto-code/SKILL.md +71 -0
  12. package/skills/auto-code/hooks/hooks.json +15 -0
  13. package/skills/cnb-code-import/LICENSE +20 -0
  14. package/skills/cnb-code-import/README.md +311 -0
  15. package/skills/cnb-code-import/SKILL.md +368 -0
  16. package/skills/cnb-code-import/scripts/migrate.sh +371 -0
  17. package/skills/cnb-skill/SKILL.md +100 -0
  18. package/skills/cnb-skill/scripts/core/config/cag.config.js +57 -0
  19. package/skills/cnb-skill/scripts/core/convertLink.js +140 -0
  20. package/skills/cnb-skill/scripts/core/core.js +97 -0
  21. package/skills/cnb-skill/scripts/core/fetch-response-handler.js +34 -0
  22. package/skills/cnb-skill/scripts/core/help.json +35199 -0
  23. package/skills/cnb-skill/scripts/core/index.d.js +6 -0
  24. package/skills/cnb-skill/scripts/core/index.js +337 -0
  25. package/skills/cnb-skill/scripts/core/modules.help.js +40 -0
  26. package/skills/cnb-skill/scripts/core/schemaToJson.d.js +5 -0
  27. package/skills/cnb-skill/scripts/core/schemaToJson.js +32 -0
  28. package/skills/cnb-skill/scripts/core/shortcuts.js +247 -0
  29. package/skills/cnb-skill/scripts/core/tools.help.js +116 -0
  30. package/skills/cnb-skill/scripts/core/utils/convert-link.js +144 -0
  31. package/skills/cnb-skill/scripts/core/utils/generate-unique-id.js +10 -0
  32. package/skills/cnb-skill/scripts/modules/activities/get-user-activities-by-date.js +76 -0
  33. package/skills/cnb-skill/scripts/modules/activities/get-user-repo-activity-details.js +78 -0
  34. package/skills/cnb-skill/scripts/modules/activities/top-contributors.js +76 -0
  35. package/skills/cnb-skill/scripts/modules/ai/ai-auto-pr.js +70 -0
  36. package/skills/cnb-skill/scripts/modules/ai/ai-chat-completions.js +70 -0
  37. package/skills/cnb-skill/scripts/modules/assets/delete-asset.js +76 -0
  38. package/skills/cnb-skill/scripts/modules/assets/get-files.js +76 -0
  39. package/skills/cnb-skill/scripts/modules/assets/get-imgs.js +76 -0
  40. package/skills/cnb-skill/scripts/modules/assets/list-assets.js +76 -0
  41. package/skills/cnb-skill/scripts/modules/badge/get-badge.js +80 -0
  42. package/skills/cnb-skill/scripts/modules/badge/list-badge.js +70 -0
  43. package/skills/cnb-skill/scripts/modules/badge/upload-badge.js +70 -0
  44. package/skills/cnb-skill/scripts/modules/build/build-crontab-sync.js +75 -0
  45. package/skills/cnb-skill/scripts/modules/build/build-logs-delete.js +75 -0
  46. package/skills/cnb-skill/scripts/modules/build/build-runner-download-log.js +75 -0
  47. package/skills/cnb-skill/scripts/modules/build/get-build-logs.js +76 -0
  48. package/skills/cnb-skill/scripts/modules/build/get-build-stage.js +79 -0
  49. package/skills/cnb-skill/scripts/modules/build/get-build-status.js +75 -0
  50. package/skills/cnb-skill/scripts/modules/build/start-build.js +70 -0
  51. package/skills/cnb-skill/scripts/modules/build/stop-build.js +75 -0
  52. package/skills/cnb-skill/scripts/modules/charge/get-special-amount.js +68 -0
  53. package/skills/cnb-skill/scripts/modules/event/get-events.js +74 -0
  54. package/skills/cnb-skill/scripts/modules/followers/get-followers-by-user-id.js +76 -0
  55. package/skills/cnb-skill/scripts/modules/followers/get-following-by-user-id.js +76 -0
  56. package/skills/cnb-skill/scripts/modules/git/create-blob.js +70 -0
  57. package/skills/cnb-skill/scripts/modules/git/create-branch-lock.js +75 -0
  58. package/skills/cnb-skill/scripts/modules/git/create-branch.js +70 -0
  59. package/skills/cnb-skill/scripts/modules/git/create-tag.js +70 -0
  60. package/skills/cnb-skill/scripts/modules/git/delete-branch-lock.js +75 -0
  61. package/skills/cnb-skill/scripts/modules/git/delete-branch.js +75 -0
  62. package/skills/cnb-skill/scripts/modules/git/delete-commit-annotation.js +77 -0
  63. package/skills/cnb-skill/scripts/modules/git/delete-commit-asset.js +77 -0
  64. package/skills/cnb-skill/scripts/modules/git/delete-tag-annotation.js +75 -0
  65. package/skills/cnb-skill/scripts/modules/git/delete-tag.js +75 -0
  66. package/skills/cnb-skill/scripts/modules/git/get-archive-commit-changed-files.js +75 -0
  67. package/skills/cnb-skill/scripts/modules/git/get-archive-compare-changed-files.js +75 -0
  68. package/skills/cnb-skill/scripts/modules/git/get-archive.js +75 -0
  69. package/skills/cnb-skill/scripts/modules/git/get-branch.js +75 -0
  70. package/skills/cnb-skill/scripts/modules/git/get-commit-annotations-in-batch.js +70 -0
  71. package/skills/cnb-skill/scripts/modules/git/get-commit-annotations.js +75 -0
  72. package/skills/cnb-skill/scripts/modules/git/get-commit-assets-by-sha.js +75 -0
  73. package/skills/cnb-skill/scripts/modules/git/get-commit-assets.js +80 -0
  74. package/skills/cnb-skill/scripts/modules/git/get-commit-statuses.js +75 -0
  75. package/skills/cnb-skill/scripts/modules/git/get-commit.js +75 -0
  76. package/skills/cnb-skill/scripts/modules/git/get-compare-commits.js +75 -0
  77. package/skills/cnb-skill/scripts/modules/git/get-content-without-path.js +76 -0
  78. package/skills/cnb-skill/scripts/modules/git/get-content.js +78 -0
  79. package/skills/cnb-skill/scripts/modules/git/get-head.js +67 -0
  80. package/skills/cnb-skill/scripts/modules/git/get-presigned-lfs-download-link.js +78 -0
  81. package/skills/cnb-skill/scripts/modules/git/get-raw.js +78 -0
  82. package/skills/cnb-skill/scripts/modules/git/get-tag-annotations.js +75 -0
  83. package/skills/cnb-skill/scripts/modules/git/get-tag.js +75 -0
  84. package/skills/cnb-skill/scripts/modules/git/list-branches.js +76 -0
  85. package/skills/cnb-skill/scripts/modules/git/list-commits.js +76 -0
  86. package/skills/cnb-skill/scripts/modules/git/list-tags.js +76 -0
  87. package/skills/cnb-skill/scripts/modules/git/post-commit-asset-upload-confirmation.js +82 -0
  88. package/skills/cnb-skill/scripts/modules/git/post-commit-asset-upload-url.js +78 -0
  89. package/skills/cnb-skill/scripts/modules/git/put-commit-annotations.js +78 -0
  90. package/skills/cnb-skill/scripts/modules/git/put-tag-annotations.js +78 -0
  91. package/skills/cnb-skill/scripts/modules/git-settings/delete-branch-protection.js +75 -0
  92. package/skills/cnb-skill/scripts/modules/git-settings/get-branch-protection.js +75 -0
  93. package/skills/cnb-skill/scripts/modules/git-settings/get-pipeline-settings.js +67 -0
  94. package/skills/cnb-skill/scripts/modules/git-settings/get-pull-request-settings.js +67 -0
  95. package/skills/cnb-skill/scripts/modules/git-settings/get-push-limit-settings.js +67 -0
  96. package/skills/cnb-skill/scripts/modules/git-settings/list-branch-protections.js +67 -0
  97. package/skills/cnb-skill/scripts/modules/git-settings/patch-branch-protection.js +78 -0
  98. package/skills/cnb-skill/scripts/modules/git-settings/post-branch-protection.js +70 -0
  99. package/skills/cnb-skill/scripts/modules/git-settings/put-pipeline-settings.js +70 -0
  100. package/skills/cnb-skill/scripts/modules/git-settings/put-pull-request-settings.js +70 -0
  101. package/skills/cnb-skill/scripts/modules/git-settings/put-push-limit-settings.js +70 -0
  102. package/skills/cnb-skill/scripts/modules/issues/can-user-be-assigned-to-issue.js +77 -0
  103. package/skills/cnb-skill/scripts/modules/issues/create-issue.js +70 -0
  104. package/skills/cnb-skill/scripts/modules/issues/delete-issue-assignees.js +78 -0
  105. package/skills/cnb-skill/scripts/modules/issues/delete-issue-label.js +77 -0
  106. package/skills/cnb-skill/scripts/modules/issues/delete-issue-labels.js +75 -0
  107. package/skills/cnb-skill/scripts/modules/issues/get-issue-comment.js +77 -0
  108. package/skills/cnb-skill/scripts/modules/issues/get-issue.js +75 -0
  109. package/skills/cnb-skill/scripts/modules/issues/list-issue-activities-latest.js +77 -0
  110. package/skills/cnb-skill/scripts/modules/issues/list-issue-activities.js +78 -0
  111. package/skills/cnb-skill/scripts/modules/issues/list-issue-assignees.js +75 -0
  112. package/skills/cnb-skill/scripts/modules/issues/list-issue-comments.js +78 -0
  113. package/skills/cnb-skill/scripts/modules/issues/list-issue-labels.js +78 -0
  114. package/skills/cnb-skill/scripts/modules/issues/list-issues.js +76 -0
  115. package/skills/cnb-skill/scripts/modules/issues/patch-issue-assignees.js +78 -0
  116. package/skills/cnb-skill/scripts/modules/issues/patch-issue-comment.js +80 -0
  117. package/skills/cnb-skill/scripts/modules/issues/post-issue-assignees.js +78 -0
  118. package/skills/cnb-skill/scripts/modules/issues/post-issue-comment.js +78 -0
  119. package/skills/cnb-skill/scripts/modules/issues/post-issue-labels.js +78 -0
  120. package/skills/cnb-skill/scripts/modules/issues/put-issue-labels.js +78 -0
  121. package/skills/cnb-skill/scripts/modules/issues/update-issue-properties.js +79 -0
  122. package/skills/cnb-skill/scripts/modules/issues/update-issue.js +78 -0
  123. package/skills/cnb-skill/scripts/modules/knowledge-base/delete-knowledge-base.js +67 -0
  124. package/skills/cnb-skill/scripts/modules/knowledge-base/get-knowledge-base-info.js +67 -0
  125. package/skills/cnb-skill/scripts/modules/knowledge-base/get-models.js +67 -0
  126. package/skills/cnb-skill/scripts/modules/knowledge-base/query-knowledge-base.js +70 -0
  127. package/skills/cnb-skill/scripts/modules/members/add-members-of-group.js +78 -0
  128. package/skills/cnb-skill/scripts/modules/members/add-members-of-mission.js +78 -0
  129. package/skills/cnb-skill/scripts/modules/members/add-members-of-registry.js +78 -0
  130. package/skills/cnb-skill/scripts/modules/members/add-members-of-repo.js +78 -0
  131. package/skills/cnb-skill/scripts/modules/members/delete-members-of-group.js +75 -0
  132. package/skills/cnb-skill/scripts/modules/members/delete-members-of-repo.js +75 -0
  133. package/skills/cnb-skill/scripts/modules/members/delete-outside-collaborators.js +75 -0
  134. package/skills/cnb-skill/scripts/modules/members/get-member-access-level-of-group.js +76 -0
  135. package/skills/cnb-skill/scripts/modules/members/get-member-access-level-of-repo.js +76 -0
  136. package/skills/cnb-skill/scripts/modules/members/list-all-members.js +76 -0
  137. package/skills/cnb-skill/scripts/modules/members/list-inherit-members-of-group.js +76 -0
  138. package/skills/cnb-skill/scripts/modules/members/list-inherit-members-of-repo.js +76 -0
  139. package/skills/cnb-skill/scripts/modules/members/list-member-access-level-of-group.js +75 -0
  140. package/skills/cnb-skill/scripts/modules/members/list-member-access-level-of-repo.js +75 -0
  141. package/skills/cnb-skill/scripts/modules/members/list-members-of-group.js +76 -0
  142. package/skills/cnb-skill/scripts/modules/members/list-members-of-repo.js +76 -0
  143. package/skills/cnb-skill/scripts/modules/members/list-outside-collaborators.js +76 -0
  144. package/skills/cnb-skill/scripts/modules/members/update-members-of-group.js +78 -0
  145. package/skills/cnb-skill/scripts/modules/members/update-members-of-repo.js +78 -0
  146. package/skills/cnb-skill/scripts/modules/members/update-outside-collaborators.js +78 -0
  147. package/skills/cnb-skill/scripts/modules/missions/create-mission.js +70 -0
  148. package/skills/cnb-skill/scripts/modules/missions/delete-mission.js +67 -0
  149. package/skills/cnb-skill/scripts/modules/missions/get-group-sub-missions.js +76 -0
  150. package/skills/cnb-skill/scripts/modules/missions/get-mission-view-config.js +76 -0
  151. package/skills/cnb-skill/scripts/modules/missions/get-mission-view-list.js +67 -0
  152. package/skills/cnb-skill/scripts/modules/missions/post-mission-view-config.js +70 -0
  153. package/skills/cnb-skill/scripts/modules/missions/post-mission-view-list.js +70 -0
  154. package/skills/cnb-skill/scripts/modules/missions/put-mission-view-list.js +70 -0
  155. package/skills/cnb-skill/scripts/modules/missions/set-mission-visibility.js +76 -0
  156. package/skills/cnb-skill/scripts/modules/organizations/create-organization.js +66 -0
  157. package/skills/cnb-skill/scripts/modules/organizations/delete-organization.js +67 -0
  158. package/skills/cnb-skill/scripts/modules/organizations/get-group-setting.js +67 -0
  159. package/skills/cnb-skill/scripts/modules/organizations/get-group.js +67 -0
  160. package/skills/cnb-skill/scripts/modules/organizations/get-groups-by-user-id.js +76 -0
  161. package/skills/cnb-skill/scripts/modules/organizations/list-groups.js +76 -0
  162. package/skills/cnb-skill/scripts/modules/organizations/list-subgroups.js +76 -0
  163. package/skills/cnb-skill/scripts/modules/organizations/list-top-groups.js +72 -0
  164. package/skills/cnb-skill/scripts/modules/organizations/transfer-group.js +70 -0
  165. package/skills/cnb-skill/scripts/modules/organizations/update-group-setting.js +70 -0
  166. package/skills/cnb-skill/scripts/modules/organizations/update-organization.js +70 -0
  167. package/skills/cnb-skill/scripts/modules/organizations/upload-logos.js +70 -0
  168. package/skills/cnb-skill/scripts/modules/pulls/can-user-be-assigned-to-pull.js +77 -0
  169. package/skills/cnb-skill/scripts/modules/pulls/delete-pull-assignees.js +78 -0
  170. package/skills/cnb-skill/scripts/modules/pulls/delete-pull-label.js +77 -0
  171. package/skills/cnb-skill/scripts/modules/pulls/delete-pull-labels.js +75 -0
  172. package/skills/cnb-skill/scripts/modules/pulls/delete-repo-files.js +76 -0
  173. package/skills/cnb-skill/scripts/modules/pulls/delete-repo-imgs.js +76 -0
  174. package/skills/cnb-skill/scripts/modules/pulls/get-files.js +75 -0
  175. package/skills/cnb-skill/scripts/modules/pulls/get-imgs.js +75 -0
  176. package/skills/cnb-skill/scripts/modules/pulls/get-pull-comment.js +77 -0
  177. package/skills/cnb-skill/scripts/modules/pulls/get-pull.js +75 -0
  178. package/skills/cnb-skill/scripts/modules/pulls/list-pull-assignees.js +75 -0
  179. package/skills/cnb-skill/scripts/modules/pulls/list-pull-comments.js +78 -0
  180. package/skills/cnb-skill/scripts/modules/pulls/list-pull-commit-statuses.js +75 -0
  181. package/skills/cnb-skill/scripts/modules/pulls/list-pull-commits.js +78 -0
  182. package/skills/cnb-skill/scripts/modules/pulls/list-pull-files.js +75 -0
  183. package/skills/cnb-skill/scripts/modules/pulls/list-pull-labels.js +78 -0
  184. package/skills/cnb-skill/scripts/modules/pulls/list-pull-review-comments.js +80 -0
  185. package/skills/cnb-skill/scripts/modules/pulls/list-pull-reviews.js +78 -0
  186. package/skills/cnb-skill/scripts/modules/pulls/list-pulls-by-numbers.js +76 -0
  187. package/skills/cnb-skill/scripts/modules/pulls/list-pulls.js +76 -0
  188. package/skills/cnb-skill/scripts/modules/pulls/merge-pull.js +78 -0
  189. package/skills/cnb-skill/scripts/modules/pulls/patch-pull-comment.js +80 -0
  190. package/skills/cnb-skill/scripts/modules/pulls/patch-pull.js +78 -0
  191. package/skills/cnb-skill/scripts/modules/pulls/post-pull-assignees.js +78 -0
  192. package/skills/cnb-skill/scripts/modules/pulls/post-pull-comment.js +78 -0
  193. package/skills/cnb-skill/scripts/modules/pulls/post-pull-labels.js +78 -0
  194. package/skills/cnb-skill/scripts/modules/pulls/post-pull-request-review-reply.js +80 -0
  195. package/skills/cnb-skill/scripts/modules/pulls/post-pull-review.js +78 -0
  196. package/skills/cnb-skill/scripts/modules/pulls/post-pull.js +70 -0
  197. package/skills/cnb-skill/scripts/modules/pulls/put-pull-labels.js +78 -0
  198. package/skills/cnb-skill/scripts/modules/pulls/upload-files.js +70 -0
  199. package/skills/cnb-skill/scripts/modules/pulls/upload-imgs.js +70 -0
  200. package/skills/cnb-skill/scripts/modules/rank/get-language-list.js +72 -0
  201. package/skills/cnb-skill/scripts/modules/rank/get-repo-annual-rank.js +72 -0
  202. package/skills/cnb-skill/scripts/modules/rank/get-repo-daily-rank.js +72 -0
  203. package/skills/cnb-skill/scripts/modules/rank/get-repo-monthly-rank.js +72 -0
  204. package/skills/cnb-skill/scripts/modules/rank/get-repo-weekly-rank.js +72 -0
  205. package/skills/cnb-skill/scripts/modules/registries/delete-package-tag.js +80 -0
  206. package/skills/cnb-skill/scripts/modules/registries/delete-package.js +78 -0
  207. package/skills/cnb-skill/scripts/modules/registries/delete-registry.js +67 -0
  208. package/skills/cnb-skill/scripts/modules/registries/get-group-sub-registries.js +76 -0
  209. package/skills/cnb-skill/scripts/modules/registries/get-package-tag-detail.js +83 -0
  210. package/skills/cnb-skill/scripts/modules/registries/get-package.js +78 -0
  211. package/skills/cnb-skill/scripts/modules/registries/list-package-tags.js +81 -0
  212. package/skills/cnb-skill/scripts/modules/registries/list-packages.js +77 -0
  213. package/skills/cnb-skill/scripts/modules/registries/set-registry-visibility.js +76 -0
  214. package/skills/cnb-skill/scripts/modules/releases/delete-release-asset.js +77 -0
  215. package/skills/cnb-skill/scripts/modules/releases/delete-release.js +75 -0
  216. package/skills/cnb-skill/scripts/modules/releases/get-latest-release.js +67 -0
  217. package/skills/cnb-skill/scripts/modules/releases/get-release-asset.js +77 -0
  218. package/skills/cnb-skill/scripts/modules/releases/get-release-by-id.js +75 -0
  219. package/skills/cnb-skill/scripts/modules/releases/get-release-by-tag.js +75 -0
  220. package/skills/cnb-skill/scripts/modules/releases/get-releases-asset.js +80 -0
  221. package/skills/cnb-skill/scripts/modules/releases/list-releases.js +76 -0
  222. package/skills/cnb-skill/scripts/modules/releases/patch-release.js +78 -0
  223. package/skills/cnb-skill/scripts/modules/releases/post-release-asset-upload-confirmation.js +82 -0
  224. package/skills/cnb-skill/scripts/modules/releases/post-release-asset-upload-url.js +78 -0
  225. package/skills/cnb-skill/scripts/modules/releases/post-release.js +70 -0
  226. package/skills/cnb-skill/scripts/modules/repo-code-issue/get-code-issue-detail-open-api.js +76 -0
  227. package/skills/cnb-skill/scripts/modules/repo-code-issue/list-code-issue-open-api.js +77 -0
  228. package/skills/cnb-skill/scripts/modules/repo-contributor/get-repo-contributor-trend.js +76 -0
  229. package/skills/cnb-skill/scripts/modules/repo-labels/delete-label.js +75 -0
  230. package/skills/cnb-skill/scripts/modules/repo-labels/list-labels.js +76 -0
  231. package/skills/cnb-skill/scripts/modules/repo-labels/patch-label.js +78 -0
  232. package/skills/cnb-skill/scripts/modules/repo-labels/post-label.js +70 -0
  233. package/skills/cnb-skill/scripts/modules/repositories/archive-repo.js +67 -0
  234. package/skills/cnb-skill/scripts/modules/repositories/create-repo.js +70 -0
  235. package/skills/cnb-skill/scripts/modules/repositories/delete-repo.js +67 -0
  236. package/skills/cnb-skill/scripts/modules/repositories/get-by-id.js +67 -0
  237. package/skills/cnb-skill/scripts/modules/repositories/get-group-sub-repos.js +76 -0
  238. package/skills/cnb-skill/scripts/modules/repositories/get-pinned-repo-by-group.js +67 -0
  239. package/skills/cnb-skill/scripts/modules/repositories/get-pinned-repo-by-id.js +67 -0
  240. package/skills/cnb-skill/scripts/modules/repositories/get-repos-by-user-name.js +76 -0
  241. package/skills/cnb-skill/scripts/modules/repositories/get-repos.js +72 -0
  242. package/skills/cnb-skill/scripts/modules/repositories/list-forks-repos.js +76 -0
  243. package/skills/cnb-skill/scripts/modules/repositories/set-pinned-repo-by-group.js +70 -0
  244. package/skills/cnb-skill/scripts/modules/repositories/set-repo-visibility.js +76 -0
  245. package/skills/cnb-skill/scripts/modules/repositories/transfer-repo.js +70 -0
  246. package/skills/cnb-skill/scripts/modules/repositories/un-archive-repo.js +67 -0
  247. package/skills/cnb-skill/scripts/modules/repositories/update-repo.js +70 -0
  248. package/skills/cnb-skill/scripts/modules/search/list-public-repos.js +72 -0
  249. package/skills/cnb-skill/scripts/modules/security/get-repo-security-overview.js +76 -0
  250. package/skills/cnb-skill/scripts/modules/starring/get-user-all-stared-repos.js +72 -0
  251. package/skills/cnb-skill/scripts/modules/starring/get-user-stared-repos.js +76 -0
  252. package/skills/cnb-skill/scripts/modules/starring/list-star-users.js +76 -0
  253. package/skills/cnb-skill/scripts/modules/users/auto-complete-source.js +72 -0
  254. package/skills/cnb-skill/scripts/modules/users/get-user-info-by-name.js +67 -0
  255. package/skills/cnb-skill/scripts/modules/users/get-user-info.js +63 -0
  256. package/skills/cnb-skill/scripts/modules/users/list-email.js +63 -0
  257. package/skills/cnb-skill/scripts/modules/users/list-gpg-keys.js +72 -0
  258. package/skills/cnb-skill/scripts/modules/users/update-user-info.js +66 -0
  259. package/skills/cnb-skill/scripts/modules/workspace/delete-workspace.js +66 -0
  260. package/skills/cnb-skill/scripts/modules/workspace/get-workspace-detail.js +75 -0
  261. package/skills/cnb-skill/scripts/modules/workspace/list-workspaces.js +72 -0
  262. package/skills/cnb-skill/scripts/modules/workspace/start-workspace.js +70 -0
  263. package/skills/cnb-skill/scripts/modules/workspace/workspace-stop.js +66 -0
  264. package/skills/code-review/README.md +3 -0
  265. package/skills/code-review/SKILL.md +131 -0
  266. package/skills/code-review/hooks/hooks.json +15 -0
  267. package/skills/diagnose-pr-pipeline/README.md +3 -0
  268. package/skills/diagnose-pr-pipeline/SKILL.md +88 -0
  269. package/skills/dialog-ci-log/README.md +16 -0
  270. package/skills/dialog-ci-log/SKILL.md +41 -0
  271. package/skills/dialog-ci-log/scrips/get-failed-stage-logs.js +124 -0
  272. package/skills/pr-diff/README.md +3 -0
  273. package/skills/pr-diff/SKILL.md +97 -0
  274. package/skills/pr-summary/README.md +3 -0
  275. package/skills/pr-summary/SKILL.md +70 -0
  276. package/skills/tapd-resource-fetcher/README.md +3 -0
  277. package/skills/tapd-resource-fetcher/SKILL.md +97 -0
  278. package/skills/text-path-converter/README.md +3 -0
  279. package/skills/text-path-converter/SKILL.md +30 -0
  280. package/skills/text-path-converter/scripts/convertLink.js +148 -0
  281. package/test.js +1 -0
@@ -0,0 +1,371 @@
1
+ #!/bin/bash
2
+ # CNB Code Import - Migration Script
3
+ # Usage: ./migrate.sh --source-platform <platform> --source-token <token> --cnb-org <org> --cnb-token <token> [options]
4
+
5
+ set -e
6
+
7
+ # 默认工作目录
8
+ DEFAULT_WORKSPACE="$HOME/code-import-workspace"
9
+
10
+ # Default values
11
+ SOURCE_PLATFORM="coding"
12
+ SOURCE_URL=""
13
+ SOURCE_TOKEN=""
14
+ SOURCE_REPO=""
15
+ SOURCE_PROJECT=""
16
+ CNB_URL="https://cnb.cool"
17
+ CNB_ROOT_ORGANIZATION=""
18
+ CNB_TOKEN=""
19
+ MIGRATE_TYPE="team"
20
+ MIGRATE_CONCURRENCY=5
21
+ MIGRATE_FORCE_PUSH="false"
22
+ MIGRATE_REBASE="false"
23
+ MIGRATE_SKIP_EXISTS_REPO="false"
24
+ MIGRATE_USE_LFS_MIGRATE="true"
25
+ MIGRATE_ALLOW_INCOMPLETE_PUSH="false"
26
+ MIGRATE_LOG_LEVEL="info"
27
+ MIGRATE_ALLOW_SELECT_REPOS="false"
28
+ MIGRATE_DOWNLOAD_ONLY="false"
29
+ SOURCE_AK=""
30
+ SOURCE_SK=""
31
+ SOURCE_REGION="cn-north-4"
32
+ SOURCE_ORGANIZATIONID=""
33
+ SOURCE_USERNAME=""
34
+ SOURCE_PASSWORD=""
35
+ SOURCE_GROUP=""
36
+ WORKSPACE=""
37
+
38
+ # Colors for output
39
+ RED='\033[0;31m'
40
+ GREEN='\033[0;32m'
41
+ YELLOW='\033[1;33m'
42
+ NC='\033[0m' # No Color
43
+
44
+ log_info() {
45
+ echo -e "${GREEN}[INFO]${NC} $1"
46
+ }
47
+
48
+ log_warn() {
49
+ echo -e "${YELLOW}[WARN]${NC} $1"
50
+ }
51
+
52
+ log_error() {
53
+ echo -e "${RED}[ERROR]${NC} $1"
54
+ }
55
+
56
+ # Parse arguments
57
+ while [[ $# -gt 0 ]]; do
58
+ case $1 in
59
+ --source-platform)
60
+ SOURCE_PLATFORM="$2"
61
+ shift 2
62
+ ;;
63
+ --source-url)
64
+ SOURCE_URL="$2"
65
+ shift 2
66
+ ;;
67
+ --source-token)
68
+ SOURCE_TOKEN="$2"
69
+ shift 2
70
+ ;;
71
+ --source-repo)
72
+ SOURCE_REPO="$2"
73
+ shift 2
74
+ ;;
75
+ --source-project)
76
+ SOURCE_PROJECT="$2"
77
+ shift 2
78
+ ;;
79
+ --source-ak)
80
+ SOURCE_AK="$2"
81
+ shift 2
82
+ ;;
83
+ --source-sk)
84
+ SOURCE_SK="$2"
85
+ shift 2
86
+ ;;
87
+ --source-region)
88
+ SOURCE_REGION="$2"
89
+ shift 2
90
+ ;;
91
+ --source-organizationid)
92
+ SOURCE_ORGANIZATIONID="$2"
93
+ shift 2
94
+ ;;
95
+ --source-username)
96
+ SOURCE_USERNAME="$2"
97
+ shift 2
98
+ ;;
99
+ --source-password)
100
+ SOURCE_PASSWORD="$2"
101
+ shift 2
102
+ ;;
103
+ --source-group)
104
+ SOURCE_GROUP="$2"
105
+ shift 2
106
+ ;;
107
+ --cnb-url)
108
+ CNB_URL="$2"
109
+ shift 2
110
+ ;;
111
+ --cnb-org)
112
+ CNB_ROOT_ORGANIZATION="$2"
113
+ shift 2
114
+ ;;
115
+ --cnb-token)
116
+ CNB_TOKEN="$2"
117
+ shift 2
118
+ ;;
119
+ --migrate-type)
120
+ MIGRATE_TYPE="$2"
121
+ shift 2
122
+ ;;
123
+ --concurrency)
124
+ MIGRATE_CONCURRENCY="$2"
125
+ shift 2
126
+ ;;
127
+ --force-push)
128
+ MIGRATE_FORCE_PUSH="$2"
129
+ shift 2
130
+ ;;
131
+ --rebase)
132
+ MIGRATE_REBASE="$2"
133
+ shift 2
134
+ ;;
135
+ --allow-incomplete-push)
136
+ MIGRATE_ALLOW_INCOMPLETE_PUSH="$2"
137
+ shift 2
138
+ ;;
139
+ --skip-exists)
140
+ MIGRATE_SKIP_EXISTS_REPO="$2"
141
+ shift 2
142
+ ;;
143
+ --lfs-migrate)
144
+ MIGRATE_USE_LFS_MIGRATE="$2"
145
+ shift 2
146
+ ;;
147
+ --log-level)
148
+ MIGRATE_LOG_LEVEL="$2"
149
+ shift 2
150
+ ;;
151
+ --allow-select-repos)
152
+ MIGRATE_ALLOW_SELECT_REPOS="$2"
153
+ shift 2
154
+ ;;
155
+ --download-only)
156
+ MIGRATE_DOWNLOAD_ONLY="$2"
157
+ shift 2
158
+ ;;
159
+ --workspace)
160
+ WORKSPACE="$2"
161
+ shift 2
162
+ ;;
163
+ -h|--help)
164
+ echo "CNB Code Import - Migrate code repositories to CNB"
165
+ echo ""
166
+ echo "Usage: $0 --source-platform <platform> --source-token <token> --cnb-org <org> --cnb-token <token> [options]"
167
+ echo ""
168
+ echo "Required:"
169
+ echo " --source-platform Source platform: coding/github/gitlab/gitee/aliyun/cnb/gongfeng/huaweicloud/common"
170
+ echo " --source-token Source platform access token"
171
+ echo " --cnb-org CNB root organization name"
172
+ echo " --cnb-token CNB access token"
173
+ echo ""
174
+ echo "Optional:"
175
+ echo " --source-url Source platform URL (default: auto-detect)"
176
+ echo " --source-repo Specific repos to migrate (comma-separated)"
177
+ echo " --source-project CODING project names (comma-separated, when migrate-type=project)"
178
+ echo " --source-ak HuaweiCloud AK (when source-platform=huaweicloud)"
179
+ echo " --source-sk HuaweiCloud SK (when source-platform=huaweicloud)"
180
+ echo " --source-region HuaweiCloud region (default: cn-north-4)"
181
+ echo " --source-organizationid Aliyun organization ID"
182
+ echo " --source-username Common platform username"
183
+ echo " --source-password Common platform password"
184
+ echo " --source-group CNB source group (when migrating from CNB to CNB)"
185
+ echo " --cnb-url CNB URL (default: https://cnb.cool)"
186
+ echo " --migrate-type Migration type: team/project/repo (default: team)"
187
+ echo " --concurrency Concurrent migration count (default: 5, max: 10)"
188
+ echo " --force-push Force push to CNB (true/false, default: false) ⚠️ DANGEROUS"
189
+ echo " --skip-exists Skip existing repos on CNB (true/false, default: false)"
190
+ echo " --lfs-migrate Use LFS migrate for large files (true/false, default: true)"
191
+ echo " --rebase Use git rebase for sync (true/false, default: false) ⚠️ DANGEROUS"
192
+ echo " --allow-incomplete-push Allow incomplete LFS push (true/false, default: false) ⚠️ DANGEROUS"
193
+ echo " --log-level Log level: debug/info/warn/error (default: info)"
194
+ echo " --allow-select-repos Allow selecting specific repos (true/false, default: false)"
195
+ echo " --download-only Only download repos, don't push to CNB (true/false, default: false)"
196
+ echo " --workspace Custom workspace directory (default: \$HOME/code-import-workspace)"
197
+ echo ""
198
+ echo "Examples:"
199
+ echo " # Migrate all repos from CODING"
200
+ echo " $0 --source-platform coding --source-token xxx --cnb-org myorg --cnb-token xxx"
201
+ echo ""
202
+ echo " # Migrate specific GitHub repos"
203
+ echo " $0 --source-platform github --source-token xxx --cnb-org myorg --cnb-token xxx --source-repo 'user/repo1,user/repo2'"
204
+ echo ""
205
+ echo " # Migrate from HuaweiCloud"
206
+ echo " $0 --source-platform huaweicloud --source-token xxx --source-ak xxx --source-sk xxx --source-region cn-north-4 --cnb-org myorg --cnb-token xxx"
207
+ exit 0
208
+ ;;
209
+ *)
210
+ log_error "Unknown option: $1"
211
+ exit 1
212
+ ;;
213
+ esac
214
+ done
215
+
216
+ # Validate required parameters
217
+ if [[ -z "$SOURCE_PLATFORM" ]]; then
218
+ log_error "Missing required parameter: --source-platform"
219
+ exit 1
220
+ fi
221
+
222
+ if [[ -z "$CNB_ROOT_ORGANIZATION" ]]; then
223
+ log_error "Missing required parameter: --cnb-org"
224
+ exit 1
225
+ fi
226
+
227
+ if [[ -z "$CNB_TOKEN" ]]; then
228
+ log_error "Missing required parameter: --cnb-token"
229
+ exit 1
230
+ fi
231
+
232
+ # 危险选项二次确认
233
+ DANGER_OPTIONS=()
234
+ [[ "$MIGRATE_FORCE_PUSH" == "true" ]] && DANGER_OPTIONS+=("强制推送 (force-push): 将强制覆盖 CNB 侧仓库历史")
235
+ [[ "$MIGRATE_REBASE" == "true" ]] && DANGER_OPTIONS+=("Rebase 模式 (rebase): 将使用 git rebase 同步,如遇冲突需人工解决")
236
+ [[ "$MIGRATE_ALLOW_INCOMPLETE_PUSH" == "true" ]] && DANGER_OPTIONS+=("不完整推送 (allow-incomplete-push): 可能忽略损坏的 LFS 文件,导致数据不完整")
237
+
238
+ if [[ ${#DANGER_OPTIONS[@]} -gt 0 ]]; then
239
+ log_warn "⚠️ 检测到以下危险选项:"
240
+ for opt in "${DANGER_OPTIONS[@]}"; do
241
+ echo -e "${YELLOW} - $opt${NC}"
242
+ done
243
+ echo ""
244
+ log_warn "⚠️ 这些操作可能导致数据丢失或损坏!"
245
+ echo ""
246
+ read -p "是否确认继续执行?(输入 yes 确认): " CONFIRM
247
+ if [[ "$CONFIRM" != "yes" ]]; then
248
+ log_error "用户取消执行"
249
+ exit 1
250
+ fi
251
+ log_info "用户已确认危险操作,继续执行..."
252
+ echo ""
253
+ fi
254
+
255
+ # Set default SOURCE_URL based on platform
256
+ if [[ -z "$SOURCE_URL" ]]; then
257
+ case $SOURCE_PLATFORM in
258
+ coding)
259
+ SOURCE_URL="https://e.coding.net"
260
+ ;;
261
+ github)
262
+ SOURCE_URL="https://github.com"
263
+ ;;
264
+ gitlab)
265
+ SOURCE_URL="https://gitlab.com"
266
+ ;;
267
+ gitee)
268
+ SOURCE_URL="https://gitee.com"
269
+ ;;
270
+ aliyun)
271
+ SOURCE_URL="https://codeup.aliyun.com"
272
+ ;;
273
+ cnb)
274
+ SOURCE_URL="https://cnb.cool"
275
+ ;;
276
+ gongfeng)
277
+ SOURCE_URL="https://git.woa.com"
278
+ ;;
279
+ gitea)
280
+ # Gitea 通常是自建实例,需用户通过 --source-url 指定
281
+ log_error "Gitea requires --source-url to specify the instance URL"
282
+ exit 1
283
+ ;;
284
+ huaweicloud)
285
+ SOURCE_URL="https://codearts.devcloud.${SOURCE_REGION}.huaweicloud.com"
286
+ ;;
287
+ common)
288
+ SOURCE_URL="https://common.com"
289
+ ;;
290
+ *)
291
+ log_error "Unknown source platform: $SOURCE_PLATFORM"
292
+ exit 1
293
+ ;;
294
+ esac
295
+ fi
296
+
297
+ # Validate HuaweiCloud parameters
298
+ if [[ "$SOURCE_PLATFORM" == "huaweicloud" ]]; then
299
+ if [[ -z "$SOURCE_AK" || -z "$SOURCE_SK" ]]; then
300
+ log_error "HuaweiCloud requires --source-ak and --source-sk"
301
+ exit 1
302
+ fi
303
+ fi
304
+
305
+ # Validate Aliyun parameters
306
+ if [[ "$SOURCE_PLATFORM" == "aliyun" ]]; then
307
+ if [[ -z "$SOURCE_ORGANIZATIONID" ]]; then
308
+ log_error "Aliyun requires --source-organizationid"
309
+ exit 1
310
+ fi
311
+ fi
312
+
313
+ # Build docker run command
314
+ DOCKER_CMD="docker run --rm"
315
+
316
+ # Add environment variables
317
+ DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_PLATFORM=\"$SOURCE_PLATFORM\""
318
+ DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_URL=\"$SOURCE_URL\""
319
+ DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_TOKEN=\"$SOURCE_TOKEN\""
320
+ DOCKER_CMD="$DOCKER_CMD -e PLUGIN_CNB_ROOT_ORGANIZATION=\"$CNB_ROOT_ORGANIZATION\""
321
+ DOCKER_CMD="$DOCKER_CMD -e PLUGIN_CNB_TOKEN=\"$CNB_TOKEN\""
322
+
323
+ # Optional parameters
324
+ [[ -n "$SOURCE_REPO" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_REPO=\"$SOURCE_REPO\""
325
+ [[ -n "$SOURCE_PROJECT" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_PROJECT=\"$SOURCE_PROJECT\""
326
+ [[ -n "$SOURCE_AK" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_AK=\"$SOURCE_AK\""
327
+ [[ -n "$SOURCE_SK" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_SK=\"$SOURCE_SK\""
328
+ [[ -n "$SOURCE_REGION" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_REGION=\"$SOURCE_REGION\""
329
+ [[ -n "$SOURCE_ORGANIZATIONID" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_ORGANIZATIONID=\"$SOURCE_ORGANIZATIONID\""
330
+ [[ -n "$SOURCE_USERNAME" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_USERNAME=\"$SOURCE_USERNAME\""
331
+ [[ -n "$SOURCE_PASSWORD" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_PASSWORD=\"$SOURCE_PASSWORD\""
332
+ [[ -n "$SOURCE_GROUP" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_SOURCE_GROUP=\"$SOURCE_GROUP\""
333
+ [[ -n "$CNB_URL" && "$CNB_URL" != "https://cnb.cool" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_CNB_URL=\"$CNB_URL\""
334
+ [[ -n "$MIGRATE_TYPE" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_MIGRATE_TYPE=\"$MIGRATE_TYPE\""
335
+ [[ -n "$MIGRATE_CONCURRENCY" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_MIGRATE_CONCURRENCY=\"$MIGRATE_CONCURRENCY\""
336
+ [[ "$MIGRATE_FORCE_PUSH" == "true" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_MIGRATE_FORCE_PUSH=\"true\""
337
+ [[ "$MIGRATE_REBASE" == "true" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_MIGRATE_REBASE=\"true\""
338
+ [[ "$MIGRATE_ALLOW_INCOMPLETE_PUSH" == "true" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_MIGRATE_ALLOW_INCOMPLETE_PUSH=\"true\""
339
+ [[ "$MIGRATE_SKIP_EXISTS_REPO" == "true" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_MIGRATE_SKIP_EXISTS_REPO=\"true\""
340
+ [[ "$MIGRATE_USE_LFS_MIGRATE" == "false" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_MIGRATE_USE_LFS_MIGRATE=\"false\""
341
+ [[ -n "$MIGRATE_LOG_LEVEL" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_MIGRATE_LOG_LEVEL=\"$MIGRATE_LOG_LEVEL\""
342
+ [[ "$MIGRATE_ALLOW_SELECT_REPOS" == "true" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_MIGRATE_ALLOW_SELECT_REPOS=\"true\""
343
+ [[ "$MIGRATE_DOWNLOAD_ONLY" == "true" ]] && DOCKER_CMD="$DOCKER_CMD -e PLUGIN_MIGRATE_DOWNLOAD_ONLY=\"true\""
344
+
345
+ # Add volume mount
346
+ DOCKER_CMD="$DOCKER_CMD -v \$(pwd):\$(pwd) -w \$(pwd)"
347
+
348
+ # Add image (使用 CNB 镜像源,更稳定)
349
+ DOCKER_CMD="$DOCKER_CMD docker.cnb.cool/cnb/plugins/cnbcool/code-import:latest"
350
+
351
+ # 设置工作目录
352
+ if [[ -z "$WORKSPACE" ]]; then
353
+ WORKSPACE="$DEFAULT_WORKSPACE"
354
+ fi
355
+
356
+ # 创建工作目录
357
+ mkdir -p "$WORKSPACE"
358
+ cd "$WORKSPACE"
359
+
360
+ log_info "Starting migration..."
361
+ log_info "Source Platform: $SOURCE_PLATFORM"
362
+ log_info "Source URL: $SOURCE_URL"
363
+ log_info "CNB Organization: $CNB_ROOT_ORGANIZATION"
364
+ log_info "Concurrency: $MIGRATE_CONCURRENCY"
365
+ log_info "Workspace: $WORKSPACE"
366
+ echo ""
367
+
368
+ # Execute docker command
369
+ eval $DOCKER_CMD
370
+
371
+ log_info "Migration completed!"
@@ -0,0 +1,100 @@
1
+ ---
2
+ name: cnb-skill
3
+ description: 提供与CNB(Cloud Native Build)OpenAPI的完整交互能力,支持项目、组织、代码仓库、Issue、PR、合并请求、流水线,制品库等核心功能的增删改查操作。适用于开发协作、代码管理和CI/CD流程管理场景。关键词:CNB、云原生构建、组织、代码仓库、Issue、PR、合并请求、流水线、制品库,查询、新增、修改、删除、评论、合并、审批。
4
+ ---
5
+
6
+ # cnb-skill
7
+
8
+ ## 概括
9
+
10
+ 本Skill提供完整的CNB的Openapi完整交互能力,用户可以使用此skills对CNB上的资源进行操作。
11
+
12
+ ## 适用场景
13
+
14
+ 当用户描述对CNB上的资源进行操作时,应该使用此skills进行操作。例如:
15
+ - 查询cnb上某个仓库的Issue列表
16
+ - 对cnb上的某个仓库的Issue或者pr进行评论。
17
+ - ...
18
+
19
+ ## 核心原则
20
+
21
+ ### 准确性原则
22
+ - **CRITICAL**: 必须先执行 `cnb --help` 获取最新的使用方式
23
+ - **CRITICAL**: 必须通过使用 `cnb`命令行工具,按照帮助信息执行操作
24
+ - **CRITICAL**: 禁止推测或臆断使用方式,严格基于脚本返回的帮助信息进行操作
25
+ - **CRITICAL**: 不要询问用户"是否需要我执行",直接根据帮助信息执行脚本,并返回结果
26
+
27
+ ## 脚本使用指南
28
+
29
+ ### 第一步:获取帮助信息
30
+ 在执行任何任务前,必须先运行以下命令获取最新的使用方式:
31
+
32
+ ```bash
33
+ cnb --help
34
+ ```
35
+
36
+ 这将显示所有可用的模块及其工具列表。
37
+
38
+ ### 第二步:查看具体模块帮助
39
+ 使用 `--module` 参数查看特定模块的详细帮助:
40
+
41
+ ```bash
42
+ cnb --module <模块名> -help
43
+ ```
44
+
45
+ ### 第三步:查看工具详细使用
46
+ 使用 `--module` 和 `--tool` 参数查看工具的详细参数说明:
47
+
48
+ ```bash
49
+ cnb --module <模块名> --tool <工具名> --help
50
+ ```
51
+
52
+ ### 第四步:执行工具
53
+ 根据第三步获取的参数说明,执行工具:
54
+
55
+ ```bash
56
+ cnb --module <模块名> --tool <工具名> --path '{"参数": "值"}' --query '{"参数": "值"}' --data '{"参数": "值"}'
57
+ ```
58
+
59
+ **参数说明:**
60
+ - `--module`: 必须参数,模块名称
61
+ - `--tool`: 必须参数,工具名称
62
+ - `--path`: 可选参数,路径参数,JSON字符串格式
63
+ - `--query`: 可选参数,查询参数,JSON字符串格式
64
+ - `--data`: 可选参数,数据参数,JSON字符串格式
65
+ - `--help`: 可选参数,显示帮助文档
66
+
67
+ ### 第五步:处理结果
68
+
69
+ 每一个工具调用都会返回一个标准的JSON结构:
70
+ - status: 一个http状态码
71
+ - trace: 本次调用的traceID
72
+ - header: 本次调用的header
73
+ - data: 本次调用的openapi返回的实体内容
74
+
75
+ #### header说明
76
+ 当请求列表时,会在header中包含以下字段说明列表的情况:
77
+ - `x-cnb-page`: 当前页数
78
+ - `x-cnb-page-size`: 每页条数
79
+ - `x-cnb-total`: 总条数
80
+
81
+ 从中可以获取到列表的总条数,以及当前页数和每页条数,避免循环请求。
82
+
83
+ #### status说明
84
+ API 返回标准的 JSON 格式响应。请根据 HTTP 状态码判断请求是否成功:
85
+
86
+ - 200: 请求成功
87
+ - 400: 请求参数错误
88
+ - 401: 未授权
89
+ - 403: 禁止访问
90
+ - 404: 资源不存在
91
+ - 500: 服务器内部错误
92
+
93
+ 当本地调用返回的 `status` 在 200 ~ 299 之间,只需要返回 `data` 内容给用户。只有当 `status >= 300` 时,才将 `status` 和 `trace` 返回给用户。
94
+
95
+ #### 资源处理
96
+
97
+ 当尝试下载图片进行图片分析时,遇到图片下载异常时,请使用以下工具进行图片下载!
98
+ ```bash
99
+ node scripts/core/index.js assets get-imgs --help
100
+ ```
@@ -0,0 +1,57 @@
1
+ module.exports = {
2
+ target: 'https://api.cnb.cool/swagger.json',
3
+ skillsOutputDir: `./skills/cnb-skill`,
4
+ // skillsDev: true,
5
+ skillConfig: {
6
+ fetchConfig: {
7
+ responseConverter: {
8
+ 'get@/{repo}/-/issues/{number}': {
9
+ converter: 'convert-link',
10
+ handler: (handler, fetchOriginParams, data) => {
11
+ data.body = handler(data.body, fetchOriginParams.path.repo);
12
+ return data
13
+ }
14
+ },
15
+ 'get@/{repo}/-/issues/{number}/comments/{comment_id}': {
16
+ converter: 'convert-link',
17
+ handler: (handler, fetchOriginParams, data) => {
18
+ data.body = handler(data.body, fetchOriginParams.path.repo);
19
+ return data
20
+ }
21
+ },
22
+ 'get@/{repo}/-/issues/{number}/comments': {
23
+ converter: 'convert-link',
24
+ handler: (handler, fetchOriginParams, data) => {
25
+ for (let i = 0; i < data.length; i++) {
26
+ data[i].body = handler(data[i].body, fetchOriginParams.path.repo);
27
+ }
28
+ return data
29
+ }
30
+ },
31
+ 'get@/{repo}/-/pulls/{number}': {
32
+ converter: 'convert-link',
33
+ handler: (handler, fetchOriginParams, data) => {
34
+ data.body = handler(data.body, fetchOriginParams.path.repo);
35
+ return data
36
+ }
37
+ },
38
+ 'get@/{repo}/-/pulls/{number}/comments/{comment_id}': {
39
+ converter: 'convert-link',
40
+ handler: (handler, fetchOriginParams, data) => {
41
+ data.body = handler(data.body, fetchOriginParams.path.repo);
42
+ return data
43
+ }
44
+ },
45
+ 'get@/{repo}/-/pulls/{number}/comments': {
46
+ converter: 'convert-link',
47
+ handler: (handler, fetchOriginParams, data) => {
48
+ for (let i = 0; i < data.length; i++) {
49
+ data[i].body = handler(data[i].body, fetchOriginParams.path.repo);
50
+ }
51
+ return data
52
+ }
53
+ },
54
+ }
55
+ }
56
+ }
57
+ }
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = convertLink;
7
+ /**
8
+ * 把文本里的相对路径转换为绝对路径
9
+ * 与 codebuddy/skills/cnb-text-relative-path-converter/scripts/convertLink.js 逻辑一致
10
+ *
11
+ * @param {String} text 待转换的文本
12
+ * @param {String} repoSlug 仓库路径
13
+ * @param {String} branchOrSha 可选,分支或SHA
14
+ * @returns {String}
15
+ */
16
+ function convertLink(text, repoSlug, branchOrSha) {
17
+ // 查询所有代码块的位置
18
+ let codeBlockPositions = [];
19
+ let index = 0;
20
+ while (index !== -1) {
21
+ const nextIndex = text.indexOf('```', index);
22
+ if (nextIndex === -1) break;
23
+ codeBlockPositions.push(nextIndex);
24
+ index = nextIndex + 3; // 跳过已匹配的三个反引号
25
+ }
26
+ if (codeBlockPositions.length % 2 !== 0) {
27
+ codeBlockPositions = codeBlockPositions.slice(0, codeBlockPositions.length - 1);
28
+ }
29
+
30
+ // 查询所有行内代码块的位置
31
+ let inlineCodeBlockPositions = [];
32
+ index = 0;
33
+ while (index < text.length) {
34
+ const nextIndex = text.indexOf('`', index);
35
+ if (nextIndex === -1) break;
36
+ // 检查是否是单独的反引号(不是代码块的一部分)
37
+ if ((nextIndex === 0 || text.charAt(nextIndex - 1) !== '`') && (nextIndex === text.length - 1 || text.charAt(nextIndex + 1) !== '`')) {
38
+ inlineCodeBlockPositions.push(nextIndex);
39
+ }
40
+ index = nextIndex + 1;
41
+ }
42
+ if (inlineCodeBlockPositions.length % 2 !== 0) {
43
+ inlineCodeBlockPositions = inlineCodeBlockPositions.slice(0, inlineCodeBlockPositions.length - 1);
44
+ }
45
+
46
+ // 整理起始和结束位置
47
+ const excludedRanges = [...codeBlockPositions, ...inlineCodeBlockPositions].reduce((result, item, index) => {
48
+ if (index % 2 === 0) {
49
+ return result.concat([[item]]);
50
+ }
51
+ result[result.length - 1].push(item);
52
+ return result;
53
+ }, []);
54
+
55
+ // Helper function to check if an index is within excluded ranges
56
+ const isInExcludedRange = index => {
57
+ return excludedRanges.some(([start, end]) => index >= start && index < end);
58
+ };
59
+ let match;
60
+
61
+ // Collect all replacements with their positions
62
+ const replacements = [];
63
+
64
+ // Match markdown links and images: [text](url) and ![alt](url)
65
+ const markdownLinkRegex = /!?\[([^\]]+)\]\(([^)]+)\)/g;
66
+ while ((match = markdownLinkRegex.exec(text)) !== null) {
67
+ if (!isInExcludedRange(match.index)) {
68
+ // Calculate URL position: match.index + length of "![" + match[1] + "]("
69
+ const prefixLength = (match[0].startsWith('!') ? 1 : 0) + 1 + match[1].length + 2;
70
+ const urlStart = match.index + prefixLength;
71
+ const urlEnd = urlStart + match[2].length;
72
+ const newUrl = normaliseLink(match[2], repoSlug, branchOrSha);
73
+ if (newUrl !== match[2]) {
74
+ replacements.push({
75
+ start: urlStart,
76
+ end: urlEnd,
77
+ newUrl
78
+ });
79
+ }
80
+ }
81
+ }
82
+
83
+ // Match HTML tags: <img src="..."> and <a href="...">
84
+ const htmlTagRegex = /\s(src|href)=["']([^"']+)["']/gi;
85
+ while ((match = htmlTagRegex.exec(text)) !== null) {
86
+ if (!isInExcludedRange(match.index)) {
87
+ const urlStart = match.index + match[0].indexOf(match[2]);
88
+ const urlEnd = urlStart + match[2].length;
89
+ const newUrl = normaliseLink(match[2], repoSlug, branchOrSha);
90
+ if (newUrl !== match[2]) {
91
+ replacements.push({
92
+ start: urlStart,
93
+ end: urlEnd,
94
+ newUrl
95
+ });
96
+ }
97
+ }
98
+ }
99
+
100
+ // Sort replacements by start position in descending order
101
+ replacements.sort((a, b) => b.start - a.start);
102
+
103
+ // Apply replacements from end to start to maintain correct indices
104
+ let result = text;
105
+ for (const {
106
+ start,
107
+ end,
108
+ newUrl
109
+ } of replacements) {
110
+ result = result.substring(0, start) + newUrl + result.substring(end);
111
+ }
112
+ return result;
113
+ }
114
+
115
+ /**
116
+ * 相对路径转换为绝对路径
117
+ * 与 codebuddy/skills/cnb-text-relative-path-converter/scripts/convertLink.js 逻辑一致
118
+ *
119
+ * @param {String} link 待转换的链接
120
+ * @param {String} repoSlug 仓库路径
121
+ * @param {String} branchOrSha 分支或SHA,默认为 HEAD
122
+ * @returns {String}
123
+ */
124
+ function normaliseLink(link, repoSlug, branchOrSha = 'HEAD') {
125
+ const baseURL = `${process.env.CNB_WEB_ENDPOINT}/${repoSlug}`;
126
+ if (link.startsWith('/-/')) {
127
+ return `${baseURL}${link}`;
128
+ }
129
+ if (link.indexOf('/-/') === -1 && (link.startsWith('../') || link.startsWith('./') || link.startsWith('/') && !link.startsWith('//'))) {
130
+ let chunks = link.split('/');
131
+ // 过滤掉空字符串和 . .. 这些无效路径
132
+ chunks = chunks.filter(chunk => !!chunk && chunk !== '.' && chunk !== '..');
133
+ if (chunks.length === 0) {
134
+ return link;
135
+ }
136
+ chunks.unshift(branchOrSha);
137
+ return `${baseURL}/-/git/raw/${chunks.join('/')}`;
138
+ }
139
+ return link;
140
+ }