@ghx-dev/core 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/.claude-plugin/plugin.json +21 -0
  2. package/README.md +49 -45
  3. package/dist/cards/issue.assignees.add.yaml +51 -0
  4. package/dist/cards/issue.assignees.remove.yaml +51 -0
  5. package/dist/cards/issue.assignees.set.yaml +48 -0
  6. package/dist/cards/issue.close.yaml +17 -2
  7. package/dist/cards/issue.comments.create.yaml +17 -2
  8. package/dist/cards/issue.comments.list.yaml +1 -0
  9. package/dist/cards/issue.create.yaml +12 -0
  10. package/dist/cards/issue.delete.yaml +17 -2
  11. package/dist/cards/issue.labels.add.yaml +49 -0
  12. package/dist/cards/issue.labels.remove.yaml +51 -0
  13. package/dist/cards/issue.labels.set.yaml +48 -0
  14. package/dist/cards/issue.list.yaml +1 -0
  15. package/dist/cards/issue.milestone.clear.yaml +41 -0
  16. package/dist/cards/issue.milestone.set.yaml +24 -4
  17. package/dist/{core/registry/cards/issue.blocked_by.add.yaml → cards/issue.relations.blocked_by.add.yaml} +4 -2
  18. package/dist/cards/{issue.blocked_by.remove.yaml → issue.relations.blocked_by.remove.yaml} +2 -1
  19. package/dist/cards/{issue.parent.remove.yaml → issue.relations.parent.remove.yaml} +12 -1
  20. package/dist/{core/registry/cards/issue.parent.set.yaml → cards/issue.relations.parent.set.yaml} +4 -2
  21. package/dist/{core/registry/cards/issue.linked_prs.list.yaml → cards/issue.relations.prs.list.yaml} +2 -1
  22. package/dist/cards/{issue.relations.get.yaml → issue.relations.view.yaml} +2 -1
  23. package/dist/cards/issue.reopen.yaml +17 -2
  24. package/dist/cards/issue.update.yaml +17 -2
  25. package/dist/cards/issue.view.yaml +8 -5
  26. package/dist/cards/pr.assignees.add.yaml +33 -0
  27. package/dist/cards/pr.assignees.remove.yaml +33 -0
  28. package/dist/cards/pr.branch.update.yaml +6 -2
  29. package/dist/{core/registry/cards/pr.status.checks.yaml → cards/pr.checks.list.yaml} +15 -2
  30. package/dist/{core/registry/cards/pr.checks.rerun_all.yaml → cards/pr.checks.rerun.all.yaml} +2 -4
  31. package/dist/{core/registry/cards/pr.checks.rerun_failed.yaml → cards/pr.checks.rerun.failed.yaml} +3 -5
  32. package/dist/cards/pr.create.yaml +34 -0
  33. package/dist/cards/{pr.diff.list_files.yaml → pr.diff.files.yaml} +2 -1
  34. package/dist/cards/{pr.ready_for_review.set.yaml → pr.diff.view.yaml} +6 -8
  35. package/dist/cards/pr.list.yaml +1 -0
  36. package/dist/{core/registry/cards/pr.mergeability.view.yaml → cards/pr.merge.status.yaml} +7 -3
  37. package/dist/{core/registry/cards/pr.merge.execute.yaml → cards/pr.merge.yaml} +10 -4
  38. package/dist/cards/pr.reviews.list.yaml +2 -1
  39. package/dist/cards/{pr.reviewers.request.yaml → pr.reviews.request.yaml} +7 -4
  40. package/dist/cards/pr.reviews.submit.yaml +68 -0
  41. package/dist/cards/{pr.comments.list.yaml → pr.threads.list.yaml} +3 -2
  42. package/dist/cards/{pr.comment.reply.yaml → pr.threads.reply.yaml} +5 -2
  43. package/dist/{core/registry/cards/pr.comment.resolve.yaml → cards/pr.threads.resolve.yaml} +2 -1
  44. package/dist/cards/{pr.comment.unresolve.yaml → pr.threads.unresolve.yaml} +2 -1
  45. package/dist/cards/pr.update.yaml +34 -0
  46. package/dist/cards/pr.view.yaml +8 -5
  47. package/dist/cards/project_v2.fields.list.yaml +18 -2
  48. package/dist/cards/{project_v2.item.field.update.yaml → project_v2.items.field.update.yaml} +9 -6
  49. package/dist/cards/{project_v2.item.add_issue.yaml → project_v2.items.issue.add.yaml} +10 -6
  50. package/dist/cards/project_v2.items.issue.remove.yaml +26 -0
  51. package/dist/cards/project_v2.items.list.yaml +8 -2
  52. package/dist/{core/registry/cards/project_v2.org.get.yaml → cards/project_v2.org.view.yaml} +7 -3
  53. package/dist/cards/{project_v2.user.get.yaml → project_v2.user.view.yaml} +7 -3
  54. package/dist/{core/registry/cards/release.create_draft.yaml → cards/release.create.yaml} +1 -1
  55. package/dist/cards/release.list.yaml +8 -3
  56. package/dist/cards/{release.publish_draft.yaml → release.publish.yaml} +1 -1
  57. package/dist/cards/{release.get.yaml → release.view.yaml} +9 -5
  58. package/dist/cards/repo.issue_types.list.yaml +7 -3
  59. package/dist/cards/repo.labels.list.yaml +7 -2
  60. package/dist/cards/repo.view.yaml +3 -4
  61. package/dist/cards/{workflow_dispatch.run.yaml → workflow.dispatch.yaml} +1 -1
  62. package/dist/cards/{workflow_job.logs.get.yaml → workflow.job.logs.raw.yaml} +2 -2
  63. package/dist/{core/registry/cards/workflow_job.logs.analyze.yaml → cards/workflow.job.logs.view.yaml} +1 -1
  64. package/dist/{core/registry/cards/workflow_run.artifacts.list.yaml → cards/workflow.run.artifacts.list.yaml} +1 -1
  65. package/dist/cards/{workflow_run.cancel.yaml → workflow.run.cancel.yaml} +1 -1
  66. package/dist/cards/{workflow_run.rerun_all.yaml → workflow.run.rerun.all.yaml} +3 -3
  67. package/dist/{core/registry/cards/workflow_run.rerun_failed.yaml → cards/workflow.run.rerun.failed.yaml} +3 -3
  68. package/dist/{core/registry/cards/workflow_run.get.yaml → cards/workflow.run.view.yaml} +19 -4
  69. package/dist/cards/{workflow_runs.list.yaml → workflow.runs.list.yaml} +1 -1
  70. package/dist/cards/{workflow.get.yaml → workflow.view.yaml} +2 -2
  71. package/dist/chunk-3DU2WHXF.js +15 -0
  72. package/dist/chunk-3DU2WHXF.js.map +1 -0
  73. package/dist/chunk-7HUKYNI2.js +536 -0
  74. package/dist/chunk-7HUKYNI2.js.map +1 -0
  75. package/dist/chunk-GQO6BHJV.js +98 -0
  76. package/dist/chunk-GQO6BHJV.js.map +1 -0
  77. package/dist/chunk-H7CLZHRO.js +280 -0
  78. package/dist/chunk-H7CLZHRO.js.map +1 -0
  79. package/dist/chunk-HEHONZTO.js +121 -0
  80. package/dist/chunk-HEHONZTO.js.map +1 -0
  81. package/dist/chunk-M5PJLKL5.js +6132 -0
  82. package/dist/chunk-M5PJLKL5.js.map +1 -0
  83. package/dist/chunk-NQ53ETYV.js +128 -0
  84. package/dist/chunk-NQ53ETYV.js.map +1 -0
  85. package/dist/chunk-OQWLEFAH.js +436 -0
  86. package/dist/chunk-OQWLEFAH.js.map +1 -0
  87. package/dist/chunk-Q2NW7DJE.js +878 -0
  88. package/dist/chunk-Q2NW7DJE.js.map +1 -0
  89. package/dist/chunk-QRHKAMRY.js +211 -0
  90. package/dist/chunk-QRHKAMRY.js.map +1 -0
  91. package/dist/chunk-R3CBGJZX.js +12 -0
  92. package/dist/chunk-R3CBGJZX.js.map +1 -0
  93. package/dist/chunk-TGL33GEA.js +132 -0
  94. package/dist/chunk-TGL33GEA.js.map +1 -0
  95. package/dist/chunk-TPQYVCAS.js +15 -0
  96. package/dist/chunk-TPQYVCAS.js.map +1 -0
  97. package/dist/chunk-ZGBVX2VG.js +32 -0
  98. package/dist/chunk-ZGBVX2VG.js.map +1 -0
  99. package/dist/cli/index.js +268 -22
  100. package/dist/cli/index.js.map +1 -1
  101. package/dist/core/registry/cards/issue.assignees.add.yaml +51 -0
  102. package/dist/core/registry/cards/issue.assignees.remove.yaml +51 -0
  103. package/dist/core/registry/cards/issue.assignees.set.yaml +48 -0
  104. package/dist/core/registry/cards/issue.close.yaml +17 -2
  105. package/dist/core/registry/cards/issue.comments.create.yaml +17 -2
  106. package/dist/core/registry/cards/issue.comments.list.yaml +1 -0
  107. package/dist/core/registry/cards/issue.create.yaml +12 -0
  108. package/dist/core/registry/cards/issue.delete.yaml +17 -2
  109. package/dist/core/registry/cards/issue.labels.add.yaml +49 -0
  110. package/dist/core/registry/cards/issue.labels.remove.yaml +51 -0
  111. package/dist/core/registry/cards/issue.labels.set.yaml +48 -0
  112. package/dist/core/registry/cards/issue.list.yaml +1 -0
  113. package/dist/core/registry/cards/issue.milestone.clear.yaml +41 -0
  114. package/dist/core/registry/cards/issue.milestone.set.yaml +24 -4
  115. package/dist/{cards/issue.blocked_by.add.yaml → core/registry/cards/issue.relations.blocked_by.add.yaml} +4 -2
  116. package/dist/core/registry/cards/{issue.blocked_by.remove.yaml → issue.relations.blocked_by.remove.yaml} +2 -1
  117. package/dist/core/registry/cards/{issue.parent.remove.yaml → issue.relations.parent.remove.yaml} +12 -1
  118. package/dist/{cards/issue.parent.set.yaml → core/registry/cards/issue.relations.parent.set.yaml} +4 -2
  119. package/dist/{cards/issue.linked_prs.list.yaml → core/registry/cards/issue.relations.prs.list.yaml} +2 -1
  120. package/dist/core/registry/cards/{issue.relations.get.yaml → issue.relations.view.yaml} +2 -1
  121. package/dist/core/registry/cards/issue.reopen.yaml +17 -2
  122. package/dist/core/registry/cards/issue.update.yaml +17 -2
  123. package/dist/core/registry/cards/issue.view.yaml +8 -5
  124. package/dist/core/registry/cards/pr.assignees.add.yaml +33 -0
  125. package/dist/core/registry/cards/pr.assignees.remove.yaml +33 -0
  126. package/dist/core/registry/cards/pr.branch.update.yaml +6 -2
  127. package/dist/{cards/pr.status.checks.yaml → core/registry/cards/pr.checks.list.yaml} +15 -2
  128. package/dist/{cards/pr.checks.rerun_all.yaml → core/registry/cards/pr.checks.rerun.all.yaml} +2 -4
  129. package/dist/{cards/pr.checks.rerun_failed.yaml → core/registry/cards/pr.checks.rerun.failed.yaml} +3 -5
  130. package/dist/core/registry/cards/pr.create.yaml +34 -0
  131. package/dist/core/registry/cards/{pr.diff.list_files.yaml → pr.diff.files.yaml} +2 -1
  132. package/dist/core/registry/cards/{pr.ready_for_review.set.yaml → pr.diff.view.yaml} +6 -8
  133. package/dist/core/registry/cards/pr.list.yaml +1 -0
  134. package/dist/{cards/pr.mergeability.view.yaml → core/registry/cards/pr.merge.status.yaml} +7 -3
  135. package/dist/{cards/pr.merge.execute.yaml → core/registry/cards/pr.merge.yaml} +10 -4
  136. package/dist/core/registry/cards/pr.reviews.list.yaml +2 -1
  137. package/dist/core/registry/cards/{pr.reviewers.request.yaml → pr.reviews.request.yaml} +7 -4
  138. package/dist/core/registry/cards/pr.reviews.submit.yaml +68 -0
  139. package/dist/core/registry/cards/{pr.comments.list.yaml → pr.threads.list.yaml} +3 -2
  140. package/dist/core/registry/cards/{pr.comment.reply.yaml → pr.threads.reply.yaml} +5 -2
  141. package/dist/{cards/pr.comment.resolve.yaml → core/registry/cards/pr.threads.resolve.yaml} +2 -1
  142. package/dist/core/registry/cards/{pr.comment.unresolve.yaml → pr.threads.unresolve.yaml} +2 -1
  143. package/dist/core/registry/cards/pr.update.yaml +34 -0
  144. package/dist/core/registry/cards/pr.view.yaml +8 -5
  145. package/dist/core/registry/cards/project_v2.fields.list.yaml +18 -2
  146. package/dist/core/registry/cards/{project_v2.item.field.update.yaml → project_v2.items.field.update.yaml} +9 -6
  147. package/dist/core/registry/cards/{project_v2.item.add_issue.yaml → project_v2.items.issue.add.yaml} +10 -6
  148. package/dist/core/registry/cards/project_v2.items.issue.remove.yaml +26 -0
  149. package/dist/core/registry/cards/project_v2.items.list.yaml +8 -2
  150. package/dist/{cards/project_v2.org.get.yaml → core/registry/cards/project_v2.org.view.yaml} +7 -3
  151. package/dist/core/registry/cards/{project_v2.user.get.yaml → project_v2.user.view.yaml} +7 -3
  152. package/dist/{cards/release.create_draft.yaml → core/registry/cards/release.create.yaml} +1 -1
  153. package/dist/core/registry/cards/release.list.yaml +8 -3
  154. package/dist/core/registry/cards/{release.publish_draft.yaml → release.publish.yaml} +1 -1
  155. package/dist/core/registry/cards/{release.get.yaml → release.view.yaml} +9 -5
  156. package/dist/core/registry/cards/repo.issue_types.list.yaml +7 -3
  157. package/dist/core/registry/cards/repo.labels.list.yaml +7 -2
  158. package/dist/core/registry/cards/repo.view.yaml +3 -4
  159. package/dist/core/registry/cards/{workflow_dispatch.run.yaml → workflow.dispatch.yaml} +1 -1
  160. package/dist/core/registry/cards/{workflow_job.logs.get.yaml → workflow.job.logs.raw.yaml} +2 -2
  161. package/dist/{cards/workflow_job.logs.analyze.yaml → core/registry/cards/workflow.job.logs.view.yaml} +1 -1
  162. package/dist/{cards/workflow_run.artifacts.list.yaml → core/registry/cards/workflow.run.artifacts.list.yaml} +1 -1
  163. package/dist/core/registry/cards/{workflow_run.cancel.yaml → workflow.run.cancel.yaml} +1 -1
  164. package/dist/core/registry/cards/{workflow_run.rerun_all.yaml → workflow.run.rerun.all.yaml} +3 -3
  165. package/dist/{cards/workflow_run.rerun_failed.yaml → core/registry/cards/workflow.run.rerun.failed.yaml} +3 -3
  166. package/dist/{cards/workflow_run.get.yaml → core/registry/cards/workflow.run.view.yaml} +19 -4
  167. package/dist/core/registry/cards/{workflow_runs.list.yaml → workflow.runs.list.yaml} +1 -1
  168. package/dist/core/registry/cards/{workflow.get.yaml → workflow.view.yaml} +2 -2
  169. package/dist/index.d.ts +671 -35
  170. package/dist/index.js +41 -5
  171. package/dist/index.js.map +1 -1
  172. package/dist/issue-mutations-OW464JP3.js +645 -0
  173. package/dist/issue-mutations-OW464JP3.js.map +1 -0
  174. package/dist/issue-queries-ORG3VPK4.js +93 -0
  175. package/dist/issue-queries-ORG3VPK4.js.map +1 -0
  176. package/dist/pr-mutations-WOTG6FAB.js +484 -0
  177. package/dist/pr-mutations-WOTG6FAB.js.map +1 -0
  178. package/dist/pr-queries-6CJJW7BT.js +143 -0
  179. package/dist/pr-queries-6CJJW7BT.js.map +1 -0
  180. package/dist/project-QFSCYDDW.js +429 -0
  181. package/dist/project-QFSCYDDW.js.map +1 -0
  182. package/dist/release-33236BBA.js +57 -0
  183. package/dist/release-33236BBA.js.map +1 -0
  184. package/dist/repo-M6DKCWBG.js +82 -0
  185. package/dist/repo-M6DKCWBG.js.map +1 -0
  186. package/package.json +19 -16
  187. package/skills/using-ghx/SKILL.md +127 -0
  188. package/dist/agent.d.ts +0 -32
  189. package/dist/agent.js +0 -36
  190. package/dist/agent.js.map +0 -1
  191. package/dist/cards/check_run.annotations.list.yaml +0 -35
  192. package/dist/cards/issue.assignees.update.yaml +0 -27
  193. package/dist/cards/issue.labels.update.yaml +0 -27
  194. package/dist/cards/pr.assignees.update.yaml +0 -38
  195. package/dist/cards/pr.checks.get_failed.yaml +0 -42
  196. package/dist/cards/pr.review.submit_approve.yaml +0 -26
  197. package/dist/cards/pr.review.submit_comment.yaml +0 -26
  198. package/dist/cards/pr.review.submit_request_changes.yaml +0 -26
  199. package/dist/cards/workflow_run.jobs.list.yaml +0 -35
  200. package/dist/chunk-2FCPR3XZ.js +0 -54
  201. package/dist/chunk-2FCPR3XZ.js.map +0 -1
  202. package/dist/chunk-RDUPMVHG.js +0 -4139
  203. package/dist/chunk-RDUPMVHG.js.map +0 -1
  204. package/dist/chunk-UN5YHUNK.js +0 -245
  205. package/dist/chunk-UN5YHUNK.js.map +0 -1
  206. package/dist/cli/assets/skills/ghx/SKILL.md +0 -57
  207. package/dist/core/registry/cards/check_run.annotations.list.yaml +0 -35
  208. package/dist/core/registry/cards/issue.assignees.update.yaml +0 -27
  209. package/dist/core/registry/cards/issue.labels.update.yaml +0 -27
  210. package/dist/core/registry/cards/pr.assignees.update.yaml +0 -38
  211. package/dist/core/registry/cards/pr.checks.get_failed.yaml +0 -42
  212. package/dist/core/registry/cards/pr.review.submit_approve.yaml +0 -26
  213. package/dist/core/registry/cards/pr.review.submit_comment.yaml +0 -26
  214. package/dist/core/registry/cards/pr.review.submit_request_changes.yaml +0 -26
  215. package/dist/core/registry/cards/workflow_run.jobs.list.yaml +0 -35
  216. package/dist/envelope-BpF6MNCv.d.ts +0 -55
