@ghx-dev/core 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -2
- package/dist/agent.d.ts +32 -7
- package/dist/agent.js +29 -12
- package/dist/agent.js.map +1 -1
- package/dist/{chunk-JH6GM6XU.js → chunk-OL4ARD3R.js} +116 -7
- package/dist/chunk-OL4ARD3R.js.map +1 -0
- package/dist/chunk-PJ2JKKQE.js +4148 -0
- package/dist/chunk-PJ2JKKQE.js.map +1 -0
- package/dist/{chunk-4PLVKNCF.js → chunk-SCIJMW5P.js} +14 -4
- package/dist/chunk-SCIJMW5P.js.map +1 -0
- package/dist/cli/assets/skills/ghx/SKILL.md +57 -0
- package/dist/cli/index.js +373 -41
- package/dist/cli/index.js.map +1 -1
- package/dist/{core/contracts/envelope.d.ts → envelope-BpF6MNCv.d.ts} +15 -3
- package/dist/index.d.ts +470 -22
- package/dist/index.js +6 -30
- package/package.json +11 -9
- package/dist/agent-interface/prompt/main-skill.d.ts +0 -3
- package/dist/agent-interface/prompt/main-skill.js +0 -7
- package/dist/agent-interface/prompt/main-skill.js.map +0 -1
- package/dist/agent-interface/tools/execute-tool.d.ts +0 -16
- package/dist/agent-interface/tools/execute-tool.js +0 -7
- package/dist/agent-interface/tools/execute-tool.js.map +0 -1
- package/dist/agent-interface/tools/explain-tool.d.ts +0 -11
- package/dist/agent-interface/tools/explain-tool.js +0 -9
- package/dist/agent-interface/tools/explain-tool.js.map +0 -1
- package/dist/agent-interface/tools/list-capabilities-tool.d.ts +0 -7
- package/dist/agent-interface/tools/list-capabilities-tool.js +0 -9
- package/dist/agent-interface/tools/list-capabilities-tool.js.map +0 -1
- package/dist/chunk-22WWCK6A.js +0 -92
- package/dist/chunk-22WWCK6A.js.map +0 -1
- package/dist/chunk-2W4L5YCC.js +0 -116
- package/dist/chunk-2W4L5YCC.js.map +0 -1
- package/dist/chunk-3MRJX72M.js +0 -209
- package/dist/chunk-3MRJX72M.js.map +0 -1
- package/dist/chunk-4PLVKNCF.js.map +0 -1
- package/dist/chunk-573MDG3I.js +0 -18
- package/dist/chunk-573MDG3I.js.map +0 -1
- package/dist/chunk-5JRLVOF2.js +0 -50
- package/dist/chunk-5JRLVOF2.js.map +0 -1
- package/dist/chunk-B6RLMKS4.js +0 -41
- package/dist/chunk-B6RLMKS4.js.map +0 -1
- package/dist/chunk-D746VR3B.js +0 -38
- package/dist/chunk-D746VR3B.js.map +0 -1
- package/dist/chunk-DJIEG6K7.js +0 -20
- package/dist/chunk-DJIEG6K7.js.map +0 -1
- package/dist/chunk-DLKIQBK6.js +0 -106
- package/dist/chunk-DLKIQBK6.js.map +0 -1
- package/dist/chunk-EBRDO4Y6.js +0 -31
- package/dist/chunk-EBRDO4Y6.js.map +0 -1
- package/dist/chunk-FXN6IIT5.js +0 -14
- package/dist/chunk-FXN6IIT5.js.map +0 -1
- package/dist/chunk-GMTG7X2L.js +0 -16
- package/dist/chunk-GMTG7X2L.js.map +0 -1
- package/dist/chunk-HQ2VRCH7.js +0 -42
- package/dist/chunk-HQ2VRCH7.js.map +0 -1
- package/dist/chunk-JH6GM6XU.js.map +0 -1
- package/dist/chunk-JLDU462R.js +0 -1352
- package/dist/chunk-JLDU462R.js.map +0 -1
- package/dist/chunk-MGNGSGMF.js +0 -203
- package/dist/chunk-MGNGSGMF.js.map +0 -1
- package/dist/chunk-NFF5VF4U.js +0 -28
- package/dist/chunk-NFF5VF4U.js.map +0 -1
- package/dist/chunk-QEAMC4IJ.js +0 -34
- package/dist/chunk-QEAMC4IJ.js.map +0 -1
- package/dist/chunk-QZZC53HF.js +0 -38
- package/dist/chunk-QZZC53HF.js.map +0 -1
- package/dist/chunk-RUQXGZ35.js +0 -34
- package/dist/chunk-RUQXGZ35.js.map +0 -1
- package/dist/chunk-SA2D4A5U.js +0 -1496
- package/dist/chunk-SA2D4A5U.js.map +0 -1
- package/dist/chunk-SD7U4BNA.js +0 -174
- package/dist/chunk-SD7U4BNA.js.map +0 -1
- package/dist/chunk-SJR2SACI.js +0 -30
- package/dist/chunk-SJR2SACI.js.map +0 -1
- package/dist/chunk-TCLMLVUQ.js +0 -38
- package/dist/chunk-TCLMLVUQ.js.map +0 -1
- package/dist/chunk-TDTKOJKN.js +0 -52
- package/dist/chunk-TDTKOJKN.js.map +0 -1
- package/dist/chunk-UGWIZ3RI.js +0 -7
- package/dist/chunk-UGWIZ3RI.js.map +0 -1
- package/dist/chunk-UOJWOHRM.js +0 -16
- package/dist/chunk-UOJWOHRM.js.map +0 -1
- package/dist/chunk-VD5NXQP7.js +0 -42
- package/dist/chunk-VD5NXQP7.js.map +0 -1
- package/dist/chunk-W2TKG2UL.js +0 -37
- package/dist/chunk-W2TKG2UL.js.map +0 -1
- package/dist/chunk-W6ROKCY5.js +0 -28
- package/dist/chunk-W6ROKCY5.js.map +0 -1
- package/dist/chunk-XNMM64WU.js +0 -221
- package/dist/chunk-XNMM64WU.js.map +0 -1
- package/dist/cli/commands/capabilities-explain.d.ts +0 -3
- package/dist/cli/commands/capabilities-explain.js +0 -10
- package/dist/cli/commands/capabilities-explain.js.map +0 -1
- package/dist/cli/commands/capabilities-list.d.ts +0 -3
- package/dist/cli/commands/capabilities-list.js +0 -10
- package/dist/cli/commands/capabilities-list.js.map +0 -1
- package/dist/cli/commands/doctor.d.ts +0 -3
- package/dist/cli/commands/doctor.js +0 -7
- package/dist/cli/commands/doctor.js.map +0 -1
- package/dist/cli/commands/routes.d.ts +0 -3
- package/dist/cli/commands/routes.js +0 -7
- package/dist/cli/commands/routes.js.map +0 -1
- package/dist/cli/commands/run.d.ts +0 -3
- package/dist/cli/commands/run.js +0 -31
- package/dist/cli/commands/run.js.map +0 -1
- package/dist/cli/commands/setup.d.ts +0 -3
- package/dist/cli/commands/setup.js +0 -7
- package/dist/cli/commands/setup.js.map +0 -1
- package/dist/cli/formatters/json.d.ts +0 -3
- package/dist/cli/formatters/json.js +0 -8
- package/dist/cli/formatters/json.js.map +0 -1
- package/dist/cli/formatters/table.d.ts +0 -3
- package/dist/cli/formatters/table.js +0 -8
- package/dist/cli/formatters/table.js.map +0 -1
- package/dist/core/contracts/envelope.js +0 -1
- package/dist/core/contracts/envelope.js.map +0 -1
- package/dist/core/contracts/task.d.ts +0 -7
- package/dist/core/contracts/task.js +0 -1
- package/dist/core/contracts/task.js.map +0 -1
- package/dist/core/contracts/tasks/check_run.annotations.list.d.ts +0 -5
- package/dist/core/contracts/tasks/check_run.annotations.list.js +0 -8
- package/dist/core/contracts/tasks/check_run.annotations.list.js.map +0 -1
- package/dist/core/contracts/tasks/issue.assignees.update.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.assignees.update.js +0 -8
- package/dist/core/contracts/tasks/issue.assignees.update.js.map +0 -1
- package/dist/core/contracts/tasks/issue.blocked_by.add.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.blocked_by.add.js +0 -8
- package/dist/core/contracts/tasks/issue.blocked_by.add.js.map +0 -1
- package/dist/core/contracts/tasks/issue.blocked_by.remove.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.blocked_by.remove.js +0 -8
- package/dist/core/contracts/tasks/issue.blocked_by.remove.js.map +0 -1
- package/dist/core/contracts/tasks/issue.close.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.close.js +0 -8
- package/dist/core/contracts/tasks/issue.close.js.map +0 -1
- package/dist/core/contracts/tasks/issue.comments.create.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.comments.create.js +0 -8
- package/dist/core/contracts/tasks/issue.comments.create.js.map +0 -1
- package/dist/core/contracts/tasks/issue.comments.list.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.comments.list.js +0 -8
- package/dist/core/contracts/tasks/issue.comments.list.js.map +0 -1
- package/dist/core/contracts/tasks/issue.create.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.create.js +0 -8
- package/dist/core/contracts/tasks/issue.create.js.map +0 -1
- package/dist/core/contracts/tasks/issue.delete.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.delete.js +0 -8
- package/dist/core/contracts/tasks/issue.delete.js.map +0 -1
- package/dist/core/contracts/tasks/issue.labels.update.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.labels.update.js +0 -8
- package/dist/core/contracts/tasks/issue.labels.update.js.map +0 -1
- package/dist/core/contracts/tasks/issue.linked_prs.list.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.linked_prs.list.js +0 -8
- package/dist/core/contracts/tasks/issue.linked_prs.list.js.map +0 -1
- package/dist/core/contracts/tasks/issue.list.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.list.js +0 -8
- package/dist/core/contracts/tasks/issue.list.js.map +0 -1
- package/dist/core/contracts/tasks/issue.milestone.set.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.milestone.set.js +0 -8
- package/dist/core/contracts/tasks/issue.milestone.set.js.map +0 -1
- package/dist/core/contracts/tasks/issue.parent.remove.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.parent.remove.js +0 -8
- package/dist/core/contracts/tasks/issue.parent.remove.js.map +0 -1
- package/dist/core/contracts/tasks/issue.parent.set.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.parent.set.js +0 -8
- package/dist/core/contracts/tasks/issue.parent.set.js.map +0 -1
- package/dist/core/contracts/tasks/issue.relations.get.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.relations.get.js +0 -8
- package/dist/core/contracts/tasks/issue.relations.get.js.map +0 -1
- package/dist/core/contracts/tasks/issue.reopen.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.reopen.js +0 -8
- package/dist/core/contracts/tasks/issue.reopen.js.map +0 -1
- package/dist/core/contracts/tasks/issue.update.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.update.js +0 -8
- package/dist/core/contracts/tasks/issue.update.js.map +0 -1
- package/dist/core/contracts/tasks/issue.view.d.ts +0 -5
- package/dist/core/contracts/tasks/issue.view.js +0 -8
- package/dist/core/contracts/tasks/issue.view.js.map +0 -1
- package/dist/core/contracts/tasks/pr.assignees.update.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.assignees.update.js +0 -8
- package/dist/core/contracts/tasks/pr.assignees.update.js.map +0 -1
- package/dist/core/contracts/tasks/pr.branch.update.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.branch.update.js +0 -8
- package/dist/core/contracts/tasks/pr.branch.update.js.map +0 -1
- package/dist/core/contracts/tasks/pr.checks.get_failed.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.checks.get_failed.js +0 -8
- package/dist/core/contracts/tasks/pr.checks.get_failed.js.map +0 -1
- package/dist/core/contracts/tasks/pr.checks.rerun_all.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.checks.rerun_all.js +0 -8
- package/dist/core/contracts/tasks/pr.checks.rerun_all.js.map +0 -1
- package/dist/core/contracts/tasks/pr.checks.rerun_failed.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.checks.rerun_failed.js +0 -8
- package/dist/core/contracts/tasks/pr.checks.rerun_failed.js.map +0 -1
- package/dist/core/contracts/tasks/pr.comment.reply.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.comment.reply.js +0 -8
- package/dist/core/contracts/tasks/pr.comment.reply.js.map +0 -1
- package/dist/core/contracts/tasks/pr.comment.resolve.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.comment.resolve.js +0 -8
- package/dist/core/contracts/tasks/pr.comment.resolve.js.map +0 -1
- package/dist/core/contracts/tasks/pr.comment.unresolve.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.comment.unresolve.js +0 -8
- package/dist/core/contracts/tasks/pr.comment.unresolve.js.map +0 -1
- package/dist/core/contracts/tasks/pr.comments.list.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.comments.list.js +0 -8
- package/dist/core/contracts/tasks/pr.comments.list.js.map +0 -1
- package/dist/core/contracts/tasks/pr.diff.list_files.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.diff.list_files.js +0 -8
- package/dist/core/contracts/tasks/pr.diff.list_files.js.map +0 -1
- package/dist/core/contracts/tasks/pr.list.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.list.js +0 -8
- package/dist/core/contracts/tasks/pr.list.js.map +0 -1
- package/dist/core/contracts/tasks/pr.merge.execute.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.merge.execute.js +0 -8
- package/dist/core/contracts/tasks/pr.merge.execute.js.map +0 -1
- package/dist/core/contracts/tasks/pr.mergeability.view.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.mergeability.view.js +0 -8
- package/dist/core/contracts/tasks/pr.mergeability.view.js.map +0 -1
- package/dist/core/contracts/tasks/pr.ready_for_review.set.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.ready_for_review.set.js +0 -8
- package/dist/core/contracts/tasks/pr.ready_for_review.set.js.map +0 -1
- package/dist/core/contracts/tasks/pr.review.submit_approve.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.review.submit_approve.js +0 -8
- package/dist/core/contracts/tasks/pr.review.submit_approve.js.map +0 -1
- package/dist/core/contracts/tasks/pr.review.submit_comment.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.review.submit_comment.js +0 -8
- package/dist/core/contracts/tasks/pr.review.submit_comment.js.map +0 -1
- package/dist/core/contracts/tasks/pr.review.submit_request_changes.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.review.submit_request_changes.js +0 -8
- package/dist/core/contracts/tasks/pr.review.submit_request_changes.js.map +0 -1
- package/dist/core/contracts/tasks/pr.reviewers.request.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.reviewers.request.js +0 -8
- package/dist/core/contracts/tasks/pr.reviewers.request.js.map +0 -1
- package/dist/core/contracts/tasks/pr.reviews.list.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.reviews.list.js +0 -8
- package/dist/core/contracts/tasks/pr.reviews.list.js.map +0 -1
- package/dist/core/contracts/tasks/pr.status.checks.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.status.checks.js +0 -8
- package/dist/core/contracts/tasks/pr.status.checks.js.map +0 -1
- package/dist/core/contracts/tasks/pr.view.d.ts +0 -5
- package/dist/core/contracts/tasks/pr.view.js +0 -8
- package/dist/core/contracts/tasks/pr.view.js.map +0 -1
- package/dist/core/contracts/tasks/project_v2.fields.list.d.ts +0 -5
- package/dist/core/contracts/tasks/project_v2.fields.list.js +0 -8
- package/dist/core/contracts/tasks/project_v2.fields.list.js.map +0 -1
- package/dist/core/contracts/tasks/project_v2.item.add_issue.d.ts +0 -5
- package/dist/core/contracts/tasks/project_v2.item.add_issue.js +0 -8
- package/dist/core/contracts/tasks/project_v2.item.add_issue.js.map +0 -1
- package/dist/core/contracts/tasks/project_v2.item.field.update.d.ts +0 -5
- package/dist/core/contracts/tasks/project_v2.item.field.update.js +0 -8
- package/dist/core/contracts/tasks/project_v2.item.field.update.js.map +0 -1
- package/dist/core/contracts/tasks/project_v2.items.list.d.ts +0 -5
- package/dist/core/contracts/tasks/project_v2.items.list.js +0 -8
- package/dist/core/contracts/tasks/project_v2.items.list.js.map +0 -1
- package/dist/core/contracts/tasks/project_v2.org.get.d.ts +0 -5
- package/dist/core/contracts/tasks/project_v2.org.get.js +0 -8
- package/dist/core/contracts/tasks/project_v2.org.get.js.map +0 -1
- package/dist/core/contracts/tasks/project_v2.user.get.d.ts +0 -5
- package/dist/core/contracts/tasks/project_v2.user.get.js +0 -8
- package/dist/core/contracts/tasks/project_v2.user.get.js.map +0 -1
- package/dist/core/contracts/tasks/release.create_draft.d.ts +0 -5
- package/dist/core/contracts/tasks/release.create_draft.js +0 -8
- package/dist/core/contracts/tasks/release.create_draft.js.map +0 -1
- package/dist/core/contracts/tasks/release.get.d.ts +0 -5
- package/dist/core/contracts/tasks/release.get.js +0 -8
- package/dist/core/contracts/tasks/release.get.js.map +0 -1
- package/dist/core/contracts/tasks/release.list.d.ts +0 -5
- package/dist/core/contracts/tasks/release.list.js +0 -8
- package/dist/core/contracts/tasks/release.list.js.map +0 -1
- package/dist/core/contracts/tasks/release.publish_draft.d.ts +0 -5
- package/dist/core/contracts/tasks/release.publish_draft.js +0 -8
- package/dist/core/contracts/tasks/release.publish_draft.js.map +0 -1
- package/dist/core/contracts/tasks/release.update.d.ts +0 -5
- package/dist/core/contracts/tasks/release.update.js +0 -8
- package/dist/core/contracts/tasks/release.update.js.map +0 -1
- package/dist/core/contracts/tasks/repo.issue_types.list.d.ts +0 -5
- package/dist/core/contracts/tasks/repo.issue_types.list.js +0 -8
- package/dist/core/contracts/tasks/repo.issue_types.list.js.map +0 -1
- package/dist/core/contracts/tasks/repo.labels.list.d.ts +0 -5
- package/dist/core/contracts/tasks/repo.labels.list.js +0 -8
- package/dist/core/contracts/tasks/repo.labels.list.js.map +0 -1
- package/dist/core/contracts/tasks/repo.view.d.ts +0 -5
- package/dist/core/contracts/tasks/repo.view.js +0 -8
- package/dist/core/contracts/tasks/repo.view.js.map +0 -1
- package/dist/core/contracts/tasks/workflow.get.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow.get.js +0 -8
- package/dist/core/contracts/tasks/workflow.get.js.map +0 -1
- package/dist/core/contracts/tasks/workflow.list.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow.list.js +0 -8
- package/dist/core/contracts/tasks/workflow.list.js.map +0 -1
- package/dist/core/contracts/tasks/workflow_dispatch.run.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow_dispatch.run.js +0 -8
- package/dist/core/contracts/tasks/workflow_dispatch.run.js.map +0 -1
- package/dist/core/contracts/tasks/workflow_job.logs.analyze.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow_job.logs.analyze.js +0 -8
- package/dist/core/contracts/tasks/workflow_job.logs.analyze.js.map +0 -1
- package/dist/core/contracts/tasks/workflow_job.logs.get.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow_job.logs.get.js +0 -8
- package/dist/core/contracts/tasks/workflow_job.logs.get.js.map +0 -1
- package/dist/core/contracts/tasks/workflow_run.artifacts.list.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow_run.artifacts.list.js +0 -8
- package/dist/core/contracts/tasks/workflow_run.artifacts.list.js.map +0 -1
- package/dist/core/contracts/tasks/workflow_run.cancel.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow_run.cancel.js +0 -8
- package/dist/core/contracts/tasks/workflow_run.cancel.js.map +0 -1
- package/dist/core/contracts/tasks/workflow_run.get.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow_run.get.js +0 -8
- package/dist/core/contracts/tasks/workflow_run.get.js.map +0 -1
- package/dist/core/contracts/tasks/workflow_run.jobs.list.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow_run.jobs.list.js +0 -8
- package/dist/core/contracts/tasks/workflow_run.jobs.list.js.map +0 -1
- package/dist/core/contracts/tasks/workflow_run.rerun_all.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow_run.rerun_all.js +0 -8
- package/dist/core/contracts/tasks/workflow_run.rerun_all.js.map +0 -1
- package/dist/core/contracts/tasks/workflow_run.rerun_failed.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow_run.rerun_failed.js +0 -8
- package/dist/core/contracts/tasks/workflow_run.rerun_failed.js.map +0 -1
- package/dist/core/contracts/tasks/workflow_runs.list.d.ts +0 -5
- package/dist/core/contracts/tasks/workflow_runs.list.js +0 -8
- package/dist/core/contracts/tasks/workflow_runs.list.js.map +0 -1
- package/dist/core/errors/codes.d.ts +0 -13
- package/dist/core/errors/codes.js +0 -7
- package/dist/core/errors/codes.js.map +0 -1
- package/dist/core/errors/map-error.d.ts +0 -5
- package/dist/core/errors/map-error.js +0 -8
- package/dist/core/errors/map-error.js.map +0 -1
- package/dist/core/errors/retryability.d.ts +0 -3
- package/dist/core/errors/retryability.js +0 -8
- package/dist/core/errors/retryability.js.map +0 -1
- package/dist/core/execute/execute.d.ts +0 -28
- package/dist/core/execute/execute.js +0 -11
- package/dist/core/execute/execute.js.map +0 -1
- package/dist/core/execution/adapters/cli-adapter.d.ts +0 -22
- package/dist/core/execution/adapters/cli-adapter.js +0 -69
- package/dist/core/execution/adapters/cli-adapter.js.map +0 -1
- package/dist/core/execution/adapters/cli-capability-adapter.d.ts +0 -16
- package/dist/core/execution/adapters/cli-capability-adapter.js +0 -11
- package/dist/core/execution/adapters/cli-capability-adapter.js.map +0 -1
- package/dist/core/execution/adapters/graphql-adapter.d.ts +0 -25
- package/dist/core/execution/adapters/graphql-adapter.js +0 -44
- package/dist/core/execution/adapters/graphql-adapter.js.map +0 -1
- package/dist/core/execution/adapters/graphql-capability-adapter.d.ts +0 -20
- package/dist/core/execution/adapters/graphql-capability-adapter.js +0 -11
- package/dist/core/execution/adapters/graphql-capability-adapter.js.map +0 -1
- package/dist/core/execution/adapters/rest-adapter.d.ts +0 -3
- package/dist/core/execution/adapters/rest-adapter.js +0 -8
- package/dist/core/execution/adapters/rest-adapter.js.map +0 -1
- package/dist/core/execution/cli/safe-runner.d.ts +0 -12
- package/dist/core/execution/cli/safe-runner.js +0 -7
- package/dist/core/execution/cli/safe-runner.js.map +0 -1
- package/dist/core/execution/normalizer.d.ts +0 -13
- package/dist/core/execution/normalizer.js +0 -9
- package/dist/core/execution/normalizer.js.map +0 -1
- package/dist/core/execution/preflight.d.ts +0 -24
- package/dist/core/execution/preflight.js +0 -8
- package/dist/core/execution/preflight.js.map +0 -1
- package/dist/core/registry/index.d.ts +0 -15
- package/dist/core/registry/index.js +0 -12
- package/dist/core/registry/index.js.map +0 -1
- package/dist/core/registry/operation-card-schema.d.ts +0 -167
- package/dist/core/registry/operation-card-schema.js +0 -7
- package/dist/core/registry/operation-card-schema.js.map +0 -1
- package/dist/core/registry/schema-validator.d.ts +0 -16
- package/dist/core/registry/schema-validator.js +0 -9
- package/dist/core/registry/schema-validator.js.map +0 -1
- package/dist/core/registry/types.d.ts +0 -51
- package/dist/core/registry/types.js +0 -1
- package/dist/core/registry/types.js.map +0 -1
- package/dist/core/routing/capability-registry.d.ts +0 -8
- package/dist/core/routing/capability-registry.js +0 -15
- package/dist/core/routing/capability-registry.js.map +0 -1
- package/dist/core/routing/engine.d.ts +0 -32
- package/dist/core/routing/engine.js +0 -23
- package/dist/core/routing/engine.js.map +0 -1
- package/dist/core/routing/policy.d.ts +0 -3
- package/dist/core/routing/policy.js +0 -7
- package/dist/core/routing/policy.js.map +0 -1
- package/dist/core/routing/reason-codes.d.ts +0 -4
- package/dist/core/routing/reason-codes.js +0 -15
- package/dist/core/routing/reason-codes.js.map +0 -1
- package/dist/core/telemetry/logger.d.ts +0 -8
- package/dist/core/telemetry/logger.js +0 -9
- package/dist/core/telemetry/logger.js.map +0 -1
- package/dist/core/telemetry/metrics.d.ts +0 -7
- package/dist/core/telemetry/metrics.js +0 -1
- package/dist/core/telemetry/metrics.js.map +0 -1
- package/dist/gql/client.d.ts +0 -314
- package/dist/gql/client.js +0 -19
- package/dist/gql/client.js.map +0 -1
- package/dist/gql/generated/common-types.d.ts +0 -36
- package/dist/gql/generated/common-types.js +0 -1
- package/dist/gql/generated/common-types.js.map +0 -1
- package/dist/gql/operations/issue-assignees-update.generated.d.ts +0 -33
- package/dist/gql/operations/issue-assignees-update.generated.js +0 -28
- package/dist/gql/operations/issue-assignees-update.generated.js.map +0 -1
- package/dist/gql/operations/issue-blocked-by-add.generated.d.ts +0 -30
- package/dist/gql/operations/issue-blocked-by-add.generated.js +0 -26
- package/dist/gql/operations/issue-blocked-by-add.generated.js.map +0 -1
- package/dist/gql/operations/issue-blocked-by-remove.generated.d.ts +0 -30
- package/dist/gql/operations/issue-blocked-by-remove.generated.js +0 -26
- package/dist/gql/operations/issue-blocked-by-remove.generated.js.map +0 -1
- package/dist/gql/operations/issue-close.generated.d.ts +0 -27
- package/dist/gql/operations/issue-close.generated.js +0 -25
- package/dist/gql/operations/issue-close.generated.js.map +0 -1
- package/dist/gql/operations/issue-comment-create.generated.d.ts +0 -31
- package/dist/gql/operations/issue-comment-create.generated.js +0 -27
- package/dist/gql/operations/issue-comment-create.generated.js.map +0 -1
- package/dist/gql/operations/issue-comments-list.generated.d.ts +0 -59
- package/dist/gql/operations/issue-comments-list.generated.js +0 -9
- package/dist/gql/operations/issue-comments-list.generated.js.map +0 -1
- package/dist/gql/operations/issue-create.generated.d.ts +0 -31
- package/dist/gql/operations/issue-create.generated.js +0 -27
- package/dist/gql/operations/issue-create.generated.js.map +0 -1
- package/dist/gql/operations/issue-delete.generated.d.ts +0 -22
- package/dist/gql/operations/issue-delete.generated.js +0 -21
- package/dist/gql/operations/issue-delete.generated.js.map +0 -1
- package/dist/gql/operations/issue-labels-update.generated.d.ts +0 -33
- package/dist/gql/operations/issue-labels-update.generated.js +0 -28
- package/dist/gql/operations/issue-labels-update.generated.js.map +0 -1
- package/dist/gql/operations/issue-linked-prs-list.generated.d.ts +0 -132
- package/dist/gql/operations/issue-linked-prs-list.generated.js +0 -39
- package/dist/gql/operations/issue-linked-prs-list.generated.js.map +0 -1
- package/dist/gql/operations/issue-list.generated.d.ts +0 -40
- package/dist/gql/operations/issue-list.generated.js +0 -9
- package/dist/gql/operations/issue-list.generated.js.map +0 -1
- package/dist/gql/operations/issue-milestone-set.generated.d.ts +0 -30
- package/dist/gql/operations/issue-milestone-set.generated.js +0 -26
- package/dist/gql/operations/issue-milestone-set.generated.js.map +0 -1
- package/dist/gql/operations/issue-parent-remove.generated.d.ts +0 -30
- package/dist/gql/operations/issue-parent-remove.generated.js +0 -26
- package/dist/gql/operations/issue-parent-remove.generated.js.map +0 -1
- package/dist/gql/operations/issue-parent-set.generated.d.ts +0 -30
- package/dist/gql/operations/issue-parent-set.generated.js +0 -26
- package/dist/gql/operations/issue-parent-set.generated.js.map +0 -1
- package/dist/gql/operations/issue-relations-get.generated.d.ts +0 -49
- package/dist/gql/operations/issue-relations-get.generated.js +0 -40
- package/dist/gql/operations/issue-relations-get.generated.js.map +0 -1
- package/dist/gql/operations/issue-reopen.generated.d.ts +0 -27
- package/dist/gql/operations/issue-reopen.generated.js +0 -25
- package/dist/gql/operations/issue-reopen.generated.js.map +0 -1
- package/dist/gql/operations/issue-update.generated.d.ts +0 -31
- package/dist/gql/operations/issue-update.generated.js +0 -27
- package/dist/gql/operations/issue-update.generated.js.map +0 -1
- package/dist/gql/operations/issue-view.generated.d.ts +0 -31
- package/dist/gql/operations/issue-view.generated.js +0 -9
- package/dist/gql/operations/issue-view.generated.js.map +0 -1
- package/dist/gql/operations/pr-comment-reply.generated.d.ts +0 -26
- package/dist/gql/operations/pr-comment-reply.generated.js +0 -25
- package/dist/gql/operations/pr-comment-reply.generated.js.map +0 -1
- package/dist/gql/operations/pr-comment-resolve.generated.d.ts +0 -26
- package/dist/gql/operations/pr-comment-resolve.generated.js +0 -24
- package/dist/gql/operations/pr-comment-resolve.generated.js.map +0 -1
- package/dist/gql/operations/pr-comment-unresolve.generated.d.ts +0 -26
- package/dist/gql/operations/pr-comment-unresolve.generated.js +0 -24
- package/dist/gql/operations/pr-comment-unresolve.generated.js.map +0 -1
- package/dist/gql/operations/pr-comments-list.generated.d.ts +0 -84
- package/dist/gql/operations/pr-comments-list.generated.js +0 -58
- package/dist/gql/operations/pr-comments-list.generated.js.map +0 -1
- package/dist/gql/operations/pr-diff-list-files.generated.d.ts +0 -42
- package/dist/gql/operations/pr-diff-list-files.generated.js +0 -9
- package/dist/gql/operations/pr-diff-list-files.generated.js.map +0 -1
- package/dist/gql/operations/pr-list.generated.d.ts +0 -40
- package/dist/gql/operations/pr-list.generated.js +0 -9
- package/dist/gql/operations/pr-list.generated.js.map +0 -1
- package/dist/gql/operations/pr-reviews-list.generated.d.ts +0 -64
- package/dist/gql/operations/pr-reviews-list.generated.js +0 -9
- package/dist/gql/operations/pr-reviews-list.generated.js.map +0 -1
- package/dist/gql/operations/pr-view.generated.d.ts +0 -31
- package/dist/gql/operations/pr-view.generated.js +0 -9
- package/dist/gql/operations/pr-view.generated.js.map +0 -1
- package/dist/gql/operations/repo-view.generated.d.ts +0 -33
- package/dist/gql/operations/repo-view.generated.js +0 -9
- package/dist/gql/operations/repo-view.generated.js.map +0 -1
- package/dist/shared/constants.d.ts +0 -3
- package/dist/shared/constants.js +0 -6
- package/dist/shared/constants.js.map +0 -1
- package/dist/shared/types.d.ts +0 -3
- package/dist/shared/types.js +0 -1
- package/dist/shared/types.js.map +0 -1
- package/dist/shared/utils.d.ts +0 -3
- package/dist/shared/utils.js +0 -8
- package/dist/shared/utils.js.map +0 -1
package/dist/chunk-SA2D4A5U.js
DELETED
|
@@ -1,1496 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
mapErrorToCode
|
|
3
|
-
} from "./chunk-B6RLMKS4.js";
|
|
4
|
-
import {
|
|
5
|
-
isRetryableErrorCode
|
|
6
|
-
} from "./chunk-573MDG3I.js";
|
|
7
|
-
import {
|
|
8
|
-
normalizeError,
|
|
9
|
-
normalizeResult
|
|
10
|
-
} from "./chunk-QEAMC4IJ.js";
|
|
11
|
-
import {
|
|
12
|
-
errorCodes
|
|
13
|
-
} from "./chunk-UOJWOHRM.js";
|
|
14
|
-
|
|
15
|
-
// src/core/execution/adapters/cli-capability-adapter.ts
|
|
16
|
-
var DEFAULT_TIMEOUT_MS = 1e4;
|
|
17
|
-
var DEFAULT_LIST_FIRST = 30;
|
|
18
|
-
var MAX_WORKFLOW_JOB_LOG_CHARS = 5e4;
|
|
19
|
-
var REDACTED_CLI_ERROR_MESSAGE = "gh command failed; stderr redacted for safety";
|
|
20
|
-
var REPO_ISSUE_TYPES_GRAPHQL_QUERY = "query($owner:String!,$name:String!,$first:Int!,$after:String){repository(owner:$owner,name:$name){issueTypes(first:$first,after:$after){nodes{id name color isEnabled} pageInfo{hasNextPage endCursor}}}}";
|
|
21
|
-
var ISSUE_COMMENTS_GRAPHQL_QUERY = "query($owner:String!,$name:String!,$issueNumber:Int!,$first:Int!,$after:String){repository(owner:$owner,name:$name){issue(number:$issueNumber){comments(first:$first,after:$after){nodes{id body createdAt url author{login}} pageInfo{hasNextPage endCursor}}}}}";
|
|
22
|
-
function containsSensitiveText(value) {
|
|
23
|
-
return /(gh[pousr]_[A-Za-z0-9_]+|github_pat_[A-Za-z0-9_]+|authorization:\s*bearer\s+\S+|bearer\s+[A-Za-z0-9._-]{20,}|(?:api[_-]?key|token|secret|password)\s*[=:]\s*\S+)/i.test(
|
|
24
|
-
value
|
|
25
|
-
);
|
|
26
|
-
}
|
|
27
|
-
function sanitizeCliErrorMessage(stderr, exitCode) {
|
|
28
|
-
const trimmed = stderr.trim();
|
|
29
|
-
if (!trimmed) {
|
|
30
|
-
return `gh exited with code ${exitCode}`;
|
|
31
|
-
}
|
|
32
|
-
if (containsSensitiveText(trimmed)) {
|
|
33
|
-
return REDACTED_CLI_ERROR_MESSAGE;
|
|
34
|
-
}
|
|
35
|
-
return trimmed;
|
|
36
|
-
}
|
|
37
|
-
function parseStrictPositiveInt(value) {
|
|
38
|
-
return typeof value === "number" && Number.isInteger(value) && value > 0 ? value : null;
|
|
39
|
-
}
|
|
40
|
-
function parseListFirst(value) {
|
|
41
|
-
if (value === void 0) {
|
|
42
|
-
return DEFAULT_LIST_FIRST;
|
|
43
|
-
}
|
|
44
|
-
return parseStrictPositiveInt(value);
|
|
45
|
-
}
|
|
46
|
-
function parseNonEmptyString(value) {
|
|
47
|
-
if (typeof value !== "string") {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
const trimmed = value.trim();
|
|
51
|
-
return trimmed.length > 0 ? trimmed : null;
|
|
52
|
-
}
|
|
53
|
-
function requireRepo(owner, name, capabilityId) {
|
|
54
|
-
if (!owner || !name) {
|
|
55
|
-
throw new Error(`Missing owner/name for ${capabilityId}`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
function commandTokens(card, fallbackCommand) {
|
|
59
|
-
const fromCard = card?.cli?.command;
|
|
60
|
-
const command = typeof fromCard === "string" && fromCard.trim().length > 0 ? fromCard : fallbackCommand;
|
|
61
|
-
return command.trim().split(/\s+/);
|
|
62
|
-
}
|
|
63
|
-
function jsonFieldsFromCard(card, fallbackFields) {
|
|
64
|
-
const fields = card?.cli?.jsonFields;
|
|
65
|
-
if (Array.isArray(fields) && fields.length > 0) {
|
|
66
|
-
return fields.join(",");
|
|
67
|
-
}
|
|
68
|
-
return fallbackFields;
|
|
69
|
-
}
|
|
70
|
-
function buildArgs(capabilityId, params, card) {
|
|
71
|
-
const owner = String(params.owner ?? "");
|
|
72
|
-
const name = String(params.name ?? "");
|
|
73
|
-
const repo = owner && name ? `${owner}/${name}` : "";
|
|
74
|
-
if (capabilityId === "repo.view") {
|
|
75
|
-
const args = commandTokens(card, "repo view");
|
|
76
|
-
if (repo) {
|
|
77
|
-
args.push(repo);
|
|
78
|
-
}
|
|
79
|
-
args.push("--json", jsonFieldsFromCard(card, "id,name,nameWithOwner,isPrivate,stargazerCount,forkCount,url,defaultBranchRef"));
|
|
80
|
-
return args;
|
|
81
|
-
}
|
|
82
|
-
if (capabilityId === "repo.labels.list") {
|
|
83
|
-
const first = parseListFirst(params.first);
|
|
84
|
-
if (first === null) {
|
|
85
|
-
throw new Error("Missing or invalid first for repo.labels.list");
|
|
86
|
-
}
|
|
87
|
-
const args = commandTokens(card, "label list");
|
|
88
|
-
if (repo) {
|
|
89
|
-
args.push("--repo", repo);
|
|
90
|
-
}
|
|
91
|
-
args.push("--limit", String(first), "--json", jsonFieldsFromCard(card, "id,name,description,color,isDefault"));
|
|
92
|
-
return args;
|
|
93
|
-
}
|
|
94
|
-
if (capabilityId === "repo.issue_types.list") {
|
|
95
|
-
const first = parseListFirst(params.first);
|
|
96
|
-
if (first === null) {
|
|
97
|
-
throw new Error("Missing or invalid first for repo.issue_types.list");
|
|
98
|
-
}
|
|
99
|
-
const after = params.after;
|
|
100
|
-
if (!(after === void 0 || after === null || typeof after === "string")) {
|
|
101
|
-
throw new Error("Invalid after cursor for repo.issue_types.list");
|
|
102
|
-
}
|
|
103
|
-
if (!owner || !name) {
|
|
104
|
-
throw new Error("Missing owner/name for repo.issue_types.list");
|
|
105
|
-
}
|
|
106
|
-
const args = [
|
|
107
|
-
...commandTokens(card, "api graphql"),
|
|
108
|
-
"-f",
|
|
109
|
-
`query=${REPO_ISSUE_TYPES_GRAPHQL_QUERY}`,
|
|
110
|
-
"-f",
|
|
111
|
-
`owner=${owner}`,
|
|
112
|
-
"-f",
|
|
113
|
-
`name=${name}`,
|
|
114
|
-
"-F",
|
|
115
|
-
`first=${first}`
|
|
116
|
-
];
|
|
117
|
-
if (typeof after === "string" && after.length > 0) {
|
|
118
|
-
args.push("-f", `after=${after}`);
|
|
119
|
-
}
|
|
120
|
-
return args;
|
|
121
|
-
}
|
|
122
|
-
if (capabilityId === "issue.view") {
|
|
123
|
-
const issueNumber = parseStrictPositiveInt(params.issueNumber);
|
|
124
|
-
if (issueNumber === null) {
|
|
125
|
-
throw new Error("Missing or invalid issueNumber for issue.view");
|
|
126
|
-
}
|
|
127
|
-
const args = [...commandTokens(card, "issue view"), String(issueNumber)];
|
|
128
|
-
if (repo) {
|
|
129
|
-
args.push("--repo", repo);
|
|
130
|
-
}
|
|
131
|
-
args.push("--json", jsonFieldsFromCard(card, "id,number,title,state,url"));
|
|
132
|
-
return args;
|
|
133
|
-
}
|
|
134
|
-
if (capabilityId === "issue.list") {
|
|
135
|
-
const first = parseListFirst(params.first);
|
|
136
|
-
if (first === null) {
|
|
137
|
-
throw new Error("Missing or invalid first for issue.list");
|
|
138
|
-
}
|
|
139
|
-
const args = commandTokens(card, "issue list");
|
|
140
|
-
if (repo) {
|
|
141
|
-
args.push("--repo", repo);
|
|
142
|
-
}
|
|
143
|
-
args.push("--limit", String(first), "--json", jsonFieldsFromCard(card, "id,number,title,state,url"));
|
|
144
|
-
return args;
|
|
145
|
-
}
|
|
146
|
-
if (capabilityId === "issue.comments.list") {
|
|
147
|
-
const issueNumber = parseStrictPositiveInt(params.issueNumber);
|
|
148
|
-
if (issueNumber === null) {
|
|
149
|
-
throw new Error("Missing or invalid issueNumber for issue.comments.list");
|
|
150
|
-
}
|
|
151
|
-
const first = parseStrictPositiveInt(params.first);
|
|
152
|
-
if (first === null) {
|
|
153
|
-
throw new Error("Missing or invalid first for issue.comments.list");
|
|
154
|
-
}
|
|
155
|
-
const after = params.after;
|
|
156
|
-
if (!(after === void 0 || after === null || typeof after === "string")) {
|
|
157
|
-
throw new Error("Invalid after cursor for issue.comments.list");
|
|
158
|
-
}
|
|
159
|
-
const args = [
|
|
160
|
-
...commandTokens(card, "api graphql"),
|
|
161
|
-
"-f",
|
|
162
|
-
`query=${ISSUE_COMMENTS_GRAPHQL_QUERY}`,
|
|
163
|
-
"-f",
|
|
164
|
-
`owner=${owner}`,
|
|
165
|
-
"-f",
|
|
166
|
-
`name=${name}`,
|
|
167
|
-
"-F",
|
|
168
|
-
`issueNumber=${issueNumber}`,
|
|
169
|
-
"-F",
|
|
170
|
-
`first=${first}`
|
|
171
|
-
];
|
|
172
|
-
if (typeof after === "string" && after.length > 0) {
|
|
173
|
-
args.push("-f", `after=${after}`);
|
|
174
|
-
}
|
|
175
|
-
return args;
|
|
176
|
-
}
|
|
177
|
-
if (capabilityId === "pr.view") {
|
|
178
|
-
const prNumber = parseStrictPositiveInt(params.prNumber);
|
|
179
|
-
if (prNumber === null) {
|
|
180
|
-
throw new Error("Missing or invalid prNumber for pr.view");
|
|
181
|
-
}
|
|
182
|
-
const args = [...commandTokens(card, "pr view"), String(prNumber)];
|
|
183
|
-
if (repo) {
|
|
184
|
-
args.push("--repo", repo);
|
|
185
|
-
}
|
|
186
|
-
args.push("--json", jsonFieldsFromCard(card, "id,number,title,state,url"));
|
|
187
|
-
return args;
|
|
188
|
-
}
|
|
189
|
-
if (capabilityId === "pr.list") {
|
|
190
|
-
const first = parseListFirst(params.first);
|
|
191
|
-
if (first === null) {
|
|
192
|
-
throw new Error("Missing or invalid first for pr.list");
|
|
193
|
-
}
|
|
194
|
-
const args = commandTokens(card, "pr list");
|
|
195
|
-
if (repo) {
|
|
196
|
-
args.push("--repo", repo);
|
|
197
|
-
}
|
|
198
|
-
args.push("--limit", String(first), "--json", jsonFieldsFromCard(card, "id,number,title,state,url"));
|
|
199
|
-
return args;
|
|
200
|
-
}
|
|
201
|
-
if (capabilityId === "pr.status.checks" || capabilityId === "pr.checks.get_failed") {
|
|
202
|
-
const prNumber = parseStrictPositiveInt(params.prNumber);
|
|
203
|
-
if (prNumber === null) {
|
|
204
|
-
throw new Error(`Missing or invalid prNumber for ${capabilityId}`);
|
|
205
|
-
}
|
|
206
|
-
const args = [...commandTokens(card, "pr checks"), String(prNumber)];
|
|
207
|
-
if (repo) {
|
|
208
|
-
args.push("--repo", repo);
|
|
209
|
-
}
|
|
210
|
-
args.push("--json", jsonFieldsFromCard(card, "name,state,bucket,workflow,link"));
|
|
211
|
-
return args;
|
|
212
|
-
}
|
|
213
|
-
if (capabilityId === "pr.mergeability.view") {
|
|
214
|
-
const prNumber = parseStrictPositiveInt(params.prNumber);
|
|
215
|
-
if (prNumber === null) {
|
|
216
|
-
throw new Error("Missing or invalid prNumber for pr.mergeability.view");
|
|
217
|
-
}
|
|
218
|
-
const args = [...commandTokens(card, "pr view"), String(prNumber)];
|
|
219
|
-
if (repo) {
|
|
220
|
-
args.push("--repo", repo);
|
|
221
|
-
}
|
|
222
|
-
args.push("--json", jsonFieldsFromCard(card, "mergeable,mergeStateStatus,reviewDecision,isDraft,state"));
|
|
223
|
-
return args;
|
|
224
|
-
}
|
|
225
|
-
if (capabilityId === "pr.ready_for_review.set") {
|
|
226
|
-
const prNumber = parseStrictPositiveInt(params.prNumber);
|
|
227
|
-
if (prNumber === null) {
|
|
228
|
-
throw new Error("Missing or invalid prNumber for pr.ready_for_review.set");
|
|
229
|
-
}
|
|
230
|
-
if (typeof params.ready !== "boolean") {
|
|
231
|
-
throw new Error("Missing or invalid ready for pr.ready_for_review.set");
|
|
232
|
-
}
|
|
233
|
-
const args = [...commandTokens(card, "pr ready"), String(prNumber)];
|
|
234
|
-
if (repo) {
|
|
235
|
-
args.push("--repo", repo);
|
|
236
|
-
}
|
|
237
|
-
if (!params.ready) {
|
|
238
|
-
args.push("--undo");
|
|
239
|
-
}
|
|
240
|
-
return args;
|
|
241
|
-
}
|
|
242
|
-
if (capabilityId === "pr.review.submit_approve" || capabilityId === "pr.review.submit_request_changes" || capabilityId === "pr.review.submit_comment") {
|
|
243
|
-
const prNumber = parseStrictPositiveInt(params.prNumber);
|
|
244
|
-
if (prNumber === null) {
|
|
245
|
-
throw new Error(`Missing or invalid prNumber for ${capabilityId}`);
|
|
246
|
-
}
|
|
247
|
-
const args = [...commandTokens(card, "pr review"), String(prNumber)];
|
|
248
|
-
if (repo) {
|
|
249
|
-
args.push("--repo", repo);
|
|
250
|
-
}
|
|
251
|
-
if (capabilityId === "pr.review.submit_approve") {
|
|
252
|
-
args.push("--approve");
|
|
253
|
-
const body2 = parseNonEmptyString(params.body);
|
|
254
|
-
if (body2) {
|
|
255
|
-
args.push("--body", body2);
|
|
256
|
-
}
|
|
257
|
-
return args;
|
|
258
|
-
}
|
|
259
|
-
const body = parseNonEmptyString(params.body);
|
|
260
|
-
if (body === null) {
|
|
261
|
-
throw new Error(`Missing or invalid body for ${capabilityId}`);
|
|
262
|
-
}
|
|
263
|
-
if (capabilityId === "pr.review.submit_request_changes") {
|
|
264
|
-
args.push("--request-changes", "--body", body);
|
|
265
|
-
return args;
|
|
266
|
-
}
|
|
267
|
-
args.push("--comment", "--body", body);
|
|
268
|
-
return args;
|
|
269
|
-
}
|
|
270
|
-
if (capabilityId === "pr.merge.execute") {
|
|
271
|
-
const prNumber = parseStrictPositiveInt(params.prNumber);
|
|
272
|
-
if (prNumber === null) {
|
|
273
|
-
throw new Error("Missing or invalid prNumber for pr.merge.execute");
|
|
274
|
-
}
|
|
275
|
-
const method = params.method === void 0 ? "merge" : params.method;
|
|
276
|
-
if (method !== "merge" && method !== "squash" && method !== "rebase") {
|
|
277
|
-
throw new Error("Missing or invalid method for pr.merge.execute");
|
|
278
|
-
}
|
|
279
|
-
if (params.deleteBranch !== void 0 && typeof params.deleteBranch !== "boolean") {
|
|
280
|
-
throw new Error("Missing or invalid deleteBranch for pr.merge.execute");
|
|
281
|
-
}
|
|
282
|
-
const args = [...commandTokens(card, "pr merge"), String(prNumber)];
|
|
283
|
-
if (repo) {
|
|
284
|
-
args.push("--repo", repo);
|
|
285
|
-
}
|
|
286
|
-
args.push(`--${method}`);
|
|
287
|
-
if (params.deleteBranch === true) {
|
|
288
|
-
args.push("--delete-branch");
|
|
289
|
-
}
|
|
290
|
-
return args;
|
|
291
|
-
}
|
|
292
|
-
if (capabilityId === "pr.checks.rerun_failed" || capabilityId === "pr.checks.rerun_all") {
|
|
293
|
-
const prNumber = parseStrictPositiveInt(params.prNumber);
|
|
294
|
-
if (prNumber === null) {
|
|
295
|
-
throw new Error(`Missing or invalid prNumber for ${capabilityId}`);
|
|
296
|
-
}
|
|
297
|
-
const runId = parseStrictPositiveInt(params.runId);
|
|
298
|
-
if (runId === null) {
|
|
299
|
-
throw new Error(`Missing or invalid runId for ${capabilityId}`);
|
|
300
|
-
}
|
|
301
|
-
const args = [...commandTokens(card, "run rerun"), String(runId)];
|
|
302
|
-
if (repo) {
|
|
303
|
-
args.push("--repo", repo);
|
|
304
|
-
}
|
|
305
|
-
if (capabilityId === "pr.checks.rerun_failed") {
|
|
306
|
-
args.push("--failed");
|
|
307
|
-
}
|
|
308
|
-
return args;
|
|
309
|
-
}
|
|
310
|
-
if (capabilityId === "pr.reviewers.request") {
|
|
311
|
-
const prNumber = parseStrictPositiveInt(params.prNumber);
|
|
312
|
-
if (prNumber === null) {
|
|
313
|
-
throw new Error("Missing or invalid prNumber for pr.reviewers.request");
|
|
314
|
-
}
|
|
315
|
-
const reviewers = Array.isArray(params.reviewers) ? params.reviewers.filter((value) => typeof value === "string" && value.trim().length > 0) : [];
|
|
316
|
-
if (reviewers.length === 0) {
|
|
317
|
-
throw new Error("Missing or invalid reviewers for pr.reviewers.request");
|
|
318
|
-
}
|
|
319
|
-
const args = [...commandTokens(card, "pr edit"), String(prNumber)];
|
|
320
|
-
if (repo) {
|
|
321
|
-
args.push("--repo", repo);
|
|
322
|
-
}
|
|
323
|
-
args.push("--add-reviewer", reviewers.join(","));
|
|
324
|
-
return args;
|
|
325
|
-
}
|
|
326
|
-
if (capabilityId === "pr.assignees.update") {
|
|
327
|
-
const prNumber = parseStrictPositiveInt(params.prNumber);
|
|
328
|
-
if (prNumber === null) {
|
|
329
|
-
throw new Error("Missing or invalid prNumber for pr.assignees.update");
|
|
330
|
-
}
|
|
331
|
-
const addAssignees = Array.isArray(params.add) ? params.add.filter((value) => typeof value === "string" && value.trim().length > 0) : [];
|
|
332
|
-
const removeAssignees = Array.isArray(params.remove) ? params.remove.filter((value) => typeof value === "string" && value.trim().length > 0) : [];
|
|
333
|
-
if (addAssignees.length === 0 && removeAssignees.length === 0) {
|
|
334
|
-
throw new Error("Missing or invalid add/remove assignees for pr.assignees.update");
|
|
335
|
-
}
|
|
336
|
-
const args = [...commandTokens(card, "pr edit"), String(prNumber)];
|
|
337
|
-
if (repo) {
|
|
338
|
-
args.push("--repo", repo);
|
|
339
|
-
}
|
|
340
|
-
if (addAssignees.length > 0) {
|
|
341
|
-
args.push("--add-assignee", addAssignees.join(","));
|
|
342
|
-
}
|
|
343
|
-
if (removeAssignees.length > 0) {
|
|
344
|
-
args.push("--remove-assignee", removeAssignees.join(","));
|
|
345
|
-
}
|
|
346
|
-
return args;
|
|
347
|
-
}
|
|
348
|
-
if (capabilityId === "pr.branch.update") {
|
|
349
|
-
const prNumber = parseStrictPositiveInt(params.prNumber);
|
|
350
|
-
if (prNumber === null) {
|
|
351
|
-
throw new Error("Missing or invalid prNumber for pr.branch.update");
|
|
352
|
-
}
|
|
353
|
-
const args = [...commandTokens(card, "pr update-branch"), String(prNumber)];
|
|
354
|
-
if (repo) {
|
|
355
|
-
args.push("--repo", repo);
|
|
356
|
-
}
|
|
357
|
-
return args;
|
|
358
|
-
}
|
|
359
|
-
if (capabilityId === "check_run.annotations.list") {
|
|
360
|
-
const checkRunId = parseStrictPositiveInt(params.checkRunId);
|
|
361
|
-
if (checkRunId === null) {
|
|
362
|
-
throw new Error("Missing or invalid checkRunId for check_run.annotations.list");
|
|
363
|
-
}
|
|
364
|
-
if (!owner || !name) {
|
|
365
|
-
throw new Error("Missing owner/name for check_run.annotations.list");
|
|
366
|
-
}
|
|
367
|
-
const args = [...commandTokens(card, "api"), `repos/${owner}/${name}/check-runs/${checkRunId}/annotations`];
|
|
368
|
-
return args;
|
|
369
|
-
}
|
|
370
|
-
if (capabilityId === "workflow_runs.list") {
|
|
371
|
-
const first = parseListFirst(params.first);
|
|
372
|
-
if (first === null) {
|
|
373
|
-
throw new Error("Missing or invalid first for workflow_runs.list");
|
|
374
|
-
}
|
|
375
|
-
const args = commandTokens(card, "run list");
|
|
376
|
-
if (repo) {
|
|
377
|
-
args.push("--repo", repo);
|
|
378
|
-
}
|
|
379
|
-
if (typeof params.branch === "string" && params.branch.length > 0) {
|
|
380
|
-
args.push("--branch", params.branch);
|
|
381
|
-
}
|
|
382
|
-
if (typeof params.event === "string" && params.event.length > 0) {
|
|
383
|
-
args.push("--event", params.event);
|
|
384
|
-
}
|
|
385
|
-
if (typeof params.status === "string" && params.status.length > 0) {
|
|
386
|
-
args.push("--status", params.status);
|
|
387
|
-
}
|
|
388
|
-
args.push("--limit", String(first), "--json", jsonFieldsFromCard(card, "databaseId,workflowName,status,conclusion,headBranch,url"));
|
|
389
|
-
return args;
|
|
390
|
-
}
|
|
391
|
-
if (capabilityId === "workflow_run.jobs.list") {
|
|
392
|
-
const runId = parseStrictPositiveInt(params.runId);
|
|
393
|
-
if (runId === null) {
|
|
394
|
-
throw new Error("Missing or invalid runId for workflow_run.jobs.list");
|
|
395
|
-
}
|
|
396
|
-
const args = [...commandTokens(card, "run view"), String(runId)];
|
|
397
|
-
if (repo) {
|
|
398
|
-
args.push("--repo", repo);
|
|
399
|
-
}
|
|
400
|
-
args.push("--json", "jobs");
|
|
401
|
-
return args;
|
|
402
|
-
}
|
|
403
|
-
if (capabilityId === "workflow_job.logs.get" || capabilityId === "workflow_job.logs.analyze") {
|
|
404
|
-
const jobId = parseStrictPositiveInt(params.jobId);
|
|
405
|
-
if (jobId === null) {
|
|
406
|
-
throw new Error(`Missing or invalid jobId for ${capabilityId}`);
|
|
407
|
-
}
|
|
408
|
-
const args = [...commandTokens(card, "run view"), "--job", String(jobId), "--log"];
|
|
409
|
-
if (repo) {
|
|
410
|
-
args.push("--repo", repo);
|
|
411
|
-
}
|
|
412
|
-
return args;
|
|
413
|
-
}
|
|
414
|
-
if (capabilityId === "workflow.list") {
|
|
415
|
-
const first = parseListFirst(params.first);
|
|
416
|
-
if (first === null) {
|
|
417
|
-
throw new Error("Missing or invalid first for workflow.list");
|
|
418
|
-
}
|
|
419
|
-
const args = commandTokens(card, "workflow list");
|
|
420
|
-
if (repo) {
|
|
421
|
-
args.push("--repo", repo);
|
|
422
|
-
}
|
|
423
|
-
args.push("--limit", String(first), "--json", jsonFieldsFromCard(card, "id,name,path,state"));
|
|
424
|
-
return args;
|
|
425
|
-
}
|
|
426
|
-
if (capabilityId === "workflow.get") {
|
|
427
|
-
const workflowId = parseNonEmptyString(params.workflowId) ?? (typeof params.workflowId === "number" ? String(params.workflowId) : null);
|
|
428
|
-
if (workflowId === null) {
|
|
429
|
-
throw new Error("Missing or invalid workflowId for workflow.get");
|
|
430
|
-
}
|
|
431
|
-
const args = [...commandTokens(card, "workflow view"), workflowId];
|
|
432
|
-
if (repo) {
|
|
433
|
-
args.push("--repo", repo);
|
|
434
|
-
}
|
|
435
|
-
args.push("--json", jsonFieldsFromCard(card, "id,name,path,state,url"));
|
|
436
|
-
return args;
|
|
437
|
-
}
|
|
438
|
-
if (capabilityId === "workflow_run.get") {
|
|
439
|
-
const runId = parseStrictPositiveInt(params.runId);
|
|
440
|
-
if (runId === null) {
|
|
441
|
-
throw new Error("Missing or invalid runId for workflow_run.get");
|
|
442
|
-
}
|
|
443
|
-
const args = [...commandTokens(card, "run view"), String(runId)];
|
|
444
|
-
if (repo) {
|
|
445
|
-
args.push("--repo", repo);
|
|
446
|
-
}
|
|
447
|
-
args.push("--json", jsonFieldsFromCard(card, "databaseId,workflowName,status,conclusion,headBranch,headSha,url,event,createdAt,updatedAt,startedAt"));
|
|
448
|
-
return args;
|
|
449
|
-
}
|
|
450
|
-
if (capabilityId === "workflow_run.rerun_all" || capabilityId === "workflow_run.cancel") {
|
|
451
|
-
const runId = parseStrictPositiveInt(params.runId);
|
|
452
|
-
if (runId === null) {
|
|
453
|
-
throw new Error(`Missing or invalid runId for ${capabilityId}`);
|
|
454
|
-
}
|
|
455
|
-
const args = [
|
|
456
|
-
...commandTokens(card, capabilityId === "workflow_run.rerun_all" ? "run rerun" : "run cancel"),
|
|
457
|
-
String(runId)
|
|
458
|
-
];
|
|
459
|
-
if (repo) {
|
|
460
|
-
args.push("--repo", repo);
|
|
461
|
-
}
|
|
462
|
-
return args;
|
|
463
|
-
}
|
|
464
|
-
if (capabilityId === "workflow_run.artifacts.list") {
|
|
465
|
-
const runId = parseStrictPositiveInt(params.runId);
|
|
466
|
-
if (runId === null) {
|
|
467
|
-
throw new Error("Missing or invalid runId for workflow_run.artifacts.list");
|
|
468
|
-
}
|
|
469
|
-
const args = [...commandTokens(card, "run view"), String(runId)];
|
|
470
|
-
if (repo) {
|
|
471
|
-
args.push("--repo", repo);
|
|
472
|
-
}
|
|
473
|
-
args.push("--json", jsonFieldsFromCard(card, "artifacts"));
|
|
474
|
-
return args;
|
|
475
|
-
}
|
|
476
|
-
if (capabilityId === "project_v2.org.get" || capabilityId === "project_v2.user.get") {
|
|
477
|
-
const ownerParam = capabilityId === "project_v2.org.get" ? params.org : params.user;
|
|
478
|
-
const owner2 = parseNonEmptyString(ownerParam);
|
|
479
|
-
const projectNumber = parseStrictPositiveInt(params.projectNumber);
|
|
480
|
-
if (owner2 === null || projectNumber === null) {
|
|
481
|
-
throw new Error(`Missing or invalid owner/projectNumber for ${capabilityId}`);
|
|
482
|
-
}
|
|
483
|
-
const args = [...commandTokens(card, "project view"), String(projectNumber), "--owner", owner2, "--format", "json"];
|
|
484
|
-
return args;
|
|
485
|
-
}
|
|
486
|
-
if (capabilityId === "project_v2.fields.list") {
|
|
487
|
-
const projectNumber = parseStrictPositiveInt(params.projectNumber);
|
|
488
|
-
const projectOwner = parseNonEmptyString(params.owner);
|
|
489
|
-
if (projectNumber === null || projectOwner === null) {
|
|
490
|
-
throw new Error("Missing or invalid owner/projectNumber for project_v2.fields.list");
|
|
491
|
-
}
|
|
492
|
-
const args = [...commandTokens(card, "project field-list"), String(projectNumber), "--owner", projectOwner, "--format", "json"];
|
|
493
|
-
return args;
|
|
494
|
-
}
|
|
495
|
-
if (capabilityId === "project_v2.items.list") {
|
|
496
|
-
const projectNumber = parseStrictPositiveInt(params.projectNumber);
|
|
497
|
-
const projectOwner = parseNonEmptyString(params.owner);
|
|
498
|
-
const first = parseListFirst(params.first);
|
|
499
|
-
if (projectNumber === null || projectOwner === null || first === null) {
|
|
500
|
-
throw new Error("Missing or invalid owner/projectNumber/first for project_v2.items.list");
|
|
501
|
-
}
|
|
502
|
-
const args = [
|
|
503
|
-
...commandTokens(card, "project item-list"),
|
|
504
|
-
String(projectNumber),
|
|
505
|
-
"--owner",
|
|
506
|
-
projectOwner,
|
|
507
|
-
"--format",
|
|
508
|
-
"json",
|
|
509
|
-
"--limit",
|
|
510
|
-
String(first)
|
|
511
|
-
];
|
|
512
|
-
return args;
|
|
513
|
-
}
|
|
514
|
-
if (capabilityId === "release.list") {
|
|
515
|
-
requireRepo(owner, name, capabilityId);
|
|
516
|
-
const first = parseListFirst(params.first);
|
|
517
|
-
if (first === null) {
|
|
518
|
-
throw new Error("Missing or invalid first for release.list");
|
|
519
|
-
}
|
|
520
|
-
const args = [...commandTokens(card, "api"), `repos/${owner}/${name}/releases`, "-F", `per_page=${first}`];
|
|
521
|
-
return args;
|
|
522
|
-
}
|
|
523
|
-
if (capabilityId === "release.get") {
|
|
524
|
-
requireRepo(owner, name, capabilityId);
|
|
525
|
-
const tagName = parseNonEmptyString(params.tagName);
|
|
526
|
-
if (tagName === null) {
|
|
527
|
-
throw new Error("Missing or invalid tagName for release.get");
|
|
528
|
-
}
|
|
529
|
-
const args = [...commandTokens(card, "api"), `repos/${owner}/${name}/releases/tags/${encodeURIComponent(tagName)}`];
|
|
530
|
-
return args;
|
|
531
|
-
}
|
|
532
|
-
if (capabilityId === "release.create_draft") {
|
|
533
|
-
requireRepo(owner, name, capabilityId);
|
|
534
|
-
const tagName = parseNonEmptyString(params.tagName);
|
|
535
|
-
if (tagName === null) {
|
|
536
|
-
throw new Error("Missing or invalid tagName for release.create_draft");
|
|
537
|
-
}
|
|
538
|
-
const args = [
|
|
539
|
-
...commandTokens(card, "api"),
|
|
540
|
-
`repos/${owner}/${name}/releases`,
|
|
541
|
-
"--method",
|
|
542
|
-
"POST",
|
|
543
|
-
"-f",
|
|
544
|
-
`tag_name=${tagName}`,
|
|
545
|
-
"-F",
|
|
546
|
-
"draft=true"
|
|
547
|
-
];
|
|
548
|
-
const title = parseNonEmptyString(params.title);
|
|
549
|
-
if (title) {
|
|
550
|
-
args.push("-f", `name=${title}`);
|
|
551
|
-
}
|
|
552
|
-
const notes = parseNonEmptyString(params.notes);
|
|
553
|
-
if (notes) {
|
|
554
|
-
args.push("-f", `body=${notes}`);
|
|
555
|
-
}
|
|
556
|
-
const target = parseNonEmptyString(params.targetCommitish);
|
|
557
|
-
if (target) {
|
|
558
|
-
args.push("-f", `target_commitish=${target}`);
|
|
559
|
-
}
|
|
560
|
-
if (typeof params.prerelease === "boolean") {
|
|
561
|
-
args.push("-F", `prerelease=${params.prerelease ? "true" : "false"}`);
|
|
562
|
-
}
|
|
563
|
-
return args;
|
|
564
|
-
}
|
|
565
|
-
if (capabilityId === "release.update") {
|
|
566
|
-
requireRepo(owner, name, capabilityId);
|
|
567
|
-
const releaseId = parseStrictPositiveInt(params.releaseId);
|
|
568
|
-
if (releaseId === null) {
|
|
569
|
-
throw new Error("Missing or invalid releaseId for release.update");
|
|
570
|
-
}
|
|
571
|
-
if (params.draft !== void 0 && params.draft !== true) {
|
|
572
|
-
throw new Error("release.update only supports draft=true; use release.publish_draft to publish");
|
|
573
|
-
}
|
|
574
|
-
const args = [
|
|
575
|
-
...commandTokens(card, "api"),
|
|
576
|
-
`repos/${owner}/${name}/releases/${releaseId}`,
|
|
577
|
-
"--method",
|
|
578
|
-
"PATCH",
|
|
579
|
-
"-F",
|
|
580
|
-
"draft=true"
|
|
581
|
-
];
|
|
582
|
-
const tagName = parseNonEmptyString(params.tagName);
|
|
583
|
-
if (tagName) {
|
|
584
|
-
args.push("-f", `tag_name=${tagName}`);
|
|
585
|
-
}
|
|
586
|
-
const title = parseNonEmptyString(params.title);
|
|
587
|
-
if (title) {
|
|
588
|
-
args.push("-f", `name=${title}`);
|
|
589
|
-
}
|
|
590
|
-
const notes = parseNonEmptyString(params.notes);
|
|
591
|
-
if (notes) {
|
|
592
|
-
args.push("-f", `body=${notes}`);
|
|
593
|
-
}
|
|
594
|
-
const target = parseNonEmptyString(params.targetCommitish);
|
|
595
|
-
if (target) {
|
|
596
|
-
args.push("-f", `target_commitish=${target}`);
|
|
597
|
-
}
|
|
598
|
-
if (typeof params.prerelease === "boolean") {
|
|
599
|
-
args.push("-F", `prerelease=${params.prerelease ? "true" : "false"}`);
|
|
600
|
-
}
|
|
601
|
-
return args;
|
|
602
|
-
}
|
|
603
|
-
if (capabilityId === "release.publish_draft") {
|
|
604
|
-
requireRepo(owner, name, capabilityId);
|
|
605
|
-
const releaseId = parseStrictPositiveInt(params.releaseId);
|
|
606
|
-
if (releaseId === null) {
|
|
607
|
-
throw new Error("Missing or invalid releaseId for release.publish_draft");
|
|
608
|
-
}
|
|
609
|
-
const args = [
|
|
610
|
-
...commandTokens(card, "api"),
|
|
611
|
-
`repos/${owner}/${name}/releases/${releaseId}`,
|
|
612
|
-
"--method",
|
|
613
|
-
"PATCH",
|
|
614
|
-
"-F",
|
|
615
|
-
"draft=false"
|
|
616
|
-
];
|
|
617
|
-
const title = parseNonEmptyString(params.title);
|
|
618
|
-
if (title) {
|
|
619
|
-
args.push("-f", `name=${title}`);
|
|
620
|
-
}
|
|
621
|
-
const notes = parseNonEmptyString(params.notes);
|
|
622
|
-
if (notes) {
|
|
623
|
-
args.push("-f", `body=${notes}`);
|
|
624
|
-
}
|
|
625
|
-
if (typeof params.prerelease === "boolean") {
|
|
626
|
-
args.push("-F", `prerelease=${params.prerelease ? "true" : "false"}`);
|
|
627
|
-
}
|
|
628
|
-
return args;
|
|
629
|
-
}
|
|
630
|
-
if (capabilityId === "workflow_dispatch.run") {
|
|
631
|
-
requireRepo(owner, name, capabilityId);
|
|
632
|
-
const workflowId = parseNonEmptyString(params.workflowId);
|
|
633
|
-
if (workflowId === null) {
|
|
634
|
-
throw new Error("Missing or invalid workflowId for workflow_dispatch.run");
|
|
635
|
-
}
|
|
636
|
-
const ref = parseNonEmptyString(params.ref);
|
|
637
|
-
if (ref === null) {
|
|
638
|
-
throw new Error("Missing or invalid ref for workflow_dispatch.run");
|
|
639
|
-
}
|
|
640
|
-
const args = [
|
|
641
|
-
...commandTokens(card, "api"),
|
|
642
|
-
`repos/${owner}/${name}/actions/workflows/${encodeURIComponent(workflowId)}/dispatches`,
|
|
643
|
-
"--method",
|
|
644
|
-
"POST",
|
|
645
|
-
"-f",
|
|
646
|
-
`ref=${ref}`
|
|
647
|
-
];
|
|
648
|
-
if (params.inputs !== void 0) {
|
|
649
|
-
if (typeof params.inputs !== "object" || params.inputs === null || Array.isArray(params.inputs)) {
|
|
650
|
-
throw new Error("Missing or invalid inputs for workflow_dispatch.run");
|
|
651
|
-
}
|
|
652
|
-
const inputEntries = Object.entries(params.inputs);
|
|
653
|
-
for (const [key, value] of inputEntries) {
|
|
654
|
-
if (!key.trim()) {
|
|
655
|
-
throw new Error("Missing or invalid inputs for workflow_dispatch.run");
|
|
656
|
-
}
|
|
657
|
-
if (!(typeof value === "string" || typeof value === "number" || typeof value === "boolean")) {
|
|
658
|
-
throw new Error("Missing or invalid inputs for workflow_dispatch.run");
|
|
659
|
-
}
|
|
660
|
-
args.push("-f", `inputs[${key}]=${String(value)}`);
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
return args;
|
|
664
|
-
}
|
|
665
|
-
if (capabilityId === "workflow_run.rerun_failed") {
|
|
666
|
-
requireRepo(owner, name, capabilityId);
|
|
667
|
-
const runId = parseStrictPositiveInt(params.runId);
|
|
668
|
-
if (runId === null) {
|
|
669
|
-
throw new Error("Missing or invalid runId for workflow_run.rerun_failed");
|
|
670
|
-
}
|
|
671
|
-
const args = [
|
|
672
|
-
...commandTokens(card, "api"),
|
|
673
|
-
`repos/${owner}/${name}/actions/runs/${runId}/rerun-failed-jobs`,
|
|
674
|
-
"--method",
|
|
675
|
-
"POST"
|
|
676
|
-
];
|
|
677
|
-
return args;
|
|
678
|
-
}
|
|
679
|
-
if (capabilityId === "project_v2.item.add_issue") {
|
|
680
|
-
const projectNumber = parseStrictPositiveInt(params.projectNumber);
|
|
681
|
-
const projectOwner = parseNonEmptyString(params.owner);
|
|
682
|
-
const issueUrl = parseNonEmptyString(params.issueUrl);
|
|
683
|
-
if (projectNumber === null || projectOwner === null || issueUrl === null) {
|
|
684
|
-
throw new Error("Missing or invalid owner/projectNumber/issueUrl for project_v2.item.add_issue");
|
|
685
|
-
}
|
|
686
|
-
const args = [
|
|
687
|
-
...commandTokens(card, "project item-add"),
|
|
688
|
-
String(projectNumber),
|
|
689
|
-
"--owner",
|
|
690
|
-
projectOwner,
|
|
691
|
-
"--url",
|
|
692
|
-
issueUrl,
|
|
693
|
-
"--format",
|
|
694
|
-
"json"
|
|
695
|
-
];
|
|
696
|
-
return args;
|
|
697
|
-
}
|
|
698
|
-
if (capabilityId === "project_v2.item.field.update") {
|
|
699
|
-
const projectId = parseNonEmptyString(params.projectId);
|
|
700
|
-
const itemId = parseNonEmptyString(params.itemId);
|
|
701
|
-
const fieldId = parseNonEmptyString(params.fieldId);
|
|
702
|
-
if (projectId === null || itemId === null || fieldId === null) {
|
|
703
|
-
throw new Error("Missing or invalid projectId/itemId/fieldId for project_v2.item.field.update");
|
|
704
|
-
}
|
|
705
|
-
const args = [
|
|
706
|
-
...commandTokens(card, "project item-edit"),
|
|
707
|
-
"--project-id",
|
|
708
|
-
projectId,
|
|
709
|
-
"--id",
|
|
710
|
-
itemId,
|
|
711
|
-
"--field-id",
|
|
712
|
-
fieldId
|
|
713
|
-
];
|
|
714
|
-
const valueText = parseNonEmptyString(params.valueText);
|
|
715
|
-
const valueDate = parseNonEmptyString(params.valueDate);
|
|
716
|
-
const valueSingleSelectOptionId = parseNonEmptyString(params.valueSingleSelectOptionId);
|
|
717
|
-
const valueIterationId = parseNonEmptyString(params.valueIterationId);
|
|
718
|
-
const clear = params.clear === true;
|
|
719
|
-
if (valueText !== null) {
|
|
720
|
-
args.push("--text", valueText);
|
|
721
|
-
} else if (typeof params.valueNumber === "number" && Number.isFinite(params.valueNumber)) {
|
|
722
|
-
args.push("--number", String(params.valueNumber));
|
|
723
|
-
} else if (valueDate !== null) {
|
|
724
|
-
args.push("--date", valueDate);
|
|
725
|
-
} else if (valueSingleSelectOptionId !== null) {
|
|
726
|
-
args.push("--single-select-option-id", valueSingleSelectOptionId);
|
|
727
|
-
} else if (valueIterationId !== null) {
|
|
728
|
-
args.push("--iteration-id", valueIterationId);
|
|
729
|
-
} else if (clear) {
|
|
730
|
-
args.push("--clear");
|
|
731
|
-
} else {
|
|
732
|
-
throw new Error("Missing field value update for project_v2.item.field.update");
|
|
733
|
-
}
|
|
734
|
-
return args;
|
|
735
|
-
}
|
|
736
|
-
throw new Error(`Unsupported CLI capability: ${capabilityId}`);
|
|
737
|
-
}
|
|
738
|
-
function parseCliData(stdout) {
|
|
739
|
-
const trimmed = stdout.trim();
|
|
740
|
-
if (!trimmed) {
|
|
741
|
-
return {};
|
|
742
|
-
}
|
|
743
|
-
return JSON.parse(trimmed);
|
|
744
|
-
}
|
|
745
|
-
function normalizeListItem(item) {
|
|
746
|
-
if (typeof item !== "object" || item === null || Array.isArray(item)) {
|
|
747
|
-
return {};
|
|
748
|
-
}
|
|
749
|
-
const input = item;
|
|
750
|
-
return {
|
|
751
|
-
id: input.id,
|
|
752
|
-
number: input.number,
|
|
753
|
-
title: input.title,
|
|
754
|
-
state: input.state,
|
|
755
|
-
url: input.url
|
|
756
|
-
};
|
|
757
|
-
}
|
|
758
|
-
function normalizeWorkflowItem(item) {
|
|
759
|
-
if (typeof item !== "object" || item === null || Array.isArray(item)) {
|
|
760
|
-
return {
|
|
761
|
-
id: 0,
|
|
762
|
-
name: null,
|
|
763
|
-
path: null,
|
|
764
|
-
state: null
|
|
765
|
-
};
|
|
766
|
-
}
|
|
767
|
-
const input = item;
|
|
768
|
-
return {
|
|
769
|
-
id: typeof input.id === "number" ? input.id : 0,
|
|
770
|
-
name: typeof input.name === "string" ? input.name : null,
|
|
771
|
-
path: typeof input.path === "string" ? input.path : null,
|
|
772
|
-
state: typeof input.state === "string" ? input.state : null
|
|
773
|
-
};
|
|
774
|
-
}
|
|
775
|
-
function normalizeProjectV2Summary(data) {
|
|
776
|
-
const input = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
777
|
-
return {
|
|
778
|
-
id: typeof input.id === "string" ? input.id : null,
|
|
779
|
-
title: typeof input.title === "string" ? input.title : null,
|
|
780
|
-
shortDescription: typeof input.shortDescription === "string" ? input.shortDescription : null,
|
|
781
|
-
public: typeof input.public === "boolean" ? input.public : null,
|
|
782
|
-
closed: typeof input.closed === "boolean" ? input.closed : null,
|
|
783
|
-
url: typeof input.url === "string" ? input.url : null
|
|
784
|
-
};
|
|
785
|
-
}
|
|
786
|
-
function normalizeCheckItem(item) {
|
|
787
|
-
if (typeof item !== "object" || item === null || Array.isArray(item)) {
|
|
788
|
-
return {
|
|
789
|
-
name: null,
|
|
790
|
-
state: null,
|
|
791
|
-
bucket: null,
|
|
792
|
-
workflow: null,
|
|
793
|
-
link: null
|
|
794
|
-
};
|
|
795
|
-
}
|
|
796
|
-
const input = item;
|
|
797
|
-
return {
|
|
798
|
-
name: typeof input.name === "string" ? input.name : null,
|
|
799
|
-
state: typeof input.state === "string" ? input.state : null,
|
|
800
|
-
bucket: typeof input.bucket === "string" ? input.bucket : null,
|
|
801
|
-
workflow: typeof input.workflow === "string" ? input.workflow : null,
|
|
802
|
-
link: typeof input.link === "string" ? input.link : null
|
|
803
|
-
};
|
|
804
|
-
}
|
|
805
|
-
function normalizeCheckBucket(value) {
|
|
806
|
-
if (typeof value !== "string") {
|
|
807
|
-
return null;
|
|
808
|
-
}
|
|
809
|
-
return value.trim().toLowerCase();
|
|
810
|
-
}
|
|
811
|
-
function isCheckFailureBucket(bucket) {
|
|
812
|
-
const normalized = normalizeCheckBucket(bucket);
|
|
813
|
-
if (!normalized) {
|
|
814
|
-
return false;
|
|
815
|
-
}
|
|
816
|
-
return normalized === "fail" || normalized === "cancel";
|
|
817
|
-
}
|
|
818
|
-
function isCheckPendingBucket(bucket) {
|
|
819
|
-
const normalized = normalizeCheckBucket(bucket);
|
|
820
|
-
if (!normalized) {
|
|
821
|
-
return false;
|
|
822
|
-
}
|
|
823
|
-
return normalized === "pending";
|
|
824
|
-
}
|
|
825
|
-
function isCheckPassBucket(bucket) {
|
|
826
|
-
const normalized = normalizeCheckBucket(bucket);
|
|
827
|
-
if (!normalized) {
|
|
828
|
-
return false;
|
|
829
|
-
}
|
|
830
|
-
return normalized === "pass";
|
|
831
|
-
}
|
|
832
|
-
function normalizeCliData(capabilityId, data, params) {
|
|
833
|
-
const normalizeRelease = (input) => {
|
|
834
|
-
if (typeof input !== "object" || input === null || Array.isArray(input)) {
|
|
835
|
-
return {
|
|
836
|
-
id: 0,
|
|
837
|
-
tagName: null,
|
|
838
|
-
name: null,
|
|
839
|
-
isDraft: false,
|
|
840
|
-
isPrerelease: false,
|
|
841
|
-
url: null,
|
|
842
|
-
targetCommitish: null,
|
|
843
|
-
createdAt: null,
|
|
844
|
-
publishedAt: null
|
|
845
|
-
};
|
|
846
|
-
}
|
|
847
|
-
const record = input;
|
|
848
|
-
return {
|
|
849
|
-
id: typeof record.id === "number" ? record.id : 0,
|
|
850
|
-
tagName: typeof record.tag_name === "string" ? record.tag_name : null,
|
|
851
|
-
name: typeof record.name === "string" ? record.name : null,
|
|
852
|
-
isDraft: typeof record.draft === "boolean" ? record.draft : false,
|
|
853
|
-
isPrerelease: typeof record.prerelease === "boolean" ? record.prerelease : false,
|
|
854
|
-
url: typeof record.html_url === "string" ? record.html_url : null,
|
|
855
|
-
targetCommitish: typeof record.target_commitish === "string" ? record.target_commitish : null,
|
|
856
|
-
createdAt: typeof record.created_at === "string" ? record.created_at : null,
|
|
857
|
-
publishedAt: typeof record.published_at === "string" ? record.published_at : null
|
|
858
|
-
};
|
|
859
|
-
};
|
|
860
|
-
if (capabilityId === "repo.view") {
|
|
861
|
-
const input = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
862
|
-
const defaultBranchRef = typeof input.defaultBranchRef === "object" && input.defaultBranchRef !== null ? input.defaultBranchRef : null;
|
|
863
|
-
return {
|
|
864
|
-
id: input.id,
|
|
865
|
-
name: input.name,
|
|
866
|
-
nameWithOwner: input.nameWithOwner,
|
|
867
|
-
isPrivate: input.isPrivate,
|
|
868
|
-
stargazerCount: input.stargazerCount,
|
|
869
|
-
forkCount: input.forkCount,
|
|
870
|
-
url: input.url,
|
|
871
|
-
defaultBranch: typeof defaultBranchRef?.name === "string" ? defaultBranchRef.name : null
|
|
872
|
-
};
|
|
873
|
-
}
|
|
874
|
-
if (capabilityId === "repo.labels.list") {
|
|
875
|
-
const labels = Array.isArray(data) ? data : [];
|
|
876
|
-
return {
|
|
877
|
-
items: labels.map((label) => {
|
|
878
|
-
if (typeof label !== "object" || label === null || Array.isArray(label)) {
|
|
879
|
-
return {
|
|
880
|
-
id: null,
|
|
881
|
-
name: null,
|
|
882
|
-
description: null,
|
|
883
|
-
color: null,
|
|
884
|
-
isDefault: null
|
|
885
|
-
};
|
|
886
|
-
}
|
|
887
|
-
const record = label;
|
|
888
|
-
return {
|
|
889
|
-
id: typeof record.id === "string" ? record.id : null,
|
|
890
|
-
name: typeof record.name === "string" ? record.name : null,
|
|
891
|
-
description: typeof record.description === "string" ? record.description : null,
|
|
892
|
-
color: typeof record.color === "string" ? record.color : null,
|
|
893
|
-
isDefault: typeof record.isDefault === "boolean" ? record.isDefault : null
|
|
894
|
-
};
|
|
895
|
-
}),
|
|
896
|
-
pageInfo: {
|
|
897
|
-
hasNextPage: false,
|
|
898
|
-
endCursor: null
|
|
899
|
-
}
|
|
900
|
-
};
|
|
901
|
-
}
|
|
902
|
-
if (capabilityId === "repo.issue_types.list") {
|
|
903
|
-
const root = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
904
|
-
const payload = typeof root.data === "object" && root.data !== null && !Array.isArray(root.data) ? root.data : {};
|
|
905
|
-
const repository = typeof payload.repository === "object" && payload.repository !== null && !Array.isArray(payload.repository) ? payload.repository : {};
|
|
906
|
-
const connection = typeof repository.issueTypes === "object" && repository.issueTypes !== null && !Array.isArray(repository.issueTypes) ? repository.issueTypes : {};
|
|
907
|
-
const nodes = Array.isArray(connection.nodes) ? connection.nodes : [];
|
|
908
|
-
const pageInfo = typeof connection.pageInfo === "object" && connection.pageInfo !== null && !Array.isArray(connection.pageInfo) ? connection.pageInfo : {};
|
|
909
|
-
return {
|
|
910
|
-
items: nodes.map((node) => {
|
|
911
|
-
if (typeof node !== "object" || node === null || Array.isArray(node)) {
|
|
912
|
-
return {
|
|
913
|
-
id: null,
|
|
914
|
-
name: null,
|
|
915
|
-
color: null,
|
|
916
|
-
isEnabled: null
|
|
917
|
-
};
|
|
918
|
-
}
|
|
919
|
-
const record = node;
|
|
920
|
-
return {
|
|
921
|
-
id: typeof record.id === "string" ? record.id : null,
|
|
922
|
-
name: typeof record.name === "string" ? record.name : null,
|
|
923
|
-
color: typeof record.color === "string" ? record.color : null,
|
|
924
|
-
isEnabled: typeof record.isEnabled === "boolean" ? record.isEnabled : null
|
|
925
|
-
};
|
|
926
|
-
}),
|
|
927
|
-
pageInfo: {
|
|
928
|
-
hasNextPage: typeof pageInfo.hasNextPage === "boolean" ? pageInfo.hasNextPage : false,
|
|
929
|
-
endCursor: typeof pageInfo.endCursor === "string" ? pageInfo.endCursor : null
|
|
930
|
-
}
|
|
931
|
-
};
|
|
932
|
-
}
|
|
933
|
-
if (capabilityId === "issue.list" || capabilityId === "pr.list") {
|
|
934
|
-
const items = Array.isArray(data) ? data.map((entry) => normalizeListItem(entry)) : [];
|
|
935
|
-
return {
|
|
936
|
-
items,
|
|
937
|
-
pageInfo: {
|
|
938
|
-
hasNextPage: false,
|
|
939
|
-
endCursor: null
|
|
940
|
-
}
|
|
941
|
-
};
|
|
942
|
-
}
|
|
943
|
-
if (capabilityId === "issue.comments.list") {
|
|
944
|
-
if (parseStrictPositiveInt(params.first) === null) {
|
|
945
|
-
throw new Error("Missing or invalid first for issue.comments.list");
|
|
946
|
-
}
|
|
947
|
-
const input = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
948
|
-
const commentsConnection = typeof input.data === "object" && input.data !== null && !Array.isArray(input.data) ? input.data.repository : null;
|
|
949
|
-
const repository = typeof commentsConnection === "object" && commentsConnection !== null && !Array.isArray(commentsConnection) ? commentsConnection : null;
|
|
950
|
-
const issue = typeof repository?.issue === "object" && repository.issue !== null && !Array.isArray(repository.issue) ? repository.issue : null;
|
|
951
|
-
const comments = typeof issue?.comments === "object" && issue.comments !== null && !Array.isArray(issue.comments) ? issue.comments : null;
|
|
952
|
-
const nodes = Array.isArray(comments?.nodes) ? comments.nodes : null;
|
|
953
|
-
const pageInfo = typeof comments?.pageInfo === "object" && comments.pageInfo !== null && !Array.isArray(comments.pageInfo) ? comments.pageInfo : null;
|
|
954
|
-
if (nodes === null || pageInfo === null || typeof pageInfo.hasNextPage !== "boolean") {
|
|
955
|
-
throw new Error("Invalid CLI payload: comments connection is malformed");
|
|
956
|
-
}
|
|
957
|
-
const normalizedItems = nodes.flatMap((comment) => {
|
|
958
|
-
if (typeof comment !== "object" || comment === null || Array.isArray(comment)) {
|
|
959
|
-
throw new Error("Invalid CLI payload: comment item must be an object");
|
|
960
|
-
}
|
|
961
|
-
const commentRecord = comment;
|
|
962
|
-
const author = typeof commentRecord.author === "object" && commentRecord.author !== null ? commentRecord.author : null;
|
|
963
|
-
if (typeof commentRecord.id !== "string" || typeof commentRecord.body !== "string" || typeof commentRecord.url !== "string" || typeof commentRecord.createdAt !== "string") {
|
|
964
|
-
throw new Error("Invalid CLI payload: comment item has invalid field types");
|
|
965
|
-
}
|
|
966
|
-
return [{
|
|
967
|
-
id: commentRecord.id,
|
|
968
|
-
body: commentRecord.body,
|
|
969
|
-
authorLogin: typeof author?.login === "string" ? author.login : null,
|
|
970
|
-
url: commentRecord.url,
|
|
971
|
-
createdAt: commentRecord.createdAt
|
|
972
|
-
}];
|
|
973
|
-
});
|
|
974
|
-
return {
|
|
975
|
-
items: normalizedItems,
|
|
976
|
-
pageInfo: {
|
|
977
|
-
hasNextPage: pageInfo.hasNextPage,
|
|
978
|
-
endCursor: typeof pageInfo.endCursor === "string" ? pageInfo.endCursor : null
|
|
979
|
-
}
|
|
980
|
-
};
|
|
981
|
-
}
|
|
982
|
-
if (capabilityId === "pr.status.checks" || capabilityId === "pr.checks.get_failed") {
|
|
983
|
-
const checks = Array.isArray(data) ? data.map((entry) => normalizeCheckItem(entry)) : [];
|
|
984
|
-
const failed = checks.filter((entry) => isCheckFailureBucket(entry.bucket));
|
|
985
|
-
const pending = checks.filter((entry) => isCheckPendingBucket(entry.bucket));
|
|
986
|
-
const passed = checks.filter((entry) => isCheckPassBucket(entry.bucket));
|
|
987
|
-
return {
|
|
988
|
-
items: capabilityId === "pr.checks.get_failed" ? failed : checks,
|
|
989
|
-
summary: {
|
|
990
|
-
total: checks.length,
|
|
991
|
-
failed: failed.length,
|
|
992
|
-
pending: pending.length,
|
|
993
|
-
passed: passed.length
|
|
994
|
-
}
|
|
995
|
-
};
|
|
996
|
-
}
|
|
997
|
-
if (capabilityId === "pr.mergeability.view") {
|
|
998
|
-
const input = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
999
|
-
return {
|
|
1000
|
-
mergeable: typeof input.mergeable === "string" ? input.mergeable : null,
|
|
1001
|
-
mergeStateStatus: typeof input.mergeStateStatus === "string" ? input.mergeStateStatus : null,
|
|
1002
|
-
reviewDecision: typeof input.reviewDecision === "string" ? input.reviewDecision : null,
|
|
1003
|
-
isDraft: Boolean(input.isDraft),
|
|
1004
|
-
state: typeof input.state === "string" ? input.state : "UNKNOWN"
|
|
1005
|
-
};
|
|
1006
|
-
}
|
|
1007
|
-
if (capabilityId === "pr.ready_for_review.set") {
|
|
1008
|
-
const prNumber = Number(params.prNumber);
|
|
1009
|
-
const ready = Boolean(params.ready);
|
|
1010
|
-
return {
|
|
1011
|
-
prNumber,
|
|
1012
|
-
isDraft: !ready
|
|
1013
|
-
};
|
|
1014
|
-
}
|
|
1015
|
-
if (capabilityId === "pr.review.submit_approve" || capabilityId === "pr.review.submit_request_changes" || capabilityId === "pr.review.submit_comment") {
|
|
1016
|
-
const prNumber = Number(params.prNumber);
|
|
1017
|
-
const event = capabilityId === "pr.review.submit_approve" ? "APPROVE" : capabilityId === "pr.review.submit_request_changes" ? "REQUEST_CHANGES" : "COMMENT";
|
|
1018
|
-
return {
|
|
1019
|
-
prNumber,
|
|
1020
|
-
event,
|
|
1021
|
-
submitted: true,
|
|
1022
|
-
body: typeof params.body === "string" ? params.body : null
|
|
1023
|
-
};
|
|
1024
|
-
}
|
|
1025
|
-
if (capabilityId === "pr.merge.execute") {
|
|
1026
|
-
const method = params.method === "squash" || params.method === "rebase" ? params.method : "merge";
|
|
1027
|
-
return {
|
|
1028
|
-
prNumber: Number(params.prNumber),
|
|
1029
|
-
method,
|
|
1030
|
-
queued: true,
|
|
1031
|
-
deleteBranch: params.deleteBranch === true
|
|
1032
|
-
};
|
|
1033
|
-
}
|
|
1034
|
-
if (capabilityId === "pr.checks.rerun_failed" || capabilityId === "pr.checks.rerun_all") {
|
|
1035
|
-
return {
|
|
1036
|
-
prNumber: Number(params.prNumber),
|
|
1037
|
-
runId: Number(params.runId),
|
|
1038
|
-
mode: capabilityId === "pr.checks.rerun_failed" ? "failed" : "all",
|
|
1039
|
-
queued: true
|
|
1040
|
-
};
|
|
1041
|
-
}
|
|
1042
|
-
if (capabilityId === "pr.reviewers.request") {
|
|
1043
|
-
const reviewers = Array.isArray(params.reviewers) ? params.reviewers.filter((value) => typeof value === "string" && value.trim().length > 0) : [];
|
|
1044
|
-
return {
|
|
1045
|
-
prNumber: Number(params.prNumber),
|
|
1046
|
-
reviewers,
|
|
1047
|
-
updated: true
|
|
1048
|
-
};
|
|
1049
|
-
}
|
|
1050
|
-
if (capabilityId === "pr.assignees.update") {
|
|
1051
|
-
const add = Array.isArray(params.add) ? params.add.filter((value) => typeof value === "string" && value.trim().length > 0) : [];
|
|
1052
|
-
const remove = Array.isArray(params.remove) ? params.remove.filter((value) => typeof value === "string" && value.trim().length > 0) : [];
|
|
1053
|
-
return {
|
|
1054
|
-
prNumber: Number(params.prNumber),
|
|
1055
|
-
add,
|
|
1056
|
-
remove,
|
|
1057
|
-
updated: true
|
|
1058
|
-
};
|
|
1059
|
-
}
|
|
1060
|
-
if (capabilityId === "pr.branch.update") {
|
|
1061
|
-
return {
|
|
1062
|
-
prNumber: Number(params.prNumber),
|
|
1063
|
-
updated: true
|
|
1064
|
-
};
|
|
1065
|
-
}
|
|
1066
|
-
if (capabilityId === "check_run.annotations.list") {
|
|
1067
|
-
const annotations = Array.isArray(data) ? data : [];
|
|
1068
|
-
return {
|
|
1069
|
-
items: annotations.map((annotation) => {
|
|
1070
|
-
if (typeof annotation !== "object" || annotation === null || Array.isArray(annotation)) {
|
|
1071
|
-
return {
|
|
1072
|
-
path: null,
|
|
1073
|
-
startLine: null,
|
|
1074
|
-
endLine: null,
|
|
1075
|
-
level: null,
|
|
1076
|
-
message: null,
|
|
1077
|
-
title: null,
|
|
1078
|
-
details: null
|
|
1079
|
-
};
|
|
1080
|
-
}
|
|
1081
|
-
const record = annotation;
|
|
1082
|
-
return {
|
|
1083
|
-
path: typeof record.path === "string" ? record.path : null,
|
|
1084
|
-
startLine: typeof record.start_line === "number" ? record.start_line : null,
|
|
1085
|
-
endLine: typeof record.end_line === "number" ? record.end_line : null,
|
|
1086
|
-
level: typeof record.annotation_level === "string" ? record.annotation_level : null,
|
|
1087
|
-
message: typeof record.message === "string" ? record.message : null,
|
|
1088
|
-
title: typeof record.title === "string" ? record.title : null,
|
|
1089
|
-
details: typeof record.raw_details === "string" ? record.raw_details : null
|
|
1090
|
-
};
|
|
1091
|
-
})
|
|
1092
|
-
};
|
|
1093
|
-
}
|
|
1094
|
-
if (capabilityId === "workflow_runs.list") {
|
|
1095
|
-
const runs = Array.isArray(data) ? data : [];
|
|
1096
|
-
return {
|
|
1097
|
-
items: runs.map((run) => {
|
|
1098
|
-
if (typeof run !== "object" || run === null || Array.isArray(run)) {
|
|
1099
|
-
return {
|
|
1100
|
-
id: 0,
|
|
1101
|
-
workflowName: null,
|
|
1102
|
-
status: null,
|
|
1103
|
-
conclusion: null,
|
|
1104
|
-
headBranch: null,
|
|
1105
|
-
url: null
|
|
1106
|
-
};
|
|
1107
|
-
}
|
|
1108
|
-
const record = run;
|
|
1109
|
-
return {
|
|
1110
|
-
id: typeof record.databaseId === "number" ? record.databaseId : 0,
|
|
1111
|
-
workflowName: typeof record.workflowName === "string" ? record.workflowName : null,
|
|
1112
|
-
status: typeof record.status === "string" ? record.status : null,
|
|
1113
|
-
conclusion: typeof record.conclusion === "string" ? record.conclusion : null,
|
|
1114
|
-
headBranch: typeof record.headBranch === "string" ? record.headBranch : null,
|
|
1115
|
-
url: typeof record.url === "string" ? record.url : null
|
|
1116
|
-
};
|
|
1117
|
-
}),
|
|
1118
|
-
pageInfo: {
|
|
1119
|
-
hasNextPage: false,
|
|
1120
|
-
endCursor: null
|
|
1121
|
-
}
|
|
1122
|
-
};
|
|
1123
|
-
}
|
|
1124
|
-
if (capabilityId === "workflow_run.jobs.list") {
|
|
1125
|
-
const root = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
1126
|
-
const jobs = Array.isArray(root.jobs) ? root.jobs : [];
|
|
1127
|
-
return {
|
|
1128
|
-
items: jobs.map((job) => {
|
|
1129
|
-
if (typeof job !== "object" || job === null || Array.isArray(job)) {
|
|
1130
|
-
return {
|
|
1131
|
-
id: 0,
|
|
1132
|
-
name: null,
|
|
1133
|
-
status: null,
|
|
1134
|
-
conclusion: null,
|
|
1135
|
-
startedAt: null,
|
|
1136
|
-
completedAt: null,
|
|
1137
|
-
url: null
|
|
1138
|
-
};
|
|
1139
|
-
}
|
|
1140
|
-
const record = job;
|
|
1141
|
-
return {
|
|
1142
|
-
id: typeof record.databaseId === "number" ? record.databaseId : 0,
|
|
1143
|
-
name: typeof record.name === "string" ? record.name : null,
|
|
1144
|
-
status: typeof record.status === "string" ? record.status : null,
|
|
1145
|
-
conclusion: typeof record.conclusion === "string" ? record.conclusion : null,
|
|
1146
|
-
startedAt: typeof record.startedAt === "string" ? record.startedAt : null,
|
|
1147
|
-
completedAt: typeof record.completedAt === "string" ? record.completedAt : null,
|
|
1148
|
-
url: typeof record.url === "string" ? record.url : null
|
|
1149
|
-
};
|
|
1150
|
-
})
|
|
1151
|
-
};
|
|
1152
|
-
}
|
|
1153
|
-
if (capabilityId === "workflow_job.logs.get") {
|
|
1154
|
-
const jobId = Number(params.jobId);
|
|
1155
|
-
const rawLog = typeof data === "string" ? data : String(data);
|
|
1156
|
-
const truncated = rawLog.length > MAX_WORKFLOW_JOB_LOG_CHARS;
|
|
1157
|
-
return {
|
|
1158
|
-
jobId,
|
|
1159
|
-
log: truncated ? rawLog.slice(0, MAX_WORKFLOW_JOB_LOG_CHARS) : rawLog,
|
|
1160
|
-
truncated
|
|
1161
|
-
};
|
|
1162
|
-
}
|
|
1163
|
-
if (capabilityId === "workflow_job.logs.analyze") {
|
|
1164
|
-
const jobId = Number(params.jobId);
|
|
1165
|
-
const rawLog = typeof data === "string" ? data : String(data);
|
|
1166
|
-
const truncated = rawLog.length > MAX_WORKFLOW_JOB_LOG_CHARS;
|
|
1167
|
-
const boundedLog = truncated ? rawLog.slice(0, MAX_WORKFLOW_JOB_LOG_CHARS) : rawLog;
|
|
1168
|
-
const lines = boundedLog.split(/\r?\n/);
|
|
1169
|
-
const errorLines = lines.filter((line) => /\berror\b/i.test(line));
|
|
1170
|
-
const topErrorLines = errorLines.slice(0, 10);
|
|
1171
|
-
const warningLines = lines.filter((line) => /\bwarn(ing)?\b/i.test(line));
|
|
1172
|
-
return {
|
|
1173
|
-
jobId,
|
|
1174
|
-
truncated,
|
|
1175
|
-
summary: {
|
|
1176
|
-
errorCount: errorLines.length,
|
|
1177
|
-
warningCount: warningLines.length,
|
|
1178
|
-
topErrorLines
|
|
1179
|
-
}
|
|
1180
|
-
};
|
|
1181
|
-
}
|
|
1182
|
-
if (capabilityId === "workflow.list") {
|
|
1183
|
-
const workflows = Array.isArray(data) ? data : [];
|
|
1184
|
-
return {
|
|
1185
|
-
items: workflows.map((workflow) => normalizeWorkflowItem(workflow)),
|
|
1186
|
-
pageInfo: {
|
|
1187
|
-
hasNextPage: false,
|
|
1188
|
-
endCursor: null
|
|
1189
|
-
}
|
|
1190
|
-
};
|
|
1191
|
-
}
|
|
1192
|
-
if (capabilityId === "release.list") {
|
|
1193
|
-
const items = Array.isArray(data) ? data.map((item) => normalizeRelease(item)) : [];
|
|
1194
|
-
return {
|
|
1195
|
-
items,
|
|
1196
|
-
pageInfo: {
|
|
1197
|
-
hasNextPage: false,
|
|
1198
|
-
endCursor: null
|
|
1199
|
-
}
|
|
1200
|
-
};
|
|
1201
|
-
}
|
|
1202
|
-
if (capabilityId === "workflow.get") {
|
|
1203
|
-
const input = normalizeWorkflowItem(data);
|
|
1204
|
-
const root = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
1205
|
-
return {
|
|
1206
|
-
...input,
|
|
1207
|
-
url: typeof root.url === "string" ? root.url : null
|
|
1208
|
-
};
|
|
1209
|
-
}
|
|
1210
|
-
if (capabilityId === "workflow_run.get") {
|
|
1211
|
-
const input = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
1212
|
-
return {
|
|
1213
|
-
id: typeof input.databaseId === "number" ? input.databaseId : 0,
|
|
1214
|
-
workflowName: typeof input.workflowName === "string" ? input.workflowName : null,
|
|
1215
|
-
status: typeof input.status === "string" ? input.status : null,
|
|
1216
|
-
conclusion: typeof input.conclusion === "string" ? input.conclusion : null,
|
|
1217
|
-
headBranch: typeof input.headBranch === "string" ? input.headBranch : null,
|
|
1218
|
-
headSha: typeof input.headSha === "string" ? input.headSha : null,
|
|
1219
|
-
event: typeof input.event === "string" ? input.event : null,
|
|
1220
|
-
createdAt: typeof input.createdAt === "string" ? input.createdAt : null,
|
|
1221
|
-
updatedAt: typeof input.updatedAt === "string" ? input.updatedAt : null,
|
|
1222
|
-
startedAt: typeof input.startedAt === "string" ? input.startedAt : null,
|
|
1223
|
-
url: typeof input.url === "string" ? input.url : null
|
|
1224
|
-
};
|
|
1225
|
-
}
|
|
1226
|
-
if (capabilityId === "workflow_run.rerun_all") {
|
|
1227
|
-
return {
|
|
1228
|
-
runId: Number(params.runId),
|
|
1229
|
-
status: "requested"
|
|
1230
|
-
};
|
|
1231
|
-
}
|
|
1232
|
-
if (capabilityId === "workflow_run.cancel") {
|
|
1233
|
-
return {
|
|
1234
|
-
runId: Number(params.runId),
|
|
1235
|
-
status: "cancel_requested"
|
|
1236
|
-
};
|
|
1237
|
-
}
|
|
1238
|
-
if (capabilityId === "workflow_run.artifacts.list") {
|
|
1239
|
-
const root = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
1240
|
-
const artifacts = Array.isArray(root.artifacts) ? root.artifacts : [];
|
|
1241
|
-
return {
|
|
1242
|
-
items: artifacts.map((artifact) => {
|
|
1243
|
-
if (typeof artifact !== "object" || artifact === null || Array.isArray(artifact)) {
|
|
1244
|
-
return {
|
|
1245
|
-
id: 0,
|
|
1246
|
-
name: null,
|
|
1247
|
-
sizeInBytes: null,
|
|
1248
|
-
archiveDownloadUrl: null
|
|
1249
|
-
};
|
|
1250
|
-
}
|
|
1251
|
-
const record = artifact;
|
|
1252
|
-
return {
|
|
1253
|
-
id: typeof record.id === "number" ? record.id : 0,
|
|
1254
|
-
name: typeof record.name === "string" ? record.name : null,
|
|
1255
|
-
sizeInBytes: typeof record.sizeInBytes === "number" ? record.sizeInBytes : null,
|
|
1256
|
-
archiveDownloadUrl: typeof record.archiveDownloadUrl === "string" ? record.archiveDownloadUrl : null
|
|
1257
|
-
};
|
|
1258
|
-
}),
|
|
1259
|
-
pageInfo: {
|
|
1260
|
-
hasNextPage: false,
|
|
1261
|
-
endCursor: null
|
|
1262
|
-
}
|
|
1263
|
-
};
|
|
1264
|
-
}
|
|
1265
|
-
if (capabilityId === "project_v2.org.get" || capabilityId === "project_v2.user.get") {
|
|
1266
|
-
return normalizeProjectV2Summary(data);
|
|
1267
|
-
}
|
|
1268
|
-
if (capabilityId === "project_v2.fields.list") {
|
|
1269
|
-
const root = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
1270
|
-
const fields = Array.isArray(root.fields) ? root.fields : [];
|
|
1271
|
-
return {
|
|
1272
|
-
items: fields.map((field) => {
|
|
1273
|
-
if (typeof field !== "object" || field === null || Array.isArray(field)) {
|
|
1274
|
-
return {
|
|
1275
|
-
id: null,
|
|
1276
|
-
name: null,
|
|
1277
|
-
dataType: null
|
|
1278
|
-
};
|
|
1279
|
-
}
|
|
1280
|
-
const record = field;
|
|
1281
|
-
return {
|
|
1282
|
-
id: typeof record.id === "string" ? record.id : null,
|
|
1283
|
-
name: typeof record.name === "string" ? record.name : null,
|
|
1284
|
-
dataType: typeof record.dataType === "string" ? record.dataType : null
|
|
1285
|
-
};
|
|
1286
|
-
}),
|
|
1287
|
-
pageInfo: {
|
|
1288
|
-
hasNextPage: false,
|
|
1289
|
-
endCursor: null
|
|
1290
|
-
}
|
|
1291
|
-
};
|
|
1292
|
-
}
|
|
1293
|
-
if (capabilityId === "project_v2.items.list") {
|
|
1294
|
-
const root = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
1295
|
-
const items = Array.isArray(root.items) ? root.items : [];
|
|
1296
|
-
return {
|
|
1297
|
-
items: items.map((item) => {
|
|
1298
|
-
if (typeof item !== "object" || item === null || Array.isArray(item)) {
|
|
1299
|
-
return {
|
|
1300
|
-
id: null,
|
|
1301
|
-
contentType: null,
|
|
1302
|
-
contentNumber: null,
|
|
1303
|
-
contentTitle: null
|
|
1304
|
-
};
|
|
1305
|
-
}
|
|
1306
|
-
const record = item;
|
|
1307
|
-
const content = typeof record.content === "object" && record.content !== null && !Array.isArray(record.content) ? record.content : {};
|
|
1308
|
-
return {
|
|
1309
|
-
id: typeof record.id === "string" ? record.id : null,
|
|
1310
|
-
contentType: typeof content.type === "string" ? content.type : null,
|
|
1311
|
-
contentNumber: typeof content.number === "number" ? content.number : null,
|
|
1312
|
-
contentTitle: typeof content.title === "string" ? content.title : null
|
|
1313
|
-
};
|
|
1314
|
-
}),
|
|
1315
|
-
pageInfo: {
|
|
1316
|
-
hasNextPage: false,
|
|
1317
|
-
endCursor: null
|
|
1318
|
-
}
|
|
1319
|
-
};
|
|
1320
|
-
}
|
|
1321
|
-
if (capabilityId === "project_v2.item.add_issue") {
|
|
1322
|
-
const root = typeof data === "object" && data !== null && !Array.isArray(data) ? data : {};
|
|
1323
|
-
return {
|
|
1324
|
-
itemId: typeof root.id === "string" ? root.id : null,
|
|
1325
|
-
added: true
|
|
1326
|
-
};
|
|
1327
|
-
}
|
|
1328
|
-
if (capabilityId === "project_v2.item.field.update") {
|
|
1329
|
-
return {
|
|
1330
|
-
itemId: parseNonEmptyString(params.itemId),
|
|
1331
|
-
updated: true
|
|
1332
|
-
};
|
|
1333
|
-
}
|
|
1334
|
-
if (capabilityId === "release.get" || capabilityId === "release.create_draft" || capabilityId === "release.update") {
|
|
1335
|
-
return normalizeRelease(data);
|
|
1336
|
-
}
|
|
1337
|
-
if (capabilityId === "release.publish_draft") {
|
|
1338
|
-
const release = normalizeRelease(data);
|
|
1339
|
-
return {
|
|
1340
|
-
...release,
|
|
1341
|
-
wasDraft: Boolean(params.__wasDraft)
|
|
1342
|
-
};
|
|
1343
|
-
}
|
|
1344
|
-
if (capabilityId === "workflow_dispatch.run") {
|
|
1345
|
-
return {
|
|
1346
|
-
workflowId: String(params.workflowId),
|
|
1347
|
-
ref: String(params.ref),
|
|
1348
|
-
dispatched: true
|
|
1349
|
-
};
|
|
1350
|
-
}
|
|
1351
|
-
if (capabilityId === "workflow_run.rerun_failed") {
|
|
1352
|
-
return {
|
|
1353
|
-
runId: Number(params.runId),
|
|
1354
|
-
rerunFailed: true
|
|
1355
|
-
};
|
|
1356
|
-
}
|
|
1357
|
-
if (capabilityId === "issue.view" || capabilityId === "pr.view") {
|
|
1358
|
-
return normalizeListItem(data);
|
|
1359
|
-
}
|
|
1360
|
-
return data;
|
|
1361
|
-
}
|
|
1362
|
-
async function runCliCapability(runner, capabilityId, params, card) {
|
|
1363
|
-
try {
|
|
1364
|
-
if (capabilityId === "release.publish_draft") {
|
|
1365
|
-
const owner = String(params.owner ?? "");
|
|
1366
|
-
const name = String(params.name ?? "");
|
|
1367
|
-
const releaseId = parseStrictPositiveInt(params.releaseId);
|
|
1368
|
-
if (!owner || !name || releaseId === null) {
|
|
1369
|
-
throw new Error("Missing owner/name/releaseId for release.publish_draft");
|
|
1370
|
-
}
|
|
1371
|
-
const readArgs = [...commandTokens(card, "api"), `repos/${owner}/${name}/releases/${releaseId}`];
|
|
1372
|
-
const readResult = await runner.run("gh", readArgs, DEFAULT_TIMEOUT_MS);
|
|
1373
|
-
if (readResult.exitCode !== 0) {
|
|
1374
|
-
const code = mapErrorToCode(readResult.stderr);
|
|
1375
|
-
return normalizeError(
|
|
1376
|
-
{
|
|
1377
|
-
code,
|
|
1378
|
-
message: sanitizeCliErrorMessage(readResult.stderr, readResult.exitCode),
|
|
1379
|
-
retryable: isRetryableErrorCode(code),
|
|
1380
|
-
details: { capabilityId, exitCode: readResult.exitCode }
|
|
1381
|
-
},
|
|
1382
|
-
"cli",
|
|
1383
|
-
{ capabilityId, reason: "CARD_FALLBACK" }
|
|
1384
|
-
);
|
|
1385
|
-
}
|
|
1386
|
-
const currentRelease = parseCliData(readResult.stdout);
|
|
1387
|
-
const currentDraftValue = typeof currentRelease === "object" && currentRelease !== null && !Array.isArray(currentRelease) ? currentRelease.draft : void 0;
|
|
1388
|
-
if (currentDraftValue !== true) {
|
|
1389
|
-
return normalizeError(
|
|
1390
|
-
{
|
|
1391
|
-
code: errorCodes.Validation,
|
|
1392
|
-
message: "release.publish_draft requires an existing draft release",
|
|
1393
|
-
retryable: false
|
|
1394
|
-
},
|
|
1395
|
-
"cli",
|
|
1396
|
-
{ capabilityId, reason: "CARD_FALLBACK" }
|
|
1397
|
-
);
|
|
1398
|
-
}
|
|
1399
|
-
const args2 = buildArgs(capabilityId, params, card);
|
|
1400
|
-
const result2 = await runner.run("gh", args2, DEFAULT_TIMEOUT_MS);
|
|
1401
|
-
if (result2.exitCode !== 0) {
|
|
1402
|
-
const code = mapErrorToCode(result2.stderr);
|
|
1403
|
-
return normalizeError(
|
|
1404
|
-
{
|
|
1405
|
-
code,
|
|
1406
|
-
message: sanitizeCliErrorMessage(result2.stderr, result2.exitCode),
|
|
1407
|
-
retryable: isRetryableErrorCode(code),
|
|
1408
|
-
details: { capabilityId, exitCode: result2.exitCode }
|
|
1409
|
-
},
|
|
1410
|
-
"cli",
|
|
1411
|
-
{ capabilityId, reason: "CARD_FALLBACK" }
|
|
1412
|
-
);
|
|
1413
|
-
}
|
|
1414
|
-
const normalized2 = normalizeCliData(capabilityId, parseCliData(result2.stdout), { ...params, __wasDraft: true });
|
|
1415
|
-
return normalizeResult(normalized2, "cli", { capabilityId, reason: "CARD_FALLBACK" });
|
|
1416
|
-
}
|
|
1417
|
-
const args = buildArgs(capabilityId, params, card);
|
|
1418
|
-
const result = await runner.run("gh", args, DEFAULT_TIMEOUT_MS);
|
|
1419
|
-
if (result.exitCode !== 0) {
|
|
1420
|
-
const code = mapErrorToCode(result.stderr);
|
|
1421
|
-
return normalizeError(
|
|
1422
|
-
{
|
|
1423
|
-
code,
|
|
1424
|
-
message: sanitizeCliErrorMessage(result.stderr, result.exitCode),
|
|
1425
|
-
retryable: isRetryableErrorCode(code),
|
|
1426
|
-
details: { capabilityId, exitCode: result.exitCode }
|
|
1427
|
-
},
|
|
1428
|
-
"cli",
|
|
1429
|
-
{ capabilityId, reason: "CARD_FALLBACK" }
|
|
1430
|
-
);
|
|
1431
|
-
}
|
|
1432
|
-
const data = capabilityId === "workflow_job.logs.get" || capabilityId === "workflow_job.logs.analyze" ? result.stdout : parseCliData(result.stdout);
|
|
1433
|
-
const normalized = normalizeCliData(capabilityId, data, params);
|
|
1434
|
-
return normalizeResult(normalized, "cli", { capabilityId, reason: "CARD_FALLBACK" });
|
|
1435
|
-
} catch (error) {
|
|
1436
|
-
if (error instanceof SyntaxError) {
|
|
1437
|
-
return normalizeError(
|
|
1438
|
-
{
|
|
1439
|
-
code: errorCodes.Server,
|
|
1440
|
-
message: "Failed to parse CLI JSON output",
|
|
1441
|
-
retryable: false
|
|
1442
|
-
},
|
|
1443
|
-
"cli",
|
|
1444
|
-
{ capabilityId, reason: "CARD_FALLBACK" }
|
|
1445
|
-
);
|
|
1446
|
-
}
|
|
1447
|
-
if (error instanceof Error && error.message.toLowerCase().includes("invalid cli payload")) {
|
|
1448
|
-
return normalizeError(
|
|
1449
|
-
{
|
|
1450
|
-
code: errorCodes.Server,
|
|
1451
|
-
message: error.message,
|
|
1452
|
-
retryable: false
|
|
1453
|
-
},
|
|
1454
|
-
"cli",
|
|
1455
|
-
{ capabilityId, reason: "CARD_FALLBACK" }
|
|
1456
|
-
);
|
|
1457
|
-
}
|
|
1458
|
-
if (error instanceof Error && error.message.toLowerCase().includes("invalid after cursor")) {
|
|
1459
|
-
return normalizeError(
|
|
1460
|
-
{
|
|
1461
|
-
code: errorCodes.Validation,
|
|
1462
|
-
message: error.message,
|
|
1463
|
-
retryable: false
|
|
1464
|
-
},
|
|
1465
|
-
"cli",
|
|
1466
|
-
{ capabilityId, reason: "CARD_FALLBACK" }
|
|
1467
|
-
);
|
|
1468
|
-
}
|
|
1469
|
-
if (error instanceof Error && error.message.toLowerCase().includes("only supports draft=true")) {
|
|
1470
|
-
return normalizeError(
|
|
1471
|
-
{
|
|
1472
|
-
code: errorCodes.Validation,
|
|
1473
|
-
message: error.message,
|
|
1474
|
-
retryable: false
|
|
1475
|
-
},
|
|
1476
|
-
"cli",
|
|
1477
|
-
{ capabilityId, reason: "CARD_FALLBACK" }
|
|
1478
|
-
);
|
|
1479
|
-
}
|
|
1480
|
-
const code = mapErrorToCode(error);
|
|
1481
|
-
return normalizeError(
|
|
1482
|
-
{
|
|
1483
|
-
code,
|
|
1484
|
-
message: error instanceof Error ? error.message : String(error),
|
|
1485
|
-
retryable: isRetryableErrorCode(code)
|
|
1486
|
-
},
|
|
1487
|
-
"cli",
|
|
1488
|
-
{ capabilityId, reason: "CARD_FALLBACK" }
|
|
1489
|
-
);
|
|
1490
|
-
}
|
|
1491
|
-
}
|
|
1492
|
-
|
|
1493
|
-
export {
|
|
1494
|
-
runCliCapability
|
|
1495
|
-
};
|
|
1496
|
-
//# sourceMappingURL=chunk-SA2D4A5U.js.map
|