@cnbcool/cnb-cli 1.2.6 → 1.4.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 (268) hide show
  1. package/bin/cnb.js +1 -1
  2. package/dist/index.js +66 -0
  3. package/package.json +10 -5
  4. package/skills/cnb-api/scripts/core/config/cag.config.js +0 -57
  5. package/skills/cnb-api/scripts/core/core.js +0 -124
  6. package/skills/cnb-api/scripts/core/fetch-response-handler.js +0 -34
  7. package/skills/cnb-api/scripts/core/flat-options.json +0 -8909
  8. package/skills/cnb-api/scripts/core/help.json +0 -38458
  9. package/skills/cnb-api/scripts/core/index.js +0 -40
  10. package/skills/cnb-api/scripts/core/key-mapping.json +0 -538
  11. package/skills/cnb-api/scripts/core/lib/execute-action.js +0 -117
  12. package/skills/cnb-api/scripts/core/lib/extra-help.js +0 -20
  13. package/skills/cnb-api/scripts/core/lib/flat-options-data.js +0 -16
  14. package/skills/cnb-api/scripts/core/lib/format-output.js +0 -85
  15. package/skills/cnb-api/scripts/core/lib/format-params.js +0 -217
  16. package/skills/cnb-api/scripts/core/lib/help-data.js +0 -15
  17. package/skills/cnb-api/scripts/core/lib/key-mapping-data.js +0 -16
  18. package/skills/cnb-api/scripts/core/lib/parsers.js +0 -126
  19. package/skills/cnb-api/scripts/core/lib/print-json.js +0 -24
  20. package/skills/cnb-api/scripts/core/lib/register-fallback.js +0 -15
  21. package/skills/cnb-api/scripts/core/lib/register-modules.js +0 -121
  22. package/skills/cnb-api/scripts/core/lib/summary-extractors.js +0 -181
  23. package/skills/cnb-api/scripts/core/lib/trim-summary.js +0 -17
  24. package/skills/cnb-api/scripts/core/modules.help.js +0 -53
  25. package/skills/cnb-api/scripts/core/schemaToJson.js +0 -32
  26. package/skills/cnb-api/scripts/core/shortcuts.js +0 -276
  27. package/skills/cnb-api/scripts/core/tools.help.js +0 -127
  28. package/skills/cnb-api/scripts/core/utils/build-nested-field-map.js +0 -35
  29. package/skills/cnb-api/scripts/core/utils/convert-link.js +0 -144
  30. package/skills/cnb-api/scripts/core/utils/flat-key-from-segments.js +0 -14
  31. package/skills/cnb-api/scripts/core/utils/generate-unique-id.js +0 -10
  32. package/skills/cnb-api/scripts/core/utils/match-array-object-field.js +0 -25
  33. package/skills/cnb-api/scripts/core/utils/restore-original-keys.js +0 -24
  34. package/skills/cnb-api/scripts/core/utils/upload.js +0 -237
  35. package/skills/cnb-api/scripts/modules/activities/get-user-activities-by-date.js +0 -75
  36. package/skills/cnb-api/scripts/modules/activities/get-user-repo-activity-details.js +0 -77
  37. package/skills/cnb-api/scripts/modules/activities/top-contributors.js +0 -75
  38. package/skills/cnb-api/scripts/modules/ai/ai-chat-completions.js +0 -69
  39. package/skills/cnb-api/scripts/modules/assets/delete-asset.js +0 -75
  40. package/skills/cnb-api/scripts/modules/assets/get-files.js +0 -75
  41. package/skills/cnb-api/scripts/modules/assets/get-imgs.js +0 -75
  42. package/skills/cnb-api/scripts/modules/assets/list-assets.js +0 -75
  43. package/skills/cnb-api/scripts/modules/badge/get-badge.js +0 -79
  44. package/skills/cnb-api/scripts/modules/badge/list-badge.js +0 -69
  45. package/skills/cnb-api/scripts/modules/badge/upload-badge.js +0 -69
  46. package/skills/cnb-api/scripts/modules/build/build-crontab-sync.js +0 -74
  47. package/skills/cnb-api/scripts/modules/build/build-logs-delete.js +0 -74
  48. package/skills/cnb-api/scripts/modules/build/build-runner-download-log.js +0 -74
  49. package/skills/cnb-api/scripts/modules/build/get-build-logs.js +0 -75
  50. package/skills/cnb-api/scripts/modules/build/get-build-stage.js +0 -78
  51. package/skills/cnb-api/scripts/modules/build/get-build-status.js +0 -74
  52. package/skills/cnb-api/scripts/modules/build/start-build.js +0 -69
  53. package/skills/cnb-api/scripts/modules/build/stop-build.js +0 -74
  54. package/skills/cnb-api/scripts/modules/charge/get-special-amount.js +0 -67
  55. package/skills/cnb-api/scripts/modules/event/get-events.js +0 -73
  56. package/skills/cnb-api/scripts/modules/followers/get-followers-by-user-id.js +0 -75
  57. package/skills/cnb-api/scripts/modules/followers/get-following-by-user-id.js +0 -75
  58. package/skills/cnb-api/scripts/modules/git/create-blob.js +0 -69
  59. package/skills/cnb-api/scripts/modules/git/create-branch-lock.js +0 -74
  60. package/skills/cnb-api/scripts/modules/git/create-branch.js +0 -69
  61. package/skills/cnb-api/scripts/modules/git/create-tag.js +0 -69
  62. package/skills/cnb-api/scripts/modules/git/delete-branch-lock.js +0 -74
  63. package/skills/cnb-api/scripts/modules/git/delete-branch.js +0 -74
  64. package/skills/cnb-api/scripts/modules/git/delete-commit-annotation.js +0 -76
  65. package/skills/cnb-api/scripts/modules/git/delete-commit-asset.js +0 -76
  66. package/skills/cnb-api/scripts/modules/git/delete-tag-annotation.js +0 -74
  67. package/skills/cnb-api/scripts/modules/git/delete-tag.js +0 -74
  68. package/skills/cnb-api/scripts/modules/git/get-archive-commit-changed-files.js +0 -74
  69. package/skills/cnb-api/scripts/modules/git/get-archive-compare-changed-files.js +0 -74
  70. package/skills/cnb-api/scripts/modules/git/get-archive.js +0 -74
  71. package/skills/cnb-api/scripts/modules/git/get-branch.js +0 -74
  72. package/skills/cnb-api/scripts/modules/git/get-commit-annotations-in-batch.js +0 -69
  73. package/skills/cnb-api/scripts/modules/git/get-commit-annotations.js +0 -74
  74. package/skills/cnb-api/scripts/modules/git/get-commit-assets-by-sha.js +0 -74
  75. package/skills/cnb-api/scripts/modules/git/get-commit-assets.js +0 -79
  76. package/skills/cnb-api/scripts/modules/git/get-commit-statuses.js +0 -74
  77. package/skills/cnb-api/scripts/modules/git/get-commit.js +0 -74
  78. package/skills/cnb-api/scripts/modules/git/get-compare-commits.js +0 -74
  79. package/skills/cnb-api/scripts/modules/git/get-content-without-path.js +0 -75
  80. package/skills/cnb-api/scripts/modules/git/get-content.js +0 -77
  81. package/skills/cnb-api/scripts/modules/git/get-head.js +0 -66
  82. package/skills/cnb-api/scripts/modules/git/get-presigned-lfs-download-link.js +0 -77
  83. package/skills/cnb-api/scripts/modules/git/get-raw.js +0 -77
  84. package/skills/cnb-api/scripts/modules/git/get-tag-annotations.js +0 -74
  85. package/skills/cnb-api/scripts/modules/git/get-tag.js +0 -74
  86. package/skills/cnb-api/scripts/modules/git/list-branches.js +0 -75
  87. package/skills/cnb-api/scripts/modules/git/list-commits.js +0 -75
  88. package/skills/cnb-api/scripts/modules/git/list-tags.js +0 -75
  89. package/skills/cnb-api/scripts/modules/git/post-commit-asset-upload-confirmation.js +0 -81
  90. package/skills/cnb-api/scripts/modules/git/post-commit-asset-upload-url.js +0 -77
  91. package/skills/cnb-api/scripts/modules/git/put-commit-annotations.js +0 -77
  92. package/skills/cnb-api/scripts/modules/git/put-tag-annotations.js +0 -77
  93. package/skills/cnb-api/scripts/modules/git-settings/delete-branch-protection.js +0 -74
  94. package/skills/cnb-api/scripts/modules/git-settings/get-branch-protection.js +0 -74
  95. package/skills/cnb-api/scripts/modules/git-settings/get-pipeline-settings.js +0 -66
  96. package/skills/cnb-api/scripts/modules/git-settings/get-pull-request-settings.js +0 -66
  97. package/skills/cnb-api/scripts/modules/git-settings/get-push-limit-settings.js +0 -66
  98. package/skills/cnb-api/scripts/modules/git-settings/list-branch-protections.js +0 -66
  99. package/skills/cnb-api/scripts/modules/git-settings/patch-branch-protection.js +0 -77
  100. package/skills/cnb-api/scripts/modules/git-settings/post-branch-protection.js +0 -69
  101. package/skills/cnb-api/scripts/modules/git-settings/put-pipeline-settings.js +0 -69
  102. package/skills/cnb-api/scripts/modules/git-settings/put-pull-request-settings.js +0 -69
  103. package/skills/cnb-api/scripts/modules/git-settings/put-push-limit-settings.js +0 -69
  104. package/skills/cnb-api/scripts/modules/issues/can-user-be-assigned-to-issue.js +0 -76
  105. package/skills/cnb-api/scripts/modules/issues/create-issue.js +0 -69
  106. package/skills/cnb-api/scripts/modules/issues/delete-issue-assignees.js +0 -77
  107. package/skills/cnb-api/scripts/modules/issues/delete-issue-label.js +0 -76
  108. package/skills/cnb-api/scripts/modules/issues/delete-issue-labels.js +0 -74
  109. package/skills/cnb-api/scripts/modules/issues/get-issue-comment.js +0 -76
  110. package/skills/cnb-api/scripts/modules/issues/get-issue.js +0 -74
  111. package/skills/cnb-api/scripts/modules/issues/list-issue-activities-latest.js +0 -76
  112. package/skills/cnb-api/scripts/modules/issues/list-issue-activities.js +0 -77
  113. package/skills/cnb-api/scripts/modules/issues/list-issue-assignees.js +0 -74
  114. package/skills/cnb-api/scripts/modules/issues/list-issue-comments.js +0 -77
  115. package/skills/cnb-api/scripts/modules/issues/list-issue-labels.js +0 -77
  116. package/skills/cnb-api/scripts/modules/issues/list-issues.js +0 -75
  117. package/skills/cnb-api/scripts/modules/issues/list-user-issues.js +0 -71
  118. package/skills/cnb-api/scripts/modules/issues/patch-issue-assignees.js +0 -77
  119. package/skills/cnb-api/scripts/modules/issues/patch-issue-comment.js +0 -79
  120. package/skills/cnb-api/scripts/modules/issues/post-issue-assignees.js +0 -77
  121. package/skills/cnb-api/scripts/modules/issues/post-issue-comment.js +0 -77
  122. package/skills/cnb-api/scripts/modules/issues/post-issue-file-asset-upload-url.js +0 -77
  123. package/skills/cnb-api/scripts/modules/issues/post-issue-image-asset-upload-url.js +0 -77
  124. package/skills/cnb-api/scripts/modules/issues/post-issue-labels.js +0 -77
  125. package/skills/cnb-api/scripts/modules/issues/put-issue-labels.js +0 -77
  126. package/skills/cnb-api/scripts/modules/issues/update-issue-properties.js +0 -78
  127. package/skills/cnb-api/scripts/modules/issues/update-issue.js +0 -77
  128. package/skills/cnb-api/scripts/modules/knowledge-base/delete-knowledge-base.js +0 -66
  129. package/skills/cnb-api/scripts/modules/knowledge-base/get-knowledge-base-info.js +0 -66
  130. package/skills/cnb-api/scripts/modules/knowledge-base/get-models.js +0 -66
  131. package/skills/cnb-api/scripts/modules/knowledge-base/query-knowledge-base.js +0 -69
  132. package/skills/cnb-api/scripts/modules/knowledge-base/search-npc.js +0 -71
  133. package/skills/cnb-api/scripts/modules/members/add-members-of-group.js +0 -77
  134. package/skills/cnb-api/scripts/modules/members/add-members-of-mission.js +0 -77
  135. package/skills/cnb-api/scripts/modules/members/add-members-of-registry.js +0 -77
  136. package/skills/cnb-api/scripts/modules/members/add-members-of-repo.js +0 -77
  137. package/skills/cnb-api/scripts/modules/members/delete-members-of-group.js +0 -74
  138. package/skills/cnb-api/scripts/modules/members/delete-members-of-repo.js +0 -74
  139. package/skills/cnb-api/scripts/modules/members/delete-outside-collaborators.js +0 -74
  140. package/skills/cnb-api/scripts/modules/members/get-member-access-level-of-group.js +0 -75
  141. package/skills/cnb-api/scripts/modules/members/get-member-access-level-of-repo.js +0 -75
  142. package/skills/cnb-api/scripts/modules/members/list-all-members.js +0 -75
  143. package/skills/cnb-api/scripts/modules/members/list-inherit-members-of-group.js +0 -75
  144. package/skills/cnb-api/scripts/modules/members/list-inherit-members-of-repo.js +0 -75
  145. package/skills/cnb-api/scripts/modules/members/list-member-access-level-of-group.js +0 -74
  146. package/skills/cnb-api/scripts/modules/members/list-member-access-level-of-repo.js +0 -74
  147. package/skills/cnb-api/scripts/modules/members/list-members-of-group.js +0 -75
  148. package/skills/cnb-api/scripts/modules/members/list-members-of-repo.js +0 -75
  149. package/skills/cnb-api/scripts/modules/members/list-outside-collaborators.js +0 -75
  150. package/skills/cnb-api/scripts/modules/members/update-members-of-group.js +0 -77
  151. package/skills/cnb-api/scripts/modules/members/update-members-of-repo.js +0 -77
  152. package/skills/cnb-api/scripts/modules/members/update-outside-collaborators.js +0 -77
  153. package/skills/cnb-api/scripts/modules/missions/create-mission.js +0 -69
  154. package/skills/cnb-api/scripts/modules/missions/delete-mission.js +0 -66
  155. package/skills/cnb-api/scripts/modules/missions/get-group-sub-missions.js +0 -75
  156. package/skills/cnb-api/scripts/modules/missions/get-mission-view-config.js +0 -75
  157. package/skills/cnb-api/scripts/modules/missions/get-mission-view-list.js +0 -66
  158. package/skills/cnb-api/scripts/modules/missions/post-mission-view-config.js +0 -69
  159. package/skills/cnb-api/scripts/modules/missions/post-mission-view-list.js +0 -69
  160. package/skills/cnb-api/scripts/modules/missions/put-mission-view-list.js +0 -69
  161. package/skills/cnb-api/scripts/modules/missions/set-mission-visibility.js +0 -75
  162. package/skills/cnb-api/scripts/modules/organizations/create-organization.js +0 -65
  163. package/skills/cnb-api/scripts/modules/organizations/delete-organization.js +0 -66
  164. package/skills/cnb-api/scripts/modules/organizations/get-group-setting.js +0 -66
  165. package/skills/cnb-api/scripts/modules/organizations/get-group.js +0 -66
  166. package/skills/cnb-api/scripts/modules/organizations/get-groups-by-user-id.js +0 -75
  167. package/skills/cnb-api/scripts/modules/organizations/list-groups.js +0 -75
  168. package/skills/cnb-api/scripts/modules/organizations/list-subgroups.js +0 -75
  169. package/skills/cnb-api/scripts/modules/organizations/list-top-groups.js +0 -71
  170. package/skills/cnb-api/scripts/modules/organizations/transfer-group.js +0 -69
  171. package/skills/cnb-api/scripts/modules/organizations/update-group-setting.js +0 -69
  172. package/skills/cnb-api/scripts/modules/organizations/update-organization.js +0 -69
  173. package/skills/cnb-api/scripts/modules/organizations/upload-logos.js +0 -69
  174. package/skills/cnb-api/scripts/modules/pulls/can-user-be-assigned-to-pull.js +0 -76
  175. package/skills/cnb-api/scripts/modules/pulls/delete-pull-assignees.js +0 -77
  176. package/skills/cnb-api/scripts/modules/pulls/delete-pull-label.js +0 -76
  177. package/skills/cnb-api/scripts/modules/pulls/delete-pull-labels.js +0 -74
  178. package/skills/cnb-api/scripts/modules/pulls/delete-repo-files.js +0 -75
  179. package/skills/cnb-api/scripts/modules/pulls/delete-repo-imgs.js +0 -75
  180. package/skills/cnb-api/scripts/modules/pulls/get-pull-comment.js +0 -76
  181. package/skills/cnb-api/scripts/modules/pulls/get-pull.js +0 -74
  182. package/skills/cnb-api/scripts/modules/pulls/list-pull-assignees.js +0 -74
  183. package/skills/cnb-api/scripts/modules/pulls/list-pull-comments.js +0 -77
  184. package/skills/cnb-api/scripts/modules/pulls/list-pull-commit-statuses.js +0 -74
  185. package/skills/cnb-api/scripts/modules/pulls/list-pull-commits.js +0 -77
  186. package/skills/cnb-api/scripts/modules/pulls/list-pull-files.js +0 -74
  187. package/skills/cnb-api/scripts/modules/pulls/list-pull-labels.js +0 -77
  188. package/skills/cnb-api/scripts/modules/pulls/list-pull-review-comments.js +0 -79
  189. package/skills/cnb-api/scripts/modules/pulls/list-pull-reviews.js +0 -77
  190. package/skills/cnb-api/scripts/modules/pulls/list-pulls-by-numbers.js +0 -75
  191. package/skills/cnb-api/scripts/modules/pulls/list-pulls.js +0 -75
  192. package/skills/cnb-api/scripts/modules/pulls/merge-pull.js +0 -77
  193. package/skills/cnb-api/scripts/modules/pulls/patch-pull-comment.js +0 -79
  194. package/skills/cnb-api/scripts/modules/pulls/patch-pull.js +0 -77
  195. package/skills/cnb-api/scripts/modules/pulls/post-pull-assignees.js +0 -77
  196. package/skills/cnb-api/scripts/modules/pulls/post-pull-comment.js +0 -77
  197. package/skills/cnb-api/scripts/modules/pulls/post-pull-labels.js +0 -77
  198. package/skills/cnb-api/scripts/modules/pulls/post-pull-request-review-reply.js +0 -79
  199. package/skills/cnb-api/scripts/modules/pulls/post-pull-review.js +0 -77
  200. package/skills/cnb-api/scripts/modules/pulls/post-pull.js +0 -69
  201. package/skills/cnb-api/scripts/modules/pulls/put-pull-labels.js +0 -77
  202. package/skills/cnb-api/scripts/modules/pulls/upload-files.js +0 -69
  203. package/skills/cnb-api/scripts/modules/pulls/upload-imgs.js +0 -69
  204. package/skills/cnb-api/scripts/modules/rank/get-language-list.js +0 -71
  205. package/skills/cnb-api/scripts/modules/rank/get-repo-annual-rank.js +0 -71
  206. package/skills/cnb-api/scripts/modules/rank/get-repo-daily-rank.js +0 -71
  207. package/skills/cnb-api/scripts/modules/rank/get-repo-monthly-rank.js +0 -71
  208. package/skills/cnb-api/scripts/modules/rank/get-repo-weekly-rank.js +0 -71
  209. package/skills/cnb-api/scripts/modules/registries/delete-package-tag.js +0 -79
  210. package/skills/cnb-api/scripts/modules/registries/delete-package.js +0 -77
  211. package/skills/cnb-api/scripts/modules/registries/delete-registry.js +0 -66
  212. package/skills/cnb-api/scripts/modules/registries/get-group-sub-registries.js +0 -75
  213. package/skills/cnb-api/scripts/modules/registries/get-package-tag-detail.js +0 -82
  214. package/skills/cnb-api/scripts/modules/registries/get-package-tag-provenance.js +0 -79
  215. package/skills/cnb-api/scripts/modules/registries/get-package.js +0 -77
  216. package/skills/cnb-api/scripts/modules/registries/list-package-tags.js +0 -80
  217. package/skills/cnb-api/scripts/modules/registries/list-packages.js +0 -76
  218. package/skills/cnb-api/scripts/modules/registries/set-registry-visibility.js +0 -75
  219. package/skills/cnb-api/scripts/modules/releases/delete-release-asset.js +0 -76
  220. package/skills/cnb-api/scripts/modules/releases/delete-release.js +0 -74
  221. package/skills/cnb-api/scripts/modules/releases/get-latest-release.js +0 -66
  222. package/skills/cnb-api/scripts/modules/releases/get-release-asset.js +0 -76
  223. package/skills/cnb-api/scripts/modules/releases/get-release-by-id.js +0 -74
  224. package/skills/cnb-api/scripts/modules/releases/get-release-by-tag.js +0 -74
  225. package/skills/cnb-api/scripts/modules/releases/get-releases-asset.js +0 -79
  226. package/skills/cnb-api/scripts/modules/releases/list-releases.js +0 -75
  227. package/skills/cnb-api/scripts/modules/releases/patch-release.js +0 -77
  228. package/skills/cnb-api/scripts/modules/releases/post-release-asset-upload-confirmation.js +0 -81
  229. package/skills/cnb-api/scripts/modules/releases/post-release-asset-upload-url.js +0 -77
  230. package/skills/cnb-api/scripts/modules/releases/post-release.js +0 -69
  231. package/skills/cnb-api/scripts/modules/repo-code-issue/get-code-issue-detail-open-api.js +0 -75
  232. package/skills/cnb-api/scripts/modules/repo-code-issue/list-code-issue-open-api.js +0 -76
  233. package/skills/cnb-api/scripts/modules/repo-contributor/get-repo-contributor-trend.js +0 -75
  234. package/skills/cnb-api/scripts/modules/repo-labels/delete-label.js +0 -74
  235. package/skills/cnb-api/scripts/modules/repo-labels/list-labels.js +0 -75
  236. package/skills/cnb-api/scripts/modules/repo-labels/patch-label.js +0 -77
  237. package/skills/cnb-api/scripts/modules/repo-labels/post-label.js +0 -69
  238. package/skills/cnb-api/scripts/modules/repositories/archive-repo.js +0 -66
  239. package/skills/cnb-api/scripts/modules/repositories/create-repo.js +0 -69
  240. package/skills/cnb-api/scripts/modules/repositories/delete-repo.js +0 -66
  241. package/skills/cnb-api/scripts/modules/repositories/get-by-id.js +0 -66
  242. package/skills/cnb-api/scripts/modules/repositories/get-group-sub-repos.js +0 -75
  243. package/skills/cnb-api/scripts/modules/repositories/get-pinned-repo-by-group.js +0 -66
  244. package/skills/cnb-api/scripts/modules/repositories/get-pinned-repo-by-id.js +0 -66
  245. package/skills/cnb-api/scripts/modules/repositories/get-repos-by-user-name.js +0 -75
  246. package/skills/cnb-api/scripts/modules/repositories/get-repos.js +0 -71
  247. package/skills/cnb-api/scripts/modules/repositories/list-forks-repos.js +0 -75
  248. package/skills/cnb-api/scripts/modules/repositories/set-pinned-repo-by-group.js +0 -69
  249. package/skills/cnb-api/scripts/modules/repositories/set-repo-visibility.js +0 -75
  250. package/skills/cnb-api/scripts/modules/repositories/transfer-repo.js +0 -69
  251. package/skills/cnb-api/scripts/modules/repositories/un-archive-repo.js +0 -66
  252. package/skills/cnb-api/scripts/modules/repositories/update-repo.js +0 -69
  253. package/skills/cnb-api/scripts/modules/search/list-public-repos.js +0 -71
  254. package/skills/cnb-api/scripts/modules/security/get-repo-security-overview.js +0 -75
  255. package/skills/cnb-api/scripts/modules/starring/get-user-all-stared-repos.js +0 -71
  256. package/skills/cnb-api/scripts/modules/starring/get-user-stared-repos.js +0 -75
  257. package/skills/cnb-api/scripts/modules/starring/list-star-users.js +0 -75
  258. package/skills/cnb-api/scripts/modules/users/auto-complete-source.js +0 -71
  259. package/skills/cnb-api/scripts/modules/users/get-user-info-by-name.js +0 -66
  260. package/skills/cnb-api/scripts/modules/users/get-user-info.js +0 -62
  261. package/skills/cnb-api/scripts/modules/users/list-email.js +0 -62
  262. package/skills/cnb-api/scripts/modules/users/list-gpg-keys.js +0 -71
  263. package/skills/cnb-api/scripts/modules/users/update-user-info.js +0 -65
  264. package/skills/cnb-api/scripts/modules/workspace/delete-workspace.js +0 -65
  265. package/skills/cnb-api/scripts/modules/workspace/get-workspace-detail.js +0 -74
  266. package/skills/cnb-api/scripts/modules/workspace/list-workspaces.js +0 -71
  267. package/skills/cnb-api/scripts/modules/workspace/start-workspace.js +0 -69
  268. package/skills/cnb-api/scripts/modules/workspace/workspace-stop.js +0 -65
