@ghx-dev/core 0.2.0 → 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 (158) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/README.md +44 -37
  3. package/dist/cards/issue.assignees.add.yaml +1 -0
  4. package/dist/cards/issue.assignees.remove.yaml +1 -0
  5. package/dist/cards/issue.assignees.set.yaml +1 -0
  6. package/dist/cards/issue.close.yaml +1 -0
  7. package/dist/cards/issue.comments.create.yaml +1 -0
  8. package/dist/cards/issue.comments.list.yaml +1 -0
  9. package/dist/cards/issue.create.yaml +1 -0
  10. package/dist/cards/issue.delete.yaml +1 -0
  11. package/dist/cards/issue.labels.add.yaml +1 -0
  12. package/dist/cards/issue.labels.remove.yaml +1 -0
  13. package/dist/cards/issue.labels.set.yaml +1 -0
  14. package/dist/cards/issue.list.yaml +1 -0
  15. package/dist/cards/issue.milestone.clear.yaml +1 -0
  16. package/dist/cards/issue.milestone.set.yaml +1 -0
  17. package/dist/cards/issue.relations.blocked_by.add.yaml +1 -0
  18. package/dist/cards/issue.relations.blocked_by.remove.yaml +1 -0
  19. package/dist/cards/issue.relations.parent.remove.yaml +1 -0
  20. package/dist/cards/issue.relations.parent.set.yaml +1 -0
  21. package/dist/cards/issue.relations.prs.list.yaml +1 -0
  22. package/dist/cards/issue.relations.view.yaml +1 -0
  23. package/dist/cards/issue.reopen.yaml +1 -0
  24. package/dist/cards/issue.update.yaml +1 -0
  25. package/dist/cards/issue.view.yaml +1 -0
  26. package/dist/cards/pr.assignees.add.yaml +6 -2
  27. package/dist/cards/pr.assignees.remove.yaml +6 -2
  28. package/dist/cards/pr.branch.update.yaml +6 -2
  29. package/dist/cards/pr.create.yaml +7 -3
  30. package/dist/cards/pr.diff.files.yaml +1 -0
  31. package/dist/cards/pr.list.yaml +1 -0
  32. package/dist/cards/pr.merge.status.yaml +1 -0
  33. package/dist/cards/pr.merge.yaml +9 -3
  34. package/dist/cards/pr.reviews.list.yaml +1 -0
  35. package/dist/cards/pr.reviews.request.yaml +6 -3
  36. package/dist/cards/pr.reviews.submit.yaml +1 -0
  37. package/dist/cards/pr.threads.list.yaml +1 -0
  38. package/dist/cards/pr.threads.reply.yaml +1 -0
  39. package/dist/cards/pr.threads.resolve.yaml +1 -0
  40. package/dist/cards/pr.threads.unresolve.yaml +1 -0
  41. package/dist/cards/pr.update.yaml +7 -2
  42. package/dist/cards/pr.view.yaml +1 -0
  43. package/dist/cards/project_v2.fields.list.yaml +18 -2
  44. package/dist/cards/project_v2.items.field.update.yaml +8 -5
  45. package/dist/cards/project_v2.items.issue.add.yaml +9 -5
  46. package/dist/cards/project_v2.items.issue.remove.yaml +8 -5
  47. package/dist/cards/project_v2.items.list.yaml +8 -2
  48. package/dist/cards/project_v2.org.view.yaml +6 -2
  49. package/dist/cards/project_v2.user.view.yaml +6 -2
  50. package/dist/cards/release.list.yaml +8 -3
  51. package/dist/cards/release.view.yaml +8 -4
  52. package/dist/cards/repo.issue_types.list.yaml +7 -3
  53. package/dist/cards/repo.labels.list.yaml +7 -2
  54. package/dist/cards/repo.view.yaml +1 -0
  55. package/dist/chunk-7HUKYNI2.js +536 -0
  56. package/dist/chunk-7HUKYNI2.js.map +1 -0
  57. package/dist/chunk-GQO6BHJV.js +98 -0
  58. package/dist/chunk-GQO6BHJV.js.map +1 -0
  59. package/dist/chunk-H7CLZHRO.js +280 -0
  60. package/dist/chunk-H7CLZHRO.js.map +1 -0
  61. package/dist/{chunk-3P3KHWFU.js → chunk-M5PJLKL5.js} +1079 -726
  62. package/dist/chunk-M5PJLKL5.js.map +1 -0
  63. package/dist/chunk-NQ53ETYV.js +128 -0
  64. package/dist/chunk-NQ53ETYV.js.map +1 -0
  65. package/dist/{chunk-BIWBJA2F.js → chunk-OQWLEFAH.js} +220 -12
  66. package/dist/chunk-OQWLEFAH.js.map +1 -0
  67. package/dist/{chunk-Q7RCIK2C.js → chunk-Q2NW7DJE.js} +167 -62
  68. package/dist/chunk-Q2NW7DJE.js.map +1 -0
  69. package/dist/{pr-queries-UOEOXIJQ.js → chunk-QRHKAMRY.js} +11 -131
  70. package/dist/chunk-QRHKAMRY.js.map +1 -0
  71. package/dist/{issue-queries-GRA4MKPD.js → chunk-TGL33GEA.js} +7 -83
  72. package/dist/chunk-TGL33GEA.js.map +1 -0
  73. package/dist/chunk-ZGBVX2VG.js +32 -0
  74. package/dist/chunk-ZGBVX2VG.js.map +1 -0
  75. package/dist/cli/index.js +79 -14
  76. package/dist/cli/index.js.map +1 -1
  77. package/dist/core/registry/cards/issue.assignees.add.yaml +1 -0
  78. package/dist/core/registry/cards/issue.assignees.remove.yaml +1 -0
  79. package/dist/core/registry/cards/issue.assignees.set.yaml +1 -0
  80. package/dist/core/registry/cards/issue.close.yaml +1 -0
  81. package/dist/core/registry/cards/issue.comments.create.yaml +1 -0
  82. package/dist/core/registry/cards/issue.comments.list.yaml +1 -0
  83. package/dist/core/registry/cards/issue.create.yaml +1 -0
  84. package/dist/core/registry/cards/issue.delete.yaml +1 -0
  85. package/dist/core/registry/cards/issue.labels.add.yaml +1 -0
  86. package/dist/core/registry/cards/issue.labels.remove.yaml +1 -0
  87. package/dist/core/registry/cards/issue.labels.set.yaml +1 -0
  88. package/dist/core/registry/cards/issue.list.yaml +1 -0
  89. package/dist/core/registry/cards/issue.milestone.clear.yaml +1 -0
  90. package/dist/core/registry/cards/issue.milestone.set.yaml +1 -0
  91. package/dist/core/registry/cards/issue.relations.blocked_by.add.yaml +1 -0
  92. package/dist/core/registry/cards/issue.relations.blocked_by.remove.yaml +1 -0
  93. package/dist/core/registry/cards/issue.relations.parent.remove.yaml +1 -0
  94. package/dist/core/registry/cards/issue.relations.parent.set.yaml +1 -0
  95. package/dist/core/registry/cards/issue.relations.prs.list.yaml +1 -0
  96. package/dist/core/registry/cards/issue.relations.view.yaml +1 -0
  97. package/dist/core/registry/cards/issue.reopen.yaml +1 -0
  98. package/dist/core/registry/cards/issue.update.yaml +1 -0
  99. package/dist/core/registry/cards/issue.view.yaml +1 -0
  100. package/dist/core/registry/cards/pr.assignees.add.yaml +6 -2
  101. package/dist/core/registry/cards/pr.assignees.remove.yaml +6 -2
  102. package/dist/core/registry/cards/pr.branch.update.yaml +6 -2
  103. package/dist/core/registry/cards/pr.create.yaml +7 -3
  104. package/dist/core/registry/cards/pr.diff.files.yaml +1 -0
  105. package/dist/core/registry/cards/pr.list.yaml +1 -0
  106. package/dist/core/registry/cards/pr.merge.status.yaml +1 -0
  107. package/dist/core/registry/cards/pr.merge.yaml +9 -3
  108. package/dist/core/registry/cards/pr.reviews.list.yaml +1 -0
  109. package/dist/core/registry/cards/pr.reviews.request.yaml +6 -3
  110. package/dist/core/registry/cards/pr.reviews.submit.yaml +1 -0
  111. package/dist/core/registry/cards/pr.threads.list.yaml +1 -0
  112. package/dist/core/registry/cards/pr.threads.reply.yaml +1 -0
  113. package/dist/core/registry/cards/pr.threads.resolve.yaml +1 -0
  114. package/dist/core/registry/cards/pr.threads.unresolve.yaml +1 -0
  115. package/dist/core/registry/cards/pr.update.yaml +7 -2
  116. package/dist/core/registry/cards/pr.view.yaml +1 -0
  117. package/dist/core/registry/cards/project_v2.fields.list.yaml +18 -2
  118. package/dist/core/registry/cards/project_v2.items.field.update.yaml +8 -5
  119. package/dist/core/registry/cards/project_v2.items.issue.add.yaml +9 -5
  120. package/dist/core/registry/cards/project_v2.items.issue.remove.yaml +8 -5
  121. package/dist/core/registry/cards/project_v2.items.list.yaml +8 -2
  122. package/dist/core/registry/cards/project_v2.org.view.yaml +6 -2
  123. package/dist/core/registry/cards/project_v2.user.view.yaml +6 -2
  124. package/dist/core/registry/cards/release.list.yaml +8 -3
  125. package/dist/core/registry/cards/release.view.yaml +8 -4
  126. package/dist/core/registry/cards/repo.issue_types.list.yaml +7 -3
  127. package/dist/core/registry/cards/repo.labels.list.yaml +7 -2
  128. package/dist/core/registry/cards/repo.view.yaml +1 -0
  129. package/dist/index.d.ts +297 -0
  130. package/dist/index.js +11 -3
  131. package/dist/index.js.map +1 -1
  132. package/dist/{issue-mutations-FJNZW7L5.js → issue-mutations-OW464JP3.js} +97 -120
  133. package/dist/issue-mutations-OW464JP3.js.map +1 -0
  134. package/dist/issue-queries-ORG3VPK4.js +93 -0
  135. package/dist/issue-queries-ORG3VPK4.js.map +1 -0
  136. package/dist/{pr-mutations-UG67YOF5.js → pr-mutations-WOTG6FAB.js} +234 -94
  137. package/dist/pr-mutations-WOTG6FAB.js.map +1 -0
  138. package/dist/pr-queries-6CJJW7BT.js +143 -0
  139. package/dist/pr-queries-6CJJW7BT.js.map +1 -0
  140. package/dist/project-QFSCYDDW.js +429 -0
  141. package/dist/project-QFSCYDDW.js.map +1 -0
  142. package/dist/release-33236BBA.js +57 -0
  143. package/dist/release-33236BBA.js.map +1 -0
  144. package/dist/repo-M6DKCWBG.js +82 -0
  145. package/dist/repo-M6DKCWBG.js.map +1 -0
  146. package/package.json +6 -6
  147. package/skills/using-ghx/SKILL.md +76 -10
  148. package/dist/chunk-3P3KHWFU.js.map +0 -1
  149. package/dist/chunk-BIWBJA2F.js.map +0 -1
  150. package/dist/chunk-Q7RCIK2C.js.map +0 -1
  151. package/dist/chunk-TDABI6C7.js +0 -167
  152. package/dist/chunk-TDABI6C7.js.map +0 -1
  153. package/dist/issue-mutations-FJNZW7L5.js.map +0 -1
  154. package/dist/issue-queries-GRA4MKPD.js.map +0 -1
  155. package/dist/pr-mutations-UG67YOF5.js.map +0 -1
  156. package/dist/pr-queries-UOEOXIJQ.js.map +0 -1
  157. package/dist/repo-JDUHFPZF.js +0 -66
  158. package/dist/repo-JDUHFPZF.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ghx",
