@ghx-dev/core 0.1.0-beta.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -114
- package/dist/agent-interface/tools/explain-tool.js +2 -2
- package/dist/agent-interface/tools/list-capabilities-tool.js +2 -2
- package/dist/agent.js +3 -3
- package/dist/cards/check_run.annotations.list.yaml +35 -0
- package/dist/cards/issue.assignees.update.yaml +27 -0
- package/dist/cards/issue.blocked_by.add.yaml +23 -0
- package/dist/cards/issue.blocked_by.remove.yaml +24 -0
- package/dist/cards/issue.close.yaml +24 -0
- package/dist/cards/issue.comments.create.yaml +24 -0
- package/dist/cards/issue.comments.list.yaml +48 -0
- package/dist/cards/issue.create.yaml +28 -0
- package/dist/cards/issue.delete.yaml +23 -0
- package/dist/cards/issue.labels.update.yaml +27 -0
- package/dist/cards/issue.linked_prs.list.yaml +34 -0
- package/dist/cards/issue.list.yaml +48 -0
- package/dist/cards/issue.milestone.set.yaml +23 -0
- package/dist/cards/issue.parent.remove.yaml +22 -0
- package/dist/cards/issue.parent.set.yaml +23 -0
- package/dist/cards/issue.relations.get.yaml +54 -0
- package/dist/cards/issue.reopen.yaml +24 -0
- package/dist/cards/issue.update.yaml +27 -0
- package/dist/cards/issue.view.yaml +32 -0
- package/dist/cards/pr.assignees.update.yaml +38 -0
- package/dist/cards/pr.branch.update.yaml +23 -0
- package/dist/cards/pr.checks.get_failed.yaml +42 -0
- package/dist/cards/pr.checks.rerun_all.yaml +26 -0
- package/dist/cards/pr.checks.rerun_failed.yaml +26 -0
- package/dist/cards/pr.comment.reply.yaml +23 -0
- package/dist/cards/pr.comment.resolve.yaml +22 -0
- package/dist/cards/pr.comment.unresolve.yaml +22 -0
- package/dist/cards/pr.comments.list.yaml +98 -0
- package/dist/cards/pr.diff.list_files.yaml +43 -0
- package/dist/cards/pr.list.yaml +48 -0
- package/dist/cards/pr.merge.execute.yaml +29 -0
- package/dist/cards/pr.mergeability.view.yaml +27 -0
- package/dist/cards/pr.ready_for_review.set.yaml +24 -0
- package/dist/cards/pr.review.submit_approve.yaml +26 -0
- package/dist/cards/pr.review.submit_comment.yaml +26 -0
- package/dist/cards/pr.review.submit_request_changes.yaml +26 -0
- package/dist/cards/pr.reviewers.request.yaml +31 -0
- package/dist/cards/pr.reviews.list.yaml +47 -0
- package/dist/cards/pr.status.checks.yaml +42 -0
- package/dist/cards/pr.view.yaml +32 -0
- package/dist/cards/project_v2.fields.list.yaml +37 -0
- package/dist/cards/project_v2.item.add_issue.yaml +23 -0
- package/dist/cards/project_v2.item.field.update.yaml +29 -0
- package/dist/cards/project_v2.items.list.yaml +39 -0
- package/dist/cards/project_v2.org.get.yaml +26 -0
- package/dist/cards/project_v2.user.get.yaml +26 -0
- package/dist/cards/release.create_draft.yaml +36 -0
- package/dist/cards/release.get.yaml +30 -0
- package/dist/cards/release.list.yaml +44 -0
- package/dist/cards/release.publish_draft.yaml +36 -0
- package/dist/cards/release.update.yaml +38 -0
- package/dist/cards/repo.issue_types.list.yaml +40 -0
- package/dist/cards/repo.labels.list.yaml +41 -0
- package/dist/cards/repo.view.yaml +34 -0
- package/dist/cards/workflow.get.yaml +30 -0
- package/dist/cards/workflow.list.yaml +40 -0
- package/dist/cards/workflow_dispatch.run.yaml +29 -0
- package/dist/cards/workflow_job.logs.analyze.yaml +33 -0
- package/dist/cards/workflow_job.logs.get.yaml +24 -0
- package/dist/cards/workflow_run.artifacts.list.yaml +40 -0
- package/dist/cards/workflow_run.cancel.yaml +23 -0
- package/dist/cards/workflow_run.get.yaml +33 -0
- package/dist/cards/workflow_run.jobs.list.yaml +35 -0
- package/dist/cards/workflow_run.rerun_all.yaml +23 -0
- package/dist/cards/workflow_run.rerun_failed.yaml +23 -0
- package/dist/cards/workflow_runs.list.yaml +45 -0
- package/dist/{chunk-GPU4P7UG.js → chunk-22WWCK6A.js} +3 -3
- package/dist/{chunk-Q4RTT3DV.js → chunk-3MRJX72M.js} +5 -5
- package/dist/{chunk-MMG6CIKK.js → chunk-4PLVKNCF.js} +2 -2
- package/dist/{chunk-3RJCF42N.js → chunk-GMTG7X2L.js} +2 -2
- package/dist/{chunk-BJHVAFTN.js → chunk-HQ2VRCH7.js} +2 -2
- package/dist/{chunk-MT4U5DYD.js → chunk-JH6GM6XU.js} +47 -2
- package/dist/chunk-JH6GM6XU.js.map +1 -0
- package/dist/chunk-JLDU462R.js +1352 -0
- package/dist/chunk-JLDU462R.js.map +1 -0
- package/dist/{chunk-YNQNHCRS.js → chunk-MGNGSGMF.js} +8 -3
- package/dist/chunk-MGNGSGMF.js.map +1 -0
- package/dist/chunk-SA2D4A5U.js +1496 -0
- package/dist/chunk-SA2D4A5U.js.map +1 -0
- package/dist/{chunk-WYSY75U7.js → chunk-SD7U4BNA.js} +32 -14
- package/dist/chunk-SD7U4BNA.js.map +1 -0
- package/dist/{chunk-QX34GTH6.js → chunk-SJR2SACI.js} +2 -2
- package/dist/chunk-XNMM64WU.js +221 -0
- package/dist/chunk-XNMM64WU.js.map +1 -0
- package/dist/cli/commands/capabilities-explain.js +3 -3
- package/dist/cli/commands/capabilities-list.js +3 -3
- package/dist/cli/commands/run.js +14 -14
- package/dist/cli/commands/setup.js +1 -1
- package/dist/cli/index.js +21 -21
- package/dist/core/contracts/tasks/issue.assignees.update.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.assignees.update.js +8 -0
- package/dist/core/contracts/tasks/issue.assignees.update.js.map +1 -0
- package/dist/core/contracts/tasks/issue.blocked_by.add.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.blocked_by.add.js +8 -0
- package/dist/core/contracts/tasks/issue.blocked_by.add.js.map +1 -0
- package/dist/core/contracts/tasks/issue.blocked_by.remove.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.blocked_by.remove.js +8 -0
- package/dist/core/contracts/tasks/issue.blocked_by.remove.js.map +1 -0
- package/dist/core/contracts/tasks/issue.close.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.close.js +8 -0
- package/dist/core/contracts/tasks/issue.close.js.map +1 -0
- package/dist/core/contracts/tasks/issue.comments.create.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.comments.create.js +8 -0
- package/dist/core/contracts/tasks/issue.comments.create.js.map +1 -0
- package/dist/core/contracts/tasks/issue.create.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.create.js +8 -0
- package/dist/core/contracts/tasks/issue.create.js.map +1 -0
- package/dist/core/contracts/tasks/issue.delete.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.delete.js +8 -0
- package/dist/core/contracts/tasks/issue.delete.js.map +1 -0
- package/dist/core/contracts/tasks/issue.labels.update.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.labels.update.js +8 -0
- package/dist/core/contracts/tasks/issue.labels.update.js.map +1 -0
- package/dist/core/contracts/tasks/issue.linked_prs.list.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.linked_prs.list.js +8 -0
- package/dist/core/contracts/tasks/issue.linked_prs.list.js.map +1 -0
- package/dist/core/contracts/tasks/issue.milestone.set.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.milestone.set.js +8 -0
- package/dist/core/contracts/tasks/issue.milestone.set.js.map +1 -0
- package/dist/core/contracts/tasks/issue.parent.remove.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.parent.remove.js +8 -0
- package/dist/core/contracts/tasks/issue.parent.remove.js.map +1 -0
- package/dist/core/contracts/tasks/issue.parent.set.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.parent.set.js +8 -0
- package/dist/core/contracts/tasks/issue.parent.set.js.map +1 -0
- package/dist/core/contracts/tasks/issue.relations.get.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.relations.get.js +8 -0
- package/dist/core/contracts/tasks/issue.relations.get.js.map +1 -0
- package/dist/core/contracts/tasks/issue.reopen.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.reopen.js +8 -0
- package/dist/core/contracts/tasks/issue.reopen.js.map +1 -0
- package/dist/core/contracts/tasks/issue.update.d.ts +5 -0
- package/dist/core/contracts/tasks/issue.update.js +8 -0
- package/dist/core/contracts/tasks/issue.update.js.map +1 -0
- package/dist/core/contracts/tasks/pr.assignees.update.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.assignees.update.js +8 -0
- package/dist/core/contracts/tasks/pr.assignees.update.js.map +1 -0
- package/dist/core/contracts/tasks/pr.branch.update.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.branch.update.js +8 -0
- package/dist/core/contracts/tasks/pr.branch.update.js.map +1 -0
- package/dist/core/contracts/tasks/pr.checks.rerun_all.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.checks.rerun_all.js +8 -0
- package/dist/core/contracts/tasks/pr.checks.rerun_all.js.map +1 -0
- package/dist/core/contracts/tasks/pr.checks.rerun_failed.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.checks.rerun_failed.js +8 -0
- package/dist/core/contracts/tasks/pr.checks.rerun_failed.js.map +1 -0
- package/dist/core/contracts/tasks/pr.merge.execute.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.merge.execute.js +8 -0
- package/dist/core/contracts/tasks/pr.merge.execute.js.map +1 -0
- package/dist/core/contracts/tasks/pr.review.submit_approve.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.review.submit_approve.js +8 -0
- package/dist/core/contracts/tasks/pr.review.submit_approve.js.map +1 -0
- package/dist/core/contracts/tasks/pr.review.submit_comment.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.review.submit_comment.js +8 -0
- package/dist/core/contracts/tasks/pr.review.submit_comment.js.map +1 -0
- package/dist/core/contracts/tasks/pr.review.submit_request_changes.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.review.submit_request_changes.js +8 -0
- package/dist/core/contracts/tasks/pr.review.submit_request_changes.js.map +1 -0
- package/dist/core/contracts/tasks/pr.reviewers.request.d.ts +5 -0
- package/dist/core/contracts/tasks/pr.reviewers.request.js +8 -0
- package/dist/core/contracts/tasks/pr.reviewers.request.js.map +1 -0
- package/dist/core/contracts/tasks/project_v2.fields.list.d.ts +5 -0
- package/dist/core/contracts/tasks/project_v2.fields.list.js +8 -0
- package/dist/core/contracts/tasks/project_v2.fields.list.js.map +1 -0
- package/dist/core/contracts/tasks/project_v2.item.add_issue.d.ts +5 -0
- package/dist/core/contracts/tasks/project_v2.item.add_issue.js +8 -0
- package/dist/core/contracts/tasks/project_v2.item.add_issue.js.map +1 -0
- package/dist/core/contracts/tasks/project_v2.item.field.update.d.ts +5 -0
- package/dist/core/contracts/tasks/project_v2.item.field.update.js +8 -0
- package/dist/core/contracts/tasks/project_v2.item.field.update.js.map +1 -0
- package/dist/core/contracts/tasks/project_v2.items.list.d.ts +5 -0
- package/dist/core/contracts/tasks/project_v2.items.list.js +8 -0
- package/dist/core/contracts/tasks/project_v2.items.list.js.map +1 -0
- package/dist/core/contracts/tasks/project_v2.org.get.d.ts +5 -0
- package/dist/core/contracts/tasks/project_v2.org.get.js +8 -0
- package/dist/core/contracts/tasks/project_v2.org.get.js.map +1 -0
- package/dist/core/contracts/tasks/project_v2.user.get.d.ts +5 -0
- package/dist/core/contracts/tasks/project_v2.user.get.js +8 -0
- package/dist/core/contracts/tasks/project_v2.user.get.js.map +1 -0
- package/dist/core/contracts/tasks/release.create_draft.d.ts +5 -0
- package/dist/core/contracts/tasks/release.create_draft.js +8 -0
- package/dist/core/contracts/tasks/release.create_draft.js.map +1 -0
- package/dist/core/contracts/tasks/release.get.d.ts +5 -0
- package/dist/core/contracts/tasks/release.get.js +8 -0
- package/dist/core/contracts/tasks/release.get.js.map +1 -0
- package/dist/core/contracts/tasks/release.list.d.ts +5 -0
- package/dist/core/contracts/tasks/release.list.js +8 -0
- package/dist/core/contracts/tasks/release.list.js.map +1 -0
- package/dist/core/contracts/tasks/release.publish_draft.d.ts +5 -0
- package/dist/core/contracts/tasks/release.publish_draft.js +8 -0
- package/dist/core/contracts/tasks/release.publish_draft.js.map +1 -0
- package/dist/core/contracts/tasks/release.update.d.ts +5 -0
- package/dist/core/contracts/tasks/release.update.js +8 -0
- package/dist/core/contracts/tasks/release.update.js.map +1 -0
- package/dist/core/contracts/tasks/repo.issue_types.list.d.ts +5 -0
- package/dist/core/contracts/tasks/repo.issue_types.list.js +8 -0
- package/dist/core/contracts/tasks/repo.issue_types.list.js.map +1 -0
- package/dist/core/contracts/tasks/repo.labels.list.d.ts +5 -0
- package/dist/core/contracts/tasks/repo.labels.list.js +8 -0
- package/dist/core/contracts/tasks/repo.labels.list.js.map +1 -0
- package/dist/core/contracts/tasks/workflow.get.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow.get.js +8 -0
- package/dist/core/contracts/tasks/workflow.get.js.map +1 -0
- package/dist/core/contracts/tasks/workflow.list.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow.list.js +8 -0
- package/dist/core/contracts/tasks/workflow.list.js.map +1 -0
- package/dist/core/contracts/tasks/workflow_dispatch.run.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow_dispatch.run.js +8 -0
- package/dist/core/contracts/tasks/workflow_dispatch.run.js.map +1 -0
- package/dist/core/contracts/tasks/workflow_run.artifacts.list.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow_run.artifacts.list.js +8 -0
- package/dist/core/contracts/tasks/workflow_run.artifacts.list.js.map +1 -0
- package/dist/core/contracts/tasks/workflow_run.cancel.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow_run.cancel.js +8 -0
- package/dist/core/contracts/tasks/workflow_run.cancel.js.map +1 -0
- package/dist/core/contracts/tasks/workflow_run.get.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow_run.get.js +8 -0
- package/dist/core/contracts/tasks/workflow_run.get.js.map +1 -0
- package/dist/core/contracts/tasks/workflow_run.rerun_all.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow_run.rerun_all.js +8 -0
- package/dist/core/contracts/tasks/workflow_run.rerun_all.js.map +1 -0
- package/dist/core/contracts/tasks/workflow_run.rerun_failed.d.ts +5 -0
- package/dist/core/contracts/tasks/workflow_run.rerun_failed.js +8 -0
- package/dist/core/contracts/tasks/workflow_run.rerun_failed.js.map +1 -0
- package/dist/core/execute/execute.js +2 -2
- package/dist/core/execution/adapters/cli-adapter.js +4 -4
- package/dist/core/execution/adapters/cli-capability-adapter.d.ts +1 -1
- package/dist/core/execution/adapters/cli-capability-adapter.js +2 -2
- package/dist/core/execution/adapters/graphql-adapter.js +4 -4
- package/dist/core/execution/adapters/graphql-capability-adapter.d.ts +2 -2
- package/dist/core/execution/adapters/graphql-capability-adapter.js +2 -2
- package/dist/core/registry/cards/issue.assignees.update.yaml +27 -0
- package/dist/core/registry/cards/issue.blocked_by.add.yaml +23 -0
- package/dist/core/registry/cards/issue.blocked_by.remove.yaml +24 -0
- package/dist/core/registry/cards/issue.close.yaml +24 -0
- package/dist/core/registry/cards/issue.comments.create.yaml +24 -0
- package/dist/core/registry/cards/issue.create.yaml +28 -0
- package/dist/core/registry/cards/issue.delete.yaml +23 -0
- package/dist/core/registry/cards/issue.labels.update.yaml +27 -0
- package/dist/core/registry/cards/issue.linked_prs.list.yaml +34 -0
- package/dist/core/registry/cards/issue.milestone.set.yaml +23 -0
- package/dist/core/registry/cards/issue.parent.remove.yaml +22 -0
- package/dist/core/registry/cards/issue.parent.set.yaml +23 -0
- package/dist/core/registry/cards/issue.relations.get.yaml +54 -0
- package/dist/core/registry/cards/issue.reopen.yaml +24 -0
- package/dist/core/registry/cards/issue.update.yaml +27 -0
- package/dist/core/registry/cards/pr.assignees.update.yaml +38 -0
- package/dist/core/registry/cards/pr.branch.update.yaml +23 -0
- package/dist/core/registry/cards/pr.checks.rerun_all.yaml +26 -0
- package/dist/core/registry/cards/pr.checks.rerun_failed.yaml +26 -0
- package/dist/core/registry/cards/pr.merge.execute.yaml +29 -0
- package/dist/core/registry/cards/pr.review.submit_approve.yaml +26 -0
- package/dist/core/registry/cards/pr.review.submit_comment.yaml +26 -0
- package/dist/core/registry/cards/pr.review.submit_request_changes.yaml +26 -0
- package/dist/core/registry/cards/pr.reviewers.request.yaml +31 -0
- package/dist/core/registry/cards/project_v2.fields.list.yaml +37 -0
- package/dist/core/registry/cards/project_v2.item.add_issue.yaml +23 -0
- package/dist/core/registry/cards/project_v2.item.field.update.yaml +29 -0
- package/dist/core/registry/cards/project_v2.items.list.yaml +39 -0
- package/dist/core/registry/cards/project_v2.org.get.yaml +26 -0
- package/dist/core/registry/cards/project_v2.user.get.yaml +26 -0
- package/dist/core/registry/cards/release.create_draft.yaml +36 -0
- package/dist/core/registry/cards/release.get.yaml +30 -0
- package/dist/core/registry/cards/release.list.yaml +44 -0
- package/dist/core/registry/cards/release.publish_draft.yaml +36 -0
- package/dist/core/registry/cards/release.update.yaml +38 -0
- package/dist/core/registry/cards/repo.issue_types.list.yaml +40 -0
- package/dist/core/registry/cards/repo.labels.list.yaml +41 -0
- package/dist/core/registry/cards/workflow.get.yaml +30 -0
- package/dist/core/registry/cards/workflow.list.yaml +40 -0
- package/dist/core/registry/cards/workflow_dispatch.run.yaml +29 -0
- package/dist/core/registry/cards/workflow_run.artifacts.list.yaml +40 -0
- package/dist/core/registry/cards/workflow_run.cancel.yaml +23 -0
- package/dist/core/registry/cards/workflow_run.get.yaml +33 -0
- package/dist/core/registry/cards/workflow_run.rerun_all.yaml +23 -0
- package/dist/core/registry/cards/workflow_run.rerun_failed.yaml +23 -0
- package/dist/core/registry/index.js +1 -1
- package/dist/core/routing/capability-registry.js +1 -1
- package/dist/core/routing/engine.js +9 -9
- package/dist/gql/client.d.ts +132 -1
- package/dist/gql/client.js +6 -4
- package/dist/gql/operations/issue-assignees-update.generated.d.ts +33 -0
- package/dist/gql/operations/issue-assignees-update.generated.js +28 -0
- package/dist/gql/operations/issue-assignees-update.generated.js.map +1 -0
- package/dist/gql/operations/issue-blocked-by-add.generated.d.ts +30 -0
- package/dist/gql/operations/issue-blocked-by-add.generated.js +26 -0
- package/dist/gql/operations/issue-blocked-by-add.generated.js.map +1 -0
- package/dist/gql/operations/issue-blocked-by-remove.generated.d.ts +30 -0
- package/dist/gql/operations/issue-blocked-by-remove.generated.js +26 -0
- package/dist/gql/operations/issue-blocked-by-remove.generated.js.map +1 -0
- package/dist/gql/operations/issue-close.generated.d.ts +27 -0
- package/dist/gql/operations/issue-close.generated.js +25 -0
- package/dist/gql/operations/issue-close.generated.js.map +1 -0
- package/dist/gql/operations/issue-comment-create.generated.d.ts +31 -0
- package/dist/gql/operations/issue-comment-create.generated.js +27 -0
- package/dist/gql/operations/issue-comment-create.generated.js.map +1 -0
- package/dist/gql/operations/issue-create.generated.d.ts +31 -0
- package/dist/gql/operations/issue-create.generated.js +27 -0
- package/dist/gql/operations/issue-create.generated.js.map +1 -0
- package/dist/gql/operations/issue-delete.generated.d.ts +22 -0
- package/dist/gql/operations/issue-delete.generated.js +21 -0
- package/dist/gql/operations/issue-delete.generated.js.map +1 -0
- package/dist/gql/operations/issue-labels-update.generated.d.ts +33 -0
- package/dist/gql/operations/issue-labels-update.generated.js +28 -0
- package/dist/gql/operations/issue-labels-update.generated.js.map +1 -0
- package/dist/gql/operations/issue-linked-prs-list.generated.d.ts +132 -0
- package/dist/gql/operations/issue-linked-prs-list.generated.js +39 -0
- package/dist/gql/operations/issue-linked-prs-list.generated.js.map +1 -0
- package/dist/gql/operations/issue-milestone-set.generated.d.ts +30 -0
- package/dist/gql/operations/issue-milestone-set.generated.js +26 -0
- package/dist/gql/operations/issue-milestone-set.generated.js.map +1 -0
- package/dist/gql/operations/issue-parent-remove.generated.d.ts +30 -0
- package/dist/gql/operations/issue-parent-remove.generated.js +26 -0
- package/dist/gql/operations/issue-parent-remove.generated.js.map +1 -0
- package/dist/gql/operations/issue-parent-set.generated.d.ts +30 -0
- package/dist/gql/operations/issue-parent-set.generated.js +26 -0
- package/dist/gql/operations/issue-parent-set.generated.js.map +1 -0
- package/dist/gql/operations/issue-relations-get.generated.d.ts +49 -0
- package/dist/gql/operations/issue-relations-get.generated.js +40 -0
- package/dist/gql/operations/issue-relations-get.generated.js.map +1 -0
- package/dist/gql/operations/issue-reopen.generated.d.ts +27 -0
- package/dist/gql/operations/issue-reopen.generated.js +25 -0
- package/dist/gql/operations/issue-reopen.generated.js.map +1 -0
- package/dist/gql/operations/issue-update.generated.d.ts +31 -0
- package/dist/gql/operations/issue-update.generated.js +27 -0
- package/dist/gql/operations/issue-update.generated.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +15 -13
- package/package.json +42 -15
- package/dist/chunk-3RAT5BCB.js +0 -584
- package/dist/chunk-3RAT5BCB.js.map +0 -1
- package/dist/chunk-MT4U5DYD.js.map +0 -1
- package/dist/chunk-WYSY75U7.js.map +0 -1
- package/dist/chunk-YNNDBMNR.js +0 -113
- package/dist/chunk-YNNDBMNR.js.map +0 -1
- package/dist/chunk-YNQNHCRS.js.map +0 -1
- package/dist/chunk-YQDQX4BT.js +0 -624
- package/dist/chunk-YQDQX4BT.js.map +0 -1
- /package/dist/{chunk-GPU4P7UG.js.map → chunk-22WWCK6A.js.map} +0 -0
- /package/dist/{chunk-Q4RTT3DV.js.map → chunk-3MRJX72M.js.map} +0 -0
- /package/dist/{chunk-MMG6CIKK.js.map → chunk-4PLVKNCF.js.map} +0 -0
- /package/dist/{chunk-3RJCF42N.js.map → chunk-GMTG7X2L.js.map} +0 -0
- /package/dist/{chunk-BJHVAFTN.js.map → chunk-HQ2VRCH7.js.map} +0 -0
- /package/dist/{chunk-QX34GTH6.js.map → chunk-SJR2SACI.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/registry/index.ts"],"sourcesContent":["import { readdirSync, readFileSync } from \"node:fs\"\nimport { dirname, extname, join } from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\nimport Ajv from \"ajv\"\nimport { load as parseYaml } from \"js-yaml\"\n\nimport type { OperationCard } from \"./types.js\"\nimport { operationCardSchema } from \"./operation-card-schema.js\"\n\nconst ajv = new Ajv({ allErrors: true, strict: false })\nconst validateCard = ajv.compile(operationCardSchema)\n\nfunction cardDirectory(): string {\n const currentDir = dirname(fileURLToPath(import.meta.url))\n return join(currentDir, \"cards\")\n}\n\nfunction loadCardsFromYaml(): OperationCard[] {\n const directory = cardDirectory()\n const preferredOrder = [\n \"repo.view\",\n \"issue.view\",\n \"issue.list\",\n \"issue.comments.list\",\n \"pr.view\",\n \"pr.list\",\n \"pr.comments.list\",\n \"pr.reviews.list\",\n \"pr.diff.list_files\",\n \"pr.status.checks\",\n \"pr.checks.get_failed\",\n \"pr.mergeability.view\",\n \"pr.comment.reply\",\n \"pr.comment.resolve\",\n \"pr.comment.unresolve\",\n \"pr.ready_for_review.set\",\n \"check_run.annotations.list\",\n \"workflow_runs.list\",\n \"workflow_run.jobs.list\",\n \"workflow_job.logs.get\",\n \"workflow_job.logs.analyze\"\n ]\n const orderMap = new Map(preferredOrder.map((id, index) => [id, index]))\n\n const entries = readdirSync(directory)\n .filter((entry) => {\n const extension = extname(entry).toLowerCase()\n return extension === \".yaml\" || extension === \".yml\"\n })\n .sort((a, b) => {\n const capabilityA = a.replace(/\\.ya?ml$/i, \"\")\n const capabilityB = b.replace(/\\.ya?ml$/i, \"\")\n const orderA = orderMap.get(capabilityA) ?? Number.MAX_SAFE_INTEGER\n const orderB = orderMap.get(capabilityB) ?? Number.MAX_SAFE_INTEGER\n\n if (orderA !== orderB) {\n return orderA - orderB\n }\n\n return a.localeCompare(b)\n })\n\n return entries.map((entry): OperationCard => {\n const filePath = join(directory, entry)\n const raw = readFileSync(filePath, \"utf8\")\n const parsed = parseYaml(raw)\n const validation = validateOperationCard(parsed)\n if (!validation.ok) {\n throw new Error(`Invalid operation card '${entry}': ${validation.error}`)\n }\n\n return parsed as OperationCard\n })\n}\n\nexport function validateOperationCard(card: unknown): { ok: true } | { ok: false; error: string } {\n const valid = validateCard(card)\n if (!valid) {\n const message = validateCard.errors?.[0]?.message ?? \"Operation card schema validation failed\"\n return { ok: false, error: message }\n }\n\n return { ok: true }\n}\n\nconst operationCards = loadCardsFromYaml()\n\nexport function listOperationCards(): OperationCard[] {\n return [...operationCards]\n}\n\nexport function getOperationCard(capabilityId: string): OperationCard | undefined {\n return operationCards.find((card) => card.capability_id === capabilityId)\n}\n"],"mappings":";;;;;AAAA,SAAS,aAAa,oBAAoB;AAC1C,SAAS,SAAS,SAAS,YAAY;AACvC,SAAS,qBAAqB;AAE9B,OAAO,SAAS;AAChB,SAAS,QAAQ,iBAAiB;AAKlC,IAAM,MAAM,IAAI,IAAI,EAAE,WAAW,MAAM,QAAQ,MAAM,CAAC;AACtD,IAAM,eAAe,IAAI,QAAQ,mBAAmB;AAEpD,SAAS,gBAAwB;AAC/B,QAAM,aAAa,QAAQ,cAAc,YAAY,GAAG,CAAC;AACzD,SAAO,KAAK,YAAY,OAAO;AACjC;AAEA,SAAS,oBAAqC;AAC5C,QAAM,YAAY,cAAc;AAChC,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,WAAW,IAAI,IAAI,eAAe,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC;AAEvE,QAAM,UAAU,YAAY,SAAS,EAClC,OAAO,CAAC,UAAU;AACjB,UAAM,YAAY,QAAQ,KAAK,EAAE,YAAY;AAC7C,WAAO,cAAc,WAAW,cAAc;AAAA,EAChD,CAAC,EACA,KAAK,CAAC,GAAG,MAAM;AACd,UAAM,cAAc,EAAE,QAAQ,aAAa,EAAE;AAC7C,UAAM,cAAc,EAAE,QAAQ,aAAa,EAAE;AAC7C,UAAM,SAAS,SAAS,IAAI,WAAW,KAAK,OAAO;AACnD,UAAM,SAAS,SAAS,IAAI,WAAW,KAAK,OAAO;AAEnD,QAAI,WAAW,QAAQ;AACrB,aAAO,SAAS;AAAA,IAClB;AAEA,WAAO,EAAE,cAAc,CAAC;AAAA,EAC1B,CAAC;AAEH,SAAO,QAAQ,IAAI,CAAC,UAAyB;AAC3C,UAAM,WAAW,KAAK,WAAW,KAAK;AACtC,UAAM,MAAM,aAAa,UAAU,MAAM;AACzC,UAAM,SAAS,UAAU,GAAG;AAC5B,UAAM,aAAa,sBAAsB,MAAM;AAC/C,QAAI,CAAC,WAAW,IAAI;AAClB,YAAM,IAAI,MAAM,2BAA2B,KAAK,MAAM,WAAW,KAAK,EAAE;AAAA,IAC1E;AAEA,WAAO;AAAA,EACT,CAAC;AACH;AAEO,SAAS,sBAAsB,MAA4D;AAChG,QAAM,QAAQ,aAAa,IAAI;AAC/B,MAAI,CAAC,OAAO;AACV,UAAM,UAAU,aAAa,SAAS,CAAC,GAAG,WAAW;AACrD,WAAO,EAAE,IAAI,OAAO,OAAO,QAAQ;AAAA,EACrC;AAEA,SAAO,EAAE,IAAI,KAAK;AACpB;AAEA,IAAM,iBAAiB,kBAAkB;AAElC,SAAS,qBAAsC;AACpD,SAAO,CAAC,GAAG,cAAc;AAC3B;AAEO,SAAS,iBAAiB,cAAiD;AAChF,SAAO,eAAe,KAAK,CAAC,SAAS,KAAK,kBAAkB,YAAY;AAC1E;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/routing/engine.ts"],"sourcesContent":["import { routePreferenceOrder } from \"./policy.js\"\nimport type { ResultEnvelope, RouteSource } from \"../contracts/envelope.js\"\nimport type { TaskRequest } from \"../contracts/task.js\"\nimport { errorCodes } from \"../errors/codes.js\"\nimport type { GithubClient } from \"../../gql/client.js\"\nimport type { RouteReasonCode } from \"./reason-codes.js\"\nimport { preflightCheck } from \"../execution/preflight.js\"\nimport { normalizeError } from \"../execution/normalizer.js\"\nimport { execute } from \"../execute/execute.js\"\nimport { getOperationCard } from \"../registry/index.js\"\nimport { runGraphqlCapability, type GraphqlCapabilityId } from \"../execution/adapters/graphql-capability-adapter.js\"\nimport { runCliCapability, type CliCapabilityId, type CliCommandRunner } from \"../execution/adapters/cli-capability-adapter.js\"\nimport { createSafeCliCommandRunner } from \"../execution/cli/safe-runner.js\"\n\nexport function chooseRoute(): (typeof routePreferenceOrder)[number] {\n return routePreferenceOrder[0]\n}\n\ntype ExecutionDeps = {\n githubClient: Pick<\n GithubClient,\n \"fetchRepoView\" | \"fetchIssueCommentsList\" | \"fetchIssueList\" | \"fetchIssueView\" | \"fetchPrList\" | \"fetchPrView\" | \"fetchPrCommentsList\" | \"fetchPrReviewsList\" | \"fetchPrDiffListFiles\" | \"replyToReviewThread\" | \"resolveReviewThread\" | \"unresolveReviewThread\"\n >\n githubToken?: string | null\n cliRunner?: CliCommandRunner\n ghCliAvailable?: boolean\n ghAuthenticated?: boolean\n reason?: RouteReasonCode\n}\n\nconst DEFAULT_REASON: RouteReasonCode = \"DEFAULT_POLICY\"\n\ntype CliEnvironmentState = {\n ghCliAvailable: boolean\n ghAuthenticated: boolean\n}\n\nconst CLI_ENV_CACHE_TTL_MS = 30_000\nconst cliEnvironmentCache = new WeakMap<CliCommandRunner, { value: CliEnvironmentState; expiresAt: number }>()\nconst cliEnvironmentInFlight = new WeakMap<CliCommandRunner, Promise<CliEnvironmentState>>()\nconst defaultCliRunner = createSafeCliCommandRunner()\n\nasync function detectCliEnvironment(runner: CliCommandRunner): Promise<CliEnvironmentState> {\n try {\n const version = await runner.run(\"gh\", [\"--version\"], 1_500)\n if (version.exitCode !== 0) {\n return {\n ghCliAvailable: false,\n ghAuthenticated: false\n }\n }\n\n const auth = await runner.run(\"gh\", [\"auth\", \"status\"], 2_500)\n return {\n ghCliAvailable: true,\n ghAuthenticated: auth.exitCode === 0\n }\n } catch {\n return {\n ghCliAvailable: false,\n ghAuthenticated: false\n }\n }\n}\n\nasync function detectCliEnvironmentCached(runner: CliCommandRunner): Promise<CliEnvironmentState> {\n const now = Date.now()\n const cached = cliEnvironmentCache.get(runner)\n if (cached && cached.expiresAt > now) {\n return cached.value\n }\n\n const inFlight = cliEnvironmentInFlight.get(runner)\n if (inFlight) {\n return inFlight\n }\n\n const probePromise = detectCliEnvironment(runner)\n .then((value) => {\n cliEnvironmentCache.set(runner, {\n value,\n expiresAt: Date.now() + CLI_ENV_CACHE_TTL_MS\n })\n cliEnvironmentInFlight.delete(runner)\n return value\n })\n .catch((error) => {\n cliEnvironmentInFlight.delete(runner)\n throw error\n })\n\n cliEnvironmentInFlight.set(runner, probePromise)\n return probePromise\n}\n\nexport async function executeTask(\n request: TaskRequest,\n deps: ExecutionDeps\n): Promise<ResultEnvelope> {\n const reason = deps.reason ?? DEFAULT_REASON\n const card = getOperationCard(request.task)\n if (!card) {\n return normalizeError(\n {\n code: errorCodes.Validation,\n message: `Unsupported task: ${request.task}`,\n retryable: false\n },\n chooseRoute(),\n { capabilityId: request.task, reason }\n )\n }\n\n const cliRunner = deps.cliRunner ?? defaultCliRunner\n\n return execute({\n card,\n params: request.input as Record<string, unknown>,\n routingContext: {\n ghCliAvailable: deps.ghCliAvailable,\n ghAuthenticated: deps.ghAuthenticated,\n githubTokenPresent: Boolean(deps.githubToken)\n },\n retry: {\n maxAttemptsPerRoute: 2\n },\n preflight: async (route: RouteSource) => {\n const preflightInput: Parameters<typeof preflightCheck>[0] = { route }\n if (deps.githubToken !== undefined) {\n preflightInput.githubToken = deps.githubToken\n }\n\n if (route === \"cli\") {\n if (deps.ghCliAvailable !== undefined) {\n preflightInput.ghCliAvailable = deps.ghCliAvailable\n }\n\n if (deps.ghAuthenticated !== undefined) {\n preflightInput.ghAuthenticated = deps.ghAuthenticated\n }\n\n if (preflightInput.ghCliAvailable === undefined || preflightInput.ghAuthenticated === undefined) {\n const detected = await detectCliEnvironmentCached(cliRunner)\n\n if (preflightInput.ghCliAvailable === undefined) {\n preflightInput.ghCliAvailable = detected.ghCliAvailable\n }\n\n if (preflightInput.ghAuthenticated === undefined) {\n preflightInput.ghAuthenticated = detected.ghAuthenticated\n }\n }\n }\n\n return preflightCheck(preflightInput)\n },\n routes: {\n graphql: async () =>\n runGraphqlCapability(deps.githubClient, request.task as GraphqlCapabilityId, request.input as Record<string, unknown>),\n cli: async () => {\n return runCliCapability(cliRunner, request.task as CliCapabilityId, request.input as Record<string, unknown>, card)\n },\n rest: async () =>\n normalizeError(\n {\n code: errorCodes.AdapterUnsupported,\n message: `Route 'rest' is not implemented for task '${request.task}'`,\n retryable: false,\n details: { route: \"rest\", task: request.task }\n },\n \"rest\",\n { capabilityId: request.task, reason }\n )\n }\n })\n}\n"],"mappings":"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","names":[]}
|
package/dist/chunk-YNNDBMNR.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
normalizeError,
|
|
3
|
-
normalizeResult
|
|
4
|
-
} from "./chunk-QEAMC4IJ.js";
|
|
5
|
-
import {
|
|
6
|
-
mapErrorToCode
|
|
7
|
-
} from "./chunk-B6RLMKS4.js";
|
|
8
|
-
import {
|
|
9
|
-
isRetryableErrorCode
|
|
10
|
-
} from "./chunk-573MDG3I.js";
|
|
11
|
-
import {
|
|
12
|
-
errorCodes
|
|
13
|
-
} from "./chunk-UOJWOHRM.js";
|
|
14
|
-
|
|
15
|
-
// src/core/execution/adapters/graphql-capability-adapter.ts
|
|
16
|
-
var DEFAULT_LIST_FIRST = 30;
|
|
17
|
-
function withDefaultFirst(params) {
|
|
18
|
-
if (params.first === void 0) {
|
|
19
|
-
return {
|
|
20
|
-
...params,
|
|
21
|
-
first: DEFAULT_LIST_FIRST
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
return params;
|
|
25
|
-
}
|
|
26
|
-
function requireNonEmptyString(params, field, capabilityId) {
|
|
27
|
-
const value = params[field];
|
|
28
|
-
if (typeof value !== "string" || value.trim().length === 0) {
|
|
29
|
-
throw new Error(`Missing or invalid ${field} for ${capabilityId}`);
|
|
30
|
-
}
|
|
31
|
-
return value;
|
|
32
|
-
}
|
|
33
|
-
async function runGraphqlCapability(client, capabilityId, params) {
|
|
34
|
-
try {
|
|
35
|
-
if (capabilityId === "repo.view") {
|
|
36
|
-
const data = await client.fetchRepoView(params);
|
|
37
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
38
|
-
}
|
|
39
|
-
if (capabilityId === "issue.view") {
|
|
40
|
-
const data = await client.fetchIssueView(params);
|
|
41
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
42
|
-
}
|
|
43
|
-
if (capabilityId === "issue.list") {
|
|
44
|
-
const data = await client.fetchIssueList(withDefaultFirst(params));
|
|
45
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
46
|
-
}
|
|
47
|
-
if (capabilityId === "issue.comments.list") {
|
|
48
|
-
const data = await client.fetchIssueCommentsList(params);
|
|
49
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
50
|
-
}
|
|
51
|
-
if (capabilityId === "pr.view") {
|
|
52
|
-
const data = await client.fetchPrView(params);
|
|
53
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
54
|
-
}
|
|
55
|
-
if (capabilityId === "pr.list") {
|
|
56
|
-
const data = await client.fetchPrList(withDefaultFirst(params));
|
|
57
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
58
|
-
}
|
|
59
|
-
if (capabilityId === "pr.comments.list") {
|
|
60
|
-
const data = await client.fetchPrCommentsList(withDefaultFirst(params));
|
|
61
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
62
|
-
}
|
|
63
|
-
if (capabilityId === "pr.reviews.list") {
|
|
64
|
-
const data = await client.fetchPrReviewsList(withDefaultFirst(params));
|
|
65
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
66
|
-
}
|
|
67
|
-
if (capabilityId === "pr.diff.list_files") {
|
|
68
|
-
const data = await client.fetchPrDiffListFiles(withDefaultFirst(params));
|
|
69
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
70
|
-
}
|
|
71
|
-
if (capabilityId === "pr.comment.reply") {
|
|
72
|
-
const threadId = requireNonEmptyString(params, "threadId", capabilityId);
|
|
73
|
-
const body = requireNonEmptyString(params, "body", capabilityId);
|
|
74
|
-
const data = await client.replyToReviewThread({ threadId, body });
|
|
75
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
76
|
-
}
|
|
77
|
-
if (capabilityId === "pr.comment.resolve") {
|
|
78
|
-
const threadId = requireNonEmptyString(params, "threadId", capabilityId);
|
|
79
|
-
const data = await client.resolveReviewThread({ threadId });
|
|
80
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
81
|
-
}
|
|
82
|
-
if (capabilityId === "pr.comment.unresolve") {
|
|
83
|
-
const threadId = requireNonEmptyString(params, "threadId", capabilityId);
|
|
84
|
-
const data = await client.unresolveReviewThread({ threadId });
|
|
85
|
-
return normalizeResult(data, "graphql", { capabilityId, reason: "CARD_PREFERRED" });
|
|
86
|
-
}
|
|
87
|
-
return normalizeError(
|
|
88
|
-
{
|
|
89
|
-
code: errorCodes.Validation,
|
|
90
|
-
message: `Unsupported GraphQL capability: ${capabilityId}`,
|
|
91
|
-
retryable: false
|
|
92
|
-
},
|
|
93
|
-
"graphql",
|
|
94
|
-
{ capabilityId, reason: "CAPABILITY_LIMIT" }
|
|
95
|
-
);
|
|
96
|
-
} catch (error) {
|
|
97
|
-
const code = mapErrorToCode(error);
|
|
98
|
-
return normalizeError(
|
|
99
|
-
{
|
|
100
|
-
code,
|
|
101
|
-
message: error instanceof Error ? error.message : String(error),
|
|
102
|
-
retryable: isRetryableErrorCode(code)
|
|
103
|
-
},
|
|
104
|
-
"graphql",
|
|
105
|
-
{ capabilityId, reason: "CARD_PREFERRED" }
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export {
|
|
111
|
-
runGraphqlCapability
|
|
112
|
-
};
|
|
113
|
-
//# sourceMappingURL=chunk-YNNDBMNR.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/execution/adapters/graphql-capability-adapter.ts"],"sourcesContent":["import type {\n GithubClient,\n IssueCommentsListInput,\n IssueListInput,\n IssueViewInput,\n PrCommentsListInput,\n PrDiffListFilesInput,\n PrListInput,\n PrReviewsListInput,\n PrViewInput,\n RepoViewInput\n} from \"../../../gql/client.js\"\nimport { errorCodes } from \"../../errors/codes.js\"\nimport { mapErrorToCode } from \"../../errors/map-error.js\"\nimport { isRetryableErrorCode } from \"../../errors/retryability.js\"\nimport { normalizeError, normalizeResult } from \"../normalizer.js\"\nimport type { ResultEnvelope } from \"../../contracts/envelope.js\"\n\nexport type GraphqlCapabilityId =\n | \"repo.view\"\n | \"issue.view\"\n | \"issue.list\"\n | \"issue.comments.list\"\n | \"pr.view\"\n | \"pr.list\"\n | \"pr.comments.list\"\n | \"pr.reviews.list\"\n | \"pr.diff.list_files\"\n | \"pr.comment.reply\"\n | \"pr.comment.resolve\"\n | \"pr.comment.unresolve\"\n\nconst DEFAULT_LIST_FIRST = 30\n\nfunction withDefaultFirst(params: Record<string, unknown>): Record<string, unknown> {\n if (params.first === undefined) {\n return {\n ...params,\n first: DEFAULT_LIST_FIRST\n }\n }\n\n return params\n}\n\nfunction requireNonEmptyString(params: Record<string, unknown>, field: string, capabilityId: GraphqlCapabilityId): string {\n const value = params[field]\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new Error(`Missing or invalid ${field} for ${capabilityId}`)\n }\n\n return value\n}\n\nexport async function runGraphqlCapability(\n client: Pick<\n GithubClient,\n \"fetchRepoView\" | \"fetchIssueView\" | \"fetchIssueList\" | \"fetchIssueCommentsList\" | \"fetchPrView\" | \"fetchPrList\"\n | \"fetchPrCommentsList\" | \"fetchPrReviewsList\" | \"fetchPrDiffListFiles\" | \"replyToReviewThread\"\n | \"resolveReviewThread\" | \"unresolveReviewThread\"\n >,\n capabilityId: GraphqlCapabilityId,\n params: Record<string, unknown>\n): Promise<ResultEnvelope> {\n try {\n if (capabilityId === \"repo.view\") {\n const data = await client.fetchRepoView(params as RepoViewInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.view\") {\n const data = await client.fetchIssueView(params as IssueViewInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.list\") {\n const data = await client.fetchIssueList(withDefaultFirst(params) as IssueListInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.comments.list\") {\n const data = await client.fetchIssueCommentsList(params as IssueCommentsListInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.view\") {\n const data = await client.fetchPrView(params as PrViewInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.list\") {\n const data = await client.fetchPrList(withDefaultFirst(params) as PrListInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.comments.list\") {\n const data = await client.fetchPrCommentsList(withDefaultFirst(params) as PrCommentsListInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.reviews.list\") {\n const data = await client.fetchPrReviewsList(withDefaultFirst(params) as PrReviewsListInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.diff.list_files\") {\n const data = await client.fetchPrDiffListFiles(withDefaultFirst(params) as PrDiffListFilesInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.comment.reply\") {\n const threadId = requireNonEmptyString(params, \"threadId\", capabilityId)\n const body = requireNonEmptyString(params, \"body\", capabilityId)\n const data = await client.replyToReviewThread({ threadId, body })\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.comment.resolve\") {\n const threadId = requireNonEmptyString(params, \"threadId\", capabilityId)\n const data = await client.resolveReviewThread({ threadId })\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.comment.unresolve\") {\n const threadId = requireNonEmptyString(params, \"threadId\", capabilityId)\n const data = await client.unresolveReviewThread({ threadId })\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n return normalizeError(\n {\n code: errorCodes.Validation,\n message: `Unsupported GraphQL capability: ${capabilityId}`,\n retryable: false\n },\n \"graphql\",\n { capabilityId, reason: \"CAPABILITY_LIMIT\" }\n )\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code)\n },\n \"graphql\",\n { capabilityId, reason: \"CARD_PREFERRED\" }\n )\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/setup.ts"],"sourcesContent":["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\"\n\nimport Ajv from \"ajv\"\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\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 SKILL_CONTENT = `# ghx skill\n\nUse ghx capabilities to execute GitHub operations through a stable capability interface.\n\nQuick commands:\n- ghx capabilities list\n- ghx capabilities explain <capability_id>\n- ghx run <capability_id> --input '<json>'\n\nExample:\n- ghx run repo.view --input '{\"owner\":\"aryeko\",\"name\":\"ghx\"}'\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\", \"skill\", \"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 (typeof error === \"object\" && error !== null && \"code\" in error) {\n if ((error as { code?: string }).code === \"ENOENT\") {\n return false\n }\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 (typeof error === \"object\" && error !== null && \"code\" in error) {\n if ((error as { code?: string }).code === \"ENOENT\") {\n return false\n }\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({ track: parsed.track, scope: parsed.scope, mode: \"apply\", success: false })\n return 1\n }\n }\n\n await mkdir(dirname(skillPath), { recursive: true })\n await writeFile(skillPath, SKILL_CONTENT, \"utf8\")\n\n process.stdout.write(`Setup complete: wrote ${skillPath}\\n`)\n process.stdout.write(\"Try: ghx capabilities list\\n\")\n await writeTrackingEvent({ track: parsed.track, scope: parsed.scope, mode: \"apply\", success: true })\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":[]}
|