@@ -1,181 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.summarizeResponse = summarizeResponse;
7
- /**
8
- * 摘要输出
9
- * 对返回数据量大的快捷命令,默认只输出核心字段,减少 token 消耗
10
- */
11
-
12
- /**
13
- * 摘要提取器配置
14
- * key: "module/tool",value: 摘要提取函数
15
- * - 对象响应:直接对 data 应用提取函数
16
- * - 数组响应:对 data 中每个元素应用提取函数
17
- */
18
- const SUMMARY_EXTRACTORS = {
19
- // Issue 详情摘要:保留标题、状态、标签和正文
20
- // 过滤: number, state_reason, assignees, author, created_at, updated_at 等
21
- 'issues/get-issue': item => ({
22
- title: item.title,
23
- state: item.state,
24
- labels: item.labels?.map?.(l => l.name).filter(Boolean) || [],
25
- body: item.body
26
- }),
27
- // Issue 更新摘要:只保留状态变更结果
28
- // 过滤: title, body, labels, assignees, author, created_at, updated_at 等
29
- 'issues/update-issue': item => ({
30
- number: item.number,
31
- state: item.state,
32
- state_reason: item.state_reason
33
- }),
34
- // Issue 评论列表摘要:只保留作者用户名、内容和创建时间
35
- // 过滤: author 完整对象(avatar/email/freeze/is_npc/nickname), reactions, updated_at
36
- 'issues/list-issue-comments': item => ({
37
- id: item.id,
38
- author: item.author?.username,
39
- body: item.body,
40
- created_at: item.created_at
41
- }),
42
- // Issue 发表评论摘要:只保留评论 ID 和创建时间(body 已在请求中传入,无需重复)
43
- // 过滤: body(请求已传入), author 完整对象(avatar/email/freeze/is_npc/nickname/username), reactions, updated_at
44
- 'issues/post-issue-comment': item => ({
45
- id: item.id,
46
- created_at: item.created_at
47
- }),
48
- // Issue 标签列表摘要:保留名称、颜色和描述
49
- // 过滤: id
50
- 'issues/list-issue-labels': item => ({
51
- name: item.name,
52
- color: item.color,
53
- description: item.description
54
- }),
55
- // Issue 添加标签摘要:只保留 ID 和颜色(name 已在请求中传入,无需重复)
56
- // 过滤: name(请求已传入), description
57
- 'issues/post-issue-labels': item => ({
58
- id: item.id,
59
- color: item.color
60
- }),
61
- // Issue 处理人列表摘要:保留用户名和昵称
62
- // 过滤: avatar, email, freeze, is_npc
63
- 'issues/list-issue-assignees': item => ({
64
- username: item.username,
65
- nickname: item.nickname
66
- }),
67
- // Issue 添加处理人摘要:保留处理人用户名和昵称列表
68
- // 过滤: assignees 中每个用户的 avatar/email/freeze/is_npc,以及 issue 其他字段
69
- 'issues/post-issue-assignees': item => ({
70
- number: item.number,
71
- assignees: item.assignees?.map?.(a => ({
72
- username: a.username,
73
- nickname: a.nickname
74
- })).filter(a => a.username) || []
75
- }),
76
- // PR 详情摘要:保留标题、状态、标签、正文和分支信息
77
- // 过滤: number, author, assignees, reviewers, created_at, updated_at, base/head 完整对象等
78
- 'pulls/get-pull': item => ({
79
- title: item.title,
80
- state: item.state,
81
- labels: item.labels?.map?.(l => l.name).filter(Boolean) || [],
82
- base: item.base?.ref,
83
- head: item.head?.ref,
84
- body: item.body
85
- }),
86
- // PR 文件列表摘要:保留文件名、sha、变更状态和增删行数
87
- // 过滤: patch, blob_url, raw_url, contents_url, previous_filename
88
- 'pulls/list-pull-files': item => ({
89
- filename: item.filename,
90
- sha: item.sha,
91
- status: item.status,
92
- additions: item.additions,
93
- deletions: item.deletions
94
- }),
95
- // PR 提交列表摘要:只保留 sha 前 8 位和 commit message
96
- // 过滤: sha 完整值, commit 完整对象(author/committer/tree/verification), parents, url 等
97
- 'pulls/list-pull-commits': item => ({
98
- sha: typeof item.sha === 'string' ? item.sha.substring(0, 8) : item.sha,
99
- message: item.commit?.message
100
- }),
101
- // PR 评论列表摘要:保留作者用户名和昵称、内容和创建时间
102
- // 过滤: author 完整对象(avatar/email/freeze/is_npc), reactions, updated_at
103
- 'pulls/list-pull-comments': item => ({
104
- id: item.id,
105
- author: item.author?.username,
106
- nickname: item.author?.nickname,
107
- body: item.body,
108
- created_at: item.created_at
109
- }),
110
- // PR 发表评论摘要:只保留评论 ID 和创建时间(body 已在请求中传入,无需重复)
111
- // 过滤: body(请求已传入), author 完整对象(avatar/email/freeze/is_npc/nickname/username), reactions, updated_at
112
- 'pulls/post-pull-comment': item => ({
113
- id: item.id,
114
- created_at: item.created_at
115
- }),
116
- // PR 标签列表摘要:保留 ID、名称、颜色和描述
117
- // 过滤: 无
118
- 'pulls/list-pull-labels': item => ({
119
- id: item.id,
120
- name: item.name,
121
- color: item.color,
122
- description: item.description
123
- }),
124
- // PR 添加标签摘要:只保留 ID 和颜色(name 已在请求中传入,无需重复)
125
- // 过滤: name(请求已传入), description
126
- 'pulls/post-pull-labels': item => ({
127
- id: item.id,
128
- color: item.color
129
- }),
130
- // PR CI 状态摘要:保留整体状态和各检查项的核心信息(sha 截断为前 8 位)
131
- // 过滤: sha 完整值, statuses 中每项的 target_url/created_at/updated_at
132
- 'pulls/list-pull-commit-statuses': item => ({
133
- sha: typeof item.sha === 'string' ? item.sha.substring(0, 8) : item.sha,
134
- state: item.state,
135
- statuses: item.statuses?.map?.(s => ({
136
- context: s.context,
137
- state: s.state,
138
- description: s.description
139
- })) || []
140
- }),
141
- // PR 评审列表摘要:保留作者用户名和昵称、状态和内容
142
- // 过滤: author 完整对象(avatar/email/freeze/is_npc), created_at, updated_at
143
- 'pulls/list-pull-reviews': item => ({
144
- id: item.id,
145
- author: item.author?.username,
146
- nickname: item.author?.nickname,
147
- state: item.state,
148
- body: item.body
149
- }),
150
- // PR 处理人列表摘要:保留用户名和昵称
151
- // 过滤: avatar, email, freeze, is_npc
152
- 'pulls/list-pull-assignees': item => ({
153
- username: item.username,
154
- nickname: item.nickname
155
- }),
156
- // PR 添加处理人摘要:保留处理人用户名和昵称列表
157
- // 过滤: assignees 中每个用户的 avatar/email/freeze/is_npc,以及 PR 其他字段
158
- 'pulls/post-pull-assignees': item => ({
159
- number: item.number,
160
- assignees: item.assignees?.map?.(a => ({
161
- username: a.username,
162
- nickname: a.nickname
163
- })).filter(a => a.username) || []
164
- })
165
- };
166
-
167
- /**
168
- * 对响应数据应用摘要提取(如果当前 tool 配置了摘要提取器)
169
- * @param data 原始 data(对象或数组)
170
- * @param toolKey 当前 tool 标识,格式为 "module/tool"
171
- * @returns 摘要后的 data,如果无匹配提取器则返回 null
172
- */
173
- function summarizeResponse(data, toolKey) {
174
- const extractor = SUMMARY_EXTRACTORS[toolKey];
175
- if (!extractor) return null;
176
- if (data == null) return data;
177
- if (Array.isArray(data)) {
178
- return data.map(extractor);
179
- }
180
- return extractor(data);
181
- }
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.trimSummary = trimSummary;
7
- /**
8
- * 去除 summary 中的英文部分(保留中文句号前的内容)
9
- */
10
- function trimSummary(summary) {
11
- if (!summary) return '';
12
- // 匹配中文句号"。"后面跟英文的模式,只保留中文部分
13
- const match = summary.match(/^(.*?[\u4e00-\u9fff].*?)[。.]\s*[A-Z]/);
14
- if (match) return match[1];
15
- // 没有匹配到则返回原文
16
- return summary;
17
- }
@@ -1,53 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.showModuleHelp = showModuleHelp;
7
- exports.trimSummary = trimSummary;
8
- /**
9
- * 去除 summary 中的英文部分(保留中文句号前的内容)
10
- */
11
- function trimSummary(summary) {
12
- if (!summary) return '';
13
- // 匹配中文句号"。"后面跟英文的模式,只保留中文部分
14
- const match = summary.match(/^(.*?[\u4e00-\u9fff].*?)[。.]\s*[A-Z]/);
15
- if (match) return match[1];
16
- // 没有匹配到则返回原文
17
- return summary;
18
- }
19
-
20
- /**
21
- * 显示模块帮助文档
22
- * @param helpData 帮助数据
23
- * @param moduleName 模块名称
24
- */
25
- function showModuleHelp(helpData, moduleName) {
26
- const moduleHelpData = helpData.modulesHelp[moduleName];
27
- if (!moduleHelpData) {
28
- console.error(`模块 ${moduleName} 不存在`);
29
- process.exit(1);
30
- }
31
- const cliCmd = "cnb" || 'cnb';
32
- const entries = Object.values(moduleHelpData).map(info => ({
33
- name: info.filename,
34
- summary: trimSummary(info.summary || '')
35
- }));
36
- const maxNameLen = Math.max(...entries.map(e => e.name.length));
37
- const pad = maxNameLen + 2;
38
- let toolListMsg = '';
39
- for (const {
40
- name,
41
- summary
42
- } of entries) {
43
- toolListMsg += ` ${name.padEnd(pad)} ${summary}\n`;
44
- }
45
- const helpMsg = `
46
- ${moduleName} 模块
47
-
48
- 工具:
49
- ${toolListMsg}
50
- 用法: ${cliCmd} ${moduleName} <tool> --help
51
- `;
52
- console.log(helpMsg);
53
- }
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.schemaToJson = schemaToJson;
7
- function schemaToJson(schema, json) {
8
- if (schema.type === 'object' || schema.type === 'array') {
9
- const props = schema.type === 'object' ? schema.properties : schema.items.properties;
10
- // eslint-disable-next-line no-restricted-syntax
11
- for (const key in props) {
12
- const {
13
- type,
14
- items
15
- } = props[key];
16
- if (type === 'object') {
17
- json[key] = schemaToJson(props[key], {});
18
- } else if (type === 'array') {
19
- if (items.properties) {
20
- json[key] = [schemaToJson(props[key], {})];
21
- } else {
22
- json[key] = [items.type];
23
- }
24
- } else {
25
- json[key] = type;
26
- }
27
- }
28
- } else {
29
- return schema.type;
30
- }
31
- return json;
32
- }
@@ -1,276 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.PR_SHORTCUTS = exports.ISSUE_SHORTCUTS = void 0;
7
- exports.detectEventContext = detectEventContext;
8
- exports.resolveShortcut = resolveShortcut;
9
- exports.showShort = showShort;
10
- /**
11
- * 快捷命令模块
12
- *
13
- * 根据 CNB 环境变量自动检测当前事件类型(Issue / PR),
14
- * 提供场景化的快捷命令,自动从环境变量注入 path 参数。
15
- */
16
-
17
- // ============================================================
18
- // 类型定义
19
- // ============================================================
20
-
21
- // ============================================================
22
- // 环境变量检测
23
- // ============================================================
24
-
25
- function detectEventContext() {
26
- if (process.env.CNB_ISSUE_IID) return 'issue';
27
- if (process.env.CNB_PULL_REQUEST_IID) return 'pull_request';
28
- return 'unknown';
29
- }
30
- function getRepo() {
31
- return process.env.CNB_REPO_SLUG || '<CNB_REPO_SLUG>';
32
- }
33
- function getIssueNumber() {
34
- return process.env.CNB_ISSUE_IID || '<CNB_ISSUE_IID>';
35
- }
36
- function getPRNumber() {
37
- return process.env.CNB_PULL_REQUEST_IID || '<CNB_PULL_REQUEST_IID>';
38
- }
39
-
40
- // ============================================================
41
- // 快捷命令定义
42
- // ============================================================
43
-
44
- const ISSUE_SHORTCUTS = exports.ISSUE_SHORTCUTS = [{
45
- shortName: 'get',
46
- realTool: 'get-issue',
47
- description: '获取详情'
48
- }, {
49
- shortName: 'list-comments',
50
- realTool: 'list-issue-comments',
51
- description: '获取评论列表'
52
- }, {
53
- shortName: 'comment',
54
- realTool: 'post-issue-comment',
55
- description: '评论',
56
- dataTip: "--body 内容"
57
- }, {
58
- shortName: 'close',
59
- realTool: 'update-issue',
60
- description: '关闭',
61
- autoData: {
62
- state: 'closed',
63
- state_reason: 'completed'
64
- }
65
- }, {
66
- shortName: 'open',
67
- realTool: 'update-issue',
68
- description: '打开',
69
- autoData: {
70
- state: 'open',
71
- state_reason: 'reopened'
72
- }
73
- }, {
74
- shortName: 'list-labels',
75
- realTool: 'list-issue-labels',
76
- description: '查看标签'
77
- }, {
78
- shortName: 'add-labels',
79
- realTool: 'post-issue-labels',
80
- description: '添加标签',
81
- dataTip: "--labels bug --labels feature"
82
- }, {
83
- shortName: 'list-assignees',
84
- realTool: 'list-issue-assignees',
85
- description: '查看处理人'
86
- }, {
87
- shortName: 'add-assignees',
88
- realTool: 'post-issue-assignees',
89
- description: '添加处理人',
90
- dataTip: "--assignees username"
91
- }, {
92
- shortName: 'upload-file',
93
- realTool: 'post-issue-file-asset-upload-url',
94
- description: '上传文件',
95
- upload: true,
96
- dataTip: "--file 文件路径"
97
- }, {
98
- shortName: 'upload-image',
99
- realTool: 'post-issue-image-asset-upload-url',
100
- description: '上传图片',
101
- upload: true,
102
- dataTip: "--file 图片路径"
103
- }];
104
- const PR_SHORTCUTS = exports.PR_SHORTCUTS = [{
105
- shortName: 'get',
106
- realTool: 'get-pull',
107
- description: '获取详情'
108
- }, {
109
- shortName: 'list-files',
110
- realTool: 'list-pull-files',
111
- description: '获取文件变更'
112
- }, {
113
- shortName: 'list-commits',
114
- realTool: 'list-pull-commits',
115
- description: '获取提交记录'
116
- }, {
117
- shortName: 'list-comments',
118
- realTool: 'list-pull-comments',
119
- description: '获取评论列表'
120
- }, {
121
- shortName: 'comment',
122
- realTool: 'post-pull-comment',
123
- description: '评论',
124
- dataTip: "--body 内容"
125
- }, {
126
- shortName: 'list-labels',
127
- realTool: 'list-pull-labels',
128
- description: '查看标签'
129
- }, {
130
- shortName: 'add-labels',
131
- realTool: 'post-pull-labels',
132
- description: '添加标签',
133
- dataTip: "--labels ready --labels approved"
134
- }, {
135
- shortName: 'check-status',
136
- realTool: 'list-pull-commit-statuses',
137
- description: '查看 CI 状态'
138
- }, {
139
- shortName: 'list-reviews',
140
- realTool: 'list-pull-reviews',
141
- description: '查看评审列表'
142
- }, {
143
- shortName: 'list-assignees',
144
- realTool: 'list-pull-assignees',
145
- description: '查看处理人'
146
- }, {
147
- shortName: 'upload-file',
148
- realTool: 'upload-files',
149
- description: '上传文件',
150
- repoOnly: true,
151
- upload: true,
152
- dataTip: "--file 文件路径"
153
- }, {
154
- shortName: 'upload-image',
155
- realTool: 'upload-imgs',
156
- description: '上传图片',
157
- repoOnly: true,
158
- upload: true,
159
- dataTip: "--file 图片路径"
160
- }];
161
-
162
- // ============================================================
163
- // --short 帮助输出
164
- // ============================================================
165
-
166
- /** 计算字符串的显示宽度(中文/全角占2,英文/半角占1) */
167
- function displayWidth(str) {
168
- let width = 0;
169
- for (const ch of str) {
170
- const code = ch.codePointAt(0) || 0;
171
- // CJK、全角字符占2宽度
172
- width += code >= 0x1100 && (code <= 0x115f || code === 0x2329 || code === 0x232a || code >= 0x2e80 && code <= 0x3247 || code >= 0x3250 && code <= 0x4dbf || code >= 0x4e00 && code <= 0xa4c6 || code >= 0xa960 && code <= 0xa97c || code >= 0xac00 && code <= 0xd7a3 || code >= 0xf900 && code <= 0xfaff || code >= 0xfe10 && code <= 0xfe19 || code >= 0xfe30 && code <= 0xfe6b || code >= 0xff01 && code <= 0xff60 || code >= 0xffe0 && code <= 0xffe6 || code >= 0x1f000 && code <= 0x1fbff || code >= 0x20000 && code <= 0x2fffd || code >= 0x30000 && code <= 0x3fffd) ? 2 : 1;
173
- }
174
- return width;
175
- }
176
-
177
- /** 用全角空格将字符串补齐到指定显示宽度 */
178
- function padToWidth(str, targetWidth) {
179
- const diff = targetWidth - displayWidth(str);
180
- if (diff <= 0) return str;
181
- // 每个全角空格占2宽度
182
- const fullSpaces = Math.floor(diff / 2);
183
- const halfSpace = diff % 2 === 1 ? ' ' : '';
184
- return str + ' '.repeat(fullSpaces) + halfSpace;
185
- }
186
- function formatShortcutList(shortcuts, cliCmd, moduleName) {
187
- const maxWidth = Math.max(...shortcuts.map(s => displayWidth(s.description)));
188
- return shortcuts.map(s => {
189
- const desc = padToWidth(s.description, maxWidth + 2);
190
- const cmd = `${cliCmd} ${moduleName} ${s.shortName}`;
191
- const dataPart = s.dataTip ? ` ${s.dataTip}` : '';
192
- return ` ${desc} ${cmd}${dataPart}`;
193
- }).join('\n');
194
- }
195
- function showShort() {
196
- const ctx = detectEventContext();
197
- const cliCmd = "cnb" || 'cnb';
198
- const repo = getRepo();
199
- if (ctx === 'issue' || ctx === 'pull_request') {
200
- const isIssue = ctx === 'issue';
201
- const number = isIssue ? getIssueNumber() : getPRNumber();
202
- const emoji = isIssue ? '📋' : '🔀';
203
- const label = isIssue ? 'Issue' : 'Pull Request';
204
- const tag = isIssue ? 'Issue' : 'PR';
205
- const moduleName = isIssue ? 'issues' : 'pulls';
206
- const shortcuts = isIssue ? ISSUE_SHORTCUTS : PR_SHORTCUTS;
207
- const envVars = isIssue ? 'CNB_REPO_SLUG 和 CNB_ISSUE_IID' : 'CNB_REPO_SLUG 和 CNB_PULL_REQUEST_IID';
208
- const list = formatShortcutList(shortcuts, cliCmd, moduleName);
209
- console.log(`
210
- ${emoji} 当前场景: ${label} 事件 (${tag} #${number})
211
- 仓库: ${repo}
212
-
213
- 常用快捷命令(path 参数已从环境变量自动获取):
214
- ${list}
215
-
216
- 提示: ${tag} 相关命令会自动使用 ${envVars}
217
- 默认只输出摘要信息,添加 --verbose 可输出全部信息
218
- `);
219
- } else {
220
- const issueList = formatShortcutList(ISSUE_SHORTCUTS, cliCmd, 'issues');
221
- const prList = formatShortcutList(PR_SHORTCUTS, cliCmd, 'pulls');
222
- console.log(`
223
- ⚠️ 未检测到 Issue/PR 事件上下文
224
- (CNB_ISSUE_IID 和 CNB_PULL_REQUEST_IID 均未设置)
225
-
226
- 📋 Issue 场景常用命令:
227
- ${issueList}
228
-
229
- 🔀 PR 场景常用命令:
230
- ${prList}
231
-
232
- 提示: 快捷命令可使用以下环境变量:
233
- CNB_REPO_SLUG - 仓库路径
234
- CNB_ISSUE_IID - Issue 编号(Issue 相关快捷命令)
235
- CNB_PULL_REQUEST_IID - PR 编号(PR 相关快捷命令)
236
-
237
- 默认只输出摘要信息,添加 --v 可输出全部信息
238
- `);
239
- }
240
- }
241
-
242
- // ============================================================
243
- // 快捷命令解析
244
- // ============================================================
245
-
246
- function buildAutoPath(moduleName, repoOnly) {
247
- const repo = process.env.CNB_REPO_SLUG || '';
248
- if (repoOnly) return {
249
- repo
250
- };
251
- const number = moduleName === 'issues' ? process.env.CNB_ISSUE_IID || '' : process.env.CNB_PULL_REQUEST_IID || '';
252
- return {
253
- repo,
254
- number
255
- };
256
- }
257
-
258
- /**
259
- * 尝试将用户输入的 module + tool 解析为快捷命令
260
- *
261
- * @returns 解析结果,如果不是快捷命令则返回 null
262
- */
263
- function resolveShortcut(moduleName, toolName) {
264
- if (!moduleName || !toolName) return null;
265
- const shortcuts = moduleName === 'issues' ? ISSUE_SHORTCUTS : moduleName === 'pulls' ? PR_SHORTCUTS : null;
266
- if (!shortcuts) return null;
267
- const matched = shortcuts.find(s => s.shortName === toolName);
268
- if (!matched) return null;
269
- return {
270
- module: moduleName,
271
- tool: matched.realTool,
272
- autoPath: buildAutoPath(moduleName, !!matched.repoOnly),
273
- autoData: matched.autoData || null,
274
- upload: !!matched.upload
275
- };
276
- }
@@ -1,127 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.showToolHelp = showToolHelp;
7
- var _modules = require("./modules.help");
8
- /**
9
- * 显示工具帮助文档
10
- * - path 和 query 参数混合展示为统一的 --key value 格式(LLM 不需要区分来源)
11
- * - body 参数展示顶层字段列表,从 schema.required 数组读取必填标记
12
- * - 权限直接读 help.json 中预提取的 permission 字段
13
- * @param helpData 帮助数据
14
- * @param moduleName 模块名称
15
- * @param tool 工具名称
16
- */
17
- function showToolHelp(helpData, moduleName, tool) {
18
- const toolHelpData = helpData.modulesHelp[moduleName][tool];
19
- if (!toolHelpData) {
20
- console.error(`工具 ${tool} 不存在`);
21
- process.exit(1);
22
- }
23
- const cliCmd = "cnb" || 'cnb';
24
- const {
25
- summary,
26
- permission,
27
- help
28
- } = toolHelpData;
29
- const {
30
- parameter
31
- } = help;
32
- const {
33
- path,
34
- query,
35
- body
36
- } = parameter;
37
-
38
- // 收集所有扁平参数(path + query 混合展示)
39
- const paramLines = [];
40
- const exampleParts = [];
41
-
42
- // path 参数
43
- if (path) {
44
- for (const [key, param] of Object.entries(path)) {
45
- const req = param.required ? ',必填' : '';
46
- paramLines.push(` --${key.padEnd(14)} (${param.type}${req}) ${param.description || ''}`);
47
- if (param.required) {
48
- exampleParts.push(`--${key} <${param.type}>`);
49
- }
50
- }
51
- }
52
-
53
- // query 参数
54
- if (query) {
55
- for (const [key, param] of Object.entries(query)) {
56
- const req = param.required ? ',必填' : '';
57
- const enumStr = param.enum ? ` [${param.enum.join(',')}]` : '';
58
- paramLines.push(` --${key.padEnd(14)} (${param.type}${req}) ${param.description || ''}${enumStr}`);
59
- if (param.required) {
60
- exampleParts.push(`--${key} <${param.type}>`);
61
- }
62
- }
63
- }
64
-
65
- // body 参数
66
- let bodyMsg = '';
67
- let bodyExample = '';
68
- if (body) {
69
- const {
70
- schema
71
- } = body;
72
- if (schema) {
73
- const bodyLines = [];
74
- const bodyExampleObj = {};
75
- const props = schema.type === 'array' ? schema.items?.properties : schema.properties;
76
-
77
- // Swagger 的 required 是父级数组,不在每个 property 上
78
- const requiredFields = new Set(schema.required || schema.items?.required || []);
79
- if (props) {
80
- for (const [key, prop] of Object.entries(props)) {
81
- const type = prop.type || 'object';
82
- const isRequired = requiredFields.has(key);
83
- const req = isRequired ? ',必填' : '';
84
- // body 属性的 description 在生成时未 trim,运行时 trim
85
- const desc = (0, _modules.trimSummary)(prop.description || '');
86
- bodyLines.push(` ${key.padEnd(16)} (${type}${req}) ${desc}`);
87
- if (isRequired) {
88
- bodyExampleObj[key] = `<${type}>`;
89
- }
90
- }
91
- }
92
- if (bodyLines.length > 0) {
93
- bodyMsg = `\nBody (--data JSON):\n${bodyLines.join('\n')}`;
94
- }
95
- if (Object.keys(bodyExampleObj).length > 0) {
96
- bodyExample = ` --data '${JSON.stringify(bodyExampleObj)}'`;
97
- } else if (bodyLines.length > 0) {
98
- // 没有 required 标记时,取前两个字段作为示例
99
- const sampleKeys = Object.keys(props).slice(0, 2);
100
- const sampleObj = {};
101
- for (const k of sampleKeys) {
102
- sampleObj[k] = `<${props[k].type || 'string'}>`;
103
- }
104
- if (sampleKeys.length > 0) {
105
- bodyExample = ` --data '${JSON.stringify(sampleObj)}'`;
106
- }
107
- }
108
- }
109
- }
110
-
111
- // 构建输出
112
- let output = `${moduleName} ${tool} - ${summary}`;
113
- if (permission) {
114
- output += `\n权限: ${permission}`;
115
- }
116
- if (paramLines.length > 0) {
117
- output += `\n\n参数:\n${paramLines.join('\n')}`;
118
- }
119
- if (bodyMsg) {
120
- output += bodyMsg;
121
- }
122
-
123
- // 示例
124
- const exampleCmd = `${cliCmd} ${moduleName} ${tool}${exampleParts.length > 0 ? ' ' + exampleParts.join(' ') : ''}${bodyExample}`;
125
- output += `\n\n示例: ${exampleCmd}`;
126
- console.log(output);
127
- }