3
- "description": "GitHub execution router for AI agents — 66 capabilities with deterministic routing and normalized output",
4
- "version": "0.2.0",
3
+ "description": "GitHub execution router for AI agents — 70 capabilities with deterministic routing and normalized output",
4
+ "version": "0.2.1",
5
5
  "author": {
6
6
  "name": "Arye Kogan"
7
7
  },
package/README.md CHANGED
@@ -14,16 +14,16 @@ Typed GitHub execution router for AI agents. Deterministic routing across CLI an
14
14
 
15
15
  ## Why ghx
16
16
 
17
- Agents instructed to "use `gh` CLI" for common PR and issue operations waste significant tokens on research, trial-and-error, and output parsing. Benchmarked across 27 runs on standard PR workflows:
17
+ Agents instructed to "use `gh` CLI" for common PR and issue operations waste significant tokens on research, trial-and-error, and output parsing. Benchmarked across 40 runs on standard PR and issue workflows (MCP mode benchmark coming soon):
18
18
 
19
19
  | Metric | Improvement |
20
20
  |---|---|
21
- | Active tokens | **-37%** fewer tokens consumed |
22
- | Latency | **-32%** faster end-to-end |
23
- | Tool calls | **-33%** fewer tool invocations |
24
- | Success rate | **100%** (zero regressions) |
21
+ | Tool calls | **-55%** (PR review), **-47%** (issue triage) |
22
+ | Active tokens | **-88%** (PR review), **-41%** (thread resolution) |
23
+ | Latency | **-57%** (PR review), **-26%** (thread resolution) |
24
+ | Success rate | **100%** both modes |
25
25
 
