@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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
getOperationCard
|
|
3
|
-
|
|
2
|
+
getOperationCard,
|
|
3
|
+
listOperationCards
|
|
4
|
+
} from "./chunk-OL4ARD3R.js";
|
|
4
5
|
|
|
5
6
|
// src/agent-interface/tools/explain-tool.ts
|
|
6
7
|
function extractRequiredInputs(inputSchema) {
|
|
@@ -38,7 +39,16 @@ function explainCapability(capabilityId) {
|
|
|
38
39
|
};
|
|
39
40
|
}
|
|
40
41
|
|
|
42
|
+
// src/agent-interface/tools/list-capabilities-tool.ts
|
|
43
|
+
function listCapabilities() {
|
|
44
|
+
return listOperationCards().map((card) => ({
|
|
45
|
+
capability_id: card.capability_id,
|
|
46
|
+
description: card.description
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
|
|
41
50
|
export {
|
|
42
|
-
explainCapability
|
|
51
|
+
explainCapability,
|
|
52
|
+
listCapabilities
|
|
43
53
|
};
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
54
|
+
//# sourceMappingURL=chunk-SCIJMW5P.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/agent-interface/tools/explain-tool.ts","../src/agent-interface/tools/list-capabilities-tool.ts"],"sourcesContent":["import { getOperationCard } from \"../../core/registry/index.js\"\n\nexport type CapabilityExplanation = {\n capability_id: string\n purpose: string\n required_inputs: string[]\n preferred_route: \"cli\" | \"graphql\" | \"rest\"\n fallback_routes: Array<\"cli\" | \"graphql\" | \"rest\">\n output_fields: string[]\n}\n\nfunction extractRequiredInputs(inputSchema: Record<string, unknown> | null | undefined): string[] {\n if (!inputSchema || typeof inputSchema !== \"object\") {\n return []\n }\n\n const required = (inputSchema as Record<string, unknown>).required\n if (!Array.isArray(required)) {\n return []\n }\n\n return required.filter((entry): entry is string => typeof entry === \"string\")\n}\n\nfunction extractOutputFields(outputSchema: Record<string, unknown> | null | undefined): string[] {\n if (!outputSchema || typeof outputSchema !== \"object\") {\n return []\n }\n\n const properties = (outputSchema as Record<string, unknown>).properties\n if (!properties || typeof properties !== \"object\") {\n return []\n }\n\n return Object.keys(properties)\n}\n\nexport function explainCapability(capabilityId: string): CapabilityExplanation {\n const card = getOperationCard(capabilityId)\n if (!card) {\n throw new Error(`Unknown capability: ${capabilityId}`)\n }\n\n return {\n capability_id: card.capability_id,\n purpose: card.description,\n required_inputs: extractRequiredInputs(card.input_schema),\n preferred_route: card.routing.preferred,\n fallback_routes: [...card.routing.fallbacks],\n output_fields: extractOutputFields(card.output_schema),\n }\n}\n","import { listOperationCards } from \"../../core/registry/index.js\"\n\nexport type CapabilityListItem = {\n capability_id: string\n description: string\n}\n\nexport function listCapabilities(): CapabilityListItem[] {\n return listOperationCards().map((card) => ({\n capability_id: card.capability_id,\n description: card.description,\n }))\n}\n"],"mappings":";;;;;;AAWA,SAAS,sBAAsB,aAAmE;AAChG,MAAI,CAAC,eAAe,OAAO,gBAAgB,UAAU;AACnD,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,WAAY,YAAwC;AAC1D,MAAI,CAAC,MAAM,QAAQ,QAAQ,GAAG;AAC5B,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,SAAS,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ;AAC9E;AAEA,SAAS,oBAAoB,cAAoE;AAC/F,MAAI,CAAC,gBAAgB,OAAO,iBAAiB,UAAU;AACrD,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,aAAc,aAAyC;AAC7D,MAAI,CAAC,cAAc,OAAO,eAAe,UAAU;AACjD,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,OAAO,KAAK,UAAU;AAC/B;AAEO,SAAS,kBAAkB,cAA6C;AAC7E,QAAM,OAAO,iBAAiB,YAAY;AAC1C,MAAI,CAAC,MAAM;AACT,UAAM,IAAI,MAAM,uBAAuB,YAAY,EAAE;AAAA,EACvD;AAEA,SAAO;AAAA,IACL,eAAe,KAAK;AAAA,IACpB,SAAS,KAAK;AAAA,IACd,iBAAiB,sBAAsB,KAAK,YAAY;AAAA,IACxD,iBAAiB,KAAK,QAAQ;AAAA,IAC9B,iBAAiB,CAAC,GAAG,KAAK,QAAQ,SAAS;AAAA,IAC3C,eAAe,oBAAoB,KAAK,aAAa;AAAA,EACvD;AACF;;;AC5CO,SAAS,mBAAyC;AACvD,SAAO,mBAAmB,EAAE,IAAI,CAAC,UAAU;AAAA,IACzC,eAAe,KAAK;AAAA,IACpB,aAAa,KAAK;AAAA,EACpB,EAAE;AACJ;","names":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# ghx CLI Skill
|
|
2
|
+
|
|
3
|
+
Use `ghx` as the default interface for supported GitHub operations.
|
|
4
|
+
|
|
5
|
+
## Session Bootstrap (run once)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
gh auth status
|
|
9
|
+
ghx capabilities list
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
If authentication fails, stop and request authentication before continuing.
|
|
13
|
+
|
|
14
|
+
## Workflow
|
|
15
|
+
|
|
16
|
+
1. Choose a capability from `ghx capabilities list`.
|
|
17
|
+
2. If required inputs are unclear, inspect the capability:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
ghx capabilities explain <capability_id>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
3. Execute with structured JSON input:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
ghx run <capability_id> --input '<json>'
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Result Handling Rules
|
|
30
|
+
|
|
31
|
+
`ghx run` returns a result envelope: `{ ok, data, error, meta }`.
|
|
32
|
+
|
|
33
|
+
- Check `ok` first.
|
|
34
|
+
- If `ok=true`, use `data`.
|
|
35
|
+
- If `ok=false`, read `error.code` and `error.message`.
|
|
36
|
+
- If `error.retryable=true`, retry once.
|
|
37
|
+
- For supported operations, do not parse raw `gh` output.
|
|
38
|
+
|
|
39
|
+
## Input Conventions
|
|
40
|
+
|
|
41
|
+
- Repository identity is `owner` + `name`.
|
|
42
|
+
- Do not guess input fields; run `ghx capabilities explain <capability_id>`.
|
|
43
|
+
|
|
44
|
+
## Examples
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
ghx run repo.view --input '{"owner":"octocat","name":"hello-world"}'
|
|
48
|
+
ghx run issue.create --input '{"owner":"octocat","name":"hello-world","title":"Bug report","body":"Steps to reproduce"}'
|
|
49
|
+
ghx run pr.view --input '{"owner":"octocat","name":"hello-world","prNumber":42}'
|
|
50
|
+
ghx run pr.checks.get_failed --input '{"owner":"octocat","name":"hello-world","prNumber":42}'
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Guardrails
|
|
54
|
+
|
|
55
|
+
- Prefer `ghx` over direct `gh` or API calls for supported operations.
|
|
56
|
+
- Treat `meta.route_used` as informational only.
|
|
57
|
+
- If a required input is unknown, ask the user instead of guessing.
|
package/dist/cli/index.js
CHANGED
|
@@ -1,50 +1,382 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
explainCapability,
|
|
4
|
+
listCapabilities
|
|
5
|
+
} from "../chunk-SCIJMW5P.js";
|
|
5
6
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import {
|
|
12
|
-
runCommand
|
|
13
|
-
} from "../chunk-22WWCK6A.js";
|
|
14
|
-
import "../chunk-4PLVKNCF.js";
|
|
15
|
-
import "../chunk-GMTG7X2L.js";
|
|
16
|
-
import "../chunk-SD7U4BNA.js";
|
|
17
|
-
import "../chunk-DLKIQBK6.js";
|
|
18
|
-
import "../chunk-SA2D4A5U.js";
|
|
19
|
-
import "../chunk-XNMM64WU.js";
|
|
20
|
-
import "../chunk-UGWIZ3RI.js";
|
|
21
|
-
import "../chunk-B6RLMKS4.js";
|
|
22
|
-
import "../chunk-573MDG3I.js";
|
|
23
|
-
import "../chunk-3MRJX72M.js";
|
|
24
|
-
import "../chunk-5JRLVOF2.js";
|
|
25
|
-
import "../chunk-W2TKG2UL.js";
|
|
26
|
-
import "../chunk-QEAMC4IJ.js";
|
|
27
|
-
import "../chunk-TDTKOJKN.js";
|
|
28
|
-
import "../chunk-UOJWOHRM.js";
|
|
29
|
-
import "../chunk-JH6GM6XU.js";
|
|
30
|
-
import "../chunk-2W4L5YCC.js";
|
|
31
|
-
import "../chunk-JLDU462R.js";
|
|
32
|
-
import "../chunk-EBRDO4Y6.js";
|
|
33
|
-
import "../chunk-RUQXGZ35.js";
|
|
34
|
-
import "../chunk-TCLMLVUQ.js";
|
|
35
|
-
import "../chunk-VD5NXQP7.js";
|
|
36
|
-
import "../chunk-NFF5VF4U.js";
|
|
37
|
-
import "../chunk-D746VR3B.js";
|
|
38
|
-
import "../chunk-W6ROKCY5.js";
|
|
39
|
-
import "../chunk-QZZC53HF.js";
|
|
7
|
+
createGithubClient,
|
|
8
|
+
errorCodes,
|
|
9
|
+
executeTask
|
|
10
|
+
} from "../chunk-PJ2JKKQE.js";
|
|
11
|
+
import "../chunk-OL4ARD3R.js";
|
|
40
12
|
|
|
41
13
|
// src/cli/index.ts
|
|
42
14
|
import { realpathSync } from "fs";
|
|
43
15
|
import { pathToFileURL } from "url";
|
|
16
|
+
|
|
17
|
+
// src/cli/commands/capabilities-explain.ts
|
|
44
18
|
function usage() {
|
|
19
|
+
return "Usage: ghx capabilities explain <capability_id> [--json]";
|
|
20
|
+
}
|
|
21
|
+
function parseArgs(argv) {
|
|
22
|
+
const asJson = argv.includes("--json");
|
|
23
|
+
const capabilityId = argv.find((arg) => !arg.startsWith("-"));
|
|
24
|
+
return { capabilityId, asJson };
|
|
25
|
+
}
|
|
26
|
+
async function capabilitiesExplainCommand(argv = []) {
|
|
27
|
+
const { capabilityId, asJson } = parseArgs(argv);
|
|
28
|
+
if (!capabilityId) {
|
|
29
|
+
process.stderr.write(`${usage()}
|
|
30
|
+
`);
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const explained = explainCapability(capabilityId);
|
|
35
|
+
if (asJson) {
|
|
36
|
+
process.stdout.write(`${JSON.stringify(explained)}
|
|
37
|
+
`);
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
process.stdout.write(`${JSON.stringify(explained, null, 2)}
|
|
41
|
+
`);
|
|
42
|
+
return 0;
|
|
43
|
+
} catch (error) {
|
|
44
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
45
|
+
process.stderr.write(`${message}
|
|
46
|
+
`);
|
|
47
|
+
return 1;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// src/cli/commands/capabilities-list.ts
|
|
52
|
+
function parseArgs2(argv) {
|
|
53
|
+
return {
|
|
54
|
+
asJson: argv.includes("--json")
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
async function capabilitiesListCommand(argv = []) {
|
|
58
|
+
const { asJson } = parseArgs2(argv);
|
|
59
|
+
const capabilities = listCapabilities();
|
|
60
|
+
if (asJson) {
|
|
61
|
+
process.stdout.write(`${JSON.stringify(capabilities)}
|
|
62
|
+
`);
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
65
|
+
const lines = capabilities.map((item) => `${item.capability_id} - ${item.description}`);
|
|
66
|
+
process.stdout.write(`${lines.join("\n")}
|
|
67
|
+
`);
|
|
68
|
+
return 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// src/cli/commands/run.ts
|
|
72
|
+
var GITHUB_GRAPHQL_ENDPOINT = "https://api.github.com/graphql";
|
|
73
|
+
function parseRunArgs(argv) {
|
|
74
|
+
const [task, ...rest] = argv;
|
|
75
|
+
if (!task || task.trim().length === 0) {
|
|
76
|
+
throw new Error("Usage: ghx run <task> --input '<json>' [--check-gh-preflight]");
|
|
77
|
+
}
|
|
78
|
+
const inputIndex = rest.findIndex((arg) => arg === "--input");
|
|
79
|
+
const inlineInput = rest.find((arg) => arg.startsWith("--input="));
|
|
80
|
+
const inputCandidate = inputIndex >= 0 ? rest[inputIndex + 1] : void 0;
|
|
81
|
+
const inputRaw = inputCandidate && !inputCandidate.startsWith("--") ? inputCandidate : inlineInput ? inlineInput.slice("--input=".length) : void 0;
|
|
82
|
+
if (!inputRaw) {
|
|
83
|
+
throw new Error("Missing --input JSON");
|
|
84
|
+
}
|
|
85
|
+
let parsed;
|
|
86
|
+
try {
|
|
87
|
+
parsed = JSON.parse(inputRaw);
|
|
88
|
+
} catch {
|
|
89
|
+
throw new Error("Invalid JSON for --input");
|
|
90
|
+
}
|
|
91
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
92
|
+
throw new Error("--input must be a JSON object");
|
|
93
|
+
}
|
|
94
|
+
const skipGhPreflight = !rest.includes("--check-gh-preflight");
|
|
95
|
+
return { task, input: parsed, skipGhPreflight };
|
|
96
|
+
}
|
|
97
|
+
function resolveGithubToken() {
|
|
98
|
+
const token = process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN;
|
|
99
|
+
if (!token || token.trim().length === 0) {
|
|
100
|
+
throw new Error("Missing GITHUB_TOKEN or GH_TOKEN for GraphQL transport");
|
|
101
|
+
}
|
|
102
|
+
return token;
|
|
103
|
+
}
|
|
104
|
+
async function executeGraphqlRequest(token, query, variables) {
|
|
105
|
+
const response = await fetch(GITHUB_GRAPHQL_ENDPOINT, {
|
|
106
|
+
method: "POST",
|
|
107
|
+
headers: {
|
|
108
|
+
"content-type": "application/json",
|
|
109
|
+
accept: "application/json",
|
|
110
|
+
authorization: `Bearer ${token}`,
|
|
111
|
+
"user-agent": "ghx"
|
|
112
|
+
},
|
|
113
|
+
body: JSON.stringify({ query, variables: variables ?? {} })
|
|
114
|
+
});
|
|
115
|
+
const payload = await response.json();
|
|
116
|
+
if (!response.ok) {
|
|
117
|
+
const message = payload.message ?? `GitHub GraphQL request failed with status ${response.status}`;
|
|
118
|
+
throw new Error(message);
|
|
119
|
+
}
|
|
120
|
+
if (Array.isArray(payload.errors) && payload.errors.length > 0) {
|
|
121
|
+
const message = payload.errors[0]?.message ?? "GitHub GraphQL returned errors";
|
|
122
|
+
throw new Error(message);
|
|
123
|
+
}
|
|
124
|
+
if (payload.data === void 0) {
|
|
125
|
+
throw new Error("GitHub GraphQL response missing data");
|
|
126
|
+
}
|
|
127
|
+
return payload.data;
|
|
128
|
+
}
|
|
129
|
+
async function runCommand(argv = []) {
|
|
130
|
+
if (argv.length === 0) {
|
|
131
|
+
process.stdout.write("Usage: ghx run <task> --input '<json>' [--check-gh-preflight]\n");
|
|
132
|
+
return 1;
|
|
133
|
+
}
|
|
134
|
+
const { task, input, skipGhPreflight } = parseRunArgs(argv);
|
|
135
|
+
const githubToken = resolveGithubToken();
|
|
136
|
+
const githubClient = createGithubClient({
|
|
137
|
+
async execute(query, variables) {
|
|
138
|
+
return executeGraphqlRequest(githubToken, query, variables);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
const request = {
|
|
142
|
+
task,
|
|
143
|
+
input
|
|
144
|
+
};
|
|
145
|
+
const result = await executeTask(request, {
|
|
146
|
+
githubClient,
|
|
147
|
+
githubToken,
|
|
148
|
+
skipGhPreflight
|
|
149
|
+
});
|
|
150
|
+
process.stdout.write(`${JSON.stringify(result)}
|
|
151
|
+
`);
|
|
152
|
+
return 0;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// src/cli/commands/setup.ts
|
|
156
|
+
import { access, appendFile, mkdir, readFile, writeFile } from "fs/promises";
|
|
157
|
+
import { homedir } from "os";
|
|
158
|
+
import { dirname, join } from "path";
|
|
159
|
+
import readline from "readline/promises";
|
|
160
|
+
import { fileURLToPath } from "url";
|
|
161
|
+
import { Ajv } from "ajv";
|
|
162
|
+
var ajv = new Ajv({ allErrors: true, strict: false });
|
|
163
|
+
var setupOptionsSchema = {
|
|
164
|
+
type: "object",
|
|
165
|
+
additionalProperties: false,
|
|
166
|
+
required: ["scope", "assumeYes", "dryRun", "verifyOnly", "track"],
|
|
167
|
+
properties: {
|
|
168
|
+
scope: {
|
|
169
|
+
type: "string",
|
|
170
|
+
enum: ["user", "project"]
|
|
171
|
+
},
|
|
172
|
+
assumeYes: { type: "boolean" },
|
|
173
|
+
dryRun: { type: "boolean" },
|
|
174
|
+
verifyOnly: { type: "boolean" },
|
|
175
|
+
track: { type: "boolean" }
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
var validateSetupOptions = ajv.compile(setupOptionsSchema);
|
|
179
|
+
var setupCommandDirectory = dirname(fileURLToPath(import.meta.url));
|
|
180
|
+
var setupSkillAssetPathCandidates = [
|
|
181
|
+
join(setupCommandDirectory, "..", "assets", "skills", "ghx", "SKILL.md"),
|
|
182
|
+
join(setupCommandDirectory, "assets", "skills", "ghx", "SKILL.md"),
|
|
183
|
+
join(setupCommandDirectory, "cli", "assets", "skills", "ghx", "SKILL.md")
|
|
184
|
+
];
|
|
185
|
+
function isENOENT(error) {
|
|
186
|
+
return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
|
|
187
|
+
}
|
|
188
|
+
function createSetupError(message, code) {
|
|
189
|
+
const error = new Error(message);
|
|
190
|
+
error.code = code;
|
|
191
|
+
return error;
|
|
192
|
+
}
|
|
193
|
+
async function loadSetupSkillContent() {
|
|
194
|
+
for (const candidatePath of setupSkillAssetPathCandidates) {
|
|
195
|
+
try {
|
|
196
|
+
return await readFile(candidatePath, "utf8");
|
|
197
|
+
} catch (error) {
|
|
198
|
+
if (isENOENT(error)) {
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
throw createSetupError(
|
|
205
|
+
`Setup skill asset not found. Checked: ${setupSkillAssetPathCandidates.join(", ")}`,
|
|
206
|
+
errorCodes.NotFound
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
function usage2() {
|
|
210
|
+
return "Usage: ghx setup --scope <user|project> [--yes] [--dry-run] [--verify] [--track]";
|
|
211
|
+
}
|
|
212
|
+
function parseScope(argv) {
|
|
213
|
+
const inline = argv.find((arg) => arg.startsWith("--scope="));
|
|
214
|
+
if (inline) {
|
|
215
|
+
const raw = inline.slice("--scope=".length);
|
|
216
|
+
if (raw === "user" || raw === "project") {
|
|
217
|
+
return raw;
|
|
218
|
+
}
|
|
219
|
+
return void 0;
|
|
220
|
+
}
|
|
221
|
+
const scopeIndex = argv.findIndex((arg) => arg === "--scope");
|
|
222
|
+
if (scopeIndex < 0) {
|
|
223
|
+
return void 0;
|
|
224
|
+
}
|
|
225
|
+
const value = argv[scopeIndex + 1];
|
|
226
|
+
if (value === "user" || value === "project") {
|
|
227
|
+
return value;
|
|
228
|
+
}
|
|
229
|
+
return void 0;
|
|
230
|
+
}
|
|
231
|
+
function parseArgs3(argv) {
|
|
232
|
+
const scope = parseScope(argv);
|
|
233
|
+
if (!scope) {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
const options = {
|
|
237
|
+
scope,
|
|
238
|
+
assumeYes: argv.includes("--yes"),
|
|
239
|
+
dryRun: argv.includes("--dry-run"),
|
|
240
|
+
verifyOnly: argv.includes("--verify"),
|
|
241
|
+
track: argv.includes("--track")
|
|
242
|
+
};
|
|
243
|
+
if (!validateSetupOptions(options)) {
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
return options;
|
|
247
|
+
}
|
|
248
|
+
function resolveSkillPath(scope) {
|
|
249
|
+
const base = scope === "user" ? homedir() : process.cwd();
|
|
250
|
+
return join(base, ".agents", "skills", "ghx", "SKILL.md");
|
|
251
|
+
}
|
|
252
|
+
function resolveTrackingPath() {
|
|
253
|
+
return join(homedir(), ".agents", "ghx", "setup-events.jsonl");
|
|
254
|
+
}
|
|
255
|
+
async function writeTrackingEvent(options) {
|
|
256
|
+
if (!options.track) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
const trackingPath = resolveTrackingPath();
|
|
260
|
+
await mkdir(join(homedir(), ".agents", "ghx"), { recursive: true });
|
|
261
|
+
await appendFile(
|
|
262
|
+
trackingPath,
|
|
263
|
+
`${JSON.stringify({
|
|
264
|
+
command: "setup",
|
|
265
|
+
scope: options.scope,
|
|
266
|
+
mode: options.mode,
|
|
267
|
+
success: options.success,
|
|
268
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
269
|
+
})}
|
|
270
|
+
`,
|
|
271
|
+
"utf8"
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
async function confirmOverwrite(skillPath) {
|
|
275
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
const rl = readline.createInterface({
|
|
279
|
+
input: process.stdin,
|
|
280
|
+
output: process.stdout
|
|
281
|
+
});
|
|
282
|
+
try {
|
|
283
|
+
const answer = await rl.question(`Skill already exists at ${skillPath}. Overwrite? [y/N] `);
|
|
284
|
+
const normalized = answer.trim().toLowerCase();
|
|
285
|
+
return normalized === "y" || normalized === "yes";
|
|
286
|
+
} finally {
|
|
287
|
+
rl.close();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
async function verifySkill(skillPath) {
|
|
291
|
+
try {
|
|
292
|
+
const content = await readFile(skillPath, "utf8");
|
|
293
|
+
return content.includes("ghx capabilities");
|
|
294
|
+
} catch (error) {
|
|
295
|
+
if (isENOENT(error)) {
|
|
296
|
+
return false;
|
|
297
|
+
}
|
|
298
|
+
throw error;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
async function skillFileExists(skillPath) {
|
|
302
|
+
try {
|
|
303
|
+
await access(skillPath);
|
|
304
|
+
return true;
|
|
305
|
+
} catch (error) {
|
|
306
|
+
if (isENOENT(error)) {
|
|
307
|
+
return false;
|
|
308
|
+
}
|
|
309
|
+
throw error;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
async function setupCommand(argv = []) {
|
|
313
|
+
const parsed = parseArgs3(argv);
|
|
314
|
+
if (!parsed) {
|
|
315
|
+
process.stderr.write(`${usage2()}
|
|
316
|
+
`);
|
|
317
|
+
return 1;
|
|
318
|
+
}
|
|
319
|
+
const skillPath = resolveSkillPath(parsed.scope);
|
|
320
|
+
try {
|
|
321
|
+
if (parsed.verifyOnly) {
|
|
322
|
+
const ok = await verifySkill(skillPath);
|
|
323
|
+
if (!ok) {
|
|
324
|
+
process.stderr.write(`Verify failed: skill not installed at ${skillPath}
|
|
325
|
+
`);
|
|
326
|
+
return 1;
|
|
327
|
+
}
|
|
328
|
+
process.stdout.write(`Verify passed: skill installed at ${skillPath}
|
|
329
|
+
`);
|
|
330
|
+
return 0;
|
|
331
|
+
}
|
|
332
|
+
if (parsed.dryRun) {
|
|
333
|
+
process.stdout.write(`Dry run: would write ${skillPath}
|
|
334
|
+
`);
|
|
335
|
+
return 0;
|
|
336
|
+
}
|
|
337
|
+
const alreadyExists = await skillFileExists(skillPath);
|
|
338
|
+
if (alreadyExists && !parsed.assumeYes) {
|
|
339
|
+
const approved = await confirmOverwrite(skillPath);
|
|
340
|
+
if (!approved) {
|
|
341
|
+
process.stderr.write(
|
|
342
|
+
`Skill already exists at ${skillPath}. Re-run with --yes or confirm overwrite interactively.
|
|
343
|
+
`
|
|
344
|
+
);
|
|
345
|
+
await writeTrackingEvent({
|
|
346
|
+
track: parsed.track,
|
|
347
|
+
scope: parsed.scope,
|
|
348
|
+
mode: "apply",
|
|
349
|
+
success: false
|
|
350
|
+
});
|
|
351
|
+
return 1;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
const skillContent = await loadSetupSkillContent();
|
|
355
|
+
await mkdir(dirname(skillPath), { recursive: true });
|
|
356
|
+
await writeFile(skillPath, skillContent, "utf8");
|
|
357
|
+
process.stdout.write(`Setup complete: wrote ${skillPath}
|
|
358
|
+
`);
|
|
359
|
+
process.stdout.write("Try: ghx capabilities list\n");
|
|
360
|
+
await writeTrackingEvent({
|
|
361
|
+
track: parsed.track,
|
|
362
|
+
scope: parsed.scope,
|
|
363
|
+
mode: "apply",
|
|
364
|
+
success: true
|
|
365
|
+
});
|
|
366
|
+
return 0;
|
|
367
|
+
} catch (error) {
|
|
368
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
369
|
+
process.stderr.write(`Setup failed: ${message}
|
|
370
|
+
`);
|
|
371
|
+
return 1;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
// src/cli/index.ts
|
|
376
|
+
function usage3() {
|
|
45
377
|
return [
|
|
46
378
|
"Usage:",
|
|
47
|
-
" ghx run <task> --input '<json>'",
|
|
379
|
+
" ghx run <task> --input '<json>' [--check-gh-preflight]",
|
|
48
380
|
" ghx setup --scope <user|project> [--yes] [--dry-run] [--verify] [--track]",
|
|
49
381
|
" ghx capabilities list",
|
|
50
382
|
" ghx capabilities explain <capability_id>"
|
|
@@ -53,7 +385,7 @@ function usage() {
|
|
|
53
385
|
async function main(argv = process.argv.slice(2)) {
|
|
54
386
|
const [command, ...rest] = argv;
|
|
55
387
|
if (!command || command === "--help" || command === "-h") {
|
|
56
|
-
process.stdout.write(`${
|
|
388
|
+
process.stdout.write(`${usage3()}
|
|
57
389
|
`);
|
|
58
390
|
return 0;
|
|
59
391
|
}
|
|
@@ -67,7 +399,7 @@ async function main(argv = process.argv.slice(2)) {
|
|
|
67
399
|
const [subcommand, ...subcommandArgs] = rest;
|
|
68
400
|
if (!subcommand) {
|
|
69
401
|
process.stderr.write(`Missing capabilities subcommand.
|
|
70
|
-
${
|
|
402
|
+
${usage3()}
|
|
71
403
|
`);
|
|
72
404
|
return 1;
|
|
73
405
|
}
|
|
@@ -78,12 +410,12 @@ ${usage()}
|
|
|
78
410
|
return capabilitiesExplainCommand(subcommandArgs);
|
|
79
411
|
}
|
|
80
412
|
process.stderr.write(`Unknown capabilities subcommand: ${subcommand}
|
|
81
|
-
${
|
|
413
|
+
${usage3()}
|
|
82
414
|
`);
|
|
83
415
|
return 1;
|
|
84
416
|
}
|
|
85
417
|
process.stderr.write(`Unknown command: ${command}
|
|
86
|
-
${
|
|
418
|
+
${usage3()}
|
|
87
419
|
`);
|
|
88
420
|
return 1;
|
|
89
421
|
}
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { realpathSync } from \"node:fs\"\nimport { pathToFileURL } from \"node:url\"\n\nimport { capabilitiesExplainCommand } from \"./commands/capabilities-explain.js\"\nimport { capabilitiesListCommand } from \"./commands/capabilities-list.js\"\nimport { runCommand } from \"./commands/run.js\"\nimport { setupCommand } from \"./commands/setup.js\"\n\nfunction usage(): string {\n return [\n \"Usage:\",\n \" ghx run <task> --input '<json>'\",\n \" ghx setup --scope <user|project> [--yes] [--dry-run] [--verify] [--track]\",\n \" ghx capabilities list\",\n \" ghx capabilities explain <capability_id>\"\n ].join(\"\\n\")\n}\n\nexport async function main(argv: string[] = process.argv.slice(2)): Promise<number> {\n const [command, ...rest] = argv\n\n if (!command || command === \"--help\" || command === \"-h\") {\n process.stdout.write(`${usage()}\\n`)\n return 0\n }\n\n if (command === \"run\") {\n return runCommand(rest)\n }\n\n if (command === \"setup\") {\n return setupCommand(rest)\n }\n\n if (command === \"capabilities\") {\n const [subcommand, ...subcommandArgs] = rest\n\n if (!subcommand) {\n process.stderr.write(`Missing capabilities subcommand.\\n${usage()}\\n`)\n return 1\n }\n\n if (subcommand === \"list\") {\n return capabilitiesListCommand(subcommandArgs)\n }\n\n if (subcommand === \"explain\") {\n return capabilitiesExplainCommand(subcommandArgs)\n }\n\n process.stderr.write(`Unknown capabilities subcommand: ${subcommand}\\n${usage()}\\n`)\n return 1\n }\n\n process.stderr.write(`Unknown command: ${command}\\n${usage()}\\n`)\n return 1\n}\n\nconst isDirectRun = (() => {\n if (!process.argv[1]) {\n return false\n }\n\n try {\n const currentEntry = realpathSync(new URL(import.meta.url))\n const invokedEntry = realpathSync(process.argv[1])\n return currentEntry === invokedEntry || import.meta.url === pathToFileURL(process.argv[1]).href\n } catch {\n return import.meta.url === pathToFileURL(process.argv[1]).href\n }\n})()\n\nif (isDirectRun) {\n main().then(\n (exitCode) => {\n process.exitCode = exitCode\n },\n (error: unknown) => {\n const message = error instanceof Error ? error.message : String(error)\n process.stderr.write(`${message}\\n`)\n process.exit(1)\n }\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAO9B,SAAS,QAAgB;AACvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEA,eAAsB,KAAK,OAAiB,QAAQ,KAAK,MAAM,CAAC,GAAoB;AAClF,QAAM,CAAC,SAAS,GAAG,IAAI,IAAI;AAE3B,MAAI,CAAC,WAAW,YAAY,YAAY,YAAY,MAAM;AACxD,YAAQ,OAAO,MAAM,GAAG,MAAM,CAAC;AAAA,CAAI;AACnC,WAAO;AAAA,EACT;AAEA,MAAI,YAAY,OAAO;AACrB,WAAO,WAAW,IAAI;AAAA,EACxB;AAEA,MAAI,YAAY,SAAS;AACvB,WAAO,aAAa,IAAI;AAAA,EAC1B;AAEA,MAAI,YAAY,gBAAgB;AAC9B,UAAM,CAAC,YAAY,GAAG,cAAc,IAAI;AAExC,QAAI,CAAC,YAAY;AACf,cAAQ,OAAO,MAAM;AAAA,EAAqC,MAAM,CAAC;AAAA,CAAI;AACrE,aAAO;AAAA,IACT;AAEA,QAAI,eAAe,QAAQ;AACzB,aAAO,wBAAwB,cAAc;AAAA,IAC/C;AAEA,QAAI,eAAe,WAAW;AAC5B,aAAO,2BAA2B,cAAc;AAAA,IAClD;AAEA,YAAQ,OAAO,MAAM,oCAAoC,UAAU;AAAA,EAAK,MAAM,CAAC;AAAA,CAAI;AACnF,WAAO;AAAA,EACT;AAEA,UAAQ,OAAO,MAAM,oBAAoB,OAAO;AAAA,EAAK,MAAM,CAAC;AAAA,CAAI;AAChE,SAAO;AACT;AAEA,IAAM,eAAe,MAAM;AACzB,MAAI,CAAC,QAAQ,KAAK,CAAC,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,eAAe,aAAa,IAAI,IAAI,YAAY,GAAG,CAAC;AAC1D,UAAM,eAAe,aAAa,QAAQ,KAAK,CAAC,CAAC;AACjD,WAAO,iBAAiB,gBAAgB,YAAY,QAAQ,cAAc,QAAQ,KAAK,CAAC,CAAC,EAAE;AAAA,EAC7F,QAAQ;AACN,WAAO,YAAY,QAAQ,cAAc,QAAQ,KAAK,CAAC,CAAC,EAAE;AAAA,EAC5D;AACF,GAAG;AAEH,IAAI,aAAa;AACf,OAAK,EAAE;AAAA,IACL,CAAC,aAAa;AACZ,cAAQ,WAAW;AAAA,IACrB;AAAA,IACA,CAAC,UAAmB;AAClB,YAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,cAAQ,OAAO,MAAM,GAAG,OAAO;AAAA,CAAI;AACnC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/index.ts","../../src/cli/commands/capabilities-explain.ts","../../src/cli/commands/capabilities-list.ts","../../src/cli/commands/run.ts","../../src/cli/commands/setup.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { realpathSync } from \"node:fs\"\nimport { pathToFileURL } from \"node:url\"\n\nimport { capabilitiesExplainCommand } from \"./commands/capabilities-explain.js\"\nimport { capabilitiesListCommand } from \"./commands/capabilities-list.js\"\nimport { runCommand } from \"./commands/run.js\"\nimport { setupCommand } from \"./commands/setup.js\"\n\nfunction usage(): string {\n return [\n \"Usage:\",\n \" ghx run <task> --input '<json>' [--check-gh-preflight]\",\n \" ghx setup --scope <user|project> [--yes] [--dry-run] [--verify] [--track]\",\n \" ghx capabilities list\",\n \" ghx capabilities explain <capability_id>\",\n ].join(\"\\n\")\n}\n\nexport async function main(argv: string[] = process.argv.slice(2)): Promise<number> {\n const [command, ...rest] = argv\n\n if (!command || command === \"--help\" || command === \"-h\") {\n process.stdout.write(`${usage()}\\n`)\n return 0\n }\n\n if (command === \"run\") {\n return runCommand(rest)\n }\n\n if (command === \"setup\") {\n return setupCommand(rest)\n }\n\n if (command === \"capabilities\") {\n const [subcommand, ...subcommandArgs] = rest\n\n if (!subcommand) {\n process.stderr.write(`Missing capabilities subcommand.\\n${usage()}\\n`)\n return 1\n }\n\n if (subcommand === \"list\") {\n return capabilitiesListCommand(subcommandArgs)\n }\n\n if (subcommand === \"explain\") {\n return capabilitiesExplainCommand(subcommandArgs)\n }\n\n process.stderr.write(`Unknown capabilities subcommand: ${subcommand}\\n${usage()}\\n`)\n return 1\n }\n\n process.stderr.write(`Unknown command: ${command}\\n${usage()}\\n`)\n return 1\n}\n\nconst isDirectRun = (() => {\n if (!process.argv[1]) {\n return false\n }\n\n try {\n const currentEntry = realpathSync(new URL(import.meta.url))\n const invokedEntry = realpathSync(process.argv[1])\n return currentEntry === invokedEntry || import.meta.url === pathToFileURL(process.argv[1]).href\n } catch {\n return import.meta.url === pathToFileURL(process.argv[1]).href\n }\n})()\n\nif (isDirectRun) {\n main().then(\n (exitCode) => {\n process.exitCode = exitCode\n },\n (error: unknown) => {\n const message = error instanceof Error ? error.message : String(error)\n process.stderr.write(`${message}\\n`)\n process.exit(1)\n },\n )\n}\n","import { explainCapability } from \"../../agent-interface/tools/explain-tool.js\"\n\nfunction usage(): string {\n return \"Usage: ghx capabilities explain <capability_id> [--json]\"\n}\n\nfunction parseArgs(argv: string[]): { capabilityId: string | undefined; asJson: boolean } {\n const asJson = argv.includes(\"--json\")\n const capabilityId = argv.find((arg) => !arg.startsWith(\"-\"))\n return { capabilityId, asJson }\n}\n\nexport async function capabilitiesExplainCommand(argv: string[] = []): Promise<number> {\n const { capabilityId, asJson } = parseArgs(argv)\n\n if (!capabilityId) {\n process.stderr.write(`${usage()}\\n`)\n return 1\n }\n\n try {\n const explained = explainCapability(capabilityId)\n\n if (asJson) {\n process.stdout.write(`${JSON.stringify(explained)}\\n`)\n return 0\n }\n\n process.stdout.write(`${JSON.stringify(explained, null, 2)}\\n`)\n return 0\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n process.stderr.write(`${message}\\n`)\n return 1\n }\n}\n","import { listCapabilities } from \"../../agent-interface/tools/list-capabilities-tool.js\"\n\nfunction parseArgs(argv: string[]): { asJson: boolean } {\n return {\n asJson: argv.includes(\"--json\"),\n }\n}\n\nexport async function capabilitiesListCommand(argv: string[] = []): Promise<number> {\n const { asJson } = parseArgs(argv)\n const capabilities = listCapabilities()\n\n if (asJson) {\n process.stdout.write(`${JSON.stringify(capabilities)}\\n`)\n return 0\n }\n\n const lines = capabilities.map((item) => `${item.capability_id} - ${item.description}`)\n process.stdout.write(`${lines.join(\"\\n\")}\\n`)\n return 0\n}\n","import type { TaskRequest } from \"../../core/contracts/task.js\"\nimport { executeTask } from \"../../core/routing/engine.js\"\nimport { createGithubClient } from \"../../gql/client.js\"\n\nconst GITHUB_GRAPHQL_ENDPOINT = \"https://api.github.com/graphql\"\n\nfunction parseRunArgs(argv: string[]): {\n task: string\n input: Record<string, unknown>\n skipGhPreflight: boolean\n} {\n const [task, ...rest] = argv\n if (!task || task.trim().length === 0) {\n throw new Error(\"Usage: ghx run <task> --input '<json>' [--check-gh-preflight]\")\n }\n\n const inputIndex = rest.findIndex((arg) => arg === \"--input\")\n const inlineInput = rest.find((arg) => arg.startsWith(\"--input=\"))\n const inputCandidate = inputIndex >= 0 ? rest[inputIndex + 1] : undefined\n const inputRaw =\n inputCandidate && !inputCandidate.startsWith(\"--\")\n ? inputCandidate\n : inlineInput\n ? inlineInput.slice(\"--input=\".length)\n : undefined\n\n if (!inputRaw) {\n throw new Error(\"Missing --input JSON\")\n }\n\n let parsed: unknown\n try {\n parsed = JSON.parse(inputRaw)\n } catch {\n throw new Error(\"Invalid JSON for --input\")\n }\n\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n throw new Error(\"--input must be a JSON object\")\n }\n\n const skipGhPreflight = !rest.includes(\"--check-gh-preflight\")\n\n return { task, input: parsed as Record<string, unknown>, skipGhPreflight }\n}\n\nfunction resolveGithubToken(): string {\n const token = process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN\n if (!token || token.trim().length === 0) {\n throw new Error(\"Missing GITHUB_TOKEN or GH_TOKEN for GraphQL transport\")\n }\n\n return token\n}\n\nasync function executeGraphqlRequest<TData>(\n token: string,\n query: string,\n variables?: Record<string, unknown>,\n): Promise<TData> {\n const response = await fetch(GITHUB_GRAPHQL_ENDPOINT, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n accept: \"application/json\",\n authorization: `Bearer ${token}`,\n \"user-agent\": \"ghx\",\n },\n body: JSON.stringify({ query, variables: variables ?? {} }),\n })\n\n const payload = (await response.json()) as {\n data?: TData\n errors?: Array<{ message?: string }>\n message?: string\n }\n\n if (!response.ok) {\n const message =\n payload.message ?? `GitHub GraphQL request failed with status ${response.status}`\n throw new Error(message)\n }\n\n if (Array.isArray(payload.errors) && payload.errors.length > 0) {\n const message = payload.errors[0]?.message ?? \"GitHub GraphQL returned errors\"\n throw new Error(message)\n }\n\n if (payload.data === undefined) {\n throw new Error(\"GitHub GraphQL response missing data\")\n }\n\n return payload.data\n}\n\nexport async function runCommand(argv: string[] = []): Promise<number> {\n if (argv.length === 0) {\n process.stdout.write(\"Usage: ghx run <task> --input '<json>' [--check-gh-preflight]\\n\")\n return 1\n }\n\n const { task, input, skipGhPreflight } = parseRunArgs(argv)\n const githubToken = resolveGithubToken()\n\n const githubClient = createGithubClient({\n async execute<TData>(query: string, variables?: Record<string, unknown>): Promise<TData> {\n return executeGraphqlRequest<TData>(githubToken, query, variables)\n },\n })\n\n const request: TaskRequest = {\n task,\n input,\n }\n\n const result = await executeTask(request, {\n githubClient,\n githubToken,\n skipGhPreflight,\n })\n\n process.stdout.write(`${JSON.stringify(result)}\\n`)\n return 0\n}\n","import { access, appendFile, mkdir, readFile, writeFile } from \"node:fs/promises\"\nimport { homedir } from \"node:os\"\nimport { dirname, join } from \"node:path\"\nimport readline from \"node:readline/promises\"\nimport { fileURLToPath } from \"node:url\"\n\nimport { Ajv } from \"ajv\"\nimport type { ErrorCode } from \"../../core/errors/codes.js\"\nimport { errorCodes } from \"../../core/errors/codes.js\"\n\ntype SetupScope = \"user\" | \"project\"\n\ntype SetupOptions = {\n scope: SetupScope\n assumeYes: boolean\n dryRun: boolean\n verifyOnly: boolean\n track: boolean\n}\n\ntype SetupError = Error & { code?: ErrorCode }\n\nconst ajv = new Ajv({ allErrors: true, strict: false })\n\nconst setupOptionsSchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"scope\", \"assumeYes\", \"dryRun\", \"verifyOnly\", \"track\"],\n properties: {\n scope: {\n type: \"string\",\n enum: [\"user\", \"project\"],\n },\n assumeYes: { type: \"boolean\" },\n dryRun: { type: \"boolean\" },\n verifyOnly: { type: \"boolean\" },\n track: { type: \"boolean\" },\n },\n} as const\n\nconst validateSetupOptions = ajv.compile(setupOptionsSchema)\n\nconst setupCommandDirectory = dirname(fileURLToPath(import.meta.url))\nconst setupSkillAssetPathCandidates = [\n join(setupCommandDirectory, \"..\", \"assets\", \"skills\", \"ghx\", \"SKILL.md\"),\n join(setupCommandDirectory, \"assets\", \"skills\", \"ghx\", \"SKILL.md\"),\n join(setupCommandDirectory, \"cli\", \"assets\", \"skills\", \"ghx\", \"SKILL.md\"),\n]\n\nfunction isENOENT(error: unknown): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as { code?: string }).code === \"ENOENT\"\n )\n}\n\nfunction createSetupError(message: string, code: ErrorCode): SetupError {\n const error = new Error(message) as SetupError\n error.code = code\n return error\n}\n\nasync function loadSetupSkillContent(): Promise<string> {\n for (const candidatePath of setupSkillAssetPathCandidates) {\n try {\n return await readFile(candidatePath, \"utf8\")\n } catch (error) {\n if (isENOENT(error)) {\n continue\n }\n\n throw error\n }\n }\n\n throw createSetupError(\n `Setup skill asset not found. Checked: ${setupSkillAssetPathCandidates.join(\", \")}`,\n errorCodes.NotFound,\n )\n}\n\nfunction usage(): string {\n return \"Usage: ghx setup --scope <user|project> [--yes] [--dry-run] [--verify] [--track]\"\n}\n\nfunction parseScope(argv: string[]): SetupScope | undefined {\n const inline = argv.find((arg) => arg.startsWith(\"--scope=\"))\n if (inline) {\n const raw = inline.slice(\"--scope=\".length)\n if (raw === \"user\" || raw === \"project\") {\n return raw\n }\n return undefined\n }\n\n const scopeIndex = argv.findIndex((arg) => arg === \"--scope\")\n if (scopeIndex < 0) {\n return undefined\n }\n\n const value = argv[scopeIndex + 1]\n if (value === \"user\" || value === \"project\") {\n return value\n }\n\n return undefined\n}\n\nfunction parseArgs(argv: string[]): SetupOptions | null {\n const scope = parseScope(argv)\n if (!scope) {\n return null\n }\n\n const options: SetupOptions = {\n scope,\n assumeYes: argv.includes(\"--yes\"),\n dryRun: argv.includes(\"--dry-run\"),\n verifyOnly: argv.includes(\"--verify\"),\n track: argv.includes(\"--track\"),\n }\n\n if (!validateSetupOptions(options)) {\n return null\n }\n\n return options\n}\n\nfunction resolveSkillPath(scope: SetupScope): string {\n const base = scope === \"user\" ? homedir() : process.cwd()\n return join(base, \".agents\", \"skills\", \"ghx\", \"SKILL.md\")\n}\n\nfunction resolveTrackingPath(): string {\n return join(homedir(), \".agents\", \"ghx\", \"setup-events.jsonl\")\n}\n\nasync function writeTrackingEvent(options: {\n track: boolean\n scope: SetupScope\n mode: \"apply\"\n success: boolean\n}): Promise<void> {\n if (!options.track) {\n return\n }\n\n const trackingPath = resolveTrackingPath()\n await mkdir(join(homedir(), \".agents\", \"ghx\"), { recursive: true })\n await appendFile(\n trackingPath,\n `${JSON.stringify({\n command: \"setup\",\n scope: options.scope,\n mode: options.mode,\n success: options.success,\n timestamp: new Date().toISOString(),\n })}\\n`,\n \"utf8\",\n )\n}\n\nasync function confirmOverwrite(skillPath: string): Promise<boolean> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n return false\n }\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n })\n\n try {\n const answer = await rl.question(`Skill already exists at ${skillPath}. Overwrite? [y/N] `)\n const normalized = answer.trim().toLowerCase()\n return normalized === \"y\" || normalized === \"yes\"\n } finally {\n rl.close()\n }\n}\n\nasync function verifySkill(skillPath: string): Promise<boolean> {\n try {\n const content = await readFile(skillPath, \"utf8\")\n return content.includes(\"ghx capabilities\")\n } catch (error) {\n if (isENOENT(error)) {\n return false\n }\n\n throw error\n }\n}\n\nasync function skillFileExists(skillPath: string): Promise<boolean> {\n try {\n await access(skillPath)\n return true\n } catch (error) {\n if (isENOENT(error)) {\n return false\n }\n\n throw error\n }\n}\n\nexport async function setupCommand(argv: string[] = []): Promise<number> {\n const parsed = parseArgs(argv)\n if (!parsed) {\n process.stderr.write(`${usage()}\\n`)\n return 1\n }\n\n const skillPath = resolveSkillPath(parsed.scope)\n\n try {\n if (parsed.verifyOnly) {\n const ok = await verifySkill(skillPath)\n if (!ok) {\n process.stderr.write(`Verify failed: skill not installed at ${skillPath}\\n`)\n return 1\n }\n\n process.stdout.write(`Verify passed: skill installed at ${skillPath}\\n`)\n return 0\n }\n\n if (parsed.dryRun) {\n process.stdout.write(`Dry run: would write ${skillPath}\\n`)\n return 0\n }\n\n const alreadyExists = await skillFileExists(skillPath)\n if (alreadyExists && !parsed.assumeYes) {\n const approved = await confirmOverwrite(skillPath)\n if (!approved) {\n process.stderr.write(\n `Skill already exists at ${skillPath}. Re-run with --yes or confirm overwrite interactively.\\n`,\n )\n await writeTrackingEvent({\n track: parsed.track,\n scope: parsed.scope,\n mode: \"apply\",\n success: false,\n })\n return 1\n }\n }\n\n const skillContent = await loadSetupSkillContent()\n await mkdir(dirname(skillPath), { recursive: true })\n await writeFile(skillPath, skillContent, \"utf8\")\n\n process.stdout.write(`Setup complete: wrote ${skillPath}\\n`)\n process.stdout.write(\"Try: ghx capabilities list\\n\")\n await writeTrackingEvent({\n track: parsed.track,\n scope: parsed.scope,\n mode: \"apply\",\n success: true,\n })\n return 0\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n process.stderr.write(`Setup failed: ${message}\\n`)\n return 1\n }\n}\n"],"mappings":"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","names":["parseArgs","usage","parseArgs","usage"]}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
declare const errorCodes: {
|
|
2
|
+
readonly Auth: "AUTH";
|
|
3
|
+
readonly NotFound: "NOT_FOUND";
|
|
4
|
+
readonly Validation: "VALIDATION";
|
|
5
|
+
readonly RateLimit: "RATE_LIMIT";
|
|
6
|
+
readonly Network: "NETWORK";
|
|
7
|
+
readonly Server: "SERVER";
|
|
8
|
+
readonly AdapterUnsupported: "ADAPTER_UNSUPPORTED";
|
|
9
|
+
readonly Unknown: "UNKNOWN";
|
|
10
|
+
};
|
|
11
|
+
type ErrorCode = (typeof errorCodes)[keyof typeof errorCodes];
|
|
12
|
+
|
|
13
|
+
declare const routeReasonCodes: readonly ["INPUT_VALIDATION", "OUTPUT_VALIDATION", "CARD_PREFERRED", "CARD_FALLBACK", "PREFLIGHT_FAILED", "ENV_CONSTRAINT", "CAPABILITY_LIMIT", "DEFAULT_POLICY"];
|
|
14
|
+
type RouteReasonCode = (typeof routeReasonCodes)[number];
|
|
3
15
|
|
|
4
16
|
type RouteSource = "cli" | "rest" | "graphql";
|
|
5
17
|
interface ResultError {
|
|
@@ -40,4 +52,4 @@ interface ResultEnvelope<TData = unknown> {
|
|
|
40
52
|
meta: ResultMeta;
|
|
41
53
|
}
|
|
42
54
|
|
|
43
|
-
export type { AttemptMeta, ResultEnvelope, ResultError, ResultMeta
|
|
55
|
+
export type { AttemptMeta as A, ResultEnvelope as R, RouteSource as a, RouteReasonCode as b, ResultError as c, ResultMeta as d };
|