@@ -0,0 +1,51 @@
1
+ capability_id: issue.assignees.remove
2
+ version: "1.0.0"
3
+ description: Remove specific assignees from an issue.
4
+ input_schema:
5
+ type: object
6
+ required: [owner, name, issueNumber, assignees]
7
+ properties:
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
11
+ assignees:
12
+ type: array
13
+ items: { type: string, minLength: 1 }
14
+ minItems: 1
15
+ additionalProperties: false
16
+ output_schema:
17
+ type: object
18
+ required: [issueNumber, removed]
19
+ properties:
20
+ issueNumber: { type: integer, minimum: 1 }
21
+ removed:
22
+ type: array
23
+ items: { type: string, minLength: 1 }
24
+ additionalProperties: false
25
+ routing:
26
+ preferred: graphql
27
+ fallbacks: [cli]
28
+ graphql:
29
+ operationName: IssueAssigneesRemove
30
+ operationType: mutation
31
+ documentPath: src/gql/operations/issue-assignees-remove.graphql
32
+ resolution:
33
+ lookup:
34
+ operationName: IssueAssigneesLookupByNumber
35
+ documentPath: src/gql/operations/issue-assignees-lookup-by-number.graphql
36
+ vars:
37
+ owner: owner
38
+ name: name
39
+ issueNumber: issueNumber
40
+ inject:
41
+ - target: assignableId
42
+ source: scalar
43
+ path: repository.issue.id
44
+ - target: assigneeIds
45
+ source: map_array
46
+ from_input: assignees
47
+ nodes_path: repository.assignableUsers.nodes
48
+ match_field: login
49
+ extract_field: id
50
+ cli:
51
+ command: issue edit
@@ -0,0 +1,48 @@
1
+ capability_id: issue.assignees.set
2
+ version: "1.0.0"
3
+ description: Replace issue assignees.
4
+ input_schema:
5
+ type: object
6
+ required: [owner, name, issueNumber, assignees]
7
+ properties:
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
11
+ assignees:
12
+ type: array
13
+ items: { type: string, minLength: 1 }
14
+ additionalProperties: false
15
+ output_schema:
16
+ type: object
17
+ required: [id, assignees]
18
+ properties:
19
+ id: { type: string, minLength: 1 }
20
+ assignees:
21
+ type: array
22
+ items: { type: string, minLength: 1 }
23
+ additionalProperties: false
24
+ routing:
25
+ preferred: graphql
26
+ fallbacks: []
27
+ graphql:
28
+ operationName: IssueAssigneesUpdate
29
+ operationType: mutation
30
+ documentPath: src/gql/operations/issue-assignees-update.graphql
31
+ resolution:
32
+ lookup:
33
+ operationName: IssueAssigneesLookupByNumber
34
+ documentPath: src/gql/operations/issue-assignees-lookup-by-number.graphql
35
+ vars:
36
+ owner: owner
37
+ name: name
38
+ issueNumber: issueNumber
39
+ inject:
40
+ - target: assignableId
41
+ source: scalar
42
+ path: repository.issue.id
43
+ - target: assigneeIds
44
+ source: map_array
45
+ from_input: assignees
46
+ nodes_path: repository.assignableUsers.nodes
47
+ match_field: login
48
+ extract_field: id
@@ -3,9 +3,11 @@ version: "1.0.0"
3
3
  description: Close an issue.
