@ghx-dev/core 0.1.0-beta.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/README.md +169 -114
  2. package/dist/agent-interface/tools/explain-tool.js +2 -2
  3. package/dist/agent-interface/tools/list-capabilities-tool.js +2 -2
  4. package/dist/agent.js +3 -3
  5. package/dist/cards/check_run.annotations.list.yaml +35 -0
  6. package/dist/cards/issue.assignees.update.yaml +27 -0
  7. package/dist/cards/issue.blocked_by.add.yaml +23 -0
  8. package/dist/cards/issue.blocked_by.remove.yaml +24 -0
  9. package/dist/cards/issue.close.yaml +24 -0
  10. package/dist/cards/issue.comments.create.yaml +24 -0
  11. package/dist/cards/issue.comments.list.yaml +48 -0
  12. package/dist/cards/issue.create.yaml +28 -0
  13. package/dist/cards/issue.delete.yaml +23 -0
  14. package/dist/cards/issue.labels.update.yaml +27 -0
  15. package/dist/cards/issue.linked_prs.list.yaml +34 -0
  16. package/dist/cards/issue.list.yaml +48 -0
  17. package/dist/cards/issue.milestone.set.yaml +23 -0
  18. package/dist/cards/issue.parent.remove.yaml +22 -0
  19. package/dist/cards/issue.parent.set.yaml +23 -0
  20. package/dist/cards/issue.relations.get.yaml +54 -0
  21. package/dist/cards/issue.reopen.yaml +24 -0
  22. package/dist/cards/issue.update.yaml +27 -0
  23. package/dist/cards/issue.view.yaml +32 -0
  24. package/dist/cards/pr.assignees.update.yaml +38 -0
  25. package/dist/cards/pr.branch.update.yaml +23 -0
  26. package/dist/cards/pr.checks.get_failed.yaml +42 -0
  27. package/dist/cards/pr.checks.rerun_all.yaml +26 -0
  28. package/dist/cards/pr.checks.rerun_failed.yaml +26 -0
  29. package/dist/cards/pr.comment.reply.yaml +23 -0
  30. package/dist/cards/pr.comment.resolve.yaml +22 -0
  31. package/dist/cards/pr.comment.unresolve.yaml +22 -0
  32. package/dist/cards/pr.comments.list.yaml +98 -0
  33. package/dist/cards/pr.diff.list_files.yaml +43 -0
  34. package/dist/cards/pr.list.yaml +48 -0
  35. package/dist/cards/pr.merge.execute.yaml +29 -0
  36. package/dist/cards/pr.mergeability.view.yaml +27 -0
  37. package/dist/cards/pr.ready_for_review.set.yaml +24 -0
  38. package/dist/cards/pr.review.submit_approve.yaml +26 -0
  39. package/dist/cards/pr.review.submit_comment.yaml +26 -0
  40. package/dist/cards/pr.review.submit_request_changes.yaml +26 -0
  41. package/dist/cards/pr.reviewers.request.yaml +31 -0
  42. package/dist/cards/pr.reviews.list.yaml +47 -0
  43. package/dist/cards/pr.status.checks.yaml +42 -0
  44. package/dist/cards/pr.view.yaml +32 -0
  45. package/dist/cards/project_v2.fields.list.yaml +37 -0
  46. package/dist/cards/project_v2.item.add_issue.yaml +23 -0
  47. package/dist/cards/project_v2.item.field.update.yaml +29 -0
  48. package/dist/cards/project_v2.items.list.yaml +39 -0
  49. package/dist/cards/project_v2.org.get.yaml +26 -0
  50. package/dist/cards/project_v2.user.get.yaml +26 -0
  51. package/dist/cards/release.create_draft.yaml +36 -0
  52. package/dist/cards/release.get.yaml +30 -0
  53. package/dist/cards/release.list.yaml +44 -0
  54. package/dist/cards/release.publish_draft.yaml +36 -0
  55. package/dist/cards/release.update.yaml +38 -0
  56. package/dist/cards/repo.issue_types.list.yaml +40 -0
  57. package/dist/cards/repo.labels.list.yaml +41 -0
  58. package/dist/cards/repo.view.yaml +34 -0
  59. package/dist/cards/workflow.get.yaml +30 -0
  60. package/dist/cards/workflow.list.yaml +40 -0
  61. package/dist/cards/workflow_dispatch.run.yaml +29 -0
  62. package/dist/cards/workflow_job.logs.analyze.yaml +33 -0
  63. package/dist/cards/workflow_job.logs.get.yaml +24 -0
  64. package/dist/cards/workflow_run.artifacts.list.yaml +40 -0
  65. package/dist/cards/workflow_run.cancel.yaml +23 -0
  66. package/dist/cards/workflow_run.get.yaml +33 -0
  67. package/dist/cards/workflow_run.jobs.list.yaml +35 -0
  68. package/dist/cards/workflow_run.rerun_all.yaml +23 -0
  69. package/dist/cards/workflow_run.rerun_failed.yaml +23 -0
  70. package/dist/cards/workflow_runs.list.yaml +45 -0
  71. package/dist/{chunk-GPU4P7UG.js → chunk-22WWCK6A.js} +3 -3
  72. package/dist/{chunk-Q4RTT3DV.js → chunk-3MRJX72M.js} +5 -5
  73. package/dist/{chunk-MMG6CIKK.js → chunk-4PLVKNCF.js} +2 -2
  74. package/dist/{chunk-3RJCF42N.js → chunk-GMTG7X2L.js} +2 -2
  75. package/dist/{chunk-BJHVAFTN.js → chunk-HQ2VRCH7.js} +2 -2
  76. package/dist/{chunk-MT4U5DYD.js → chunk-JH6GM6XU.js} +47 -2
  77. package/dist/chunk-JH6GM6XU.js.map +1 -0
  78. package/dist/chunk-JLDU462R.js +1352 -0
  79. package/dist/chunk-JLDU462R.js.map +1 -0
  80. package/dist/{chunk-YNQNHCRS.js → chunk-MGNGSGMF.js} +8 -3
  81. package/dist/chunk-MGNGSGMF.js.map +1 -0
  82. package/dist/chunk-SA2D4A5U.js +1496 -0
  83. package/dist/chunk-SA2D4A5U.js.map +1 -0
  84. package/dist/{chunk-WYSY75U7.js → chunk-SD7U4BNA.js} +32 -14
  85. package/dist/chunk-SD7U4BNA.js.map +1 -0
  86. package/dist/{chunk-QX34GTH6.js → chunk-SJR2SACI.js} +2 -2
  87. package/dist/chunk-XNMM64WU.js +221 -0
  88. package/dist/chunk-XNMM64WU.js.map +1 -0
  89. package/dist/cli/commands/capabilities-explain.js +3 -3
  90. package/dist/cli/commands/capabilities-list.js +3 -3
  91. package/dist/cli/commands/run.js +14 -14
  92. package/dist/cli/commands/setup.js +1 -1
  93. package/dist/cli/index.js +21 -21
  94. package/dist/core/contracts/tasks/issue.assignees.update.d.ts +5 -0
  95. package/dist/core/contracts/tasks/issue.assignees.update.js +8 -0
  96. package/dist/core/contracts/tasks/issue.assignees.update.js.map +1 -0
  97. package/dist/core/contracts/tasks/issue.blocked_by.add.d.ts +5 -0
  98. package/dist/core/contracts/tasks/issue.blocked_by.add.js +8 -0
  99. package/dist/core/contracts/tasks/issue.blocked_by.add.js.map +1 -0
  100. package/dist/core/contracts/tasks/issue.blocked_by.remove.d.ts +5 -0
  101. package/dist/core/contracts/tasks/issue.blocked_by.remove.js +8 -0
  102. package/dist/core/contracts/tasks/issue.blocked_by.remove.js.map +1 -0
  103. package/dist/core/contracts/tasks/issue.close.d.ts +5 -0
  104. package/dist/core/contracts/tasks/issue.close.js +8 -0
  105. package/dist/core/contracts/tasks/issue.close.js.map +1 -0
  106. package/dist/core/contracts/tasks/issue.comments.create.d.ts +5 -0
  107. package/dist/core/contracts/tasks/issue.comments.create.js +8 -0
  108. package/dist/core/contracts/tasks/issue.comments.create.js.map +1 -0
  109. package/dist/core/contracts/tasks/issue.create.d.ts +5 -0
  110. package/dist/core/contracts/tasks/issue.create.js +8 -0
  111. package/dist/core/contracts/tasks/issue.create.js.map +1 -0
  112. package/dist/core/contracts/tasks/issue.delete.d.ts +5 -0
  113. package/dist/core/contracts/tasks/issue.delete.js +8 -0
  114. package/dist/core/contracts/tasks/issue.delete.js.map +1 -0
  115. package/dist/core/contracts/tasks/issue.labels.update.d.ts +5 -0
  116. package/dist/core/contracts/tasks/issue.labels.update.js +8 -0
  117. package/dist/core/contracts/tasks/issue.labels.update.js.map +1 -0
  118. package/dist/core/contracts/tasks/issue.linked_prs.list.d.ts +5 -0
  119. package/dist/core/contracts/tasks/issue.linked_prs.list.js +8 -0
  120. package/dist/core/contracts/tasks/issue.linked_prs.list.js.map +1 -0
  121. package/dist/core/contracts/tasks/issue.milestone.set.d.ts +5 -0
  122. package/dist/core/contracts/tasks/issue.milestone.set.js +8 -0
  123. package/dist/core/contracts/tasks/issue.milestone.set.js.map +1 -0
  124. package/dist/core/contracts/tasks/issue.parent.remove.d.ts +5 -0
  125. package/dist/core/contracts/tasks/issue.parent.remove.js +8 -0
  126. package/dist/core/contracts/tasks/issue.parent.remove.js.map +1 -0
  127. package/dist/core/contracts/tasks/issue.parent.set.d.ts +5 -0
  128. package/dist/core/contracts/tasks/issue.parent.set.js +8 -0
  129. package/dist/core/contracts/tasks/issue.parent.set.js.map +1 -0
  130. package/dist/core/contracts/tasks/issue.relations.get.d.ts +5 -0
  131. package/dist/core/contracts/tasks/issue.relations.get.js +8 -0
  132. package/dist/core/contracts/tasks/issue.relations.get.js.map +1 -0
  133. package/dist/core/contracts/tasks/issue.reopen.d.ts +5 -0
  134. package/dist/core/contracts/tasks/issue.reopen.js +8 -0
  135. package/dist/core/contracts/tasks/issue.reopen.js.map +1 -0
  136. package/dist/core/contracts/tasks/issue.update.d.ts +5 -0
  137. package/dist/core/contracts/tasks/issue.update.js +8 -0
  138. package/dist/core/contracts/tasks/issue.update.js.map +1 -0
  139. package/dist/core/contracts/tasks/pr.assignees.update.d.ts +5 -0
  140. package/dist/core/contracts/tasks/pr.assignees.update.js +8 -0
  141. package/dist/core/contracts/tasks/pr.assignees.update.js.map +1 -0
  142. package/dist/core/contracts/tasks/pr.branch.update.d.ts +5 -0
  143. package/dist/core/contracts/tasks/pr.branch.update.js +8 -0
  144. package/dist/core/contracts/tasks/pr.branch.update.js.map +1 -0
  145. package/dist/core/contracts/tasks/pr.checks.rerun_all.d.ts +5 -0
  146. package/dist/core/contracts/tasks/pr.checks.rerun_all.js +8 -0
  147. package/dist/core/contracts/tasks/pr.checks.rerun_all.js.map +1 -0
  148. package/dist/core/contracts/tasks/pr.checks.rerun_failed.d.ts +5 -0
  149. package/dist/core/contracts/tasks/pr.checks.rerun_failed.js +8 -0
  150. package/dist/core/contracts/tasks/pr.checks.rerun_failed.js.map +1 -0
  151. package/dist/core/contracts/tasks/pr.merge.execute.d.ts +5 -0
  152. package/dist/core/contracts/tasks/pr.merge.execute.js +8 -0
  153. package/dist/core/contracts/tasks/pr.merge.execute.js.map +1 -0
  154. package/dist/core/contracts/tasks/pr.review.submit_approve.d.ts +5 -0
  155. package/dist/core/contracts/tasks/pr.review.submit_approve.js +8 -0
  156. package/dist/core/contracts/tasks/pr.review.submit_approve.js.map +1 -0
  157. package/dist/core/contracts/tasks/pr.review.submit_comment.d.ts +5 -0
  158. package/dist/core/contracts/tasks/pr.review.submit_comment.js +8 -0
  159. package/dist/core/contracts/tasks/pr.review.submit_comment.js.map +1 -0
  160. package/dist/core/contracts/tasks/pr.review.submit_request_changes.d.ts +5 -0
  161. package/dist/core/contracts/tasks/pr.review.submit_request_changes.js +8 -0
  162. package/dist/core/contracts/tasks/pr.review.submit_request_changes.js.map +1 -0
  163. package/dist/core/contracts/tasks/pr.reviewers.request.d.ts +5 -0
  164. package/dist/core/contracts/tasks/pr.reviewers.request.js +8 -0
  165. package/dist/core/contracts/tasks/pr.reviewers.request.js.map +1 -0
  166. package/dist/core/contracts/tasks/project_v2.fields.list.d.ts +5 -0
  167. package/dist/core/contracts/tasks/project_v2.fields.list.js +8 -0
  168. package/dist/core/contracts/tasks/project_v2.fields.list.js.map +1 -0
  169. package/dist/core/contracts/tasks/project_v2.item.add_issue.d.ts +5 -0
  170. package/dist/core/contracts/tasks/project_v2.item.add_issue.js +8 -0
  171. package/dist/core/contracts/tasks/project_v2.item.add_issue.js.map +1 -0
  172. package/dist/core/contracts/tasks/project_v2.item.field.update.d.ts +5 -0
  173. package/dist/core/contracts/tasks/project_v2.item.field.update.js +8 -0
  174. package/dist/core/contracts/tasks/project_v2.item.field.update.js.map +1 -0
  175. package/dist/core/contracts/tasks/project_v2.items.list.d.ts +5 -0
  176. package/dist/core/contracts/tasks/project_v2.items.list.js +8 -0
  177. package/dist/core/contracts/tasks/project_v2.items.list.js.map +1 -0
  178. package/dist/core/contracts/tasks/project_v2.org.get.d.ts +5 -0
  179. package/dist/core/contracts/tasks/project_v2.org.get.js +8 -0
  180. package/dist/core/contracts/tasks/project_v2.org.get.js.map +1 -0
  181. package/dist/core/contracts/tasks/project_v2.user.get.d.ts +5 -0
  182. package/dist/core/contracts/tasks/project_v2.user.get.js +8 -0
  183. package/dist/core/contracts/tasks/project_v2.user.get.js.map +1 -0
  184. package/dist/core/contracts/tasks/release.create_draft.d.ts +5 -0
  185. package/dist/core/contracts/tasks/release.create_draft.js +8 -0
  186. package/dist/core/contracts/tasks/release.create_draft.js.map +1 -0
  187. package/dist/core/contracts/tasks/release.get.d.ts +5 -0
  188. package/dist/core/contracts/tasks/release.get.js +8 -0
  189. package/dist/core/contracts/tasks/release.get.js.map +1 -0
  190. package/dist/core/contracts/tasks/release.list.d.ts +5 -0
  191. package/dist/core/contracts/tasks/release.list.js +8 -0
  192. package/dist/core/contracts/tasks/release.list.js.map +1 -0
  193. package/dist/core/contracts/tasks/release.publish_draft.d.ts +5 -0
  194. package/dist/core/contracts/tasks/release.publish_draft.js +8 -0
  195. package/dist/core/contracts/tasks/release.publish_draft.js.map +1 -0
  196. package/dist/core/contracts/tasks/release.update.d.ts +5 -0
  197. package/dist/core/contracts/tasks/release.update.js +8 -0
  198. package/dist/core/contracts/tasks/release.update.js.map +1 -0
  199. package/dist/core/contracts/tasks/repo.issue_types.list.d.ts +5 -0
  200. package/dist/core/contracts/tasks/repo.issue_types.list.js +8 -0
  201. package/dist/core/contracts/tasks/repo.issue_types.list.js.map +1 -0
  202. package/dist/core/contracts/tasks/repo.labels.list.d.ts +5 -0
  203. package/dist/core/contracts/tasks/repo.labels.list.js +8 -0
  204. package/dist/core/contracts/tasks/repo.labels.list.js.map +1 -0
  205. package/dist/core/contracts/tasks/workflow.get.d.ts +5 -0
  206. package/dist/core/contracts/tasks/workflow.get.js +8 -0
  207. package/dist/core/contracts/tasks/workflow.get.js.map +1 -0
  208. package/dist/core/contracts/tasks/workflow.list.d.ts +5 -0
  209. package/dist/core/contracts/tasks/workflow.list.js +8 -0
  210. package/dist/core/contracts/tasks/workflow.list.js.map +1 -0
  211. package/dist/core/contracts/tasks/workflow_dispatch.run.d.ts +5 -0
  212. package/dist/core/contracts/tasks/workflow_dispatch.run.js +8 -0
  213. package/dist/core/contracts/tasks/workflow_dispatch.run.js.map +1 -0
  214. package/dist/core/contracts/tasks/workflow_run.artifacts.list.d.ts +5 -0
  215. package/dist/core/contracts/tasks/workflow_run.artifacts.list.js +8 -0
  216. package/dist/core/contracts/tasks/workflow_run.artifacts.list.js.map +1 -0
  217. package/dist/core/contracts/tasks/workflow_run.cancel.d.ts +5 -0
  218. package/dist/core/contracts/tasks/workflow_run.cancel.js +8 -0
  219. package/dist/core/contracts/tasks/workflow_run.cancel.js.map +1 -0
  220. package/dist/core/contracts/tasks/workflow_run.get.d.ts +5 -0
  221. package/dist/core/contracts/tasks/workflow_run.get.js +8 -0
  222. package/dist/core/contracts/tasks/workflow_run.get.js.map +1 -0
  223. package/dist/core/contracts/tasks/workflow_run.rerun_all.d.ts +5 -0
  224. package/dist/core/contracts/tasks/workflow_run.rerun_all.js +8 -0
  225. package/dist/core/contracts/tasks/workflow_run.rerun_all.js.map +1 -0
  226. package/dist/core/contracts/tasks/workflow_run.rerun_failed.d.ts +5 -0
  227. package/dist/core/contracts/tasks/workflow_run.rerun_failed.js +8 -0
  228. package/dist/core/contracts/tasks/workflow_run.rerun_failed.js.map +1 -0
  229. package/dist/core/execute/execute.js +2 -2
  230. package/dist/core/execution/adapters/cli-adapter.js +4 -4
  231. package/dist/core/execution/adapters/cli-capability-adapter.d.ts +1 -1
  232. package/dist/core/execution/adapters/cli-capability-adapter.js +2 -2
  233. package/dist/core/execution/adapters/graphql-adapter.js +4 -4
  234. package/dist/core/execution/adapters/graphql-capability-adapter.d.ts +2 -2
  235. package/dist/core/execution/adapters/graphql-capability-adapter.js +2 -2
  236. package/dist/core/registry/cards/issue.assignees.update.yaml +27 -0
  237. package/dist/core/registry/cards/issue.blocked_by.add.yaml +23 -0
  238. package/dist/core/registry/cards/issue.blocked_by.remove.yaml +24 -0
  239. package/dist/core/registry/cards/issue.close.yaml +24 -0
  240. package/dist/core/registry/cards/issue.comments.create.yaml +24 -0
  241. package/dist/core/registry/cards/issue.create.yaml +28 -0
  242. package/dist/core/registry/cards/issue.delete.yaml +23 -0
  243. package/dist/core/registry/cards/issue.labels.update.yaml +27 -0
  244. package/dist/core/registry/cards/issue.linked_prs.list.yaml +34 -0
  245. package/dist/core/registry/cards/issue.milestone.set.yaml +23 -0
  246. package/dist/core/registry/cards/issue.parent.remove.yaml +22 -0
  247. package/dist/core/registry/cards/issue.parent.set.yaml +23 -0
  248. package/dist/core/registry/cards/issue.relations.get.yaml +54 -0
  249. package/dist/core/registry/cards/issue.reopen.yaml +24 -0
  250. package/dist/core/registry/cards/issue.update.yaml +27 -0
  251. package/dist/core/registry/cards/pr.assignees.update.yaml +38 -0
  252. package/dist/core/registry/cards/pr.branch.update.yaml +23 -0
  253. package/dist/core/registry/cards/pr.checks.rerun_all.yaml +26 -0
  254. package/dist/core/registry/cards/pr.checks.rerun_failed.yaml +26 -0
  255. package/dist/core/registry/cards/pr.merge.execute.yaml +29 -0
  256. package/dist/core/registry/cards/pr.review.submit_approve.yaml +26 -0
  257. package/dist/core/registry/cards/pr.review.submit_comment.yaml +26 -0
  258. package/dist/core/registry/cards/pr.review.submit_request_changes.yaml +26 -0
  259. package/dist/core/registry/cards/pr.reviewers.request.yaml +31 -0
  260. package/dist/core/registry/cards/project_v2.fields.list.yaml +37 -0
  261. package/dist/core/registry/cards/project_v2.item.add_issue.yaml +23 -0
  262. package/dist/core/registry/cards/project_v2.item.field.update.yaml +29 -0
  263. package/dist/core/registry/cards/project_v2.items.list.yaml +39 -0
  264. package/dist/core/registry/cards/project_v2.org.get.yaml +26 -0
  265. package/dist/core/registry/cards/project_v2.user.get.yaml +26 -0
  266. package/dist/core/registry/cards/release.create_draft.yaml +36 -0
  267. package/dist/core/registry/cards/release.get.yaml +30 -0
  268. package/dist/core/registry/cards/release.list.yaml +44 -0
  269. package/dist/core/registry/cards/release.publish_draft.yaml +36 -0
  270. package/dist/core/registry/cards/release.update.yaml +38 -0
  271. package/dist/core/registry/cards/repo.issue_types.list.yaml +40 -0
  272. package/dist/core/registry/cards/repo.labels.list.yaml +41 -0
  273. package/dist/core/registry/cards/workflow.get.yaml +30 -0
  274. package/dist/core/registry/cards/workflow.list.yaml +40 -0
  275. package/dist/core/registry/cards/workflow_dispatch.run.yaml +29 -0
  276. package/dist/core/registry/cards/workflow_run.artifacts.list.yaml +40 -0
  277. package/dist/core/registry/cards/workflow_run.cancel.yaml +23 -0
  278. package/dist/core/registry/cards/workflow_run.get.yaml +33 -0
  279. package/dist/core/registry/cards/workflow_run.rerun_all.yaml +23 -0
  280. package/dist/core/registry/cards/workflow_run.rerun_failed.yaml +23 -0
  281. package/dist/core/registry/index.js +1 -1
  282. package/dist/core/routing/capability-registry.js +1 -1
  283. package/dist/core/routing/engine.js +9 -9
  284. package/dist/gql/client.d.ts +132 -1
  285. package/dist/gql/client.js +6 -4
  286. package/dist/gql/operations/issue-assignees-update.generated.d.ts +33 -0
  287. package/dist/gql/operations/issue-assignees-update.generated.js +28 -0
  288. package/dist/gql/operations/issue-assignees-update.generated.js.map +1 -0
  289. package/dist/gql/operations/issue-blocked-by-add.generated.d.ts +30 -0
  290. package/dist/gql/operations/issue-blocked-by-add.generated.js +26 -0
  291. package/dist/gql/operations/issue-blocked-by-add.generated.js.map +1 -0
  292. package/dist/gql/operations/issue-blocked-by-remove.generated.d.ts +30 -0
  293. package/dist/gql/operations/issue-blocked-by-remove.generated.js +26 -0
  294. package/dist/gql/operations/issue-blocked-by-remove.generated.js.map +1 -0
  295. package/dist/gql/operations/issue-close.generated.d.ts +27 -0
  296. package/dist/gql/operations/issue-close.generated.js +25 -0
  297. package/dist/gql/operations/issue-close.generated.js.map +1 -0
  298. package/dist/gql/operations/issue-comment-create.generated.d.ts +31 -0
  299. package/dist/gql/operations/issue-comment-create.generated.js +27 -0
  300. package/dist/gql/operations/issue-comment-create.generated.js.map +1 -0
  301. package/dist/gql/operations/issue-create.generated.d.ts +31 -0
  302. package/dist/gql/operations/issue-create.generated.js +27 -0
  303. package/dist/gql/operations/issue-create.generated.js.map +1 -0
  304. package/dist/gql/operations/issue-delete.generated.d.ts +22 -0
  305. package/dist/gql/operations/issue-delete.generated.js +21 -0
  306. package/dist/gql/operations/issue-delete.generated.js.map +1 -0
  307. package/dist/gql/operations/issue-labels-update.generated.d.ts +33 -0
  308. package/dist/gql/operations/issue-labels-update.generated.js +28 -0
  309. package/dist/gql/operations/issue-labels-update.generated.js.map +1 -0
  310. package/dist/gql/operations/issue-linked-prs-list.generated.d.ts +132 -0
  311. package/dist/gql/operations/issue-linked-prs-list.generated.js +39 -0
  312. package/dist/gql/operations/issue-linked-prs-list.generated.js.map +1 -0
  313. package/dist/gql/operations/issue-milestone-set.generated.d.ts +30 -0
  314. package/dist/gql/operations/issue-milestone-set.generated.js +26 -0
  315. package/dist/gql/operations/issue-milestone-set.generated.js.map +1 -0
  316. package/dist/gql/operations/issue-parent-remove.generated.d.ts +30 -0
  317. package/dist/gql/operations/issue-parent-remove.generated.js +26 -0
  318. package/dist/gql/operations/issue-parent-remove.generated.js.map +1 -0
  319. package/dist/gql/operations/issue-parent-set.generated.d.ts +30 -0
  320. package/dist/gql/operations/issue-parent-set.generated.js +26 -0
  321. package/dist/gql/operations/issue-parent-set.generated.js.map +1 -0
  322. package/dist/gql/operations/issue-relations-get.generated.d.ts +49 -0
  323. package/dist/gql/operations/issue-relations-get.generated.js +40 -0
  324. package/dist/gql/operations/issue-relations-get.generated.js.map +1 -0
  325. package/dist/gql/operations/issue-reopen.generated.d.ts +27 -0
  326. package/dist/gql/operations/issue-reopen.generated.js +25 -0
  327. package/dist/gql/operations/issue-reopen.generated.js.map +1 -0
  328. package/dist/gql/operations/issue-update.generated.d.ts +31 -0
  329. package/dist/gql/operations/issue-update.generated.js +27 -0
  330. package/dist/gql/operations/issue-update.generated.js.map +1 -0
  331. package/dist/index.d.ts +1 -1
  332. package/dist/index.js +15 -13
  333. package/package.json +42 -15
  334. package/dist/chunk-3RAT5BCB.js +0 -584
  335. package/dist/chunk-3RAT5BCB.js.map +0 -1
  336. package/dist/chunk-MT4U5DYD.js.map +0 -1
  337. package/dist/chunk-WYSY75U7.js.map +0 -1
  338. package/dist/chunk-YNNDBMNR.js +0 -113
  339. package/dist/chunk-YNNDBMNR.js.map +0 -1
  340. package/dist/chunk-YNQNHCRS.js.map +0 -1
  341. package/dist/chunk-YQDQX4BT.js +0 -624
  342. package/dist/chunk-YQDQX4BT.js.map +0 -1
  343. /package/dist/{chunk-GPU4P7UG.js.map → chunk-22WWCK6A.js.map} +0 -0
  344. /package/dist/{chunk-Q4RTT3DV.js.map → chunk-3MRJX72M.js.map} +0 -0
  345. /package/dist/{chunk-MMG6CIKK.js.map → chunk-4PLVKNCF.js.map} +0 -0
  346. /package/dist/{chunk-3RJCF42N.js.map → chunk-GMTG7X2L.js.map} +0 -0
  347. /package/dist/{chunk-BJHVAFTN.js.map → chunk-HQ2VRCH7.js.map} +0 -0
  348. /package/dist/{chunk-QX34GTH6.js.map → chunk-SJR2SACI.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/gql/client.ts"],"sourcesContent":["import { print, type DocumentNode } from \"graphql\"\nimport type { GraphQLClient, RequestDocument, RequestOptions } from \"graphql-request\"\n\nimport {\n getSdk as getIssueCommentsListSdk\n} from \"./operations/issue-comments-list.generated.js\"\nimport {\n getSdk as getIssueListSdk\n} from \"./operations/issue-list.generated.js\"\nimport {\n getSdk as getIssueViewSdk\n} from \"./operations/issue-view.generated.js\"\nimport {\n getSdk as getPrDiffListFilesSdk\n} from \"./operations/pr-diff-list-files.generated.js\"\nimport {\n getSdk as getPrReviewsListSdk\n} from \"./operations/pr-reviews-list.generated.js\"\nimport {\n getSdk as getPrListSdk\n} from \"./operations/pr-list.generated.js\"\nimport {\n getSdk as getPrViewSdk\n} from \"./operations/pr-view.generated.js\"\nimport {\n getSdk as getRepoViewSdk\n} from \"./operations/repo-view.generated.js\"\nimport type {\n IssueCommentsListQuery,\n IssueCommentsListQueryVariables,\n} from \"./operations/issue-comments-list.generated.js\"\nimport type {\n IssueListQuery,\n IssueListQueryVariables,\n} from \"./operations/issue-list.generated.js\"\nimport type {\n IssueViewQuery,\n IssueViewQueryVariables,\n} from \"./operations/issue-view.generated.js\"\nimport type {\n PrDiffListFilesQuery,\n PrDiffListFilesQueryVariables,\n} from \"./operations/pr-diff-list-files.generated.js\"\nimport type {\n PrReviewsListQuery,\n PrReviewsListQueryVariables,\n} from \"./operations/pr-reviews-list.generated.js\"\nimport type {\n PrListQuery,\n PrListQueryVariables,\n} from \"./operations/pr-list.generated.js\"\nimport type {\n PrViewQuery,\n PrViewQueryVariables,\n} from \"./operations/pr-view.generated.js\"\nimport type {\n RepoViewQuery,\n RepoViewQueryVariables\n} from \"./operations/repo-view.generated.js\"\n\nexport type GraphqlVariables = Record<string, unknown>\ntype GraphqlDocument = string | DocumentNode\ntype QueryLike = GraphqlDocument | RequestDocument\n\nexport interface GraphqlTransport {\n execute<TData>(query: string, variables?: GraphqlVariables): Promise<TData>\n}\n\nexport interface GraphqlClient {\n query<TData, TVariables extends GraphqlVariables = GraphqlVariables>(\n query: GraphqlDocument,\n variables?: TVariables\n ): Promise<TData>\n}\n\nexport type RepoViewInput = RepoViewQueryVariables\nexport type IssueCommentsListInput = IssueCommentsListQueryVariables\nexport type IssueListInput = IssueListQueryVariables\nexport type IssueViewInput = IssueViewQueryVariables\nexport type PrListInput = PrListQueryVariables\nexport type PrViewInput = PrViewQueryVariables\nexport type PrReviewsListInput = PrReviewsListQueryVariables\nexport type PrDiffListFilesInput = PrDiffListFilesQueryVariables\n\nexport type PrCommentsListInput = {\n owner: string\n name: string\n prNumber: number\n first: number\n after?: string | null\n unresolvedOnly?: boolean\n includeOutdated?: boolean\n}\n\nexport type IssueCreateInput = {\n owner: string\n name: string\n title: string\n body?: string\n}\n\nexport type IssueUpdateInput = {\n issueId: string\n title?: string\n body?: string\n}\n\nexport type IssueMutationInput = {\n issueId: string\n}\n\nexport type IssueLabelsUpdateInput = {\n issueId: string\n labels: string[]\n}\n\nexport type IssueAssigneesUpdateInput = {\n issueId: string\n assignees: string[]\n}\n\nexport type IssueMilestoneSetInput = {\n issueId: string\n milestoneNumber: number | null\n}\n\nexport type IssueCommentCreateInput = {\n issueId: string\n body: string\n}\n\nexport type IssueLinkedPrsListInput = {\n owner: string\n name: string\n issueNumber: number\n}\n\nexport type IssueRelationsGetInput = IssueLinkedPrsListInput\n\nexport type IssueParentSetInput = {\n issueId: string\n parentIssueId: string\n}\n\nexport type IssueParentRemoveInput = {\n issueId: string\n}\n\nexport type IssueBlockedByInput = {\n issueId: string\n blockedByIssueId: string\n}\n\nexport type RepoViewData = {\n id: string\n name: string\n nameWithOwner: string\n isPrivate: boolean\n stargazerCount: number\n forkCount: number\n url: string\n defaultBranch: string | null\n}\n\nexport type IssueViewData = {\n id: string\n number: number\n title: string\n state: string\n url: string\n}\n\nexport type IssueListData = {\n items: Array<IssueViewData>\n pageInfo: {\n endCursor: string | null\n hasNextPage: boolean\n }\n}\n\nexport type IssueCommentData = {\n id: string\n body: string\n authorLogin: string | null\n createdAt: string\n url: string\n}\n\nexport type IssueCommentsListData = {\n items: Array<IssueCommentData>\n pageInfo: {\n endCursor: string | null\n hasNextPage: boolean\n }\n}\n\nexport type IssueMutationData = {\n id: string\n number: number\n title?: string\n state?: string\n url?: string\n closed?: boolean\n reopened?: boolean\n deleted?: boolean\n}\n\nexport type IssueLabelsUpdateData = {\n id: string\n labels: string[]\n}\n\nexport type IssueAssigneesUpdateData = {\n id: string\n assignees: string[]\n}\n\nexport type IssueMilestoneSetData = {\n id: string\n milestoneNumber: number | null\n}\n\nexport type IssueCommentCreateData = {\n id: string\n body: string\n url: string\n}\n\nexport type IssueLinkedPrData = {\n id: string\n number: number\n title: string\n state: string\n url: string\n}\n\nexport type IssueLinkedPrsListData = {\n items: Array<IssueLinkedPrData>\n}\n\nexport type IssueRelationNodeData = {\n id: string\n number: number\n}\n\nexport type IssueRelationsGetData = {\n issue: IssueRelationNodeData\n parent: IssueRelationNodeData | null\n children: Array<IssueRelationNodeData>\n blockedBy: Array<IssueRelationNodeData>\n}\n\nexport type IssueParentSetData = {\n issueId: string\n parentIssueId: string\n}\n\nexport type IssueParentRemoveData = {\n issueId: string\n parentRemoved: boolean\n}\n\nexport type IssueBlockedByData = {\n issueId: string\n blockedByIssueId: string\n removed?: boolean\n}\n\nexport type PrViewData = {\n id: string\n number: number\n title: string\n state: string\n url: string\n}\n\nexport type PrListData = {\n items: Array<PrViewData>\n pageInfo: {\n endCursor: string | null\n hasNextPage: boolean\n }\n}\n\nexport type PrReviewThreadCommentData = {\n id: string\n authorLogin: string | null\n body: string\n createdAt: string\n url: string\n}\n\nexport type PrReviewThreadData = {\n id: string\n path: string | null\n line: number | null\n startLine: number | null\n diffSide: string | null\n subjectType: string | null\n isResolved: boolean\n isOutdated: boolean\n viewerCanReply: boolean\n viewerCanResolve: boolean\n viewerCanUnresolve: boolean\n resolvedByLogin: string | null\n comments: Array<PrReviewThreadCommentData>\n}\n\nexport type PrCommentsListData = {\n items: Array<PrReviewThreadData>\n pageInfo: {\n endCursor: string | null\n hasNextPage: boolean\n }\n filterApplied: {\n unresolvedOnly: boolean\n includeOutdated: boolean\n }\n scan: {\n pagesScanned: number\n sourceItemsScanned: number\n scanTruncated: boolean\n }\n}\n\nexport type PrReviewData = {\n id: string\n authorLogin: string | null\n body: string\n state: string\n submittedAt: string | null\n url: string\n commitOid: string | null\n}\n\nexport type PrReviewsListData = {\n items: Array<PrReviewData>\n pageInfo: {\n endCursor: string | null\n hasNextPage: boolean\n }\n}\n\nexport type PrDiffFileData = {\n path: string\n additions: number\n deletions: number\n}\n\nexport type PrDiffListFilesData = {\n items: Array<PrDiffFileData>\n pageInfo: {\n endCursor: string | null\n hasNextPage: boolean\n }\n}\n\nexport type ReviewThreadMutationInput = {\n threadId: string\n}\n\nexport type ReplyToReviewThreadInput = ReviewThreadMutationInput & {\n body: string\n}\n\nexport type ReviewThreadMutationData = {\n id: string\n isResolved: boolean\n}\n\nexport interface GithubClient extends GraphqlClient {\n fetchRepoView(input: RepoViewInput): Promise<RepoViewData>\n fetchIssueCommentsList(input: IssueCommentsListInput): Promise<IssueCommentsListData>\n createIssue(input: IssueCreateInput): Promise<IssueMutationData>\n updateIssue(input: IssueUpdateInput): Promise<IssueMutationData>\n closeIssue(input: IssueMutationInput): Promise<IssueMutationData>\n reopenIssue(input: IssueMutationInput): Promise<IssueMutationData>\n deleteIssue(input: IssueMutationInput): Promise<IssueMutationData>\n updateIssueLabels(input: IssueLabelsUpdateInput): Promise<IssueLabelsUpdateData>\n updateIssueAssignees(input: IssueAssigneesUpdateInput): Promise<IssueAssigneesUpdateData>\n setIssueMilestone(input: IssueMilestoneSetInput): Promise<IssueMilestoneSetData>\n createIssueComment(input: IssueCommentCreateInput): Promise<IssueCommentCreateData>\n fetchIssueLinkedPrs(input: IssueLinkedPrsListInput): Promise<IssueLinkedPrsListData>\n fetchIssueRelations(input: IssueRelationsGetInput): Promise<IssueRelationsGetData>\n setIssueParent(input: IssueParentSetInput): Promise<IssueParentSetData>\n removeIssueParent(input: IssueParentRemoveInput): Promise<IssueParentRemoveData>\n addIssueBlockedBy(input: IssueBlockedByInput): Promise<IssueBlockedByData>\n removeIssueBlockedBy(input: IssueBlockedByInput): Promise<IssueBlockedByData>\n fetchIssueList(input: IssueListInput): Promise<IssueListData>\n fetchIssueView(input: IssueViewInput): Promise<IssueViewData>\n fetchPrList(input: PrListInput): Promise<PrListData>\n fetchPrView(input: PrViewInput): Promise<PrViewData>\n fetchPrCommentsList(input: PrCommentsListInput): Promise<PrCommentsListData>\n fetchPrReviewsList(input: PrReviewsListInput): Promise<PrReviewsListData>\n fetchPrDiffListFiles(input: PrDiffListFilesInput): Promise<PrDiffListFilesData>\n replyToReviewThread(input: ReplyToReviewThreadInput): Promise<ReviewThreadMutationData>\n resolveReviewThread(input: ReviewThreadMutationInput): Promise<ReviewThreadMutationData>\n unresolveReviewThread(input: ReviewThreadMutationInput): Promise<ReviewThreadMutationData>\n}\n\nfunction assertRepoInput(input: RepoViewInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n}\n\nfunction assertIssueInput(input: IssueViewInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.issueNumber) || input.issueNumber <= 0) {\n throw new Error(\"Issue number must be a positive integer\")\n }\n}\n\nfunction assertIssueListInput(input: IssueListInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n}\n\nfunction assertIssueCommentsListInput(input: IssueCommentsListInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.issueNumber) || input.issueNumber <= 0) {\n throw new Error(\"Issue number must be a positive integer\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n if (input.after !== undefined && input.after !== null && typeof input.after !== \"string\") {\n throw new Error(\"After cursor must be a string\")\n }\n}\n\nfunction assertNonEmptyString(value: unknown, fieldName: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new Error(`${fieldName} is required`)\n }\n\n return value\n}\n\nfunction assertOptionalString(value: unknown, fieldName: string): string | undefined {\n if (value === undefined) {\n return undefined\n }\n\n if (typeof value !== \"string\") {\n throw new Error(`${fieldName} must be a string`)\n }\n\n return value\n}\n\nfunction assertStringArray(value: unknown, fieldName: string): string[] {\n if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"string\" || entry.trim().length === 0)) {\n throw new Error(`${fieldName} must be an array of non-empty strings`)\n }\n\n return value\n}\n\nfunction assertIssueCreateInput(input: IssueCreateInput): void {\n assertRepoInput({ owner: input.owner, name: input.name })\n assertNonEmptyString(input.title, \"Issue title\")\n assertOptionalString(input.body, \"Issue body\")\n}\n\nfunction assertIssueUpdateInput(input: IssueUpdateInput): void {\n assertNonEmptyString(input.issueId, \"Issue id\")\n if (input.title === undefined && input.body === undefined) {\n throw new Error(\"Issue update requires at least one field\")\n }\n if (input.title !== undefined) {\n assertOptionalString(input.title, \"Issue title\")\n }\n if (input.body !== undefined) {\n assertOptionalString(input.body, \"Issue body\")\n }\n}\n\nfunction assertIssueMutationInput(input: IssueMutationInput): void {\n assertNonEmptyString(input.issueId, \"Issue id\")\n}\n\nfunction assertIssueLabelsUpdateInput(input: IssueLabelsUpdateInput): void {\n assertIssueMutationInput({ issueId: input.issueId })\n assertStringArray(input.labels, \"Labels\")\n}\n\nfunction assertIssueAssigneesUpdateInput(input: IssueAssigneesUpdateInput): void {\n assertIssueMutationInput({ issueId: input.issueId })\n assertStringArray(input.assignees, \"Assignees\")\n}\n\nfunction assertIssueMilestoneSetInput(input: IssueMilestoneSetInput): void {\n assertIssueMutationInput({ issueId: input.issueId })\n if (input.milestoneNumber !== null && (!Number.isInteger(input.milestoneNumber) || input.milestoneNumber <= 0)) {\n throw new Error(\"Milestone number must be a positive integer or null\")\n }\n}\n\nfunction assertIssueCommentCreateInput(input: IssueCommentCreateInput): void {\n assertIssueMutationInput({ issueId: input.issueId })\n assertNonEmptyString(input.body, \"Issue comment body\")\n}\n\nfunction assertIssueLinkedPrsListInput(input: IssueLinkedPrsListInput): void {\n assertIssueInput(input)\n}\n\nfunction assertIssueRelationsGetInput(input: IssueRelationsGetInput): void {\n assertIssueInput(input)\n}\n\nfunction assertIssueParentSetInput(input: IssueParentSetInput): void {\n assertIssueMutationInput({ issueId: input.issueId })\n assertNonEmptyString(input.parentIssueId, \"Parent issue id\")\n}\n\nfunction assertIssueParentRemoveInput(input: IssueParentRemoveInput): void {\n assertIssueMutationInput({ issueId: input.issueId })\n}\n\nfunction assertIssueBlockedByInput(input: IssueBlockedByInput): void {\n assertIssueMutationInput({ issueId: input.issueId })\n assertNonEmptyString(input.blockedByIssueId, \"Blocked-by issue id\")\n}\n\nfunction assertPrInput(input: PrViewInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {\n throw new Error(\"PR number must be a positive integer\")\n }\n}\n\nfunction assertPrListInput(input: PrListInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n}\n\nfunction assertPrReviewsListInput(input: PrReviewsListInput): void {\n if (\n typeof input.owner !== \"string\"\n || typeof input.name !== \"string\"\n || input.owner.trim().length === 0\n || input.name.trim().length === 0\n ) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {\n throw new Error(\"PR number must be a positive integer\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n}\n\nfunction assertPrDiffListFilesInput(input: PrDiffListFilesInput): void {\n if (\n typeof input.owner !== \"string\"\n || typeof input.name !== \"string\"\n || input.owner.trim().length === 0\n || input.name.trim().length === 0\n ) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {\n throw new Error(\"PR number must be a positive integer\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n}\n\nfunction assertPrCommentsListInput(input: PrCommentsListInput): void {\n if (\n typeof input.owner !== \"string\"\n || typeof input.name !== \"string\"\n || input.owner.trim().length === 0\n || input.name.trim().length === 0\n ) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {\n throw new Error(\"PR number must be a positive integer\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n if (input.unresolvedOnly !== undefined && typeof input.unresolvedOnly !== \"boolean\") {\n throw new Error(\"unresolvedOnly must be a boolean\")\n }\n if (input.includeOutdated !== undefined && typeof input.includeOutdated !== \"boolean\") {\n throw new Error(\"includeOutdated must be a boolean\")\n }\n if (input.after !== undefined && input.after !== null && typeof input.after !== \"string\") {\n throw new Error(\"After cursor must be a string\")\n }\n}\n\nconst PR_COMMENTS_LIST_QUERY = `\n query PrCommentsList($owner: String!, $name: String!, $prNumber: Int!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n pullRequest(number: $prNumber) {\n reviewThreads(first: $first, after: $after) {\n edges {\n cursor\n node {\n id\n path\n line\n startLine\n diffSide\n subjectType\n isResolved\n isOutdated\n viewerCanReply\n viewerCanResolve\n viewerCanUnresolve\n resolvedBy {\n login\n }\n comments(first: 20) {\n nodes {\n id\n body\n createdAt\n url\n author {\n login\n }\n }\n }\n }\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n }\n }\n`\n\nconst PR_COMMENT_REPLY_MUTATION = `\n mutation PrCommentReply($threadId: ID!, $body: String!) {\n addPullRequestReviewThreadReply(input: { pullRequestReviewThreadId: $threadId, body: $body }) {\n comment {\n id\n }\n }\n }\n`\n\nconst PR_COMMENT_RESOLVE_MUTATION = `\n mutation PrCommentResolve($threadId: ID!) {\n resolveReviewThread(input: { threadId: $threadId }) {\n thread {\n id\n isResolved\n }\n }\n }\n`\n\nconst PR_COMMENT_UNRESOLVE_MUTATION = `\n mutation PrCommentUnresolve($threadId: ID!) {\n unresolveReviewThread(input: { threadId: $threadId }) {\n thread {\n id\n isResolved\n }\n }\n }\n`\n\nconst REVIEW_THREAD_STATE_QUERY = `\n query ReviewThreadState($threadId: ID!) {\n node(id: $threadId) {\n ... on PullRequestReviewThread {\n id\n isResolved\n }\n }\n }\n`\n\nconst ISSUE_CREATE_REPOSITORY_ID_QUERY = `\n query IssueCreateRepositoryId($owner: String!, $name: String!) {\n repository(owner: $owner, name: $name) {\n id\n }\n }\n`\n\nconst ISSUE_CREATE_MUTATION = `\n mutation IssueCreate($repositoryId: ID!, $title: String!, $body: String) {\n createIssue(input: { repositoryId: $repositoryId, title: $title, body: $body }) {\n issue {\n id\n number\n title\n state\n url\n }\n }\n }\n`\n\nconst ISSUE_UPDATE_MUTATION = `\n mutation IssueUpdate($issueId: ID!, $title: String, $body: String) {\n updateIssue(input: { id: $issueId, title: $title, body: $body }) {\n issue {\n id\n number\n title\n state\n url\n }\n }\n }\n`\n\nconst ISSUE_CLOSE_MUTATION = `\n mutation IssueClose($issueId: ID!) {\n closeIssue(input: { issueId: $issueId }) {\n issue {\n id\n number\n state\n }\n }\n }\n`\n\nconst ISSUE_REOPEN_MUTATION = `\n mutation IssueReopen($issueId: ID!) {\n reopenIssue(input: { issueId: $issueId }) {\n issue {\n id\n number\n state\n }\n }\n }\n`\n\nconst ISSUE_DELETE_MUTATION = `\n mutation IssueDelete($issueId: ID!) {\n deleteIssue(input: { issueId: $issueId }) {\n clientMutationId\n }\n }\n`\n\nconst ISSUE_LABELS_UPDATE_MUTATION = `\n mutation IssueLabelsUpdate($issueId: ID!, $labelIds: [ID!]!) {\n updateIssue(input: { id: $issueId, labelIds: $labelIds }) {\n issue {\n id\n labels(first: 50) {\n nodes {\n name\n }\n }\n }\n }\n }\n`\n\nconst ISSUE_ASSIGNEES_UPDATE_MUTATION = `\n mutation IssueAssigneesUpdate($issueId: ID!, $assigneeIds: [ID!]!) {\n updateIssue(input: { id: $issueId, assigneeIds: $assigneeIds }) {\n issue {\n id\n assignees(first: 50) {\n nodes {\n login\n }\n }\n }\n }\n }\n`\n\nconst ISSUE_MILESTONE_SET_MUTATION = `\n mutation IssueMilestoneSet($issueId: ID!, $milestoneId: ID) {\n updateIssue(input: { id: $issueId, milestoneId: $milestoneId }) {\n issue {\n id\n milestone {\n number\n }\n }\n }\n }\n`\n\nconst ISSUE_LABELS_LOOKUP_QUERY = `\n query IssueLabelsLookup($issueId: ID!) {\n node(id: $issueId) {\n ... on Issue {\n repository {\n labels(first: 100) {\n nodes {\n id\n name\n }\n }\n }\n }\n }\n }\n`\n\nconst ISSUE_ASSIGNEES_LOOKUP_QUERY = `\n query IssueAssigneesLookup($issueId: ID!) {\n node(id: $issueId) {\n ... on Issue {\n repository {\n assignableUsers(first: 100) {\n nodes {\n id\n login\n }\n }\n }\n }\n }\n }\n`\n\nconst ISSUE_MILESTONE_LOOKUP_QUERY = `\n query IssueMilestoneLookup($issueId: ID!, $milestoneNumber: Int!) {\n node(id: $issueId) {\n ... on Issue {\n repository {\n milestone(number: $milestoneNumber) {\n id\n }\n }\n }\n }\n }\n`\n\nconst ISSUE_COMMENT_CREATE_MUTATION = `\n mutation IssueCommentCreate($issueId: ID!, $body: String!) {\n addComment(input: { subjectId: $issueId, body: $body }) {\n commentEdge {\n node {\n id\n body\n url\n }\n }\n }\n }\n`\n\nconst ISSUE_LINKED_PRS_LIST_QUERY = `\n query IssueLinkedPrsList($owner: String!, $name: String!, $issueNumber: Int!) {\n repository(owner: $owner, name: $name) {\n issue(number: $issueNumber) {\n timelineItems(first: 50, itemTypes: [CONNECTED_EVENT]) {\n nodes {\n __typename\n ... on ConnectedEvent {\n subject {\n __typename\n ... on PullRequest {\n id\n number\n title\n state\n url\n }\n }\n }\n }\n }\n }\n }\n }\n`\n\nconst ISSUE_RELATIONS_GET_QUERY = `\n query IssueRelationsGet($owner: String!, $name: String!, $issueNumber: Int!) {\n repository(owner: $owner, name: $name) {\n issue(number: $issueNumber) {\n id\n number\n parent {\n id\n number\n }\n subIssues(first: 50) {\n nodes {\n id\n number\n }\n }\n blockedBy(first: 50) {\n nodes {\n id\n number\n }\n }\n }\n }\n }\n`\n\nconst ISSUE_PARENT_LOOKUP_QUERY = `\n query IssueParentLookup($issueId: ID!) {\n node(id: $issueId) {\n ... on Issue {\n id\n parent {\n id\n }\n }\n }\n }\n`\n\nconst ISSUE_PARENT_SET_MUTATION = `\n mutation IssueParentSet($issueId: ID!, $parentIssueId: ID!) {\n addSubIssue(input: { issueId: $parentIssueId, subIssueId: $issueId }) {\n issue { id }\n subIssue { id }\n }\n }\n`\n\nconst ISSUE_PARENT_REMOVE_MUTATION = `\n mutation IssueParentRemove($issueId: ID!, $parentIssueId: ID!) {\n removeSubIssue(input: { issueId: $parentIssueId, subIssueId: $issueId }) {\n issue { id }\n subIssue { id }\n }\n }\n`\n\nconst ISSUE_BLOCKED_BY_ADD_MUTATION = `\n mutation IssueBlockedByAdd($issueId: ID!, $blockedByIssueId: ID!) {\n addBlockedBy(input: { issueId: $issueId, blockingIssueId: $blockedByIssueId }) {\n issue { id }\n blockingIssue { id }\n }\n }\n`\n\nconst ISSUE_BLOCKED_BY_REMOVE_MUTATION = `\n mutation IssueBlockedByRemove($issueId: ID!, $blockedByIssueId: ID!) {\n removeBlockedBy(input: { issueId: $issueId, blockingIssueId: $blockedByIssueId }) {\n issue { id }\n blockingIssue { id }\n }\n }\n`\n\ntype SdkClients = {\n issueCommentsList: ReturnType<typeof getIssueCommentsListSdk>\n issueList: ReturnType<typeof getIssueListSdk>\n issue: ReturnType<typeof getIssueViewSdk>\n prDiffListFiles: ReturnType<typeof getPrDiffListFilesSdk>\n prList: ReturnType<typeof getPrListSdk>\n prReviewsList: ReturnType<typeof getPrReviewsListSdk>\n pr: ReturnType<typeof getPrViewSdk>\n repo: ReturnType<typeof getRepoViewSdk>\n}\n\nfunction createSdkClients(transport: GraphqlTransport): SdkClients {\n const client: Pick<GraphQLClient, \"request\"> = {\n request<TData, TVariables extends object = object>(\n documentOrOptions: RequestDocument | RequestOptions<TVariables, TData>,\n ...variablesAndRequestHeaders: unknown[]\n ): Promise<TData> {\n const options =\n typeof documentOrOptions === \"object\" && documentOrOptions !== null && \"document\" in documentOrOptions\n ? documentOrOptions\n : {\n document: documentOrOptions,\n variables: variablesAndRequestHeaders[0] as TVariables | undefined\n }\n\n const queryText = queryToString(options.document)\n assertQuery(queryText)\n return transport.execute<TData>(queryText, options.variables as GraphqlVariables)\n }\n }\n\n const graphqlRequestClient = client as GraphQLClient\n\n return {\n issueCommentsList: getIssueCommentsListSdk(graphqlRequestClient),\n issueList: getIssueListSdk(graphqlRequestClient),\n issue: getIssueViewSdk(graphqlRequestClient),\n prDiffListFiles: getPrDiffListFilesSdk(graphqlRequestClient),\n prList: getPrListSdk(graphqlRequestClient),\n prReviewsList: getPrReviewsListSdk(graphqlRequestClient),\n pr: getPrViewSdk(graphqlRequestClient),\n repo: getRepoViewSdk(graphqlRequestClient)\n }\n}\n\nasync function runRepoView(sdk: SdkClients[\"repo\"], input: RepoViewInput): Promise<RepoViewData> {\n assertRepoInput(input)\n\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\nasync function runIssueView(sdk: SdkClients[\"issue\"], input: IssueViewInput): Promise<IssueViewData> {\n assertIssueInput(input)\n\n const result: IssueViewQuery = await sdk.IssueView(input)\n const issue = result.repository?.issue\n if (!issue) {\n throw new Error(\"Issue not found\")\n }\n\n return {\n id: issue.id,\n number: issue.number,\n title: issue.title,\n state: issue.state,\n url: issue.url\n }\n}\n\nasync function runIssueList(sdk: SdkClients[\"issueList\"], input: IssueListInput): Promise<IssueListData> {\n assertIssueListInput(input)\n\n const result: IssueListQuery = await sdk.IssueList(input)\n const issues = result.repository?.issues\n if (!issues) {\n throw new Error(\"Issues not found\")\n }\n\n return {\n items: (issues.nodes ?? []).flatMap((issue) =>\n issue\n ? [\n {\n id: issue.id,\n number: issue.number,\n title: issue.title,\n state: issue.state,\n url: issue.url\n }\n ]\n : []\n ),\n pageInfo: {\n endCursor: issues.pageInfo.endCursor ?? null,\n hasNextPage: issues.pageInfo.hasNextPage\n }\n }\n}\n\nasync function runIssueCommentsList(\n sdk: SdkClients[\"issueCommentsList\"],\n input: IssueCommentsListInput\n): Promise<IssueCommentsListData> {\n assertIssueCommentsListInput(input)\n\n const result: IssueCommentsListQuery = await sdk.IssueCommentsList(input)\n const comments = result.repository?.issue?.comments\n if (!comments) {\n throw new Error(\"Issue comments not found\")\n }\n\n return {\n items: (comments.nodes ?? []).flatMap((comment) =>\n comment\n ? [\n {\n id: comment.id,\n body: comment.body,\n authorLogin: comment.author?.login ?? null,\n createdAt: comment.createdAt,\n url: String(comment.url)\n }\n ]\n : []\n ),\n pageInfo: {\n endCursor: comments.pageInfo.endCursor ?? null,\n hasNextPage: comments.pageInfo.hasNextPage\n }\n }\n}\n\nfunction parseIssueNode(issue: unknown): IssueMutationData {\n const issueRecord = asRecord(issue)\n if (!issueRecord || typeof issueRecord.id !== \"string\" || typeof issueRecord.number !== \"number\") {\n throw new Error(\"Issue mutation failed\")\n }\n\n const result: IssueMutationData = {\n id: issueRecord.id,\n number: issueRecord.number,\n }\n\n if (typeof issueRecord.title === \"string\") {\n result.title = issueRecord.title\n }\n if (typeof issueRecord.state === \"string\") {\n result.state = issueRecord.state\n }\n if (typeof issueRecord.url === \"string\") {\n result.url = issueRecord.url\n }\n\n return result\n}\n\nasync function runIssueCreate(graphqlClient: GraphqlClient, input: IssueCreateInput): Promise<IssueMutationData> {\n assertIssueCreateInput(input)\n\n const repositoryLookupResult = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_CREATE_REPOSITORY_ID_QUERY, {\n owner: input.owner,\n name: input.name\n })\n const repositoryId = asRecord(asRecord(repositoryLookupResult)?.repository)?.id\n if (typeof repositoryId !== \"string\" || repositoryId.length === 0) {\n throw new Error(\"Repository not found\")\n }\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_CREATE_MUTATION, {\n repositoryId,\n title: input.title,\n body: input.body\n })\n const issue = asRecord(asRecord(result)?.createIssue)?.issue\n return parseIssueNode(issue)\n}\n\nasync function runIssueUpdate(graphqlClient: GraphqlClient, input: IssueUpdateInput): Promise<IssueMutationData> {\n assertIssueUpdateInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_UPDATE_MUTATION, {\n issueId: input.issueId,\n title: input.title,\n body: input.body\n })\n const issue = asRecord(asRecord(result)?.updateIssue)?.issue\n return parseIssueNode(issue)\n}\n\nasync function runIssueClose(graphqlClient: GraphqlClient, input: IssueMutationInput): Promise<IssueMutationData> {\n assertIssueMutationInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_CLOSE_MUTATION, {\n issueId: input.issueId\n })\n const issueData = parseIssueNode(asRecord(asRecord(result)?.closeIssue)?.issue)\n return {\n ...issueData,\n closed: issueData.state === \"CLOSED\"\n }\n}\n\nasync function runIssueReopen(graphqlClient: GraphqlClient, input: IssueMutationInput): Promise<IssueMutationData> {\n assertIssueMutationInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_REOPEN_MUTATION, {\n issueId: input.issueId\n })\n const issueData = parseIssueNode(asRecord(asRecord(result)?.reopenIssue)?.issue)\n return {\n ...issueData,\n reopened: issueData.state === \"OPEN\"\n }\n}\n\nasync function runIssueDelete(graphqlClient: GraphqlClient, input: IssueMutationInput): Promise<IssueMutationData> {\n assertIssueMutationInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_DELETE_MUTATION, {\n issueId: input.issueId\n })\n const mutation = asRecord(asRecord(result)?.deleteIssue)\n if (!mutation) {\n throw new Error(\"Issue deletion failed\")\n }\n\n return {\n id: input.issueId,\n number: 0,\n deleted: true\n }\n}\n\nasync function runIssueLabelsUpdate(\n graphqlClient: GraphqlClient,\n input: IssueLabelsUpdateInput\n): Promise<IssueLabelsUpdateData> {\n assertIssueLabelsUpdateInput(input)\n\n const lookupResult = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_LABELS_LOOKUP_QUERY, {\n issueId: input.issueId\n })\n const availableLabels = Array.isArray(\n asRecord(asRecord(asRecord(asRecord(lookupResult)?.node)?.repository)?.labels)?.nodes\n )\n ? asRecord(asRecord(asRecord(asRecord(lookupResult)?.node)?.repository)?.labels)?.nodes as unknown[]\n : []\n const labelIdsByName = new Map<string, string>()\n for (const label of availableLabels) {\n const labelRecord = asRecord(label)\n if (typeof labelRecord?.name === \"string\" && typeof labelRecord?.id === \"string\") {\n labelIdsByName.set(labelRecord.name.toLowerCase(), labelRecord.id)\n }\n }\n const labelIds = input.labels.map((labelName) => {\n const id = labelIdsByName.get(labelName.toLowerCase())\n if (!id) {\n throw new Error(`Label not found: ${labelName}`)\n }\n return id\n })\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_LABELS_UPDATE_MUTATION, {\n issueId: input.issueId,\n labelIds\n })\n const mutation = asRecord(asRecord(result)?.[\"updateIssue\"])\n const issue = asRecord(mutation?.[\"issue\"])\n const labels = asRecord(issue?.[\"labels\"])\n const labelNodes = Array.isArray(labels?.[\"nodes\"]) ? labels[\"nodes\"] : []\n\n return {\n id: assertNonEmptyString(issue?.[\"id\"], \"Issue id\"),\n labels: labelNodes\n .map((label) => asRecord(label)?.[\"name\"])\n .filter((name): name is string => typeof name === \"string\")\n }\n}\n\nasync function runIssueAssigneesUpdate(\n graphqlClient: GraphqlClient,\n input: IssueAssigneesUpdateInput\n): Promise<IssueAssigneesUpdateData> {\n assertIssueAssigneesUpdateInput(input)\n\n const lookupResult = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_ASSIGNEES_LOOKUP_QUERY, {\n issueId: input.issueId\n })\n const availableAssignees = Array.isArray(\n asRecord(asRecord(asRecord(asRecord(lookupResult)?.node)?.repository)?.assignableUsers)?.nodes\n )\n ? asRecord(asRecord(asRecord(asRecord(lookupResult)?.node)?.repository)?.assignableUsers)?.nodes as unknown[]\n : []\n const assigneeIdsByLogin = new Map<string, string>()\n for (const assignee of availableAssignees) {\n const assigneeRecord = asRecord(assignee)\n if (typeof assigneeRecord?.login === \"string\" && typeof assigneeRecord?.id === \"string\") {\n assigneeIdsByLogin.set(assigneeRecord.login.toLowerCase(), assigneeRecord.id)\n }\n }\n const assigneeIds = input.assignees.map((login) => {\n const id = assigneeIdsByLogin.get(login.toLowerCase())\n if (!id) {\n throw new Error(`Assignee not found: ${login}`)\n }\n return id\n })\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_ASSIGNEES_UPDATE_MUTATION, {\n issueId: input.issueId,\n assigneeIds\n })\n const mutation = asRecord(asRecord(result)?.[\"updateIssue\"])\n const issue = asRecord(mutation?.[\"issue\"])\n const assignees = asRecord(issue?.[\"assignees\"])\n const assigneeNodes = Array.isArray(assignees?.[\"nodes\"]) ? assignees[\"nodes\"] : []\n\n return {\n id: assertNonEmptyString(issue?.[\"id\"], \"Issue id\"),\n assignees: assigneeNodes\n .map((assignee) => asRecord(assignee)?.[\"login\"])\n .filter((login): login is string => typeof login === \"string\")\n }\n}\n\nasync function runIssueMilestoneSet(\n graphqlClient: GraphqlClient,\n input: IssueMilestoneSetInput\n): Promise<IssueMilestoneSetData> {\n assertIssueMilestoneSetInput(input)\n\n let milestoneId: string | null = null\n if (input.milestoneNumber !== null) {\n const lookupResult = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_MILESTONE_LOOKUP_QUERY, {\n issueId: input.issueId,\n milestoneNumber: input.milestoneNumber\n })\n const resolvedId = asRecord(asRecord(asRecord(asRecord(lookupResult)?.node)?.repository)?.milestone)?.id\n if (typeof resolvedId !== \"string\" || resolvedId.length === 0) {\n throw new Error(`Milestone not found: ${input.milestoneNumber}`)\n }\n milestoneId = resolvedId\n }\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_MILESTONE_SET_MUTATION, {\n issueId: input.issueId,\n milestoneId\n })\n const mutation = asRecord(asRecord(result)?.[\"updateIssue\"])\n const issue = asRecord(mutation?.[\"issue\"])\n const milestone = asRecord(issue?.[\"milestone\"])\n\n return {\n id: assertNonEmptyString(issue?.[\"id\"], \"Issue id\"),\n milestoneNumber: typeof milestone?.[\"number\"] === \"number\" ? milestone[\"number\"] : null\n }\n}\n\nasync function runIssueCommentCreate(\n graphqlClient: GraphqlClient,\n input: IssueCommentCreateInput\n): Promise<IssueCommentCreateData> {\n assertIssueCommentCreateInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_COMMENT_CREATE_MUTATION, {\n issueId: input.issueId,\n body: input.body\n })\n const mutation = asRecord(asRecord(result)?.[\"addComment\"])\n const commentEdge = asRecord(mutation?.[\"commentEdge\"])\n const node = asRecord(commentEdge?.[\"node\"])\n if (!node || typeof node[\"id\"] !== \"string\" || typeof node[\"body\"] !== \"string\") {\n throw new Error(\"Issue comment creation failed\")\n }\n\n return {\n id: node[\"id\"],\n body: node[\"body\"],\n url: typeof node[\"url\"] === \"string\" ? node[\"url\"] : \"\"\n }\n}\n\nasync function runIssueLinkedPrsList(\n graphqlClient: GraphqlClient,\n input: IssueLinkedPrsListInput\n): Promise<IssueLinkedPrsListData> {\n assertIssueLinkedPrsListInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_LINKED_PRS_LIST_QUERY, {\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber\n })\n const issue = asRecord(asRecord(asRecord(result)?.repository)?.issue)\n const timelineItems = asRecord(issue?.timelineItems)\n const nodes = Array.isArray(timelineItems?.nodes) ? timelineItems.nodes : []\n\n return {\n items: nodes\n .map((node) => asRecord(asRecord(node)?.[\"subject\"]))\n .filter((subject): subject is Record<string, unknown> => Boolean(subject) && subject?.[\"__typename\"] === \"PullRequest\")\n .flatMap((subject) => {\n if (!subject) {\n return []\n }\n\n if (\n typeof subject[\"id\"] !== \"string\"\n || typeof subject[\"number\"] !== \"number\"\n || typeof subject[\"title\"] !== \"string\"\n || typeof subject[\"state\"] !== \"string\"\n || typeof subject[\"url\"] !== \"string\"\n ) {\n return []\n }\n\n return [{\n id: subject[\"id\"],\n number: subject[\"number\"],\n title: subject[\"title\"],\n state: subject[\"state\"],\n url: subject[\"url\"]\n }]\n })\n }\n}\n\nfunction parseIssueRelationNode(node: unknown): IssueRelationNodeData | null {\n const record = asRecord(node)\n if (!record || typeof record.id !== \"string\" || typeof record.number !== \"number\") {\n return null\n }\n\n return {\n id: record.id,\n number: record.number\n }\n}\n\nasync function runIssueRelationsGet(\n graphqlClient: GraphqlClient,\n input: IssueRelationsGetInput\n): Promise<IssueRelationsGetData> {\n assertIssueRelationsGetInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_RELATIONS_GET_QUERY, {\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber\n })\n const issue = asRecord(asRecord(asRecord(result)?.repository)?.issue)\n const currentIssue = parseIssueRelationNode(issue)\n if (!currentIssue) {\n throw new Error(\"Issue relations not found\")\n }\n\n const parent = parseIssueRelationNode(issue?.parent)\n const subIssues = asRecord(issue?.[\"subIssues\"])\n const blockedByConnection = asRecord(issue?.[\"blockedBy\"])\n const childrenNodes = Array.isArray(subIssues?.[\"nodes\"]) ? subIssues[\"nodes\"] : []\n const blockedByNodes = Array.isArray(blockedByConnection?.[\"nodes\"]) ? blockedByConnection[\"nodes\"] : []\n\n return {\n issue: currentIssue,\n parent,\n children: childrenNodes\n .map((node) => parseIssueRelationNode(node))\n .flatMap((node) => (node ? [node] : [])),\n blockedBy: blockedByNodes\n .map((node) => parseIssueRelationNode(node))\n .flatMap((node) => (node ? [node] : []))\n }\n}\n\nasync function runIssueParentSet(graphqlClient: GraphqlClient, input: IssueParentSetInput): Promise<IssueParentSetData> {\n assertIssueParentSetInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_PARENT_SET_MUTATION, {\n issueId: input.issueId,\n parentIssueId: input.parentIssueId\n })\n const mutation = asRecord(asRecord(result)?.addSubIssue)\n const parentIssue = asRecord(mutation?.issue)\n const subIssue = asRecord(mutation?.subIssue)\n if (typeof parentIssue?.id !== \"string\" || typeof subIssue?.id !== \"string\") {\n throw new Error(\"Issue parent update failed\")\n }\n\n return {\n issueId: subIssue.id,\n parentIssueId: parentIssue.id\n }\n}\n\nasync function runIssueParentRemove(\n graphqlClient: GraphqlClient,\n input: IssueParentRemoveInput\n): Promise<IssueParentRemoveData> {\n assertIssueParentRemoveInput(input)\n\n const lookupResult = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_PARENT_LOOKUP_QUERY, {\n issueId: input.issueId\n })\n const parentIssueId = asRecord(asRecord(asRecord(lookupResult)?.node)?.parent)?.id\n if (typeof parentIssueId !== \"string\" || parentIssueId.length === 0) {\n throw new Error(\"Issue parent removal failed\")\n }\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_PARENT_REMOVE_MUTATION, {\n issueId: input.issueId,\n parentIssueId\n })\n const mutation = asRecord(asRecord(result)?.removeSubIssue)\n const parentIssue = asRecord(mutation?.issue)\n const subIssue = asRecord(mutation?.subIssue)\n if (typeof parentIssue?.id !== \"string\" || typeof subIssue?.id !== \"string\") {\n throw new Error(\"Issue parent removal failed\")\n }\n\n return {\n issueId: subIssue.id,\n parentRemoved: true\n }\n}\n\nasync function runIssueBlockedByAdd(\n graphqlClient: GraphqlClient,\n input: IssueBlockedByInput\n): Promise<IssueBlockedByData> {\n assertIssueBlockedByInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_BLOCKED_BY_ADD_MUTATION, {\n issueId: input.issueId,\n blockedByIssueId: input.blockedByIssueId\n })\n const mutation = asRecord(asRecord(result)?.addBlockedBy)\n const issue = asRecord(mutation?.issue)\n const blockingIssue = asRecord(mutation?.blockingIssue)\n if (typeof issue?.id !== \"string\" || typeof blockingIssue?.id !== \"string\") {\n throw new Error(\"Issue dependency mutation failed\")\n }\n\n return {\n issueId: issue.id,\n blockedByIssueId: blockingIssue.id\n }\n}\n\nasync function runIssueBlockedByRemove(\n graphqlClient: GraphqlClient,\n input: IssueBlockedByInput\n): Promise<IssueBlockedByData> {\n assertIssueBlockedByInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(ISSUE_BLOCKED_BY_REMOVE_MUTATION, {\n issueId: input.issueId,\n blockedByIssueId: input.blockedByIssueId\n })\n const mutation = asRecord(asRecord(result)?.removeBlockedBy)\n const issue = asRecord(mutation?.issue)\n const blockingIssue = asRecord(mutation?.blockingIssue)\n if (typeof issue?.id !== \"string\" || typeof blockingIssue?.id !== \"string\") {\n throw new Error(\"Issue dependency mutation failed\")\n }\n\n return {\n issueId: issue.id,\n blockedByIssueId: blockingIssue.id,\n removed: true\n }\n}\n\nasync function runPrView(sdk: SdkClients[\"pr\"], input: PrViewInput): Promise<PrViewData> {\n assertPrInput(input)\n\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 }\n}\n\nasync function runPrList(sdk: SdkClients[\"prList\"], input: PrListInput): Promise<PrListData> {\n assertPrListInput(input)\n\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\nasync function runPrReviewsList(\n sdk: SdkClients[\"prReviewsList\"],\n input: PrReviewsListInput\n): Promise<PrReviewsListData> {\n assertPrReviewsListInput(input)\n\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 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 pageInfo: {\n endCursor: reviews.pageInfo.endCursor ?? null,\n hasNextPage: reviews.pageInfo.hasNextPage\n }\n }\n}\n\nasync function runPrDiffListFiles(\n sdk: SdkClients[\"prDiffListFiles\"],\n input: PrDiffListFilesInput\n): Promise<PrDiffListFilesData> {\n assertPrDiffListFilesInput(input)\n\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 path: file.path,\n additions: file.additions,\n deletions: file.deletions\n }]\n : []\n ),\n pageInfo: {\n endCursor: files.pageInfo.endCursor ?? null,\n hasNextPage: files.pageInfo.hasNextPage\n }\n }\n}\n\nconst MAX_PR_REVIEW_THREAD_SCAN_PAGES = 5\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null\n}\n\nfunction normalizePrReviewThreadComment(comment: unknown): PrReviewThreadCommentData | null {\n const commentRecord = asRecord(comment)\n if (!commentRecord || typeof commentRecord.id !== \"string\") {\n return null\n }\n\n const author = asRecord(commentRecord.author)\n const url = commentRecord.url\n\n return {\n id: commentRecord.id,\n authorLogin: typeof author?.login === \"string\" ? author.login : null,\n body: typeof commentRecord.body === \"string\" ? commentRecord.body : \"\",\n createdAt: typeof commentRecord.createdAt === \"string\" ? commentRecord.createdAt : \"\",\n url: typeof url === \"string\" ? url : String(url ?? \"\")\n }\n}\n\nfunction normalizePrReviewThread(thread: unknown): PrReviewThreadData | null {\n const threadRecord = asRecord(thread)\n if (!threadRecord || typeof threadRecord.id !== \"string\") {\n return null\n }\n\n const comments = asRecord(threadRecord.comments)\n const commentNodes = Array.isArray(comments?.nodes) ? comments.nodes : []\n const resolvedBy = asRecord(threadRecord.resolvedBy)\n\n return {\n id: threadRecord.id,\n path: typeof threadRecord.path === \"string\" ? threadRecord.path : null,\n line: typeof threadRecord.line === \"number\" ? threadRecord.line : null,\n startLine: typeof threadRecord.startLine === \"number\" ? threadRecord.startLine : null,\n diffSide: typeof threadRecord.diffSide === \"string\" ? threadRecord.diffSide : null,\n subjectType: typeof threadRecord.subjectType === \"string\" ? threadRecord.subjectType : null,\n isResolved: Boolean(threadRecord.isResolved),\n isOutdated: Boolean(threadRecord.isOutdated),\n viewerCanReply: Boolean(threadRecord.viewerCanReply),\n viewerCanResolve: Boolean(threadRecord.viewerCanResolve),\n viewerCanUnresolve: Boolean(threadRecord.viewerCanUnresolve),\n resolvedByLogin: typeof resolvedBy?.login === \"string\" ? resolvedBy.login : null,\n comments: commentNodes\n .map((comment) => normalizePrReviewThreadComment(comment))\n .flatMap((comment) => (comment ? [comment] : []))\n }\n}\n\nasync function runPrCommentsList(\n graphqlClient: GraphqlClient,\n input: PrCommentsListInput\n): Promise<PrCommentsListData> {\n assertPrCommentsListInput(input)\n\n const unresolvedOnly = input.unresolvedOnly ?? false\n const includeOutdated = input.includeOutdated ?? true\n\n const filteredThreads: Array<{ thread: PrReviewThreadData; cursor: string | null }> = []\n let sourceEndCursor: string | null = input.after ?? null\n let sourceHasNextPage = false\n let pagesScanned = 0\n let sourceItemsScanned = 0\n\n while (pagesScanned < MAX_PR_REVIEW_THREAD_SCAN_PAGES && filteredThreads.length < input.first) {\n const result = await graphqlClient.query<unknown, GraphqlVariables>(PR_COMMENTS_LIST_QUERY, {\n owner: input.owner,\n name: input.name,\n prNumber: input.prNumber,\n first: input.first,\n after: sourceEndCursor\n })\n\n const repository = asRecord(asRecord(result)?.repository)\n const pullRequest = asRecord(repository?.pullRequest)\n const reviewThreads = asRecord(pullRequest?.reviewThreads)\n if (!reviewThreads) {\n throw new Error(\"Pull request review threads not found\")\n }\n\n const pageInfo = asRecord(reviewThreads.pageInfo)\n const threadEdges = Array.isArray(reviewThreads.edges)\n ? reviewThreads.edges\n .map((edge) => {\n const edgeRecord = asRecord(edge)\n if (!edgeRecord) {\n return null\n }\n\n return {\n cursor: typeof edgeRecord.cursor === \"string\" ? edgeRecord.cursor : null,\n node: edgeRecord.node\n }\n })\n .flatMap((edge) => (edge ? [edge] : []))\n : []\n\n const threadNodes = threadEdges.length > 0\n ? threadEdges\n : (Array.isArray(reviewThreads.nodes) ? reviewThreads.nodes.map((node) => ({ cursor: null, node })) : [])\n\n pagesScanned += 1\n sourceItemsScanned += threadNodes.length\n\n for (const threadNode of threadNodes) {\n const normalized = normalizePrReviewThread(threadNode.node)\n if (!normalized) {\n continue\n }\n\n if (unresolvedOnly && normalized.isResolved) {\n continue\n }\n\n if (unresolvedOnly && !includeOutdated && normalized.isOutdated) {\n continue\n }\n\n filteredThreads.push({ thread: normalized, cursor: threadNode.cursor })\n }\n\n sourceHasNextPage = Boolean(pageInfo?.hasNextPage)\n sourceEndCursor = typeof pageInfo?.endCursor === \"string\" ? pageInfo.endCursor : null\n\n if (!sourceHasNextPage) {\n break\n }\n }\n\n const hasBufferedFilteredItems = filteredThreads.length > input.first\n const returnedThreads = filteredThreads.slice(0, input.first)\n const endCursor = returnedThreads.length > 0\n ? (returnedThreads[returnedThreads.length - 1]?.cursor ?? sourceEndCursor)\n : sourceEndCursor\n const scanTruncated = sourceHasNextPage && pagesScanned >= MAX_PR_REVIEW_THREAD_SCAN_PAGES\n\n return {\n items: returnedThreads.map((entry) => entry.thread),\n pageInfo: {\n hasNextPage: hasBufferedFilteredItems || sourceHasNextPage,\n endCursor: hasBufferedFilteredItems || sourceHasNextPage ? endCursor : null\n },\n filterApplied: {\n unresolvedOnly,\n includeOutdated\n },\n scan: {\n pagesScanned,\n sourceItemsScanned,\n scanTruncated\n }\n }\n}\n\nfunction assertReviewThreadInput(input: ReviewThreadMutationInput): void {\n if (typeof input.threadId !== \"string\" || input.threadId.trim().length === 0) {\n throw new Error(\"Review thread id is required\")\n }\n}\n\nfunction assertReplyToReviewThreadInput(input: ReplyToReviewThreadInput): void {\n assertReviewThreadInput(input)\n if (typeof input.body !== \"string\" || input.body.trim().length === 0) {\n throw new Error(\"Reply body is required\")\n }\n}\n\nfunction parseReviewThreadMutationResult(result: unknown, mutationKey: string): ReviewThreadMutationData {\n const root = asRecord(result)\n const mutation = asRecord(root?.[mutationKey])\n const thread = asRecord(mutation?.thread)\n if (!thread || typeof thread.id !== \"string\") {\n throw new Error(\"Review thread mutation failed\")\n }\n\n return {\n id: thread.id,\n isResolved: Boolean(thread.isResolved)\n }\n}\n\nasync function runReplyToReviewThread(\n graphqlClient: GraphqlClient,\n input: ReplyToReviewThreadInput\n): Promise<ReviewThreadMutationData> {\n assertReplyToReviewThreadInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(PR_COMMENT_REPLY_MUTATION, {\n threadId: input.threadId,\n body: input.body\n })\n const root = asRecord(result)\n const mutation = asRecord(root?.addPullRequestReviewThreadReply)\n const comment = asRecord(mutation?.comment)\n if (!comment || typeof comment.id !== \"string\") {\n throw new Error(\"Review thread mutation failed\")\n }\n\n const threadStateResult = await graphqlClient.query<unknown, GraphqlVariables>(REVIEW_THREAD_STATE_QUERY, {\n threadId: input.threadId\n })\n const threadNode = asRecord(asRecord(threadStateResult)?.node)\n if (!threadNode || typeof threadNode.id !== \"string\") {\n throw new Error(\"Review thread state lookup failed\")\n }\n\n return {\n id: input.threadId,\n isResolved: Boolean(threadNode.isResolved)\n }\n}\n\nasync function runResolveReviewThread(\n graphqlClient: GraphqlClient,\n input: ReviewThreadMutationInput\n): Promise<ReviewThreadMutationData> {\n assertReviewThreadInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(PR_COMMENT_RESOLVE_MUTATION, {\n threadId: input.threadId\n })\n return parseReviewThreadMutationResult(result, \"resolveReviewThread\")\n}\n\nasync function runUnresolveReviewThread(\n graphqlClient: GraphqlClient,\n input: ReviewThreadMutationInput\n): Promise<ReviewThreadMutationData> {\n assertReviewThreadInput(input)\n\n const result = await graphqlClient.query<unknown, GraphqlVariables>(PR_COMMENT_UNRESOLVE_MUTATION, {\n threadId: input.threadId\n })\n return parseReviewThreadMutationResult(result, \"unresolveReviewThread\")\n}\n\nfunction queryToString(query: QueryLike): string {\n if (typeof query === \"string\") {\n return query\n }\n\n if (typeof query === \"object\" && query !== null && \"kind\" in query) {\n return print(query as DocumentNode)\n }\n\n return String(query)\n}\n\nfunction assertQuery(query: string): void {\n if (query.trim().length === 0) {\n throw new Error(\"GraphQL query must be non-empty\")\n }\n}\n\nexport function createGraphqlClient(transport: GraphqlTransport): GraphqlClient {\n return {\n async query<TData, TVariables extends GraphqlVariables = GraphqlVariables>(\n query: GraphqlDocument,\n variables?: TVariables\n ): Promise<TData> {\n const queryText = queryToString(query)\n assertQuery(queryText)\n return transport.execute<TData>(queryText, variables)\n }\n }\n}\n\nconst DEFAULT_GRAPHQL_URL = \"https://api.github.com/graphql\"\n\nfunction resolveGraphqlUrl(): string {\n if (process.env.GITHUB_GRAPHQL_URL) {\n return process.env.GITHUB_GRAPHQL_URL\n }\n\n if (process.env.GH_HOST) {\n return `https://${process.env.GH_HOST}/api/graphql`\n }\n\n return DEFAULT_GRAPHQL_URL\n}\n\nfunction createTokenTransport(token: string, graphqlUrl?: string): GraphqlTransport {\n const url = graphqlUrl ?? resolveGraphqlUrl()\n\n return {\n async execute<TData>(query: string, variables?: GraphqlVariables): Promise<TData> {\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({ query, variables: variables ?? {} }),\n })\n\n const payload = (await response.json()) as {\n data?: TData\n errors?: Array<{ message?: string }>\n message?: string\n }\n\n if (!response.ok) {\n throw new Error(payload.message ?? `GraphQL request failed (${response.status})`)\n }\n\n if (payload.errors?.length) {\n throw new Error(payload.errors[0]?.message ?? \"GraphQL returned errors\")\n }\n\n if (payload.data === undefined) {\n throw new Error(\"GraphQL response missing data\")\n }\n\n return payload.data\n },\n }\n}\n\nexport type TokenClientOptions = {\n token: string\n graphqlUrl?: string\n}\n\n/**\n * Create a GithubClient from a token string or options object.\n * Reads GITHUB_GRAPHQL_URL and GH_HOST from env for enterprise support.\n */\nexport function createGithubClientFromToken(tokenOrOptions: string | TokenClientOptions): GithubClient {\n const token = typeof tokenOrOptions === \"string\" ? tokenOrOptions : tokenOrOptions.token\n const graphqlUrl = typeof tokenOrOptions === \"string\" ? undefined : tokenOrOptions.graphqlUrl\n\n if (!token || token.trim().length === 0) {\n throw new Error(\"GitHub token is required\")\n }\n\n return createGithubClient(createTokenTransport(token, graphqlUrl))\n}\n\nexport function createGithubClient(transport: GraphqlTransport): GithubClient {\n const graphqlClient = createGraphqlClient(transport)\n const sdk = createSdkClients(transport)\n\n return {\n query: (query, variables) => graphqlClient.query(query, variables),\n fetchRepoView: (input) => runRepoView(sdk.repo, input),\n fetchIssueCommentsList: (input) => runIssueCommentsList(sdk.issueCommentsList, input),\n createIssue: (input) => runIssueCreate(graphqlClient, input),\n updateIssue: (input) => runIssueUpdate(graphqlClient, input),\n closeIssue: (input) => runIssueClose(graphqlClient, input),\n reopenIssue: (input) => runIssueReopen(graphqlClient, input),\n deleteIssue: (input) => runIssueDelete(graphqlClient, input),\n updateIssueLabels: (input) => runIssueLabelsUpdate(graphqlClient, input),\n updateIssueAssignees: (input) => runIssueAssigneesUpdate(graphqlClient, input),\n setIssueMilestone: (input) => runIssueMilestoneSet(graphqlClient, input),\n createIssueComment: (input) => runIssueCommentCreate(graphqlClient, input),\n fetchIssueLinkedPrs: (input) => runIssueLinkedPrsList(graphqlClient, input),\n fetchIssueRelations: (input) => runIssueRelationsGet(graphqlClient, input),\n setIssueParent: (input) => runIssueParentSet(graphqlClient, input),\n removeIssueParent: (input) => runIssueParentRemove(graphqlClient, input),\n addIssueBlockedBy: (input) => runIssueBlockedByAdd(graphqlClient, input),\n removeIssueBlockedBy: (input) => runIssueBlockedByRemove(graphqlClient, input),\n fetchIssueList: (input) => runIssueList(sdk.issueList, input),\n fetchIssueView: (input) => runIssueView(sdk.issue, input),\n fetchPrList: (input) => runPrList(sdk.prList, input),\n fetchPrView: (input) => runPrView(sdk.pr, input),\n fetchPrCommentsList: (input) => runPrCommentsList(graphqlClient, input),\n fetchPrReviewsList: (input) => runPrReviewsList(sdk.prReviewsList, input),\n fetchPrDiffListFiles: (input) => runPrDiffListFiles(sdk.prDiffListFiles, input),\n replyToReviewThread: (input) => runReplyToReviewThread(graphqlClient, input),\n resolveReviewThread: (input) => runResolveReviewThread(graphqlClient, input),\n unresolveReviewThread: (input) => runUnresolveReviewThread(graphqlClient, input)\n }\n}\n"],"mappings":"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","names":["getSdk"]}
