@ghx-dev/core 0.1.2 → 0.2.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/.claude-plugin/plugin.json +21 -0
- package/README.md +12 -15
- package/dist/cards/issue.assignees.add.yaml +50 -0
- package/dist/cards/issue.assignees.remove.yaml +50 -0
- package/dist/cards/issue.assignees.set.yaml +47 -0
- package/dist/cards/issue.close.yaml +16 -2
- package/dist/cards/issue.comments.create.yaml +16 -2
- package/dist/cards/issue.create.yaml +11 -0
- package/dist/cards/issue.delete.yaml +16 -2
- package/dist/cards/issue.labels.add.yaml +48 -0
- package/dist/cards/issue.labels.remove.yaml +50 -0
- package/dist/cards/issue.labels.set.yaml +47 -0
- package/dist/cards/issue.milestone.clear.yaml +40 -0
- package/dist/cards/issue.milestone.set.yaml +23 -4
- package/dist/{core/registry/cards/issue.blocked_by.add.yaml → cards/issue.relations.blocked_by.add.yaml} +3 -2
- package/dist/cards/{issue.blocked_by.remove.yaml → issue.relations.blocked_by.remove.yaml} +1 -1
- package/dist/cards/{issue.parent.remove.yaml → issue.relations.parent.remove.yaml} +11 -1
- package/dist/{core/registry/cards/issue.parent.set.yaml → cards/issue.relations.parent.set.yaml} +3 -2
- package/dist/{core/registry/cards/issue.linked_prs.list.yaml → cards/issue.relations.prs.list.yaml} +1 -1
- package/dist/cards/{issue.relations.get.yaml → issue.relations.view.yaml} +1 -1
- package/dist/cards/issue.reopen.yaml +16 -2
- package/dist/cards/issue.update.yaml +16 -2
- package/dist/cards/issue.view.yaml +7 -5
- package/dist/cards/{pr.review.submit_approve.yaml → pr.assignees.add.yaml} +12 -9
- package/dist/cards/pr.assignees.remove.yaml +29 -0
- package/dist/{core/registry/cards/pr.status.checks.yaml → cards/pr.checks.list.yaml} +15 -2
- package/dist/{core/registry/cards/pr.checks.rerun_all.yaml → cards/pr.checks.rerun.all.yaml} +2 -4
- package/dist/{core/registry/cards/pr.checks.rerun_failed.yaml → cards/pr.checks.rerun.failed.yaml} +3 -5
- package/dist/cards/pr.create.yaml +30 -0
- package/dist/cards/{pr.diff.list_files.yaml → pr.diff.files.yaml} +1 -1
- package/dist/cards/{pr.ready_for_review.set.yaml → pr.diff.view.yaml} +6 -8
- package/dist/{core/registry/cards/pr.mergeability.view.yaml → cards/pr.merge.status.yaml} +6 -3
- package/dist/{core/registry/cards/pr.merge.execute.yaml → cards/pr.merge.yaml} +1 -1
- package/dist/cards/pr.reviews.list.yaml +1 -1
- package/dist/cards/{pr.reviewers.request.yaml → pr.reviews.request.yaml} +1 -1
- package/dist/cards/pr.reviews.submit.yaml +67 -0
- package/dist/cards/{pr.comments.list.yaml → pr.threads.list.yaml} +2 -2
- package/dist/cards/{pr.comment.reply.yaml → pr.threads.reply.yaml} +4 -2
- package/dist/cards/{pr.comment.resolve.yaml → pr.threads.resolve.yaml} +1 -1
- package/dist/cards/{pr.comment.unresolve.yaml → pr.threads.unresolve.yaml} +1 -1
- package/dist/cards/pr.update.yaml +29 -0
- package/dist/cards/pr.view.yaml +7 -5
- package/dist/{core/registry/cards/project_v2.item.field.update.yaml → cards/project_v2.items.field.update.yaml} +1 -1
- package/dist/{core/registry/cards/project_v2.item.add_issue.yaml → cards/project_v2.items.issue.add.yaml} +1 -1
- package/dist/cards/project_v2.items.issue.remove.yaml +23 -0
- package/dist/{core/registry/cards/project_v2.org.get.yaml → cards/project_v2.org.view.yaml} +1 -1
- package/dist/cards/{project_v2.user.get.yaml → project_v2.user.view.yaml} +1 -1
- package/dist/{core/registry/cards/release.create_draft.yaml → cards/release.create.yaml} +1 -1
- package/dist/cards/{release.publish_draft.yaml → release.publish.yaml} +1 -1
- package/dist/{core/registry/cards/release.get.yaml → cards/release.view.yaml} +1 -1
- package/dist/cards/repo.view.yaml +2 -4
- package/dist/cards/{workflow_dispatch.run.yaml → workflow.dispatch.yaml} +1 -1
- package/dist/cards/{workflow_job.logs.get.yaml → workflow.job.logs.raw.yaml} +2 -2
- package/dist/{core/registry/cards/workflow_job.logs.analyze.yaml → cards/workflow.job.logs.view.yaml} +1 -1
- package/dist/{core/registry/cards/workflow_run.artifacts.list.yaml → cards/workflow.run.artifacts.list.yaml} +1 -1
- package/dist/cards/{workflow_run.cancel.yaml → workflow.run.cancel.yaml} +1 -1
- package/dist/cards/{workflow_run.rerun_all.yaml → workflow.run.rerun.all.yaml} +3 -3
- package/dist/{core/registry/cards/workflow_run.rerun_failed.yaml → cards/workflow.run.rerun.failed.yaml} +3 -3
- package/dist/{core/registry/cards/workflow_run.get.yaml → cards/workflow.run.view.yaml} +19 -4
- package/dist/cards/{workflow_runs.list.yaml → workflow.runs.list.yaml} +1 -1
- package/dist/cards/{workflow.get.yaml → workflow.view.yaml} +2 -2
- package/dist/chunk-3DU2WHXF.js +15 -0
- package/dist/chunk-3DU2WHXF.js.map +1 -0
- package/dist/chunk-3P3KHWFU.js +5779 -0
- package/dist/chunk-3P3KHWFU.js.map +1 -0
- package/dist/chunk-BIWBJA2F.js +228 -0
- package/dist/chunk-BIWBJA2F.js.map +1 -0
- package/dist/chunk-HEHONZTO.js +121 -0
- package/dist/chunk-HEHONZTO.js.map +1 -0
- package/dist/chunk-Q7RCIK2C.js +773 -0
- package/dist/chunk-Q7RCIK2C.js.map +1 -0
- package/dist/chunk-R3CBGJZX.js +12 -0
- package/dist/chunk-R3CBGJZX.js.map +1 -0
- package/dist/chunk-TDABI6C7.js +167 -0
- package/dist/chunk-TDABI6C7.js.map +1 -0
- package/dist/chunk-TPQYVCAS.js +15 -0
- package/dist/chunk-TPQYVCAS.js.map +1 -0
- package/dist/cli/index.js +202 -21
- package/dist/cli/index.js.map +1 -1
- package/dist/core/registry/cards/issue.assignees.add.yaml +50 -0
- package/dist/core/registry/cards/issue.assignees.remove.yaml +50 -0
- package/dist/core/registry/cards/issue.assignees.set.yaml +47 -0
- package/dist/core/registry/cards/issue.close.yaml +16 -2
- package/dist/core/registry/cards/issue.comments.create.yaml +16 -2
- package/dist/core/registry/cards/issue.create.yaml +11 -0
- package/dist/core/registry/cards/issue.delete.yaml +16 -2
- package/dist/core/registry/cards/issue.labels.add.yaml +48 -0
- package/dist/core/registry/cards/issue.labels.remove.yaml +50 -0
- package/dist/core/registry/cards/issue.labels.set.yaml +47 -0
- package/dist/core/registry/cards/issue.milestone.clear.yaml +40 -0
- package/dist/core/registry/cards/issue.milestone.set.yaml +23 -4
- package/dist/{cards/issue.blocked_by.add.yaml → core/registry/cards/issue.relations.blocked_by.add.yaml} +3 -2
- package/dist/core/registry/cards/{issue.blocked_by.remove.yaml → issue.relations.blocked_by.remove.yaml} +1 -1
- package/dist/core/registry/cards/{issue.parent.remove.yaml → issue.relations.parent.remove.yaml} +11 -1
- package/dist/{cards/issue.parent.set.yaml → core/registry/cards/issue.relations.parent.set.yaml} +3 -2
- package/dist/{cards/issue.linked_prs.list.yaml → core/registry/cards/issue.relations.prs.list.yaml} +1 -1
- package/dist/core/registry/cards/{issue.relations.get.yaml → issue.relations.view.yaml} +1 -1
- package/dist/core/registry/cards/issue.reopen.yaml +16 -2
- package/dist/core/registry/cards/issue.update.yaml +16 -2
- package/dist/core/registry/cards/issue.view.yaml +7 -5
- package/dist/core/registry/cards/pr.assignees.add.yaml +29 -0
- package/dist/core/registry/cards/pr.assignees.remove.yaml +29 -0
- package/dist/{cards/pr.status.checks.yaml → core/registry/cards/pr.checks.list.yaml} +15 -2
- package/dist/{cards/pr.checks.rerun_all.yaml → core/registry/cards/pr.checks.rerun.all.yaml} +2 -4
- package/dist/{cards/pr.checks.rerun_failed.yaml → core/registry/cards/pr.checks.rerun.failed.yaml} +3 -5
- package/dist/core/registry/cards/pr.create.yaml +30 -0
- package/dist/core/registry/cards/{pr.diff.list_files.yaml → pr.diff.files.yaml} +1 -1
- package/dist/core/registry/cards/{pr.ready_for_review.set.yaml → pr.diff.view.yaml} +6 -8
- package/dist/{cards/pr.mergeability.view.yaml → core/registry/cards/pr.merge.status.yaml} +6 -3
- package/dist/{cards/pr.merge.execute.yaml → core/registry/cards/pr.merge.yaml} +1 -1
- package/dist/core/registry/cards/pr.reviews.list.yaml +1 -1
- package/dist/core/registry/cards/{pr.reviewers.request.yaml → pr.reviews.request.yaml} +1 -1
- package/dist/core/registry/cards/pr.reviews.submit.yaml +67 -0
- package/dist/core/registry/cards/{pr.comments.list.yaml → pr.threads.list.yaml} +2 -2
- package/dist/core/registry/cards/{pr.comment.reply.yaml → pr.threads.reply.yaml} +4 -2
- package/dist/core/registry/cards/{pr.comment.resolve.yaml → pr.threads.resolve.yaml} +1 -1
- package/dist/core/registry/cards/{pr.comment.unresolve.yaml → pr.threads.unresolve.yaml} +1 -1
- package/dist/core/registry/cards/pr.update.yaml +29 -0
- package/dist/core/registry/cards/pr.view.yaml +7 -5
- package/dist/{cards/project_v2.item.field.update.yaml → core/registry/cards/project_v2.items.field.update.yaml} +1 -1
- package/dist/{cards/project_v2.item.add_issue.yaml → core/registry/cards/project_v2.items.issue.add.yaml} +1 -1
- package/dist/core/registry/cards/project_v2.items.issue.remove.yaml +23 -0
- package/dist/{cards/project_v2.org.get.yaml → core/registry/cards/project_v2.org.view.yaml} +1 -1
- package/dist/core/registry/cards/{project_v2.user.get.yaml → project_v2.user.view.yaml} +1 -1
- package/dist/{cards/release.create_draft.yaml → core/registry/cards/release.create.yaml} +1 -1
- package/dist/core/registry/cards/{release.publish_draft.yaml → release.publish.yaml} +1 -1
- package/dist/{cards/release.get.yaml → core/registry/cards/release.view.yaml} +1 -1
- package/dist/core/registry/cards/repo.view.yaml +2 -4
- package/dist/core/registry/cards/{workflow_dispatch.run.yaml → workflow.dispatch.yaml} +1 -1
- package/dist/core/registry/cards/{workflow_job.logs.get.yaml → workflow.job.logs.raw.yaml} +2 -2
- package/dist/{cards/workflow_job.logs.analyze.yaml → core/registry/cards/workflow.job.logs.view.yaml} +1 -1
- package/dist/{cards/workflow_run.artifacts.list.yaml → core/registry/cards/workflow.run.artifacts.list.yaml} +1 -1
- package/dist/core/registry/cards/{workflow_run.cancel.yaml → workflow.run.cancel.yaml} +1 -1
- package/dist/core/registry/cards/{workflow_run.rerun_all.yaml → workflow.run.rerun.all.yaml} +3 -3
- package/dist/{cards/workflow_run.rerun_failed.yaml → core/registry/cards/workflow.run.rerun.failed.yaml} +3 -3
- package/dist/{cards/workflow_run.get.yaml → core/registry/cards/workflow.run.view.yaml} +19 -4
- package/dist/core/registry/cards/{workflow_runs.list.yaml → workflow.runs.list.yaml} +1 -1
- package/dist/core/registry/cards/{workflow.get.yaml → workflow.view.yaml} +2 -2
- package/dist/index.d.ts +374 -35
- package/dist/index.js +33 -5
- package/dist/index.js.map +1 -1
- package/dist/issue-mutations-FJNZW7L5.js +668 -0
- package/dist/issue-mutations-FJNZW7L5.js.map +1 -0
- package/dist/issue-queries-GRA4MKPD.js +208 -0
- package/dist/issue-queries-GRA4MKPD.js.map +1 -0
- package/dist/pr-mutations-UG67YOF5.js +344 -0
- package/dist/pr-mutations-UG67YOF5.js.map +1 -0
- package/dist/pr-queries-UOEOXIJQ.js +331 -0
- package/dist/pr-queries-UOEOXIJQ.js.map +1 -0
- package/dist/repo-JDUHFPZF.js +66 -0
- package/dist/repo-JDUHFPZF.js.map +1 -0
- package/package.json +16 -13
- package/skills/using-ghx/SKILL.md +61 -0
- package/dist/agent.d.ts +0 -32
- package/dist/agent.js +0 -36
- package/dist/agent.js.map +0 -1
- package/dist/cards/check_run.annotations.list.yaml +0 -35
- package/dist/cards/issue.assignees.update.yaml +0 -27
- package/dist/cards/issue.labels.update.yaml +0 -27
- package/dist/cards/pr.assignees.update.yaml +0 -38
- package/dist/cards/pr.checks.get_failed.yaml +0 -42
- package/dist/cards/pr.review.submit_comment.yaml +0 -26
- package/dist/cards/pr.review.submit_request_changes.yaml +0 -26
- package/dist/cards/workflow_run.jobs.list.yaml +0 -35
- package/dist/chunk-2FCPR3XZ.js +0 -54
- package/dist/chunk-2FCPR3XZ.js.map +0 -1
- package/dist/chunk-RDUPMVHG.js +0 -4139
- package/dist/chunk-RDUPMVHG.js.map +0 -1
- package/dist/chunk-UN5YHUNK.js +0 -245
- package/dist/chunk-UN5YHUNK.js.map +0 -1
- package/dist/cli/assets/skills/ghx/SKILL.md +0 -57
- package/dist/core/registry/cards/check_run.annotations.list.yaml +0 -35
- package/dist/core/registry/cards/issue.assignees.update.yaml +0 -27
- package/dist/core/registry/cards/issue.labels.update.yaml +0 -27
- package/dist/core/registry/cards/pr.assignees.update.yaml +0 -38
- package/dist/core/registry/cards/pr.checks.get_failed.yaml +0 -42
- package/dist/core/registry/cards/pr.review.submit_approve.yaml +0 -26
- package/dist/core/registry/cards/pr.review.submit_comment.yaml +0 -26
- package/dist/core/registry/cards/pr.review.submit_request_changes.yaml +0 -26
- package/dist/core/registry/cards/workflow_run.jobs.list.yaml +0 -35
- package/dist/envelope-BpF6MNCv.d.ts +0 -55
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PrCoreFieldsFragmentDoc
|
|
3
|
+
} from "./chunk-TPQYVCAS.js";
|
|
4
|
+
import {
|
|
5
|
+
PageInfoFieldsFragmentDoc
|
|
6
|
+
} from "./chunk-R3CBGJZX.js";
|
|
7
|
+
import {
|
|
8
|
+
assertPrDiffListFilesInput,
|
|
9
|
+
assertPrInput,
|
|
10
|
+
assertPrListInput,
|
|
11
|
+
assertPrReviewsListInput
|
|
12
|
+
} from "./chunk-BIWBJA2F.js";
|
|
13
|
+
import {
|
|
14
|
+
createGraphqlRequestClient
|
|
15
|
+
} from "./chunk-HEHONZTO.js";
|
|
16
|
+
|
|
17
|
+
// src/gql/operations/pr-diff-list-files.generated.ts
|
|
18
|
+
var PrDiffListFilesDocument = `
|
|
19
|
+
query PrDiffListFiles($owner: String!, $name: String!, $prNumber: Int!, $first: Int!, $after: String) {
|
|
20
|
+
repository(owner: $owner, name: $name) {
|
|
21
|
+
pullRequest(number: $prNumber) {
|
|
22
|
+
files(first: $first, after: $after) {
|
|
23
|
+
nodes {
|
|
24
|
+
path
|
|
25
|
+
additions
|
|
26
|
+
deletions
|
|
27
|
+
}
|
|
28
|
+
pageInfo {
|
|
29
|
+
...PageInfoFields
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
${PageInfoFieldsFragmentDoc}`;
|
|
36
|
+
var defaultWrapper = (action, _operationName, _operationType, _variables) => action();
|
|
37
|
+
function getSdk(client, withWrapper = defaultWrapper) {
|
|
38
|
+
return {
|
|
39
|
+
PrDiffListFiles(variables, requestHeaders, signal) {
|
|
40
|
+
return withWrapper(
|
|
41
|
+
(wrappedRequestHeaders) => client.request({
|
|
42
|
+
document: PrDiffListFilesDocument,
|
|
43
|
+
variables,
|
|
44
|
+
requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },
|
|
45
|
+
signal
|
|
46
|
+
}),
|
|
47
|
+
"PrDiffListFiles",
|
|
48
|
+
"query",
|
|
49
|
+
variables
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// src/gql/operations/pr-list.generated.ts
|
|
56
|
+
var PrListDocument = `
|
|
57
|
+
query PrList($owner: String!, $name: String!, $first: Int!, $after: String) {
|
|
58
|
+
repository(owner: $owner, name: $name) {
|
|
59
|
+
pullRequests(
|
|
60
|
+
first: $first
|
|
61
|
+
after: $after
|
|
62
|
+
orderBy: {field: CREATED_AT, direction: DESC}
|
|
63
|
+
) {
|
|
64
|
+
nodes {
|
|
65
|
+
...PrCoreFields
|
|
66
|
+
}
|
|
67
|
+
pageInfo {
|
|
68
|
+
...PageInfoFields
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
${PrCoreFieldsFragmentDoc}
|
|
74
|
+
${PageInfoFieldsFragmentDoc}`;
|
|
75
|
+
var defaultWrapper2 = (action, _operationName, _operationType, _variables) => action();
|
|
76
|
+
function getSdk2(client, withWrapper = defaultWrapper2) {
|
|
77
|
+
return {
|
|
78
|
+
PrList(variables, requestHeaders, signal) {
|
|
79
|
+
return withWrapper(
|
|
80
|
+
(wrappedRequestHeaders) => client.request({
|
|
81
|
+
document: PrListDocument,
|
|
82
|
+
variables,
|
|
83
|
+
requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },
|
|
84
|
+
signal
|
|
85
|
+
}),
|
|
86
|
+
"PrList",
|
|
87
|
+
"query",
|
|
88
|
+
variables
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// src/gql/operations/pr-merge-status.generated.ts
|
|
95
|
+
var PrMergeStatusDocument = `
|
|
96
|
+
query PrMergeStatus($owner: String!, $name: String!, $prNumber: Int!) {
|
|
97
|
+
repository(owner: $owner, name: $name) {
|
|
98
|
+
pullRequest(number: $prNumber) {
|
|
99
|
+
mergeable
|
|
100
|
+
mergeStateStatus
|
|
101
|
+
reviewDecision
|
|
102
|
+
isDraft
|
|
103
|
+
state
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
`;
|
|
108
|
+
var defaultWrapper3 = (action, _operationName, _operationType, _variables) => action();
|
|
109
|
+
function getSdk3(client, withWrapper = defaultWrapper3) {
|
|
110
|
+
return {
|
|
111
|
+
PrMergeStatus(variables, requestHeaders, signal) {
|
|
112
|
+
return withWrapper(
|
|
113
|
+
(wrappedRequestHeaders) => client.request({
|
|
114
|
+
document: PrMergeStatusDocument,
|
|
115
|
+
variables,
|
|
116
|
+
requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },
|
|
117
|
+
signal
|
|
118
|
+
}),
|
|
119
|
+
"PrMergeStatus",
|
|
120
|
+
"query",
|
|
121
|
+
variables
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// src/gql/operations/pr-reviews-list.generated.ts
|
|
128
|
+
var PrReviewsListDocument = `
|
|
129
|
+
query PrReviewsList($owner: String!, $name: String!, $prNumber: Int!, $first: Int!, $after: String) {
|
|
130
|
+
repository(owner: $owner, name: $name) {
|
|
131
|
+
pullRequest(number: $prNumber) {
|
|
132
|
+
reviews(first: $first, after: $after) {
|
|
133
|
+
nodes {
|
|
134
|
+
id
|
|
135
|
+
author {
|
|
136
|
+
login
|
|
137
|
+
}
|
|
138
|
+
body
|
|
139
|
+
state
|
|
140
|
+
submittedAt
|
|
141
|
+
url
|
|
142
|
+
commit {
|
|
143
|
+
oid
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
pageInfo {
|
|
147
|
+
...PageInfoFields
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
${PageInfoFieldsFragmentDoc}`;
|
|
154
|
+
var defaultWrapper4 = (action, _operationName, _operationType, _variables) => action();
|
|
155
|
+
function getSdk4(client, withWrapper = defaultWrapper4) {
|
|
156
|
+
return {
|
|
157
|
+
PrReviewsList(variables, requestHeaders, signal) {
|
|
158
|
+
return withWrapper(
|
|
159
|
+
(wrappedRequestHeaders) => client.request({
|
|
160
|
+
document: PrReviewsListDocument,
|
|
161
|
+
variables,
|
|
162
|
+
requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },
|
|
163
|
+
signal
|
|
164
|
+
}),
|
|
165
|
+
"PrReviewsList",
|
|
166
|
+
"query",
|
|
167
|
+
variables
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// src/gql/operations/pr-view.generated.ts
|
|
174
|
+
var PrViewDocument = `
|
|
175
|
+
query PrView($owner: String!, $name: String!, $prNumber: Int!) {
|
|
176
|
+
repository(owner: $owner, name: $name) {
|
|
177
|
+
pullRequest(number: $prNumber) {
|
|
178
|
+
...PrCoreFields
|
|
179
|
+
body
|
|
180
|
+
labels(first: 20) {
|
|
181
|
+
nodes {
|
|
182
|
+
name
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
${PrCoreFieldsFragmentDoc}`;
|
|
189
|
+
var defaultWrapper5 = (action, _operationName, _operationType, _variables) => action();
|
|
190
|
+
function getSdk5(client, withWrapper = defaultWrapper5) {
|
|
191
|
+
return {
|
|
192
|
+
PrView(variables, requestHeaders, signal) {
|
|
193
|
+
return withWrapper(
|
|
194
|
+
(wrappedRequestHeaders) => client.request({
|
|
195
|
+
document: PrViewDocument,
|
|
196
|
+
variables,
|
|
197
|
+
requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },
|
|
198
|
+
signal
|
|
199
|
+
}),
|
|
200
|
+
"PrView",
|
|
201
|
+
"query",
|
|
202
|
+
variables
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// src/gql/domains/pr-queries.ts
|
|
209
|
+
async function runPrView(transport, input) {
|
|
210
|
+
assertPrInput(input);
|
|
211
|
+
const sdk = getSdk5(createGraphqlRequestClient(transport));
|
|
212
|
+
const result = await sdk.PrView(input);
|
|
213
|
+
const pr = result.repository?.pullRequest;
|
|
214
|
+
if (!pr) {
|
|
215
|
+
throw new Error("Pull request not found");
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
id: pr.id,
|
|
219
|
+
number: pr.number,
|
|
220
|
+
title: pr.title,
|
|
221
|
+
state: pr.state,
|
|
222
|
+
url: pr.url,
|
|
223
|
+
body: pr.body ?? "",
|
|
224
|
+
labels: (pr.labels?.nodes ?? []).flatMap((n) => n ? [n.name] : [])
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
async function runPrList(transport, input) {
|
|
228
|
+
assertPrListInput(input);
|
|
229
|
+
const sdk = getSdk2(createGraphqlRequestClient(transport));
|
|
230
|
+
const result = await sdk.PrList(input);
|
|
231
|
+
const prs = result.repository?.pullRequests;
|
|
232
|
+
if (!prs) {
|
|
233
|
+
throw new Error("Pull requests not found");
|
|
234
|
+
}
|
|
235
|
+
return {
|
|
236
|
+
items: (prs.nodes ?? []).flatMap(
|
|
237
|
+
(pr) => pr ? [
|
|
238
|
+
{
|
|
239
|
+
id: pr.id,
|
|
240
|
+
number: pr.number,
|
|
241
|
+
title: pr.title,
|
|
242
|
+
state: pr.state,
|
|
243
|
+
url: pr.url
|
|
244
|
+
}
|
|
245
|
+
] : []
|
|
246
|
+
),
|
|
247
|
+
pageInfo: {
|
|
248
|
+
endCursor: prs.pageInfo.endCursor ?? null,
|
|
249
|
+
hasNextPage: prs.pageInfo.hasNextPage
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
async function runPrReviewsList(transport, input) {
|
|
254
|
+
assertPrReviewsListInput(input);
|
|
255
|
+
const sdk = getSdk4(createGraphqlRequestClient(transport));
|
|
256
|
+
const result = await sdk.PrReviewsList(input);
|
|
257
|
+
const reviews = result.repository?.pullRequest?.reviews;
|
|
258
|
+
if (!reviews) {
|
|
259
|
+
throw new Error("Pull request reviews not found");
|
|
260
|
+
}
|
|
261
|
+
return {
|
|
262
|
+
items: (reviews.nodes ?? []).flatMap(
|
|
263
|
+
(review) => review ? [
|
|
264
|
+
{
|
|
265
|
+
id: review.id,
|
|
266
|
+
authorLogin: review.author?.login ?? null,
|
|
267
|
+
body: review.body,
|
|
268
|
+
state: review.state,
|
|
269
|
+
submittedAt: review.submittedAt ?? null,
|
|
270
|
+
url: review.url,
|
|
271
|
+
commitOid: review.commit?.oid ?? null
|
|
272
|
+
}
|
|
273
|
+
] : []
|
|
274
|
+
),
|
|
275
|
+
pageInfo: {
|
|
276
|
+
endCursor: reviews.pageInfo.endCursor ?? null,
|
|
277
|
+
hasNextPage: reviews.pageInfo.hasNextPage
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
async function runPrDiffListFiles(transport, input) {
|
|
282
|
+
assertPrDiffListFilesInput(input);
|
|
283
|
+
const sdk = getSdk(createGraphqlRequestClient(transport));
|
|
284
|
+
const result = await sdk.PrDiffListFiles(input);
|
|
285
|
+
const files = result.repository?.pullRequest?.files;
|
|
286
|
+
if (!files) {
|
|
287
|
+
throw new Error("Pull request files not found");
|
|
288
|
+
}
|
|
289
|
+
return {
|
|
290
|
+
items: (files.nodes ?? []).flatMap(
|
|
291
|
+
(file) => file ? [
|
|
292
|
+
{
|
|
293
|
+
path: file.path,
|
|
294
|
+
additions: file.additions,
|
|
295
|
+
deletions: file.deletions
|
|
296
|
+
}
|
|
297
|
+
] : []
|
|
298
|
+
),
|
|
299
|
+
pageInfo: {
|
|
300
|
+
endCursor: files.pageInfo.endCursor ?? null,
|
|
301
|
+
hasNextPage: files.pageInfo.hasNextPage
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
async function runPrMergeStatus(transport, input) {
|
|
306
|
+
assertPrInput({ owner: input.owner, name: input.name, prNumber: input.prNumber });
|
|
307
|
+
const result = await getSdk3(createGraphqlRequestClient(transport)).PrMergeStatus({
|
|
308
|
+
owner: input.owner,
|
|
309
|
+
name: input.name,
|
|
310
|
+
prNumber: input.prNumber
|
|
311
|
+
});
|
|
312
|
+
const pr = result.repository?.pullRequest;
|
|
313
|
+
if (!pr) {
|
|
314
|
+
throw new Error("Pull request not found");
|
|
315
|
+
}
|
|
316
|
+
return {
|
|
317
|
+
mergeable: pr.mergeable ?? null,
|
|
318
|
+
mergeStateStatus: pr.mergeStateStatus ?? null,
|
|
319
|
+
reviewDecision: pr.reviewDecision ?? null,
|
|
320
|
+
isDraft: pr.isDraft,
|
|
321
|
+
state: pr.state
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
export {
|
|
325
|
+
runPrDiffListFiles,
|
|
326
|
+
runPrList,
|
|
327
|
+
runPrMergeStatus,
|
|
328
|
+
runPrReviewsList,
|
|
329
|
+
runPrView
|
|
330
|
+
};
|
|
331
|
+
//# sourceMappingURL=pr-queries-UOEOXIJQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/gql/operations/pr-diff-list-files.generated.ts","../src/gql/operations/pr-list.generated.ts","../src/gql/operations/pr-merge-status.generated.ts","../src/gql/operations/pr-reviews-list.generated.ts","../src/gql/operations/pr-view.generated.ts","../src/gql/domains/pr-queries.ts"],"sourcesContent":["import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\nimport { PageInfoFieldsFragmentDoc } from \"./fragments/page-info-fields.generated.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type PrDiffListFilesQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n prNumber: Types.Scalars[\"Int\"][\"input\"]\n first: Types.Scalars[\"Int\"][\"input\"]\n after?: Types.InputMaybe<Types.Scalars[\"String\"][\"input\"]>\n}>\n\nexport type PrDiffListFilesQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n pullRequest?: {\n __typename?: \"PullRequest\"\n files?: {\n __typename?: \"PullRequestChangedFileConnection\"\n nodes?: Array<{\n __typename?: \"PullRequestChangedFile\"\n path: string\n additions: number\n deletions: number\n } | null> | null\n pageInfo: { __typename?: \"PageInfo\"; endCursor?: string | null; hasNextPage: boolean }\n } | null\n } | null\n } | null\n}\n\nexport const PrDiffListFilesDocument = `\n query PrDiffListFiles($owner: String!, $name: String!, $prNumber: Int!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n pullRequest(number: $prNumber) {\n files(first: $first, after: $after) {\n nodes {\n path\n additions\n deletions\n }\n pageInfo {\n ...PageInfoFields\n }\n }\n }\n }\n}\n ${PageInfoFieldsFragmentDoc}`\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n PrDiffListFiles(\n variables: PrDiffListFilesQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<PrDiffListFilesQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<PrDiffListFilesQuery>({\n document: PrDiffListFilesDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"PrDiffListFiles\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\nimport { PageInfoFieldsFragmentDoc } from \"./fragments/page-info-fields.generated.js\"\nimport { PrCoreFieldsFragmentDoc } from \"./fragments/pr-core-fields.generated.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type PrListQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n first: Types.Scalars[\"Int\"][\"input\"]\n after?: Types.InputMaybe<Types.Scalars[\"String\"][\"input\"]>\n}>\n\nexport type PrListQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n pullRequests: {\n __typename?: \"PullRequestConnection\"\n nodes?: Array<{\n __typename?: \"PullRequest\"\n id: string\n number: number\n title: string\n state: Types.PullRequestState\n url: any\n } | null> | null\n pageInfo: { __typename?: \"PageInfo\"; endCursor?: string | null; hasNextPage: boolean }\n }\n } | null\n}\n\nexport const PrListDocument = `\n query PrList($owner: String!, $name: String!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n pullRequests(\n first: $first\n after: $after\n orderBy: {field: CREATED_AT, direction: DESC}\n ) {\n nodes {\n ...PrCoreFields\n }\n pageInfo {\n ...PageInfoFields\n }\n }\n }\n}\n ${PrCoreFieldsFragmentDoc}\n${PageInfoFieldsFragmentDoc}`\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n PrList(\n variables: PrListQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<PrListQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<PrListQuery>({\n document: PrListDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"PrList\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type PrMergeStatusQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n prNumber: Types.Scalars[\"Int\"][\"input\"]\n}>\n\nexport type PrMergeStatusQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n pullRequest?: {\n __typename?: \"PullRequest\"\n mergeable: Types.MergeableState\n mergeStateStatus: Types.MergeStateStatus\n reviewDecision?: Types.PullRequestReviewDecision | null\n isDraft: boolean\n state: Types.PullRequestState\n } | null\n } | null\n}\n\nexport const PrMergeStatusDocument = `\n query PrMergeStatus($owner: String!, $name: String!, $prNumber: Int!) {\n repository(owner: $owner, name: $name) {\n pullRequest(number: $prNumber) {\n mergeable\n mergeStateStatus\n reviewDecision\n isDraft\n state\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n PrMergeStatus(\n variables: PrMergeStatusQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<PrMergeStatusQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<PrMergeStatusQuery>({\n document: PrMergeStatusDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"PrMergeStatus\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\nimport { PageInfoFieldsFragmentDoc } from \"./fragments/page-info-fields.generated.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type PrReviewsListQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n prNumber: Types.Scalars[\"Int\"][\"input\"]\n first: Types.Scalars[\"Int\"][\"input\"]\n after?: Types.InputMaybe<Types.Scalars[\"String\"][\"input\"]>\n}>\n\nexport type PrReviewsListQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n pullRequest?: {\n __typename?: \"PullRequest\"\n reviews?: {\n __typename?: \"PullRequestReviewConnection\"\n nodes?: Array<{\n __typename?: \"PullRequestReview\"\n id: string\n body: string\n state: Types.PullRequestReviewState\n submittedAt?: any | null\n url: any\n author?:\n | { __typename?: \"Bot\"; login: string }\n | { __typename?: \"EnterpriseUserAccount\"; login: string }\n | { __typename?: \"Mannequin\"; login: string }\n | { __typename?: \"Organization\"; login: string }\n | { __typename?: \"User\"; login: string }\n | null\n commit?: { __typename?: \"Commit\"; oid: any } | null\n } | null> | null\n pageInfo: { __typename?: \"PageInfo\"; endCursor?: string | null; hasNextPage: boolean }\n } | null\n } | null\n } | null\n}\n\nexport const PrReviewsListDocument = `\n query PrReviewsList($owner: String!, $name: String!, $prNumber: Int!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n pullRequest(number: $prNumber) {\n reviews(first: $first, after: $after) {\n nodes {\n id\n author {\n login\n }\n body\n state\n submittedAt\n url\n commit {\n oid\n }\n }\n pageInfo {\n ...PageInfoFields\n }\n }\n }\n }\n}\n ${PageInfoFieldsFragmentDoc}`\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n PrReviewsList(\n variables: PrReviewsListQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<PrReviewsListQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<PrReviewsListQuery>({\n document: PrReviewsListDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"PrReviewsList\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\nimport { PrCoreFieldsFragmentDoc } from \"./fragments/pr-core-fields.generated.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type PrViewQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n prNumber: Types.Scalars[\"Int\"][\"input\"]\n}>\n\nexport type PrViewQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n pullRequest?: {\n __typename?: \"PullRequest\"\n body: string\n id: string\n number: number\n title: string\n state: Types.PullRequestState\n url: any\n labels?: {\n __typename?: \"LabelConnection\"\n nodes?: Array<{ __typename?: \"Label\"; name: string } | null> | null\n } | null\n } | null\n } | null\n}\n\nexport const PrViewDocument = `\n query PrView($owner: String!, $name: String!, $prNumber: Int!) {\n repository(owner: $owner, name: $name) {\n pullRequest(number: $prNumber) {\n ...PrCoreFields\n body\n labels(first: 20) {\n nodes {\n name\n }\n }\n }\n }\n}\n ${PrCoreFieldsFragmentDoc}`\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n PrView(\n variables: PrViewQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<PrViewQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<PrViewQuery>({\n document: PrViewDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"PrView\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import {\n assertPrDiffListFilesInput,\n assertPrInput,\n assertPrListInput,\n assertPrReviewsListInput,\n} from \"../assertions.js\"\nimport type { PrDiffListFilesQuery } from \"../operations/pr-diff-list-files.generated.js\"\nimport { getSdk as getPrDiffListFilesSdk } from \"../operations/pr-diff-list-files.generated.js\"\nimport type { PrListQuery } from \"../operations/pr-list.generated.js\"\nimport { getSdk as getPrListSdk } from \"../operations/pr-list.generated.js\"\nimport { getSdk as getPrMergeStatusSdk } from \"../operations/pr-merge-status.generated.js\"\nimport type { PrReviewsListQuery } from \"../operations/pr-reviews-list.generated.js\"\nimport { getSdk as getPrReviewsListSdk } from \"../operations/pr-reviews-list.generated.js\"\nimport type { PrViewQuery } from \"../operations/pr-view.generated.js\"\nimport { getSdk as getPrViewSdk } from \"../operations/pr-view.generated.js\"\nimport type { GraphqlTransport } from \"../transport.js\"\nimport { createGraphqlRequestClient } from \"../transport.js\"\nimport type {\n PrDiffListFilesData,\n PrDiffListFilesInput,\n PrListData,\n PrListInput,\n PrMergeStatusData,\n PrMergeStatusInput,\n PrReviewsListData,\n PrReviewsListInput,\n PrViewData,\n PrViewInput,\n} from \"../types.js\"\n\nexport async function runPrView(\n transport: GraphqlTransport,\n input: PrViewInput,\n): Promise<PrViewData> {\n assertPrInput(input)\n\n const sdk = getPrViewSdk(createGraphqlRequestClient(transport))\n const result: PrViewQuery = await sdk.PrView(input)\n const pr = result.repository?.pullRequest\n if (!pr) {\n throw new Error(\"Pull request not found\")\n }\n\n return {\n id: pr.id,\n number: pr.number,\n title: pr.title,\n state: pr.state,\n url: pr.url,\n body: pr.body ?? \"\",\n labels: (pr.labels?.nodes ?? []).flatMap((n) => (n ? [n.name] : [])),\n }\n}\n\nexport async function runPrList(\n transport: GraphqlTransport,\n input: PrListInput,\n): Promise<PrListData> {\n assertPrListInput(input)\n\n const sdk = getPrListSdk(createGraphqlRequestClient(transport))\n const result: PrListQuery = await sdk.PrList(input)\n const prs = result.repository?.pullRequests\n if (!prs) {\n throw new Error(\"Pull requests not found\")\n }\n\n return {\n items: (prs.nodes ?? []).flatMap((pr) =>\n pr\n ? [\n {\n id: pr.id,\n number: pr.number,\n title: pr.title,\n state: pr.state,\n url: pr.url,\n },\n ]\n : [],\n ),\n pageInfo: {\n endCursor: prs.pageInfo.endCursor ?? null,\n hasNextPage: prs.pageInfo.hasNextPage,\n },\n }\n}\n\nexport async function runPrReviewsList(\n transport: GraphqlTransport,\n input: PrReviewsListInput,\n): Promise<PrReviewsListData> {\n assertPrReviewsListInput(input)\n\n const sdk = getPrReviewsListSdk(createGraphqlRequestClient(transport))\n const result: PrReviewsListQuery = await sdk.PrReviewsList(input)\n const reviews = result.repository?.pullRequest?.reviews\n if (!reviews) {\n throw new Error(\"Pull request reviews not found\")\n }\n\n return {\n items: (reviews.nodes ?? []).flatMap((review) =>\n review\n ? [\n {\n id: review.id,\n authorLogin: review.author?.login ?? null,\n body: review.body,\n state: review.state,\n submittedAt: review.submittedAt ?? null,\n url: review.url,\n commitOid: review.commit?.oid ?? null,\n },\n ]\n : [],\n ),\n pageInfo: {\n endCursor: reviews.pageInfo.endCursor ?? null,\n hasNextPage: reviews.pageInfo.hasNextPage,\n },\n }\n}\n\nexport async function runPrDiffListFiles(\n transport: GraphqlTransport,\n input: PrDiffListFilesInput,\n): Promise<PrDiffListFilesData> {\n assertPrDiffListFilesInput(input)\n\n const sdk = getPrDiffListFilesSdk(createGraphqlRequestClient(transport))\n const result: PrDiffListFilesQuery = await sdk.PrDiffListFiles(input)\n const files = result.repository?.pullRequest?.files\n if (!files) {\n throw new Error(\"Pull request files not found\")\n }\n\n return {\n items: (files.nodes ?? []).flatMap((file) =>\n file\n ? [\n {\n path: file.path,\n additions: file.additions,\n deletions: file.deletions,\n },\n ]\n : [],\n ),\n pageInfo: {\n endCursor: files.pageInfo.endCursor ?? null,\n hasNextPage: files.pageInfo.hasNextPage,\n },\n }\n}\n\nexport async function runPrMergeStatus(\n transport: GraphqlTransport,\n input: PrMergeStatusInput,\n): Promise<PrMergeStatusData> {\n assertPrInput({ owner: input.owner, name: input.name, prNumber: input.prNumber })\n\n const result = await getPrMergeStatusSdk(createGraphqlRequestClient(transport)).PrMergeStatus({\n owner: input.owner,\n name: input.name,\n prNumber: input.prNumber,\n })\n\n const pr = result.repository?.pullRequest\n if (!pr) {\n throw new Error(\"Pull request not found\")\n }\n\n return {\n mergeable: pr.mergeable ?? null,\n mergeStateStatus: pr.mergeStateStatus ?? null,\n reviewDecision: pr.reviewDecision ?? null,\n isDraft: pr.isDraft,\n state: pr.state,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAiCO,IAAM,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAiBjC,yBAAyB;AAS/B,IAAM,iBAAqC,CAAC,QAAQ,gBAAgB,gBAAgB,eAClF,OAAO;AAEF,SAAS,OAAO,QAAuB,cAAkC,gBAAgB;AAC9F,SAAO;AAAA,IACL,gBACE,WACA,gBACA,QAC+B;AAC/B,aAAO;AAAA,QACL,CAAC,0BACC,OAAO,QAA8B;AAAA,UACnC,UAAU;AAAA,UACV;AAAA,UACA,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,sBAAsB;AAAA,UAC9D;AAAA,QACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACnDO,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAiBxB,uBAAuB;AAAA,EAC3B,yBAAyB;AAS3B,IAAMA,kBAAqC,CAAC,QAAQ,gBAAgB,gBAAgB,eAClF,OAAO;AAEF,SAASC,QAAO,QAAuB,cAAkCD,iBAAgB;AAC9F,SAAO;AAAA,IACL,OACE,WACA,gBACA,QACsB;AACtB,aAAO;AAAA,QACL,CAAC,0BACC,OAAO,QAAqB;AAAA,UAC1B,UAAU;AAAA,UACV;AAAA,UACA,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,sBAAsB;AAAA,UAC9D;AAAA,QACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC1DO,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBrC,IAAME,kBAAqC,CAAC,QAAQ,gBAAgB,gBAAgB,eAClF,OAAO;AAEF,SAASC,QAAO,QAAuB,cAAkCD,iBAAgB;AAC9F,SAAO;AAAA,IACL,cACE,WACA,gBACA,QAC6B;AAC7B,aAAO;AAAA,QACL,CAAC,0BACC,OAAO,QAA4B;AAAA,UACjC,UAAU;AAAA,UACV;AAAA,UACA,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,sBAAsB;AAAA,UAC9D;AAAA,QACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC3BO,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAyB/B,yBAAyB;AAS/B,IAAME,kBAAqC,CAAC,QAAQ,gBAAgB,gBAAgB,eAClF,OAAO;AAEF,SAASC,QAAO,QAAuB,cAAkCD,iBAAgB;AAC9F,SAAO;AAAA,IACL,cACE,WACA,gBACA,QAC6B;AAC7B,aAAO;AAAA,QACL,CAAC,0BACC,OAAO,QAA4B;AAAA,UACjC,UAAU;AAAA,UACV;AAAA,UACA,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,sBAAsB;AAAA,UAC9D;AAAA,QACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACtEO,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAcxB,uBAAuB;AAS7B,IAAME,kBAAqC,CAAC,QAAQ,gBAAgB,gBAAgB,eAClF,OAAO;AAEF,SAASC,QAAO,QAAuB,cAAkCD,iBAAgB;AAC9F,SAAO;AAAA,IACL,OACE,WACA,gBACA,QACsB;AACtB,aAAO;AAAA,QACL,CAAC,0BACC,OAAO,QAAqB;AAAA,UAC1B,UAAU;AAAA,UACV;AAAA,UACA,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,sBAAsB;AAAA,UAC9D;AAAA,QACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AChDA,eAAsB,UACpB,WACA,OACqB;AACrB,gBAAc,KAAK;AAEnB,QAAM,MAAME,QAAa,2BAA2B,SAAS,CAAC;AAC9D,QAAM,SAAsB,MAAM,IAAI,OAAO,KAAK;AAClD,QAAM,KAAK,OAAO,YAAY;AAC9B,MAAI,CAAC,IAAI;AACP,UAAM,IAAI,MAAM,wBAAwB;AAAA,EAC1C;AAEA,SAAO;AAAA,IACL,IAAI,GAAG;AAAA,IACP,QAAQ,GAAG;AAAA,IACX,OAAO,GAAG;AAAA,IACV,OAAO,GAAG;AAAA,IACV,KAAK,GAAG;AAAA,IACR,MAAM,GAAG,QAAQ;AAAA,IACjB,SAAS,GAAG,QAAQ,SAAS,CAAC,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAE;AAAA,EACrE;AACF;AAEA,eAAsB,UACpB,WACA,OACqB;AACrB,oBAAkB,KAAK;AAEvB,QAAM,MAAMA,QAAa,2BAA2B,SAAS,CAAC;AAC9D,QAAM,SAAsB,MAAM,IAAI,OAAO,KAAK;AAClD,QAAM,MAAM,OAAO,YAAY;AAC/B,MAAI,CAAC,KAAK;AACR,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,SAAO;AAAA,IACL,QAAQ,IAAI,SAAS,CAAC,GAAG;AAAA,MAAQ,CAAC,OAChC,KACI;AAAA,QACE;AAAA,UACE,IAAI,GAAG;AAAA,UACP,QAAQ,GAAG;AAAA,UACX,OAAO,GAAG;AAAA,UACV,OAAO,GAAG;AAAA,UACV,KAAK,GAAG;AAAA,QACV;AAAA,MACF,IACA,CAAC;AAAA,IACP;AAAA,IACA,UAAU;AAAA,MACR,WAAW,IAAI,SAAS,aAAa;AAAA,MACrC,aAAa,IAAI,SAAS;AAAA,IAC5B;AAAA,EACF;AACF;AAEA,eAAsB,iBACpB,WACA,OAC4B;AAC5B,2BAAyB,KAAK;AAE9B,QAAM,MAAMA,QAAoB,2BAA2B,SAAS,CAAC;AACrE,QAAM,SAA6B,MAAM,IAAI,cAAc,KAAK;AAChE,QAAM,UAAU,OAAO,YAAY,aAAa;AAChD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAEA,SAAO;AAAA,IACL,QAAQ,QAAQ,SAAS,CAAC,GAAG;AAAA,MAAQ,CAAC,WACpC,SACI;AAAA,QACE;AAAA,UACE,IAAI,OAAO;AAAA,UACX,aAAa,OAAO,QAAQ,SAAS;AAAA,UACrC,MAAM,OAAO;AAAA,UACb,OAAO,OAAO;AAAA,UACd,aAAa,OAAO,eAAe;AAAA,UACnC,KAAK,OAAO;AAAA,UACZ,WAAW,OAAO,QAAQ,OAAO;AAAA,QACnC;AAAA,MACF,IACA,CAAC;AAAA,IACP;AAAA,IACA,UAAU;AAAA,MACR,WAAW,QAAQ,SAAS,aAAa;AAAA,MACzC,aAAa,QAAQ,SAAS;AAAA,IAChC;AAAA,EACF;AACF;AAEA,eAAsB,mBACpB,WACA,OAC8B;AAC9B,6BAA2B,KAAK;AAEhC,QAAM,MAAM,OAAsB,2BAA2B,SAAS,CAAC;AACvE,QAAM,SAA+B,MAAM,IAAI,gBAAgB,KAAK;AACpE,QAAM,QAAQ,OAAO,YAAY,aAAa;AAC9C,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAEA,SAAO;AAAA,IACL,QAAQ,MAAM,SAAS,CAAC,GAAG;AAAA,MAAQ,CAAC,SAClC,OACI;AAAA,QACE;AAAA,UACE,MAAM,KAAK;AAAA,UACX,WAAW,KAAK;AAAA,UAChB,WAAW,KAAK;AAAA,QAClB;AAAA,MACF,IACA,CAAC;AAAA,IACP;AAAA,IACA,UAAU;AAAA,MACR,WAAW,MAAM,SAAS,aAAa;AAAA,MACvC,aAAa,MAAM,SAAS;AAAA,IAC9B;AAAA,EACF;AACF;AAEA,eAAsB,iBACpB,WACA,OAC4B;AAC5B,gBAAc,EAAE,OAAO,MAAM,OAAO,MAAM,MAAM,MAAM,UAAU,MAAM,SAAS,CAAC;AAEhF,QAAM,SAAS,MAAMA,QAAoB,2BAA2B,SAAS,CAAC,EAAE,cAAc;AAAA,IAC5F,OAAO,MAAM;AAAA,IACb,MAAM,MAAM;AAAA,IACZ,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,KAAK,OAAO,YAAY;AAC9B,MAAI,CAAC,IAAI;AACP,UAAM,IAAI,MAAM,wBAAwB;AAAA,EAC1C;AAEA,SAAO;AAAA,IACL,WAAW,GAAG,aAAa;AAAA,IAC3B,kBAAkB,GAAG,oBAAoB;AAAA,IACzC,gBAAgB,GAAG,kBAAkB;AAAA,IACrC,SAAS,GAAG;AAAA,IACZ,OAAO,GAAG;AAAA,EACZ;AACF;","names":["defaultWrapper","getSdk","defaultWrapper","getSdk","defaultWrapper","getSdk","defaultWrapper","getSdk","getSdk"]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assertRepoInput
|
|
3
|
+
} from "./chunk-BIWBJA2F.js";
|
|
4
|
+
import {
|
|
5
|
+
createGraphqlRequestClient
|
|
6
|
+
} from "./chunk-HEHONZTO.js";
|
|
7
|
+
|
|
8
|
+
// src/gql/operations/repo-view.generated.ts
|
|
9
|
+
var RepoViewDocument = `
|
|
10
|
+
query RepoView($owner: String!, $name: String!) {
|
|
11
|
+
repository(owner: $owner, name: $name) {
|
|
12
|
+
id
|
|
13
|
+
name
|
|
14
|
+
nameWithOwner
|
|
15
|
+
isPrivate
|
|
16
|
+
stargazerCount
|
|
17
|
+
forkCount
|
|
18
|
+
url
|
|
19
|
+
defaultBranchRef {
|
|
20
|
+
name
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
25
|
+
var defaultWrapper = (action, _operationName, _operationType, _variables) => action();
|
|
26
|
+
function getSdk(client, withWrapper = defaultWrapper) {
|
|
27
|
+
return {
|
|
28
|
+
RepoView(variables, requestHeaders, signal) {
|
|
29
|
+
return withWrapper(
|
|
30
|
+
(wrappedRequestHeaders) => client.request({
|
|
31
|
+
document: RepoViewDocument,
|
|
32
|
+
variables,
|
|
33
|
+
requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },
|
|
34
|
+
signal
|
|
35
|
+
}),
|
|
36
|
+
"RepoView",
|
|
37
|
+
"query",
|
|
38
|
+
variables
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// src/gql/domains/repo.ts
|
|
45
|
+
async function runRepoView(transport, input) {
|
|
46
|
+
assertRepoInput(input);
|
|
47
|
+
const sdk = getSdk(createGraphqlRequestClient(transport));
|
|
48
|
+
const result = await sdk.RepoView(input);
|
|
49
|
+
if (!result.repository) {
|
|
50
|
+
throw new Error("Repository not found");
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
id: result.repository.id,
|
|
54
|
+
name: result.repository.name,
|
|
55
|
+
nameWithOwner: result.repository.nameWithOwner,
|
|
56
|
+
isPrivate: result.repository.isPrivate,
|
|
57
|
+
stargazerCount: result.repository.stargazerCount,
|
|
58
|
+
forkCount: result.repository.forkCount,
|
|
59
|
+
url: result.repository.url,
|
|
60
|
+
defaultBranch: result.repository.defaultBranchRef?.name ?? null
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
runRepoView
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=repo-JDUHFPZF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/gql/operations/repo-view.generated.ts","../src/gql/domains/repo.ts"],"sourcesContent":["import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type RepoViewQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n}>\n\nexport type RepoViewQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n id: string\n name: string\n nameWithOwner: string\n isPrivate: boolean\n stargazerCount: number\n forkCount: number\n url: any\n defaultBranchRef?: { __typename?: \"Ref\"; name: string } | null\n } | null\n}\n\nexport const RepoViewDocument = `\n query RepoView($owner: String!, $name: String!) {\n repository(owner: $owner, name: $name) {\n id\n name\n nameWithOwner\n isPrivate\n stargazerCount\n forkCount\n url\n defaultBranchRef {\n name\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n RepoView(\n variables: RepoViewQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<RepoViewQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<RepoViewQuery>({\n document: RepoViewDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"RepoView\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import { assertRepoInput } from \"../assertions.js\"\nimport type { RepoViewQuery } from \"../operations/repo-view.generated.js\"\nimport { getSdk } from \"../operations/repo-view.generated.js\"\nimport type { GraphqlTransport } from \"../transport.js\"\nimport { createGraphqlRequestClient } from \"../transport.js\"\nimport type { RepoViewData, RepoViewInput } from \"../types.js\"\n\nexport async function runRepoView(\n transport: GraphqlTransport,\n input: RepoViewInput,\n): Promise<RepoViewData> {\n assertRepoInput(input)\n const sdk = getSdk(createGraphqlRequestClient(transport))\n const result: RepoViewQuery = await sdk.RepoView(input)\n if (!result.repository) {\n throw new Error(\"Repository not found\")\n }\n\n return {\n id: result.repository.id,\n name: result.repository.name,\n nameWithOwner: result.repository.nameWithOwner,\n isPrivate: result.repository.isPrivate,\n stargazerCount: result.repository.stargazerCount,\n forkCount: result.repository.forkCount,\n url: result.repository.url,\n defaultBranch: result.repository.defaultBranchRef?.name ?? null,\n }\n}\n"],"mappings":";;;;;;;;AAwBO,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBhC,IAAM,iBAAqC,CAAC,QAAQ,gBAAgB,gBAAgB,eAClF,OAAO;AAEF,SAAS,OAAO,QAAuB,cAAkC,gBAAgB;AAC9F,SAAO;AAAA,IACL,SACE,WACA,gBACA,QACwB;AACxB,aAAO;AAAA,QACL,CAAC,0BACC,OAAO,QAAuB;AAAA,UAC5B,UAAU;AAAA,UACV;AAAA,UACA,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,sBAAsB;AAAA,UAC9D;AAAA,QACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACjEA,eAAsB,YACpB,WACA,OACuB;AACvB,kBAAgB,KAAK;AACrB,QAAM,MAAM,OAAO,2BAA2B,SAAS,CAAC;AACxD,QAAM,SAAwB,MAAM,IAAI,SAAS,KAAK;AACtD,MAAI,CAAC,OAAO,YAAY;AACtB,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AAEA,SAAO;AAAA,IACL,IAAI,OAAO,WAAW;AAAA,IACtB,MAAM,OAAO,WAAW;AAAA,IACxB,eAAe,OAAO,WAAW;AAAA,IACjC,WAAW,OAAO,WAAW;AAAA,IAC7B,gBAAgB,OAAO,WAAW;AAAA,IAClC,WAAW,OAAO,WAAW;AAAA,IAC7B,KAAK,OAAO,WAAW;AAAA,IACvB,eAAe,OAAO,WAAW,kBAAkB,QAAQ;AAAA,EAC7D;AACF;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ghx-dev/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "GitHub execution router for AI agents with deterministic routing and normalized output.",
|
|
5
5
|
"author": "Arye Kogan",
|
|
6
6
|
"license": "MIT",
|
|
@@ -37,16 +37,14 @@
|
|
|
37
37
|
"import": "./dist/index.js",
|
|
38
38
|
"types": "./dist/index.d.ts"
|
|
39
39
|
},
|
|
40
|
-
"./agent": {
|
|
41
|
-
"import": "./dist/agent.js",
|
|
42
|
-
"types": "./dist/agent.d.ts"
|
|
43
|
-
},
|
|
44
40
|
"./cli": {
|
|
45
41
|
"import": "./dist/cli/index.js"
|
|
46
42
|
}
|
|
47
43
|
},
|
|
48
44
|
"files": [
|
|
49
45
|
"dist",
|
|
46
|
+
".claude-plugin",
|
|
47
|
+
"skills",
|
|
50
48
|
"LICENSE",
|
|
51
49
|
"README.md"
|
|
52
50
|
],
|
|
@@ -59,7 +57,7 @@
|
|
|
59
57
|
"ci": {},
|
|
60
58
|
"ci:extra": {
|
|
61
59
|
"dependsOn": [
|
|
62
|
-
"
|
|
60
|
+
"plugin:sync:check"
|
|
63
61
|
]
|
|
64
62
|
},
|
|
65
63
|
"test:e2e": {}
|
|
@@ -68,27 +66,30 @@
|
|
|
68
66
|
"dependencies": {
|
|
69
67
|
"ajv": "^8.18.0",
|
|
70
68
|
"graphql": "^16.11.0",
|
|
71
|
-
"graphql-tag": "^2.12.6",
|
|
72
69
|
"graphql-request": "^7.3.1",
|
|
70
|
+
"graphql-tag": "^2.12.6",
|
|
73
71
|
"js-yaml": "^4.1.0"
|
|
74
72
|
},
|
|
75
73
|
"devDependencies": {
|
|
76
|
-
"@opencode-ai/sdk": "^1.2.6",
|
|
77
|
-
"@vitest/coverage-v8": "^2.1.8",
|
|
78
74
|
"@graphql-codegen/cli": "^6.1.1",
|
|
79
75
|
"@graphql-codegen/near-operation-file-preset": "^4.0.0",
|
|
76
|
+
"@graphql-codegen/schema-ast": "^4.1.0",
|
|
80
77
|
"@graphql-codegen/typescript": "^5.0.7",
|
|
81
78
|
"@graphql-codegen/typescript-graphql-request": "^6.3.0",
|
|
82
79
|
"@graphql-codegen/typescript-operations": "^5.0.7",
|
|
80
|
+
"@opencode-ai/sdk": "^1.2.6",
|
|
83
81
|
"@types/js-yaml": "^4.0.9",
|
|
84
82
|
"@types/node": "^25.2.3",
|
|
83
|
+
"@vitest/coverage-v8": "^2.1.8",
|
|
85
84
|
"tsup": "^8.5.0",
|
|
86
85
|
"tsx": "^4.21.0",
|
|
87
86
|
"typescript": "^5.9.3",
|
|
87
|
+
"vite-tsconfig-paths": "^6.1.1",
|
|
88
88
|
"vitest": "^2.1.8"
|
|
89
89
|
},
|
|
90
90
|
"scripts": {
|
|
91
|
-
"
|
|
91
|
+
"ghx": "tsx src/cli/index.ts",
|
|
92
|
+
"build": "tsup",
|
|
92
93
|
"format": "biome check --write .",
|
|
93
94
|
"format:check": "biome check .",
|
|
94
95
|
"lint": "eslint . --max-warnings=0",
|
|
@@ -98,8 +99,10 @@
|
|
|
98
99
|
"test:coverage": "vitest run --project unit --coverage",
|
|
99
100
|
"test:e2e:local": "vitest run --project e2e:local",
|
|
100
101
|
"test:e2e:sdk": "if [ -n \"$OPENAI_API_KEY\" ]; then vitest run --project e2e:sdk; else echo 'Skipping core SDK E2E: OPENAI_API_KEY not set'; fi",
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"gql:
|
|
102
|
+
"plugin:sync": "node scripts/sync-plugin-manifests.mjs",
|
|
103
|
+
"plugin:sync:check": "node scripts/sync-plugin-manifests.mjs --check",
|
|
104
|
+
"gql:generate": "node scripts/generate-gql-artifacts.mjs && biome check --write --no-errors-on-unmatched src/gql/generated src/gql/operations",
|
|
105
|
+
"gql:schema:refresh": "GITHUB_TOKEN=\"$(gh auth token)\" graphql-codegen --config codegen-schema.ts",
|
|
106
|
+
"gql:verify": "pnpm run gql:generate && git diff --exit-code -- ':(glob)src/gql/**/*.generated.ts'"
|
|
104
107
|
}
|
|
105
108
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Execute GitHub operations via ghx — deterministic routing, normalized output, 70 capabilities
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# ghx CLI Skill
|
|
6
|
+
|
|
7
|
+
**CRITICAL:** Use `ghx` for ALL GitHub operations. Do not use `gh api` or any other raw `gh` commands unless no matching ghx capability exists.
|
|
8
|
+
|
|
9
|
+
## Discovery
|
|
10
|
+
|
|
11
|
+
If you don't know the capability ID or required inputs, list by domain first:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
ghx capabilities list --domain pr
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Domains: `repo`, `issue`, `pr`, `release`, `workflow`, `project_v2`.
|
|
18
|
+
Required inputs shown in brackets (e.g. `[owner, name, prNumber]`).
|
|
19
|
+
|
|
20
|
+
Only if you need the full input/output schema for a specific capability:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
ghx capabilities explain <capability_id>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Execute
|
|
27
|
+
|
|
28
|
+
**Always use heredoc — never inline `--input '...'`.** Inline form breaks with nested quotes and trailing commas in model-generated JSON.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
ghx run <capability_id> --input - <<'EOF'
|
|
32
|
+
{...}
|
|
33
|
+
EOF
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Example (submitting a review with inline comments):
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
ghx run pr.reviews.submit --input - <<'EOF'
|
|
40
|
+
{"owner": "acme", "name": "my-repo", "prNumber": 42, "event": "REQUEST_CHANGES", "body": "Please fix the issues.", "comments": [{"path": "src/index.ts", "line": 10, "body": "Off-by-one error here."}]}
|
|
41
|
+
EOF
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Result: `{ ok, data, error, meta }`. Check `ok` first. If `ok=false` and `error.retryable=true`, retry once.
|
|
45
|
+
|
|
46
|
+
## Chain
|
|
47
|
+
|
|
48
|
+
**Always use `ghx chain` when you have two or more operations to execute in a single call.** It batches steps into as few GraphQL round-trips as possible (typically one) — reducing latency and avoiding mid-sequence failures. Steps are not transactional; a `"partial"` result is possible if one step fails after another has already succeeded.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
ghx chain --steps - <<'EOF'
|
|
52
|
+
[
|
|
53
|
+
{"task":"<capability_id>","input":{...}},
|
|
54
|
+
{"task":"<capability_id>","input":{...}}
|
|
55
|
+
]
|
|
56
|
+
EOF
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Result:** `{ status, results[], meta }`. Check `status` first (`"success"` | `"partial"` | `"failed"`). Each `results[i]` has `{ task, ok, data | error }`.
|
|
60
|
+
|
|
61
|
+
**CRITICAL:** Do not use `gh api` or any other raw `gh` commands unless no matching ghx capability exists. Always try `ghx` first.
|
package/dist/agent.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { R as ResultEnvelope } from './envelope-BpF6MNCv.js';
|
|
2
|
-
|
|
3
|
-
declare const MAIN_SKILL_TEXT: string;
|
|
4
|
-
|
|
5
|
-
type ExecuteTaskFn = (request: {
|
|
6
|
-
task: string;
|
|
7
|
-
input: Record<string, unknown>;
|
|
8
|
-
options?: Record<string, unknown>;
|
|
9
|
-
}) => Promise<ResultEnvelope>;
|
|
10
|
-
declare function createExecuteTool(deps: {
|
|
11
|
-
executeTask: ExecuteTaskFn;
|
|
12
|
-
}): {
|
|
13
|
-
execute(capabilityId: string, params: Record<string, unknown>, options?: Record<string, unknown>): Promise<ResultEnvelope>;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
type CapabilityExplanation = {
|
|
17
|
-
capability_id: string;
|
|
18
|
-
purpose: string;
|
|
19
|
-
required_inputs: string[];
|
|
20
|
-
preferred_route: "cli" | "graphql" | "rest";
|
|
21
|
-
fallback_routes: Array<"cli" | "graphql" | "rest">;
|
|
22
|
-
output_fields: string[];
|
|
23
|
-
};
|
|
24
|
-
declare function explainCapability(capabilityId: string): CapabilityExplanation;
|
|
25
|
-
|
|
26
|
-
type CapabilityListItem = {
|
|
27
|
-
capability_id: string;
|
|
28
|
-
description: string;
|
|
29
|
-
};
|
|
30
|
-
declare function listCapabilities(): CapabilityListItem[];
|
|
31
|
-
|
|
32
|
-
export { MAIN_SKILL_TEXT, createExecuteTool, explainCapability, listCapabilities };
|
package/dist/agent.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
explainCapability,
|
|
3
|
-
listCapabilities
|
|
4
|
-
} from "./chunk-2FCPR3XZ.js";
|
|
5
|
-
import "./chunk-UN5YHUNK.js";
|
|
6
|
-
|
|
7
|
-
// src/agent-interface/prompt/main-skill.ts
|
|
8
|
-
var MAIN_SKILL_TEXT = `
|
|
9
|
-
Use execute(capability_id, params) for all GitHub actions.
|
|
10
|
-
Never call gh help and never fetch GraphQL schema/introspection.
|
|
11
|
-
If required params are unknown, call explain(capability_id) or ask the user.
|
|
12
|
-
Treat ResultEnvelope.ok=false as a failure.
|
|
13
|
-
If error.retryable=true, retry once unless user requested otherwise.
|
|
14
|
-
Only reason about ResultEnvelope.data and ResultEnvelope.error.
|
|
15
|
-
`.trim();
|
|
16
|
-
|
|
17
|
-
// src/agent-interface/tools/execute-tool.ts
|
|
18
|
-
function createExecuteTool(deps) {
|
|
19
|
-
return {
|
|
20
|
-
execute(capabilityId, params, options) {
|
|
21
|
-
const request = {
|
|
22
|
-
task: capabilityId,
|
|
23
|
-
input: params,
|
|
24
|
-
...options ? { options } : {}
|
|
25
|
-
};
|
|
26
|
-
return deps.executeTask(request);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
export {
|
|
31
|
-
MAIN_SKILL_TEXT,
|
|
32
|
-
createExecuteTool,
|
|
33
|
-
explainCapability,
|
|
34
|
-
listCapabilities
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=agent.js.map
|