4
4
  input_schema:
5
5
  type: object
6
- required: [issueId]
6
+ required: [owner, name, issueNumber]
7
7
  properties:
8
- issueId: { type: string, minLength: 1 }
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
9
11
  additionalProperties: false
10
12
  output_schema:
11
13
  type: object
@@ -21,4 +23,17 @@ routing:
21
23
  fallbacks: []
22
24
  graphql:
23
25
  operationName: IssueClose
26
+ operationType: mutation
24
27
  documentPath: src/gql/operations/issue-close.graphql
28
+ resolution:
29
+ lookup:
30
+ operationName: IssueNodeIdLookup
31
+ documentPath: src/gql/operations/issue-node-id-lookup.graphql
32
+ vars:
33
+ owner: owner
34
+ name: name
35
+ issueNumber: issueNumber
36
+ inject:
37
+ - target: issueId
38
+ source: scalar
39
+ path: repository.issue.id
@@ -3,9 +3,11 @@ version: "1.0.0"
3
3
  description: Create an issue comment.
4
4
  input_schema:
5
5
  type: object
6
- required: [issueId, body]
6
+ required: [owner, name, issueNumber, body]
7
7
  properties:
8
- issueId: { type: string, minLength: 1 }
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
9
11
  body: { type: string, minLength: 1 }