26
- ghx eliminates the discovery phase: agents call typed capabilities, get validated results back in a stable envelope.
26
+ Full report: [Codex 5.3 Benchmark](https://github.com/aryeko/ghx/blob/main/reports/codex-5.3-benchmark/README.md)
27
27
 
28
28
  ## Installation
29
29
 
@@ -84,6 +84,20 @@ Every capability returns a stable envelope:
84
84
  }
85
85
  ```
86
86
 
87
+ ## Chain: Batch Operations
88
+
89
+ Batch multiple operations into a single tool call:
90
+
91
+ ```bash
92
+ ghx chain --steps - <<'EOF'
93
+ [
94
+ {"task":"issue.labels.remove","input":{"owner":"acme","name":"repo","issueNumber":42,"labels":["triage"]}},
95
+ {"task":"issue.labels.add","input":{"owner":"acme","name":"repo","issueNumber":42,"labels":["enhancement"]}},
96
+ {"task":"issue.comments.create","input":{"owner":"acme","name":"repo","issueNumber":42,"body":"Triaged."}}
97
+ ]
98
+ EOF
99
+ ```
100
+
87
101
  ## Quick Start (Library API)
88
102
 
89
103
  ```ts
@@ -104,28 +118,21 @@ if (result.ok) {
104
118
  }
