@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.
Files changed (181) hide show
  1. package/.claude-plugin/plugin.json +21 -0
  2. package/README.md +12 -15
  3. package/dist/cards/issue.assignees.add.yaml +50 -0
  4. package/dist/cards/issue.assignees.remove.yaml +50 -0
  5. package/dist/cards/issue.assignees.set.yaml +47 -0
  6. package/dist/cards/issue.close.yaml +16 -2
  7. package/dist/cards/issue.comments.create.yaml +16 -2
  8. package/dist/cards/issue.create.yaml +11 -0
  9. package/dist/cards/issue.delete.yaml +16 -2
  10. package/dist/cards/issue.labels.add.yaml +48 -0
  11. package/dist/cards/issue.labels.remove.yaml +50 -0
  12. package/dist/cards/issue.labels.set.yaml +47 -0
  13. package/dist/cards/issue.milestone.clear.yaml +40 -0
  14. package/dist/cards/issue.milestone.set.yaml +23 -4
  15. package/dist/{core/registry/cards/issue.blocked_by.add.yaml → cards/issue.relations.blocked_by.add.yaml} +3 -2
  16. package/dist/cards/{issue.blocked_by.remove.yaml → issue.relations.blocked_by.remove.yaml} +1 -1
  17. package/dist/cards/{issue.parent.remove.yaml → issue.relations.parent.remove.yaml} +11 -1
  18. package/dist/{core/registry/cards/issue.parent.set.yaml → cards/issue.relations.parent.set.yaml} +3 -2
  19. package/dist/{core/registry/cards/issue.linked_prs.list.yaml → cards/issue.relations.prs.list.yaml} +1 -1
  20. package/dist/cards/{issue.relations.get.yaml → issue.relations.view.yaml} +1 -1
  21. package/dist/cards/issue.reopen.yaml +16 -2
  22. package/dist/cards/issue.update.yaml +16 -2
  23. package/dist/cards/issue.view.yaml +7 -5
  24. package/dist/cards/{pr.review.submit_approve.yaml → pr.assignees.add.yaml} +12 -9
  25. package/dist/cards/pr.assignees.remove.yaml +29 -0
  26. package/dist/{core/registry/cards/pr.status.checks.yaml → cards/pr.checks.list.yaml} +15 -2
  27. package/dist/{core/registry/cards/pr.checks.rerun_all.yaml → cards/pr.checks.rerun.all.yaml} +2 -4
  28. package/dist/{core/registry/cards/pr.checks.rerun_failed.yaml → cards/pr.checks.rerun.failed.yaml} +3 -5
  29. package/dist/cards/pr.create.yaml +30 -0
  30. package/dist/cards/{pr.diff.list_files.yaml → pr.diff.files.yaml} +1 -1
  31. package/dist/cards/{pr.ready_for_review.set.yaml → pr.diff.view.yaml} +6 -8
  32. package/dist/{core/registry/cards/pr.mergeability.view.yaml → cards/pr.merge.status.yaml} +6 -3
  33. package/dist/{core/registry/cards/pr.merge.execute.yaml → cards/pr.merge.yaml} +1 -1
  34. package/dist/cards/pr.reviews.list.yaml +1 -1
  35. package/dist/cards/{pr.reviewers.request.yaml → pr.reviews.request.yaml} +1 -1
  36. package/dist/cards/pr.reviews.submit.yaml +67 -0
  37. package/dist/cards/{pr.comments.list.yaml → pr.threads.list.yaml} +2 -2
  38. package/dist/cards/{pr.comment.reply.yaml → pr.threads.reply.yaml} +4 -2
  39. package/dist/cards/{pr.comment.resolve.yaml → pr.threads.resolve.yaml} +1 -1
  40. package/dist/cards/{pr.comment.unresolve.yaml → pr.threads.unresolve.yaml} +1 -1
  41. package/dist/cards/pr.update.yaml +29 -0
  42. package/dist/cards/pr.view.yaml +7 -5
  43. package/dist/{core/registry/cards/project_v2.item.field.update.yaml → cards/project_v2.items.field.update.yaml} +1 -1
  44. package/dist/{core/registry/cards/project_v2.item.add_issue.yaml → cards/project_v2.items.issue.add.yaml} +1 -1
  45. package/dist/cards/project_v2.items.issue.remove.yaml +23 -0
  46. package/dist/{core/registry/cards/project_v2.org.get.yaml → cards/project_v2.org.view.yaml} +1 -1
  47. package/dist/cards/{project_v2.user.get.yaml → project_v2.user.view.yaml} +1 -1
  48. package/dist/{core/registry/cards/release.create_draft.yaml → cards/release.create.yaml} +1 -1
  49. package/dist/cards/{release.publish_draft.yaml → release.publish.yaml} +1 -1
  50. package/dist/{core/registry/cards/release.get.yaml → cards/release.view.yaml} +1 -1
  51. package/dist/cards/repo.view.yaml +2 -4
  52. package/dist/cards/{workflow_dispatch.run.yaml → workflow.dispatch.yaml} +1 -1
  53. package/dist/cards/{workflow_job.logs.get.yaml → workflow.job.logs.raw.yaml} +2 -2
  54. package/dist/{core/registry/cards/workflow_job.logs.analyze.yaml → cards/workflow.job.logs.view.yaml} +1 -1
  55. package/dist/{core/registry/cards/workflow_run.artifacts.list.yaml → cards/workflow.run.artifacts.list.yaml} +1 -1
  56. package/dist/cards/{workflow_run.cancel.yaml → workflow.run.cancel.yaml} +1 -1
  57. package/dist/cards/{workflow_run.rerun_all.yaml → workflow.run.rerun.all.yaml} +3 -3
  58. package/dist/{core/registry/cards/workflow_run.rerun_failed.yaml → cards/workflow.run.rerun.failed.yaml} +3 -3
  59. package/dist/{core/registry/cards/workflow_run.get.yaml → cards/workflow.run.view.yaml} +19 -4
  60. package/dist/cards/{workflow_runs.list.yaml → workflow.runs.list.yaml} +1 -1
  61. package/dist/cards/{workflow.get.yaml → workflow.view.yaml} +2 -2
  62. package/dist/chunk-3DU2WHXF.js +15 -0
  63. package/dist/chunk-3DU2WHXF.js.map +1 -0
  64. package/dist/chunk-3P3KHWFU.js +5779 -0
  65. package/dist/chunk-3P3KHWFU.js.map +1 -0
  66. package/dist/chunk-BIWBJA2F.js +228 -0
  67. package/dist/chunk-BIWBJA2F.js.map +1 -0
  68. package/dist/chunk-HEHONZTO.js +121 -0
  69. package/dist/chunk-HEHONZTO.js.map +1 -0
  70. package/dist/chunk-Q7RCIK2C.js +773 -0
  71. package/dist/chunk-Q7RCIK2C.js.map +1 -0
  72. package/dist/chunk-R3CBGJZX.js +12 -0
  73. package/dist/chunk-R3CBGJZX.js.map +1 -0
  74. package/dist/chunk-TDABI6C7.js +167 -0
  75. package/dist/chunk-TDABI6C7.js.map +1 -0
  76. package/dist/chunk-TPQYVCAS.js +15 -0
  77. package/dist/chunk-TPQYVCAS.js.map +1 -0
  78. package/dist/cli/index.js +202 -21
  79. package/dist/cli/index.js.map +1 -1
  80. package/dist/core/registry/cards/issue.assignees.add.yaml +50 -0
  81. package/dist/core/registry/cards/issue.assignees.remove.yaml +50 -0
  82. package/dist/core/registry/cards/issue.assignees.set.yaml +47 -0
  83. package/dist/core/registry/cards/issue.close.yaml +16 -2
  84. package/dist/core/registry/cards/issue.comments.create.yaml +16 -2
  85. package/dist/core/registry/cards/issue.create.yaml +11 -0
  86. package/dist/core/registry/cards/issue.delete.yaml +16 -2
  87. package/dist/core/registry/cards/issue.labels.add.yaml +48 -0
  88. package/dist/core/registry/cards/issue.labels.remove.yaml +50 -0
  89. package/dist/core/registry/cards/issue.labels.set.yaml +47 -0
  90. package/dist/core/registry/cards/issue.milestone.clear.yaml +40 -0
  91. package/dist/core/registry/cards/issue.milestone.set.yaml +23 -4
  92. package/dist/{cards/issue.blocked_by.add.yaml → core/registry/cards/issue.relations.blocked_by.add.yaml} +3 -2
  93. package/dist/core/registry/cards/{issue.blocked_by.remove.yaml → issue.relations.blocked_by.remove.yaml} +1 -1
  94. package/dist/core/registry/cards/{issue.parent.remove.yaml → issue.relations.parent.remove.yaml} +11 -1
  95. package/dist/{cards/issue.parent.set.yaml → core/registry/cards/issue.relations.parent.set.yaml} +3 -2
  96. package/dist/{cards/issue.linked_prs.list.yaml → core/registry/cards/issue.relations.prs.list.yaml} +1 -1
  97. package/dist/core/registry/cards/{issue.relations.get.yaml → issue.relations.view.yaml} +1 -1
  98. package/dist/core/registry/cards/issue.reopen.yaml +16 -2
  99. package/dist/core/registry/cards/issue.update.yaml +16 -2
  100. package/dist/core/registry/cards/issue.view.yaml +7 -5
  101. package/dist/core/registry/cards/pr.assignees.add.yaml +29 -0
  102. package/dist/core/registry/cards/pr.assignees.remove.yaml +29 -0
  103. package/dist/{cards/pr.status.checks.yaml → core/registry/cards/pr.checks.list.yaml} +15 -2
  104. package/dist/{cards/pr.checks.rerun_all.yaml → core/registry/cards/pr.checks.rerun.all.yaml} +2 -4
  105. package/dist/{cards/pr.checks.rerun_failed.yaml → core/registry/cards/pr.checks.rerun.failed.yaml} +3 -5
  106. package/dist/core/registry/cards/pr.create.yaml +30 -0
  107. package/dist/core/registry/cards/{pr.diff.list_files.yaml → pr.diff.files.yaml} +1 -1
  108. package/dist/core/registry/cards/{pr.ready_for_review.set.yaml → pr.diff.view.yaml} +6 -8
  109. package/dist/{cards/pr.mergeability.view.yaml → core/registry/cards/pr.merge.status.yaml} +6 -3
  110. package/dist/{cards/pr.merge.execute.yaml → core/registry/cards/pr.merge.yaml} +1 -1
  111. package/dist/core/registry/cards/pr.reviews.list.yaml +1 -1
  112. package/dist/core/registry/cards/{pr.reviewers.request.yaml → pr.reviews.request.yaml} +1 -1
  113. package/dist/core/registry/cards/pr.reviews.submit.yaml +67 -0
  114. package/dist/core/registry/cards/{pr.comments.list.yaml → pr.threads.list.yaml} +2 -2
  115. package/dist/core/registry/cards/{pr.comment.reply.yaml → pr.threads.reply.yaml} +4 -2
  116. package/dist/core/registry/cards/{pr.comment.resolve.yaml → pr.threads.resolve.yaml} +1 -1
  117. package/dist/core/registry/cards/{pr.comment.unresolve.yaml → pr.threads.unresolve.yaml} +1 -1
  118. package/dist/core/registry/cards/pr.update.yaml +29 -0
  119. package/dist/core/registry/cards/pr.view.yaml +7 -5
  120. package/dist/{cards/project_v2.item.field.update.yaml → core/registry/cards/project_v2.items.field.update.yaml} +1 -1
  121. package/dist/{cards/project_v2.item.add_issue.yaml → core/registry/cards/project_v2.items.issue.add.yaml} +1 -1
  122. package/dist/core/registry/cards/project_v2.items.issue.remove.yaml +23 -0
  123. package/dist/{cards/project_v2.org.get.yaml → core/registry/cards/project_v2.org.view.yaml} +1 -1
  124. package/dist/core/registry/cards/{project_v2.user.get.yaml → project_v2.user.view.yaml} +1 -1
  125. package/dist/{cards/release.create_draft.yaml → core/registry/cards/release.create.yaml} +1 -1
  126. package/dist/core/registry/cards/{release.publish_draft.yaml → release.publish.yaml} +1 -1
  127. package/dist/{cards/release.get.yaml → core/registry/cards/release.view.yaml} +1 -1
  128. package/dist/core/registry/cards/repo.view.yaml +2 -4
  129. package/dist/core/registry/cards/{workflow_dispatch.run.yaml → workflow.dispatch.yaml} +1 -1
  130. package/dist/core/registry/cards/{workflow_job.logs.get.yaml → workflow.job.logs.raw.yaml} +2 -2
  131. package/dist/{cards/workflow_job.logs.analyze.yaml → core/registry/cards/workflow.job.logs.view.yaml} +1 -1
  132. package/dist/{cards/workflow_run.artifacts.list.yaml → core/registry/cards/workflow.run.artifacts.list.yaml} +1 -1
  133. package/dist/core/registry/cards/{workflow_run.cancel.yaml → workflow.run.cancel.yaml} +1 -1
  134. package/dist/core/registry/cards/{workflow_run.rerun_all.yaml → workflow.run.rerun.all.yaml} +3 -3
  135. package/dist/{cards/workflow_run.rerun_failed.yaml → core/registry/cards/workflow.run.rerun.failed.yaml} +3 -3
  136. package/dist/{cards/workflow_run.get.yaml → core/registry/cards/workflow.run.view.yaml} +19 -4
  137. package/dist/core/registry/cards/{workflow_runs.list.yaml → workflow.runs.list.yaml} +1 -1
  138. package/dist/core/registry/cards/{workflow.get.yaml → workflow.view.yaml} +2 -2
  139. package/dist/index.d.ts +374 -35
  140. package/dist/index.js +33 -5
  141. package/dist/index.js.map +1 -1
  142. package/dist/issue-mutations-FJNZW7L5.js +668 -0
  143. package/dist/issue-mutations-FJNZW7L5.js.map +1 -0
  144. package/dist/issue-queries-GRA4MKPD.js +208 -0
  145. package/dist/issue-queries-GRA4MKPD.js.map +1 -0
  146. package/dist/pr-mutations-UG67YOF5.js +344 -0
  147. package/dist/pr-mutations-UG67YOF5.js.map +1 -0
  148. package/dist/pr-queries-UOEOXIJQ.js +331 -0
  149. package/dist/pr-queries-UOEOXIJQ.js.map +1 -0
  150. package/dist/repo-JDUHFPZF.js +66 -0
  151. package/dist/repo-JDUHFPZF.js.map +1 -0
  152. package/package.json +16 -13
  153. package/skills/using-ghx/SKILL.md +61 -0
  154. package/dist/agent.d.ts +0 -32
  155. package/dist/agent.js +0 -36
  156. package/dist/agent.js.map +0 -1
  157. package/dist/cards/check_run.annotations.list.yaml +0 -35
  158. package/dist/cards/issue.assignees.update.yaml +0 -27
  159. package/dist/cards/issue.labels.update.yaml +0 -27
  160. package/dist/cards/pr.assignees.update.yaml +0 -38
  161. package/dist/cards/pr.checks.get_failed.yaml +0 -42
  162. package/dist/cards/pr.review.submit_comment.yaml +0 -26
  163. package/dist/cards/pr.review.submit_request_changes.yaml +0 -26
  164. package/dist/cards/workflow_run.jobs.list.yaml +0 -35
  165. package/dist/chunk-2FCPR3XZ.js +0 -54
  166. package/dist/chunk-2FCPR3XZ.js.map +0 -1
  167. package/dist/chunk-RDUPMVHG.js +0 -4139
  168. package/dist/chunk-RDUPMVHG.js.map +0 -1
  169. package/dist/chunk-UN5YHUNK.js +0 -245
  170. package/dist/chunk-UN5YHUNK.js.map +0 -1
  171. package/dist/cli/assets/skills/ghx/SKILL.md +0 -57
  172. package/dist/core/registry/cards/check_run.annotations.list.yaml +0 -35
  173. package/dist/core/registry/cards/issue.assignees.update.yaml +0 -27
  174. package/dist/core/registry/cards/issue.labels.update.yaml +0 -27
  175. package/dist/core/registry/cards/pr.assignees.update.yaml +0 -38
  176. package/dist/core/registry/cards/pr.checks.get_failed.yaml +0 -42
  177. package/dist/core/registry/cards/pr.review.submit_approve.yaml +0 -26
  178. package/dist/core/registry/cards/pr.review.submit_comment.yaml +0 -26
  179. package/dist/core/registry/cards/pr.review.submit_request_changes.yaml +0 -26
  180. package/dist/core/registry/cards/workflow_run.jobs.list.yaml +0 -35
  181. 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":"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","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.1.2",
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
- "gql:check"
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
- "build": "tsup && node scripts/copy-registry-cards.mjs",
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
- "gql:codegen": "tsx scripts/run-gql-codegen.ts",
102
- "gql:codegen:watch": "graphql-codegen --config codegen.ts --watch",
103
- "gql:check": "pnpm run gql:codegen && biome check --write --no-errors-on-unmatched src/gql/generated src/gql/operations && git diff --exit-code -- src/gql/generated src/gql/operations/*.generated.ts"
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