10
12
  additionalProperties: false
11
13
  output_schema:
@@ -21,4 +23,17 @@ routing:
21
23
  fallbacks: []
22
24
  graphql:
23
25
  operationName: IssueCommentCreate
26
+ operationType: mutation
24
27
  documentPath: src/gql/operations/issue-comment-create.graphql
28
+ resolution:
29
+ lookup:
30
+ operationName: IssueNodeIdLookup
31
+ documentPath: src/gql/operations/issue-node-id-lookup.graphql
32
+ vars:
33
+ owner: owner
34
+ name: name
35
+ issueNumber: issueNumber
36
+ inject:
37
+ - target: issueId
38
+ source: scalar
39
+ path: repository.issue.id
@@ -43,6 +43,7 @@ routing:
43
43
  - CLI fallback uses gh api graphql with bounded cursor pagination for comments.
44
44
  graphql:
45
45
  operationName: IssueCommentsList
46
+ operationType: query
46
47
  documentPath: src/gql/operations/issue-comments-list.graphql
47
48
  cli:
48
49
  command: api graphql
@@ -25,4 +25,16 @@ routing:
25
25
  fallbacks: []
26
26
  graphql:
27
27
  operationName: IssueCreate
28
+ operationType: mutation
28
29
  documentPath: src/gql/operations/issue-create.graphql