105
119
  ```
106
120
 
107
- Need a custom GraphQL transport? Use `createGithubClient(transport)` instead -- see the [advanced usage section](#custom-graphql-transport).
121
+ Need a custom GraphQL transport? See [Custom GraphQL Transport](#custom-graphql-transport).
108
122
 
109
123
  ## Agent Onboarding
110
124
 
111
- Install ghx as a project skill for Claude Code:
125
+ <details>
126
+ <summary>Install ghx as a project skill for Claude Code</summary>
112
127
 
113
128
  ```bash
114
129
  npx @ghx-dev/core setup --scope project --yes
115
130
  npx @ghx-dev/core setup --scope project --verify
116
131
  ```
117
132
 
118
- ### Setup Skill Source
119
-
120
- The canonical setup skill content is stored in:
121
-
122
- - `skills/using-ghx/SKILL.md` (package root)
123
-
124
- During build/publish it is copied to:
125
-
126
- - `dist/skills/using-ghx/SKILL.md`
133
+ The canonical setup skill content is stored in `skills/using-ghx/SKILL.md` (package root). During build/publish it is copied to `dist/skills/using-ghx/SKILL.md`. `ghx setup` writes this content to `.agents/skills/ghx/SKILL.md` in user or project scope.
127
134
 
128
- `ghx setup` writes this content to `.agents/skills/ghx/SKILL.md` in user or project scope.
135
+ </details>
129
136
 
130
137
  ## Agent Tools
131
138
 
@@ -152,25 +159,18 @@ console.log(explainCapability("repo.view"))
152
159
  const result = await tool.execute("repo.view", { owner: "aryeko", name: "ghx" })
153
160
  ```
154
161
 
155
- ## 69 Capabilities
162
+ ## 70 Capabilities
156
163
 
157
- **Repository** -- `repo.view`, `repo.labels.list`, `repo.issue_types.list`
164
+ | Domain | Count | Examples |
165
+ |---|---|---|
166
+ | Repository | 3 | `repo.view`, `repo.labels.list` |
167
+ | Issues | 23 | create/update/close, labels, assignees, milestones, relations |
168
+ | Pull Requests | 21 | diff, threads, reviews, checks, merge, branch update |
169
+ | Workflows and CI | 11 | runs, jobs, logs, dispatch, rerun, cancel, artifacts |
170
+ | Releases | 5 | view, list, create, update, publish |
171
+ | Projects v2 | 7 | items, fields, add/remove issues |
158
172
 