@@ -25,13 +25,18 @@ var SKILL_CONTENT = `# ghx skill
25
25
 
26
26
  Use ghx capabilities to execute GitHub operations through a stable capability interface.
27
27
 
28
+ Session bootstrap (run once at start):
29
+ - gh auth status
30
+
31
+ If bootstrap fails, stop and request authentication before continuing.
32
+
28
33
  Quick commands:
29
34
  - ghx capabilities list
30
35
  - ghx capabilities explain <capability_id>
31
- - ghx run <capability_id> --input '<json>'
36
+ - GHX_SKIP_GH_PREFLIGHT=1 ghx run <capability_id> --input '<json>'
32
37
 
33
38
  Example:
34
- - ghx run repo.view --input '{"owner":"aryeko","name":"ghx"}'
39
+ - GHX_SKIP_GH_PREFLIGHT=1 ghx run repo.view --input '{"owner":"aryeko","name":"ghx"}'
35
40
  `;
36
41
  function usage() {
37
42
  return "Usage: ghx setup --scope <user|project> [--yes] [--dry-run] [--verify] [--track]";
@@ -195,4 +200,4 @@ async function setupCommand(argv = []) {
195
200
  export {
196
201
  setupCommand
197
202
  };
198
- //# sourceMappingURL=chunk-YNQNHCRS.js.map
203
+ //# sourceMappingURL=chunk-MGNGSGMF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/setup.ts"],"sourcesContent":["import { access, appendFile, mkdir, readFile, writeFile } from \"node:fs/promises\"\nimport { homedir } from \"node:os\"\nimport { dirname, join } from \"node:path\"\nimport readline from \"node:readline/promises\"\n\nimport Ajv from \"ajv\"\n\ntype SetupScope = \"user\" | \"project\"\n\ntype SetupOptions = {\n scope: SetupScope\n assumeYes: boolean\n dryRun: boolean\n verifyOnly: boolean\n track: boolean\n}\n\nconst ajv = new Ajv({ allErrors: true, strict: false })\n\nconst setupOptionsSchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"scope\", \"assumeYes\", \"dryRun\", \"verifyOnly\", \"track\"],\n properties: {\n scope: {\n type: \"string\",\n enum: [\"user\", \"project\"]\n },\n assumeYes: { type: \"boolean\" },\n dryRun: { type: \"boolean\" },\n verifyOnly: { type: \"boolean\" },\n track: { type: \"boolean\" }\n }\n} as const\n\nconst validateSetupOptions = ajv.compile(setupOptionsSchema)\n\nconst SKILL_CONTENT = `# ghx skill\n\nUse ghx capabilities to execute GitHub operations through a stable capability interface.\n\nSession bootstrap (run once at start):\n- gh auth status\n\nIf bootstrap fails, stop and request authentication before continuing.\n\nQuick commands:\n- ghx capabilities list\n- ghx capabilities explain <capability_id>\n- GHX_SKIP_GH_PREFLIGHT=1 ghx run <capability_id> --input '<json>'\n\nExample:\n- GHX_SKIP_GH_PREFLIGHT=1 ghx run repo.view --input '{\"owner\":\"aryeko\",\"name\":\"ghx\"}'\n`\n\nfunction usage(): string {\n return \"Usage: ghx setup --scope <user|project> [--yes] [--dry-run] [--verify] [--track]\"\n}\n\nfunction parseScope(argv: string[]): SetupScope | undefined {\n const inline = argv.find((arg) => arg.startsWith(\"--scope=\"))\n if (inline) {\n const raw = inline.slice(\"--scope=\".length)\n if (raw === \"user\" || raw === \"project\") {\n return raw\n }\n return undefined\n }\n\n const scopeIndex = argv.findIndex((arg) => arg === \"--scope\")\n if (scopeIndex < 0) {\n return undefined\n }\n\n const value = argv[scopeIndex + 1]\n if (value === \"user\" || value === \"project\") {\n return value\n }\n\n return undefined\n}\n\nfunction parseArgs(argv: string[]): SetupOptions | null {\n const scope = parseScope(argv)\n if (!scope) {\n return null\n }\n\n const options: SetupOptions = {\n scope,\n assumeYes: argv.includes(\"--yes\"),\n dryRun: argv.includes(\"--dry-run\"),\n verifyOnly: argv.includes(\"--verify\"),\n track: argv.includes(\"--track\")\n }\n\n if (!validateSetupOptions(options)) {\n return null\n }\n\n return options\n}\n\nfunction resolveSkillPath(scope: SetupScope): string {\n const base = scope === \"user\" ? homedir() : process.cwd()\n return join(base, \".agents\", \"skill\", \"ghx\", \"SKILL.md\")\n}\n\nfunction resolveTrackingPath(): string {\n return join(homedir(), \".agents\", \"ghx\", \"setup-events.jsonl\")\n}\n\nasync function writeTrackingEvent(options: {\n track: boolean\n scope: SetupScope\n mode: \"apply\"\n success: boolean\n}): Promise<void> {\n if (!options.track) {\n return\n }\n\n const trackingPath = resolveTrackingPath()\n await mkdir(join(homedir(), \".agents\", \"ghx\"), { recursive: true })\n await appendFile(\n trackingPath,\n `${JSON.stringify({\n command: \"setup\",\n scope: options.scope,\n mode: options.mode,\n success: options.success,\n timestamp: new Date().toISOString()\n })}\\n`,\n \"utf8\"\n )\n}\n\nasync function confirmOverwrite(skillPath: string): Promise<boolean> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n return false\n }\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n })\n\n try {\n const answer = await rl.question(`Skill already exists at ${skillPath}. Overwrite? [y/N] `)\n const normalized = answer.trim().toLowerCase()\n return normalized === \"y\" || normalized === \"yes\"\n } finally {\n rl.close()\n }\n}\n\nasync function verifySkill(skillPath: string): Promise<boolean> {\n try {\n const content = await readFile(skillPath, \"utf8\")\n return content.includes(\"ghx capabilities\")\n } catch (error) {\n if (typeof error === \"object\" && error !== null && \"code\" in error) {\n if ((error as { code?: string }).code === \"ENOENT\") {\n return false\n }\n }\n\n throw error\n }\n}\n\nasync function skillFileExists(skillPath: string): Promise<boolean> {\n try {\n await access(skillPath)\n return true\n } catch (error) {\n if (typeof error === \"object\" && error !== null && \"code\" in error) {\n if ((error as { code?: string }).code === \"ENOENT\") {\n return false\n }\n }\n\n throw error\n }\n}\n\nexport async function setupCommand(argv: string[] = []): Promise<number> {\n const parsed = parseArgs(argv)\n if (!parsed) {\n process.stderr.write(`${usage()}\\n`)\n return 1\n }\n\n const skillPath = resolveSkillPath(parsed.scope)\n\n try {\n if (parsed.verifyOnly) {\n const ok = await verifySkill(skillPath)\n if (!ok) {\n process.stderr.write(`Verify failed: skill not installed at ${skillPath}\\n`)\n return 1\n }\n\n process.stdout.write(`Verify passed: skill installed at ${skillPath}\\n`)\n return 0\n }\n\n if (parsed.dryRun) {\n process.stdout.write(`Dry run: would write ${skillPath}\\n`)\n return 0\n }\n\n const alreadyExists = await skillFileExists(skillPath)\n if (alreadyExists && !parsed.assumeYes) {\n const approved = await confirmOverwrite(skillPath)\n if (!approved) {\n process.stderr.write(\n `Skill already exists at ${skillPath}. Re-run with --yes or confirm overwrite interactively.\\n`\n )\n await writeTrackingEvent({ track: parsed.track, scope: parsed.scope, mode: \"apply\", success: false })\n return 1\n }\n }\n\n await mkdir(dirname(skillPath), { recursive: true })\n await writeFile(skillPath, SKILL_CONTENT, \"utf8\")\n\n process.stdout.write(`Setup complete: wrote ${skillPath}\\n`)\n process.stdout.write(\"Try: ghx capabilities list\\n\")\n await writeTrackingEvent({ track: parsed.track, scope: parsed.scope, mode: \"apply\", success: true })\n return 0\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n process.stderr.write(`Setup failed: ${message}\\n`)\n return 1\n }\n}\n"],"mappings":";AAAA,SAAS,QAAQ,YAAY,OAAO,UAAU,iBAAiB;AAC/D,SAAS,eAAe;AACxB,SAAS,SAAS,YAAY;AAC9B,OAAO,cAAc;AAErB,OAAO,SAAS;AAYhB,IAAM,MAAM,IAAI,IAAI,EAAE,WAAW,MAAM,QAAQ,MAAM,CAAC;AAEtD,IAAM,qBAAqB;AAAA,EACzB,MAAM;AAAA,EACN,sBAAsB;AAAA,EACtB,UAAU,CAAC,SAAS,aAAa,UAAU,cAAc,OAAO;AAAA,EAChE,YAAY;AAAA,IACV,OAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM,CAAC,QAAQ,SAAS;AAAA,IAC1B;AAAA,IACA,WAAW,EAAE,MAAM,UAAU;AAAA,IAC7B,QAAQ,EAAE,MAAM,UAAU;AAAA,IAC1B,YAAY,EAAE,MAAM,UAAU;AAAA,IAC9B,OAAO,EAAE,MAAM,UAAU;AAAA,EAC3B;AACF;AAEA,IAAM,uBAAuB,IAAI,QAAQ,kBAAkB;AAE3D,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBtB,SAAS,QAAgB;AACvB,SAAO;AACT;AAEA,SAAS,WAAW,MAAwC;AAC1D,QAAM,SAAS,KAAK,KAAK,CAAC,QAAQ,IAAI,WAAW,UAAU,CAAC;AAC5D,MAAI,QAAQ;AACV,UAAM,MAAM,OAAO,MAAM,WAAW,MAAM;AAC1C,QAAI,QAAQ,UAAU,QAAQ,WAAW;AACvC,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,KAAK,UAAU,CAAC,QAAQ,QAAQ,SAAS;AAC5D,MAAI,aAAa,GAAG;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,KAAK,aAAa,CAAC;AACjC,MAAI,UAAU,UAAU,UAAU,WAAW;AAC3C,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,UAAU,MAAqC;AACtD,QAAM,QAAQ,WAAW,IAAI;AAC7B,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,QAAM,UAAwB;AAAA,IAC5B;AAAA,IACA,WAAW,KAAK,SAAS,OAAO;AAAA,IAChC,QAAQ,KAAK,SAAS,WAAW;AAAA,IACjC,YAAY,KAAK,SAAS,UAAU;AAAA,IACpC,OAAO,KAAK,SAAS,SAAS;AAAA,EAChC;AAEA,MAAI,CAAC,qBAAqB,OAAO,GAAG;AAClC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,OAA2B;AACnD,QAAM,OAAO,UAAU,SAAS,QAAQ,IAAI,QAAQ,IAAI;AACxD,SAAO,KAAK,MAAM,WAAW,SAAS,OAAO,UAAU;AACzD;AAEA,SAAS,sBAA8B;AACrC,SAAO,KAAK,QAAQ,GAAG,WAAW,OAAO,oBAAoB;AAC/D;AAEA,eAAe,mBAAmB,SAKhB;AAChB,MAAI,CAAC,QAAQ,OAAO;AAClB;AAAA,EACF;AAEA,QAAM,eAAe,oBAAoB;AACzC,QAAM,MAAM,KAAK,QAAQ,GAAG,WAAW,KAAK,GAAG,EAAE,WAAW,KAAK,CAAC;AAClE,QAAM;AAAA,IACJ;AAAA,IACA,GAAG,KAAK,UAAU;AAAA,MAChB,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,MACd,SAAS,QAAQ;AAAA,MACjB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IACpC,CAAC,CAAC;AAAA;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAe,iBAAiB,WAAqC;AACnE,MAAI,CAAC,QAAQ,MAAM,SAAS,CAAC,QAAQ,OAAO,OAAO;AACjD,WAAO;AAAA,EACT;AAEA,QAAM,KAAK,SAAS,gBAAgB;AAAA,IAClC,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,EAClB,CAAC;AAED,MAAI;AACF,UAAM,SAAS,MAAM,GAAG,SAAS,2BAA2B,SAAS,qBAAqB;AAC1F,UAAM,aAAa,OAAO,KAAK,EAAE,YAAY;AAC7C,WAAO,eAAe,OAAO,eAAe;AAAA,EAC9C,UAAE;AACA,OAAG,MAAM;AAAA,EACX;AACF;AAEA,eAAe,YAAY,WAAqC;AAC9D,MAAI;AACF,UAAM,UAAU,MAAM,SAAS,WAAW,MAAM;AAChD,WAAO,QAAQ,SAAS,kBAAkB;AAAA,EAC5C,SAAS,OAAO;AACd,QAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU,OAAO;AAClE,UAAK,MAA4B,SAAS,UAAU;AAClD,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM;AAAA,EACR;AACF;AAEA,eAAe,gBAAgB,WAAqC;AAClE,MAAI;AACF,UAAM,OAAO,SAAS;AACtB,WAAO;AAAA,EACT,SAAS,OAAO;AACd,QAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU,OAAO;AAClE,UAAK,MAA4B,SAAS,UAAU;AAClD,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM;AAAA,EACR;AACF;AAEA,eAAsB,aAAa,OAAiB,CAAC,GAAoB;AACvE,QAAM,SAAS,UAAU,IAAI;AAC7B,MAAI,CAAC,QAAQ;AACX,YAAQ,OAAO,MAAM,GAAG,MAAM,CAAC;AAAA,CAAI;AACnC,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,iBAAiB,OAAO,KAAK;AAE/C,MAAI;AACF,QAAI,OAAO,YAAY;AACrB,YAAM,KAAK,MAAM,YAAY,SAAS;AACtC,UAAI,CAAC,IAAI;AACP,gBAAQ,OAAO,MAAM,yCAAyC,SAAS;AAAA,CAAI;AAC3E,eAAO;AAAA,MACT;AAEA,cAAQ,OAAO,MAAM,qCAAqC,SAAS;AAAA,CAAI;AACvE,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,QAAQ;AACjB,cAAQ,OAAO,MAAM,wBAAwB,SAAS;AAAA,CAAI;AAC1D,aAAO;AAAA,IACT;AAEA,UAAM,gBAAgB,MAAM,gBAAgB,SAAS;AACrD,QAAI,iBAAiB,CAAC,OAAO,WAAW;AACtC,YAAM,WAAW,MAAM,iBAAiB,SAAS;AACjD,UAAI,CAAC,UAAU;AACb,gBAAQ,OAAO;AAAA,UACb,2BAA2B,SAAS;AAAA;AAAA,QACtC;AACA,cAAM,mBAAmB,EAAE,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,SAAS,SAAS,MAAM,CAAC;AACpG,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,MAAM,QAAQ,SAAS,GAAG,EAAE,WAAW,KAAK,CAAC;AACnD,UAAM,UAAU,WAAW,eAAe,MAAM;AAEhD,YAAQ,OAAO,MAAM,yBAAyB,SAAS;AAAA,CAAI;AAC3D,YAAQ,OAAO,MAAM,8BAA8B;AACnD,UAAM,mBAAmB,EAAE,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,SAAS,SAAS,KAAK,CAAC;AACnG,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,YAAQ,OAAO,MAAM,iBAAiB,OAAO;AAAA,CAAI;AACjD,WAAO;AAAA,EACT;AACF;","names":[]}