30
+ resolution:
31
+ lookup:
32
+ operationName: IssueCreateRepositoryId
33
+ documentPath: src/gql/operations/issue-create-repository-id.graphql
34
+ vars:
35
+ owner: owner
36
+ name: name
37
+ inject:
38
+ - target: repositoryId
39
+ source: scalar
40
+ path: repository.id
@@ -3,9 +3,11 @@ version: "1.0.0"
3
3
  description: Delete an issue.
4
4
  input_schema:
5
5
  type: object
6
- required: [issueId]
6
+ required: [owner, name, issueNumber]
7
7
  properties:
8
- issueId: { type: string, minLength: 1 }
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
9
11
  additionalProperties: false
10
12
  output_schema:
11
13
  type: object
@@ -20,4 +22,17 @@ routing:
20
22
  fallbacks: []
21
23
  graphql:
22
24
  operationName: IssueDelete
25
+ operationType: mutation
23
26
  documentPath: src/gql/operations/issue-delete.graphql
27
+ resolution:
28
+ lookup:
29
+ operationName: IssueNodeIdLookup
30
+ documentPath: src/gql/operations/issue-node-id-lookup.graphql
31
+ vars:
32
+ owner: owner
33
+ name: name
34
+ issueNumber: issueNumber
35
+ inject:
36
+ - target: issueId
37
+ source: scalar
38
+ path: repository.issue.id
@@ -0,0 +1,49 @@
1
+ capability_id: issue.labels.add
2
+ version: "1.0.0"
3
+ description: Add labels to an issue without removing existing labels.
4
+ input_schema:
5
+ type: object
6
+ required: [owner, name, issueNumber, labels]
7
+ properties:
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
11
+ labels:
12
+ type: array
13
+ items: { type: string, minLength: 1 }
14
+ minItems: 1
15
+ additionalProperties: false
16
+ output_schema:
17
+ type: object
18
+ required: [id, labels]
19
+ properties:
20
+ id: { type: string, minLength: 1 }
21
+ labels:
22
+ type: array
23
+ items: { type: string }
24
+ additionalProperties: false
25
+ routing:
26
+ preferred: graphql
27
+ fallbacks: []
28
+ graphql:
29
+ operationName: IssueLabelsAdd
30
+ operationType: mutation
31
+ documentPath: src/gql/operations/issue-labels-add.graphql
32
+ resolution:
33
+ lookup:
34
+ operationName: IssueLabelsLookupByNumber
35
+ documentPath: src/gql/operations/issue-labels-lookup-by-number.graphql
36
+ vars:
37
+ owner: owner
38
+ name: name
39
+ issueNumber: issueNumber
40
+ inject:
41
+ - target: labelableId
42
+ source: scalar
43
+ path: repository.issue.id
44
+ - target: labelIds
45
+ source: map_array
46
+ from_input: labels
47
+ nodes_path: repository.labels.nodes
48
+ match_field: name
49
+ extract_field: id
@@ -0,0 +1,51 @@
1
+ capability_id: issue.labels.remove
2
+ version: "1.0.0"
3
+ description: Remove specific labels from an issue.
4
+ input_schema:
5
+ type: object
6
+ required: [owner, name, issueNumber, labels]
7
+ properties:
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
11
+ labels:
12
+ type: array
13
+ items: { type: string, minLength: 1 }
14
+ minItems: 1
15
+ additionalProperties: false
16
+ output_schema:
17
+ type: object
18
+ required: [issueNumber, removed]
19
+ properties:
20
+ issueNumber: { type: integer, minimum: 1 }
21
+ removed:
22
+ type: array
23
+ items: { type: string }
24
+ additionalProperties: false
25
+ routing:
26
+ preferred: graphql
27
+ fallbacks: [cli]
28
+ graphql:
29
+ operationName: IssueLabelsRemove
30
+ operationType: mutation
31
+ documentPath: src/gql/operations/issue-labels-remove.graphql
32
+ resolution:
33
+ lookup:
34
+ operationName: IssueLabelsLookupByNumber
35
+ documentPath: src/gql/operations/issue-labels-lookup-by-number.graphql
36
+ vars:
37
+ owner: owner
38
+ name: name
39
+ issueNumber: issueNumber
40
+ inject:
41
+ - target: labelableId
42
+ source: scalar
43
+ path: repository.issue.id
44
+ - target: labelIds
45
+ source: map_array
46
+ from_input: labels
47
+ nodes_path: repository.labels.nodes
48
+ match_field: name
49
+ extract_field: id
50
+ cli:
51
+ command: issue edit
@@ -0,0 +1,48 @@
1
+ capability_id: issue.labels.set
2
+ version: "1.0.0"
3
+ description: Replace issue labels.
4
+ input_schema:
5
+ type: object
6
+ required: [owner, name, issueNumber, labels]
7
+ properties:
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
11
+ labels:
12
+ type: array
13
+ items: { type: string, minLength: 1 }
14
+ additionalProperties: false
15
+ output_schema:
16
+ type: object
17
+ required: [id, labels]
18
+ properties:
19
+ id: { type: string, minLength: 1 }
20
+ labels:
21
+ type: array
22
+ items: { type: string, minLength: 1 }
23
+ additionalProperties: false
24
+ routing:
25
+ preferred: graphql
26
+ fallbacks: []
27
+ graphql:
28
+ operationName: IssueLabelsUpdate
29
+ operationType: mutation
30
+ documentPath: src/gql/operations/issue-labels-update.graphql
31
+ resolution:
32
+ lookup:
33
+ operationName: IssueLabelsLookupByNumber
34
+ documentPath: src/gql/operations/issue-labels-lookup-by-number.graphql
35
+ vars:
36
+ owner: owner
37
+ name: name
38
+ issueNumber: issueNumber
39
+ inject:
40
+ - target: labelableId
41
+ source: scalar
42
+ path: repository.issue.id
43
+ - target: labelIds
44
+ source: map_array
45
+ from_input: labels
46
+ nodes_path: repository.labels.nodes
47
+ match_field: name
48
+ extract_field: id
@@ -42,6 +42,7 @@ routing:
42
42
  - Prefer CLI for low-latency structured fetches when gh authentication is available.