159
- **Issues** -- `issue.view`, `issue.list`, `issue.comments.list`, `issue.create`, `issue.update`, `issue.close`, `issue.reopen`, `issue.delete`, `issue.labels.update`, `issue.assignees.update`, `issue.milestone.set`, `issue.comments.create`, `issue.linked_prs.list`, `issue.relations.get`, `issue.parent.set`, `issue.parent.remove`, `issue.blocked_by.add`, `issue.blocked_by.remove`
160
-
161
- **Pull Requests (read)** -- `pr.view`, `pr.list`, `pr.threads.list`, `pr.reviews.list`, `pr.diff.files`, `pr.checks.list`, `pr.merge.status`
162
-
163
- **Pull Requests (execute)** -- `pr.threads.reply`, `pr.threads.resolve`, `pr.threads.unresolve`, `pr.update`, `pr.reviews.submit`, `pr.reviews.request`, `pr.merge`, `pr.checks.rerun.failed`, `pr.checks.rerun.all`, `pr.branch.update`, `pr.assignees.add`, `pr.assignees.remove`
164
-
165
- **CI Diagnostics** -- `workflow.runs.list`, `workflow.job.logs.get`
166
-
167
- **Releases** -- `release.list`, `release.get`, `release.create_draft`, `release.update`, `release.publish_draft`
168
-
169
- **Workflow Controls** -- `workflow.list`, `workflow.get`, `workflow_dispatch.run`, `workflow_run.view`, `workflow_run.rerun_failed`, `workflow_run.rerun_all`, `workflow_run.cancel`, `workflow_run.artifacts.list`
170
-
171
- **Projects v2** -- `project_v2.org.get`, `project_v2.user.get`, `project_v2.fields.list`, `project_v2.items.list`, `project_v2.item.add_issue`, `project_v2.item.field.update`
172
-
173
- For exact input/output contracts, see the [operation card registry](https://github.com/aryeko/ghx/tree/main/packages/core/src/core/registry/cards).
173
+ Full list: `ghx capabilities list` or [operation card registry](https://github.com/aryeko/ghx/tree/main/packages/core/src/core/registry/cards).
174
174
 
175
175
  ## Result Envelope
176
176
 
@@ -218,7 +218,8 @@ type ResultEnvelope<TData = unknown> = {
218
218
  - GitHub Cloud and GitHub Enterprise hosts (`GH_HOST` supported)
219
219
  - Route adapters: CLI and GraphQL
220
220
 
221
- ## Public Exports
221
+ <details>
222
+ <summary>Public Exports</summary>
222
223
 
223
224
  Root (`@ghx-dev/core`):
224
225
 
@@ -233,7 +234,11 @@ Subpaths:
233
234
 
234
235
  - `@ghx-dev/core/cli` -- CLI entrypoint
235
236
 
236
- ## Custom GraphQL Transport
237
+ </details>
238
+
239
+ <details>
240
+ <a id="custom-graphql-transport"></a>
241
+ <summary>Custom GraphQL Transport</summary>
237
242
 
238
243
  For full control over the GraphQL layer, pass your own transport to `createGithubClient`:
239
244
 
@@ -263,6 +268,8 @@ const result = await executeTask(
263
268
  )
264
269
  ```
265
270
 
271
+ </details>
272
+
266
273
  ## Documentation
267
274
 
268
275
  - [Documentation Hub](https://github.com/aryeko/ghx/blob/main/docs/README.md)
@@ -27,6 +27,7 @@ routing:
27
27
  fallbacks: [cli]
28
28
  graphql:
29
29
  operationName: IssueAssigneesAdd
30
+ operationType: mutation
30
31
  documentPath: src/gql/operations/issue-assignees-add.graphql
31
32
  resolution:
32
33
  lookup:
@@ -27,6 +27,7 @@ routing:
27
27
  fallbacks: [cli]
28
28
  graphql:
29
29
  operationName: IssueAssigneesRemove
30
+ operationType: mutation
30
31
  documentPath: src/gql/operations/issue-assignees-remove.graphql
31
32
  resolution:
32
33
  lookup:
@@ -26,6 +26,7 @@ routing:
26
26
  fallbacks: []
27
27
  graphql:
28
28
  operationName: IssueAssigneesUpdate
29
+ operationType: mutation
29
30
  documentPath: src/gql/operations/issue-assignees-update.graphql
30
31
  resolution:
31
32
  lookup:
@@ -23,6 +23,7 @@ routing:
23
23
  fallbacks: []
24
24
  graphql:
25
25
  operationName: IssueClose
26
+ operationType: mutation
26
27
  documentPath: src/gql/operations/issue-close.graphql
27
28
  resolution:
28
29
  lookup:
@@ -23,6 +23,7 @@ routing:
23
23
  fallbacks: []
24
24
  graphql:
25
25
  operationName: IssueCommentCreate
26
+ operationType: mutation
26
27
  documentPath: src/gql/operations/issue-comment-create.graphql
27
28
  resolution:
28
29
  lookup:
@@ -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,6 +25,7 @@ routing:
25
25
  fallbacks: []
26
26
  graphql:
27
27
  operationName: IssueCreate
28
+ operationType: mutation
28
29
  documentPath: src/gql/operations/issue-create.graphql
29
30
  resolution:
30
31
  lookup:
@@ -22,6 +22,7 @@ routing:
22
22
  fallbacks: []
23
23
  graphql:
24
24
  operationName: IssueDelete
25
+ operationType: mutation
25
26
  documentPath: src/gql/operations/issue-delete.graphql
26
27
  resolution:
27
28
  lookup:
@@ -27,6 +27,7 @@ routing:
27
27
  fallbacks: []
28
28
  graphql:
29
29
  operationName: IssueLabelsAdd
30
+ operationType: mutation
30
31
  documentPath: src/gql/operations/issue-labels-add.graphql
31
32
  resolution:
32
33
  lookup:
@@ -27,6 +27,7 @@ routing:
27
27
  fallbacks: [cli]
28
28
  graphql:
29
29
  operationName: IssueLabelsRemove
30
+ operationType: mutation
30
31
  documentPath: src/gql/operations/issue-labels-remove.graphql
31
32
  resolution:
32
33
  lookup:
@@ -26,6 +26,7 @@ routing:
26
26
  fallbacks: []
27
27
  graphql:
28
28
  operationName: IssueLabelsUpdate
29
+ operationType: mutation
29
30
  documentPath: src/gql/operations/issue-labels-update.graphql
30
31
  resolution:
31
32
  lookup:
@@ -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
@@ -21,6 +21,7 @@ routing:
21
21
  fallbacks: [cli]
22
22
  graphql:
23
23
  operationName: IssueMilestoneSet
24
+ operationType: mutation
24
25
  documentPath: src/gql/operations/issue-milestone-set.graphql
25
26
  resolution:
26
27
  lookup:
@@ -23,6 +23,7 @@ routing:
23
23
  fallbacks: []
24
24
  graphql:
25
25
  operationName: IssueMilestoneSet
26
+ operationType: mutation
26
27
  documentPath: src/gql/operations/issue-milestone-set.graphql
27
28
  resolution:
28
29
  lookup:
@@ -21,4 +21,5 @@ routing:
21
21
  fallbacks: []
22
22
  graphql:
23
23
  operationName: IssueBlockedByAdd
24
+ operationType: mutation
24
25
  documentPath: src/gql/operations/issue-blocked-by-add.graphql
@@ -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
@@ -19,6 +19,7 @@ routing:
19
19
  fallbacks: []
20
20
  graphql:
21
21
  operationName: IssueParentRemove
22
+ operationType: mutation
22
23
  documentPath: src/gql/operations/issue-parent-remove.graphql
23
24
  resolution:
24
25
  lookup:
@@ -21,4 +21,5 @@ routing:
21
21
  fallbacks: []
22
22
  graphql:
23
23
  operationName: IssueParentSet
24
+ operationType: mutation
24
25
  documentPath: src/gql/operations/issue-parent-set.graphql
@@ -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
@@ -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
@@ -23,6 +23,7 @@ routing:
23
23
  fallbacks: []
24
24
  graphql:
25
25
  operationName: IssueReopen
26
+ operationType: mutation
26
27
  documentPath: src/gql/operations/issue-reopen.graphql
27
28
  resolution:
28
29
  lookup:
@@ -26,6 +26,7 @@ routing:
26
26
  fallbacks: []
27
27
  graphql:
28
28
  operationName: IssueUpdate
29
+ operationType: mutation
29
30
  documentPath: src/gql/operations/issue-update.graphql
30
31
  resolution:
31
32
  lookup:
@@ -28,6 +28,7 @@ routing:
28
28
  - Prefer GraphQL for structured fetch; CLI fallback if gh auth unavailable.
29
29
  graphql:
30
30
  operationName: IssueView
31
+ operationType: query
31
32
  documentPath: src/gql/operations/issue-view.graphql
32
33
  cli:
33
34
  command: issue view
@@ -23,7 +23,11 @@ output_schema:
23
23
  items: { type: string }
24
24
  additionalProperties: false
25
25
  routing:
26
- preferred: cli
27
- fallbacks: []
26
+ preferred: graphql
27
+ fallbacks: [cli]
28
+ graphql:
29
+ operationName: PrAssigneesAdd
30
+ operationType: mutation
31
+ documentPath: src/gql/operations/pr-assignees-add.graphql
28
32
  cli:
29
33
  command: pr edit
@@ -23,7 +23,11 @@ output_schema:
23
23
  items: { type: string }
24
24
  additionalProperties: false
25
25
  routing:
26
- preferred: cli
27
- fallbacks: []
26
+ preferred: graphql
27
+ fallbacks: [cli]
28
+ graphql:
29
+ operationName: PrAssigneesRemove
30
+ operationType: mutation
31
+ documentPath: src/gql/operations/pr-assignees-remove.graphql
28
32
  cli:
29
33
  command: pr edit
@@ -17,7 +17,11 @@ output_schema:
17
17
  updated: { type: boolean }
18
18
  additionalProperties: false
19
19
  routing:
20
- preferred: cli
21
- fallbacks: []
20
+ preferred: graphql
21
+ fallbacks: [cli]
22
+ graphql:
23
+ operationName: PrBranchUpdate
24
+ operationType: mutation
25
+ documentPath: src/gql/operations/pr-branch-update.graphql
22
26
  cli:
23
27
  command: pr update-branch
@@ -3,7 +3,7 @@ version: "1.0.0"
3
3
  description: Create a pull request.
4
4
  input_schema:
5
5
  type: object
6
- required: [owner, name, title, head]
6
+ required: [owner, name, title, head, base]
7
7
  properties:
8
8
  owner: { type: string, minLength: 1 }
9
9
  name: { type: string, minLength: 1 }
@@ -24,7 +24,11 @@ output_schema:
24
24
  draft: { type: boolean }
25
25
  additionalProperties: false
26
26
  routing:
27
- preferred: cli
28
- fallbacks: []
27
+ preferred: graphql
28
+ fallbacks: [cli]
29
+ graphql:
30
+ operationName: PrCreate
31
+ operationType: mutation
32
+ documentPath: src/gql/operations/pr-create.graphql
29
33
  cli:
30
34
  command: pr create
@@ -38,6 +38,7 @@ routing:
38
38
  fallbacks: []
39
39
  graphql:
40
40
  operationName: PrDiffListFiles
41
+ operationType: query
41
42
  documentPath: src/gql/operations/pr-diff-list-files.graphql
42
43
  cli:
43
44
  command: pr view
@@ -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: PrList
45
+ operationType: query
45
46
  documentPath: src/gql/operations/pr-list.graphql
46
47
  cli:
47
48
  command: pr list
@@ -24,6 +24,7 @@ routing:
24
24
  fallbacks: [cli]
25
25
  graphql:
26
26
  operationName: PrMergeStatus
27
+ operationType: query
27
28
  documentPath: src/gql/operations/pr-merge-status.graphql
28
29
  cli:
29
30
  command: pr view
@@ -15,15 +15,21 @@ input_schema:
15
15
  additionalProperties: false
16
16
  output_schema:
17
17
  type: object
18
- required: [prNumber, method, queued, deleteBranch]
18
+ required: [prNumber, method, isMethodAssumed, queued, deleteBranch]
19
19
  properties:
20
20
  prNumber: { type: integer, minimum: 1 }
21
21
  method: { type: string, enum: [merge, squash, rebase] }
22
+ isMethodAssumed: { type: boolean, description: "true when method was not specified by the caller and defaults to merge" }
22
23
  queued: { type: boolean }
23
24
  deleteBranch: { type: boolean }
24
25
  additionalProperties: false
25
26
  routing:
26
- preferred: cli
27
- fallbacks: []
27
+ preferred: graphql
28
+ fallbacks: [cli]
29
+ graphql:
30
+ # GQL limitation: deleteBranch: true unsupported, triggers CLI fallback
31
+ operationName: PrMerge
32
+ operationType: mutation
33
+ documentPath: src/gql/operations/pr-merge.graphql
28
34
  cli:
29
35
  command: pr merge
@@ -42,6 +42,7 @@ routing:
42
42
  fallbacks: []
43
43
  graphql:
44
44
  operationName: PrReviewsList
45
+ operationType: query
45
46
  documentPath: src/gql/operations/pr-reviews-list.graphql
46
47
  cli:
47
48
  command: pr view
@@ -20,12 +20,15 @@ output_schema:
20
20
  prNumber: { type: integer, minimum: 1 }
21
21
  reviewers:
22
22
  type: array
23
- minItems: 1
24
23
  items: { type: string, minLength: 1 }
25
24
  updated: { type: boolean }
26
25
  additionalProperties: false
27
26
  routing:
28
- preferred: cli
29
- fallbacks: []
27
+ preferred: graphql
28
+ fallbacks: [cli]
29
+ graphql:
30
+ operationName: PrReviewsRequest
31
+ operationType: mutation
32
+ documentPath: src/gql/operations/pr-reviews-request.graphql
30
33
  cli:
31
34
  command: pr edit
@@ -52,6 +52,7 @@ routing:
52
52
  fallbacks: []
53
53
  graphql:
54
54
  operationName: PrReviewSubmit
55
+ operationType: mutation
55
56
  documentPath: src/gql/operations/pr-review-submit.graphql
56
57
  resolution:
57
58
  lookup:
@@ -93,6 +93,7 @@ routing:
93
93
  - Prefer GraphQL for review-thread semantics and unresolved filtering.
94
94
  graphql:
95
95
  operationName: PrCommentsList
96
+ operationType: query
96
97
  documentPath: src/gql/operations/pr-comments-list.graphql
97
98
  cli:
98
99
  command: api graphql
@@ -22,4 +22,5 @@ routing:
22
22
  fallbacks: []
23
23
  graphql:
24
24
  operationName: PrCommentReply
25
+ operationType: mutation
25
26
  documentPath: src/gql/operations/pr-comment-reply.graphql
@@ -19,4 +19,5 @@ routing:
19
19
  fallbacks: []
20
20
  graphql:
21
21
  operationName: PrCommentResolve
22
+ operationType: mutation
22
23
  documentPath: src/gql/operations/pr-comment-resolve.graphql
@@ -19,4 +19,5 @@ routing:
19
19
  fallbacks: []
20
20
  graphql:
21
21
  operationName: PrCommentUnresolve
22
+ operationType: mutation
22
23
  documentPath: src/gql/operations/pr-comment-unresolve.graphql
@@ -23,7 +23,12 @@ output_schema:
23
23
  draft: { type: boolean }
24
24
  additionalProperties: false
25
25
  routing:
26
- preferred: cli
27
- fallbacks: []
26
+ preferred: graphql
27
+ fallbacks: [cli]
28
+ graphql:
29
+ # GQL limitation: draft-only updates fall back to CLI
30
+ operationName: PrUpdate
31
+ operationType: mutation
32
+ documentPath: src/gql/operations/pr-update.graphql
28
33
  cli:
29
34
  command: pr edit
@@ -28,6 +28,7 @@ routing:
28
28
  - Prefer GraphQL for structured fetch; CLI fallback if gh auth unavailable.
29
29
  graphql:
30
30
  operationName: PrView
31
+ operationType: query
31
32
  documentPath: src/gql/operations/pr-view.graphql
32
33
  cli:
33
34
  command: pr view
@@ -7,6 +7,8 @@ input_schema:
7
7
  properties:
8
8
  owner: { type: string, minLength: 1 }
9
9
  projectNumber: { type: integer, minimum: 1 }
10
+ first: { type: integer, minimum: 1 }
11
+ after: { type: [string, "null"] }
10
12
  additionalProperties: false
11
13
  output_schema:
12
14
  type: object
@@ -21,6 +23,15 @@ output_schema:
21
23
  id: { type: [string, "null"] }
22
24
  name: { type: [string, "null"] }
23
25
  dataType: { type: [string, "null"] }
26
+ options:
27
+ type: [array, "null"]
28
+ items:
29
+ type: object
30
+ required: [id, name]
31
+ properties:
32
+ id: { type: string }
33
+ name: { type: string }
34
+ additionalProperties: false
24
35
  additionalProperties: false
25
36
  pageInfo:
26
37
  type: object
@@ -31,7 +42,12 @@ output_schema:
31
42
  additionalProperties: false
32
43
  additionalProperties: false
33
44
  routing:
34
- preferred: cli
35
- fallbacks: []
45
+ preferred: graphql
46
+ fallbacks: [cli]
47
+ graphql:
48
+ # GQL limitation: user fallback handled in domain handler
49
+ operationName: ProjectV2FieldsListOrg
50
+ operationType: query
51
+ documentPath: src/gql/operations/project-v2-fields-list-org.graphql
36
52
  cli:
37
53
  command: project field-list
@@ -17,13 +17,16 @@ input_schema:
17
17
  additionalProperties: false
18
18
  output_schema:
19
19
  type: object
20
- required: [itemId, updated]
20
+ required: [itemId]
21
21
  properties:
22
- itemId: { type: [string, "null"] }
23
- updated: { type: boolean }
22
+ itemId: { type: string }
24
23
  additionalProperties: false
25
24
  routing:
26
- preferred: cli
27
- fallbacks: []
25
+ preferred: graphql
26
+ fallbacks: [cli]
27
+ graphql:
28
+ operationName: UpdateProjectV2ItemField
29
+ operationType: mutation
30
+ documentPath: src/gql/operations/project-v2-item-field-update.graphql
28
31
  cli:
29
32
  command: project item-edit