43
43
  graphql:
44
44
  operationName: IssueList
45
+ operationType: query
45
46
  documentPath: src/gql/operations/issue-list.graphql
46
47
  cli:
47
48
  command: issue list
@@ -0,0 +1,41 @@
1
+ capability_id: issue.milestone.clear
2
+ version: "1.0.0"
3
+ description: Remove the milestone from an issue.
4
+ input_schema:
5
+ type: object
6
+ required: [owner, name, issueNumber]
7
+ properties:
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
11
+ additionalProperties: false
12
+ output_schema:
13
+ type: object
14
+ required: [issueNumber, cleared]
15
+ properties:
16
+ issueNumber: { type: integer, minimum: 1 }
17
+ cleared: { type: boolean }
18
+ additionalProperties: false
19
+ routing:
20
+ preferred: graphql
21
+ fallbacks: [cli]
22
+ graphql:
23
+ operationName: IssueMilestoneSet
24
+ operationType: mutation
25
+ documentPath: src/gql/operations/issue-milestone-set.graphql
26
+ resolution:
27
+ lookup:
28
+ operationName: IssueNodeIdLookup
29
+ documentPath: src/gql/operations/issue-node-id-lookup.graphql
30
+ vars:
31
+ owner: owner
32
+ name: name
33
+ issueNumber: issueNumber
34
+ inject:
35
+ - target: issueId
36
+ source: scalar
37
+ path: repository.issue.id
38
+ - target: milestoneId
39
+ source: "null_literal"
40
+ cli:
41
+ command: issue edit
@@ -3,21 +3,41 @@ version: "1.0.0"
3
3
  description: Set issue milestone number or clear with null.
4
4
  input_schema:
5
5
  type: object
6
- required: [issueId, milestoneNumber]
6
+ required: [owner, name, issueNumber, milestoneNumber]
7
7
  properties:
8
- issueId: { type: string, minLength: 1 }
9
- milestoneNumber: { type: [integer, "null"], minimum: 1 }
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
11
+ milestoneNumber: { type: integer, minimum: 1 }
10
12
  additionalProperties: false
11
13
  output_schema:
12
14
  type: object
13
- required: [id, milestoneNumber]
15
+ required: [id, milestoneNumber, updated]
14
16
  properties:
15
17
  id: { type: string, minLength: 1 }
16
18
  milestoneNumber: { type: [integer, "null"] }
19
+ updated: { type: boolean }
17
20
  additionalProperties: false
18
21
  routing:
19
22
  preferred: graphql
20
23
  fallbacks: []
21
24
  graphql:
22
25
  operationName: IssueMilestoneSet
26
+ operationType: mutation
23
27
  documentPath: src/gql/operations/issue-milestone-set.graphql
28
+ resolution:
29
+ lookup:
30
+ operationName: IssueMilestoneLookupByNumber
31
+ documentPath: src/gql/operations/issue-milestone-lookup-by-number.graphql
32
+ vars:
33
+ owner: owner
34
+ name: name
35
+ issueNumber: issueNumber
36
+ milestoneNumber: milestoneNumber
37
+ inject:
38
+ - target: issueId
39
+ source: scalar
40
+ path: repository.issue.id
41
+ - target: milestoneId
42
+ source: scalar
43
+ path: repository.milestone.id
@@ -1,4 +1,4 @@
1
- capability_id: issue.blocked_by.add
1
+ capability_id: issue.relations.blocked_by.add
2
2
  version: "1.0.0"
3
3
  description: Add a blocked-by relation for an issue.
4
4
  input_schema:
@@ -10,14 +10,16 @@ input_schema:
10
10
  additionalProperties: false
11
11
  output_schema:
12
12
  type: object
13
- required: [issueId, blockedByIssueId]
13
+ required: [issueId, blockedByIssueId, added]
14
14
  properties:
15
15
  issueId: { type: string, minLength: 1 }
16
16
  blockedByIssueId: { type: string, minLength: 1 }
17
+ added: { type: boolean }
17
18
  additionalProperties: false
18
19
  routing:
19
20
  preferred: graphql
20
21
  fallbacks: []
21
22
  graphql:
22
23
  operationName: IssueBlockedByAdd
24
+ operationType: mutation
23
25
  documentPath: src/gql/operations/issue-blocked-by-add.graphql
@@ -1,4 +1,4 @@
1
- capability_id: issue.blocked_by.remove
1
+ capability_id: issue.relations.blocked_by.remove
2
2
  version: "1.0.0"
3
3
  description: Remove a blocked-by relation for an issue.
4
4
  input_schema:
@@ -21,4 +21,5 @@ routing:
21
21
  fallbacks: []
22
22
  graphql:
23
23
  operationName: IssueBlockedByRemove
24
+ operationType: mutation
24
25
  documentPath: src/gql/operations/issue-blocked-by-remove.graphql
@@ -1,4 +1,4 @@
1
- capability_id: issue.parent.remove
1
+ capability_id: issue.relations.parent.remove
2
2
  version: "1.0.0"
3
3
  description: Remove an issue parent relation.
4
4
  input_schema:
@@ -19,4 +19,15 @@ routing:
19
19
  fallbacks: []
20
20
  graphql:
21
21
  operationName: IssueParentRemove
22
+ operationType: mutation
22
23
  documentPath: src/gql/operations/issue-parent-remove.graphql
24
+ resolution:
25
+ lookup:
26
+ operationName: IssueParentLookup
27
+ documentPath: src/gql/operations/issue-parent-lookup.graphql
28
+ vars:
29
+ issueId: issueId
30
+ inject:
31
+ - target: parentIssueId
32
+ source: scalar
33
+ path: node.parent.id
@@ -1,4 +1,4 @@
1
- capability_id: issue.parent.set
1
+ capability_id: issue.relations.parent.set
2
2
  version: "1.0.0"
3
3
  description: Set an issue parent relation.
4
4
  input_schema:
@@ -10,14 +10,16 @@ input_schema:
10
10
  additionalProperties: false
11
11
  output_schema:
12
12
  type: object
13
- required: [issueId, parentIssueId]
13
+ required: [issueId, parentIssueId, updated]
14
14
  properties:
15
15
  issueId: { type: string, minLength: 1 }
16
16
  parentIssueId: { type: string, minLength: 1 }
17
+ updated: { type: boolean }
17
18
  additionalProperties: false
18
19
  routing:
19
20
  preferred: graphql
20
21
  fallbacks: []
21
22
  graphql:
22
23
  operationName: IssueParentSet
24
+ operationType: mutation
23
25
  documentPath: src/gql/operations/issue-parent-set.graphql
@@ -1,4 +1,4 @@
1
- capability_id: issue.linked_prs.list
1
+ capability_id: issue.relations.prs.list
2
2
  version: "1.0.0"
3
3
  description: List pull requests linked to an issue.
4
4
  input_schema:
@@ -31,4 +31,5 @@ routing:
31
31
  fallbacks: []
32
32
  graphql:
33
33
  operationName: IssueLinkedPrsList
34
+ operationType: query
34
35
  documentPath: src/gql/operations/issue-linked-prs-list.graphql
@@ -1,4 +1,4 @@
1
- capability_id: issue.relations.get
1
+ capability_id: issue.relations.view
2
2
  version: "1.0.0"
3
3
  description: Get issue parent/children/blocking relations.
4
4
  input_schema:
@@ -51,4 +51,5 @@ routing:
51
51
  fallbacks: []
52
52
  graphql:
53
53
  operationName: IssueRelationsGet
54
+ operationType: query
54
55
  documentPath: src/gql/operations/issue-relations-get.graphql
@@ -3,9 +3,11 @@ version: "1.0.0"
3
3
  description: Reopen a closed issue.
4
4
  input_schema:
5
5
  type: object
6
- required: [issueId]
6
+ required: [owner, name, issueNumber]
7
7
  properties:
8
- issueId: { type: string, minLength: 1 }
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
9
11
  additionalProperties: false
10
12
  output_schema:
11
13
  type: object
@@ -21,4 +23,17 @@ routing:
21
23
  fallbacks: []
22
24
  graphql:
23
25
  operationName: IssueReopen
26
+ operationType: mutation
24
27
  documentPath: src/gql/operations/issue-reopen.graphql
28
+ resolution:
29
+ lookup:
30
+ operationName: IssueNodeIdLookup
31
+ documentPath: src/gql/operations/issue-node-id-lookup.graphql
32
+ vars:
33
+ owner: owner
34
+ name: name
35
+ issueNumber: issueNumber
36
+ inject:
37
+ - target: issueId
38
+ source: scalar
39
+ path: repository.issue.id
@@ -3,9 +3,11 @@ version: "1.0.0"
3
3
  description: Update issue title and/or body.
4
4
  input_schema:
5
5
  type: object
6
- required: [issueId]
6
+ required: [owner, name, issueNumber]
7
7
  properties:
8
- issueId: { type: string, minLength: 1 }
8
+ owner: { type: string, minLength: 1 }
9
+ name: { type: string, minLength: 1 }
10
+ issueNumber: { type: integer, minimum: 1 }
9
11
  title: { type: string }
10
12
  body: { type: string }
11
13
  additionalProperties: false
@@ -24,4 +26,17 @@ routing:
24
26
  fallbacks: []
25
27
  graphql:
26
28
  operationName: IssueUpdate
29
+ operationType: mutation
27
30
  documentPath: src/gql/operations/issue-update.graphql
31
+ resolution:
32
+ lookup:
33
+ operationName: IssueNodeIdLookup
34
+ documentPath: src/gql/operations/issue-node-id-lookup.graphql
35
+ vars:
36
+ owner: owner
37
+ name: name
38
+ issueNumber: issueNumber
39
+ inject:
40
+ - target: issueId
41
+ source: scalar
42
+ path: repository.issue.id
@@ -11,22 +11,25 @@ input_schema:
11
11
  additionalProperties: false
12
12
  output_schema:
13
13
  type: object
14
- required: [id, number, title, state, url]
14
+ required: [id, number, title, state, url, body, labels]
15
15
  properties:
16
16
  id: { type: string, minLength: 1 }
17
17
  number: { type: integer, minimum: 1 }
18
18
  title: { type: string }
19
19
  state: { type: string }
20
20
  url: { type: string, minLength: 1 }
21
+ body: { type: string }
22
+ labels: { type: array, items: { type: string } }
21
23
  additionalProperties: false
22
24
  routing:
23
- preferred: cli
24
- fallbacks: [graphql]
25
+ preferred: graphql
26
+ fallbacks: [cli]
25
27
  notes:
26
- - Prefer CLI for low-latency structured fetches when gh authentication is available.
28
+ - Prefer GraphQL for structured fetch; CLI fallback if gh auth unavailable.
27
29
  graphql:
28
30
  operationName: IssueView
31
+ operationType: query
29
32
  documentPath: src/gql/operations/issue-view.graphql
30
33
  cli:
31
34
  command: issue view
32
- jsonFields: [id, number, title, state, url]
35
+ jsonFields: [id, number, title, state, url, body, labels]