@ghx-dev/core 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/README.md +14 -2
  2. package/dist/agent.d.ts +32 -7
  3. package/dist/agent.js +29 -12
  4. package/dist/agent.js.map +1 -1
  5. package/dist/{chunk-JH6GM6XU.js → chunk-OL4ARD3R.js} +116 -7
  6. package/dist/chunk-OL4ARD3R.js.map +1 -0
  7. package/dist/chunk-PJ2JKKQE.js +4148 -0
  8. package/dist/chunk-PJ2JKKQE.js.map +1 -0
  9. package/dist/{chunk-4PLVKNCF.js → chunk-SCIJMW5P.js} +14 -4
  10. package/dist/chunk-SCIJMW5P.js.map +1 -0
  11. package/dist/cli/assets/skills/ghx/SKILL.md +57 -0
  12. package/dist/cli/index.js +373 -41
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/{core/contracts/envelope.d.ts → envelope-BpF6MNCv.d.ts} +15 -3
  15. package/dist/index.d.ts +470 -22
  16. package/dist/index.js +6 -30
  17. package/package.json +11 -9
  18. package/dist/agent-interface/prompt/main-skill.d.ts +0 -3
  19. package/dist/agent-interface/prompt/main-skill.js +0 -7
  20. package/dist/agent-interface/prompt/main-skill.js.map +0 -1
  21. package/dist/agent-interface/tools/execute-tool.d.ts +0 -16
  22. package/dist/agent-interface/tools/execute-tool.js +0 -7
  23. package/dist/agent-interface/tools/execute-tool.js.map +0 -1
  24. package/dist/agent-interface/tools/explain-tool.d.ts +0 -11
  25. package/dist/agent-interface/tools/explain-tool.js +0 -9
  26. package/dist/agent-interface/tools/explain-tool.js.map +0 -1
  27. package/dist/agent-interface/tools/list-capabilities-tool.d.ts +0 -7
  28. package/dist/agent-interface/tools/list-capabilities-tool.js +0 -9
  29. package/dist/agent-interface/tools/list-capabilities-tool.js.map +0 -1
  30. package/dist/chunk-22WWCK6A.js +0 -92
  31. package/dist/chunk-22WWCK6A.js.map +0 -1
  32. package/dist/chunk-2W4L5YCC.js +0 -116
  33. package/dist/chunk-2W4L5YCC.js.map +0 -1
  34. package/dist/chunk-3MRJX72M.js +0 -209
  35. package/dist/chunk-3MRJX72M.js.map +0 -1
  36. package/dist/chunk-4PLVKNCF.js.map +0 -1
  37. package/dist/chunk-573MDG3I.js +0 -18
  38. package/dist/chunk-573MDG3I.js.map +0 -1
  39. package/dist/chunk-5JRLVOF2.js +0 -50
  40. package/dist/chunk-5JRLVOF2.js.map +0 -1
  41. package/dist/chunk-B6RLMKS4.js +0 -41
  42. package/dist/chunk-B6RLMKS4.js.map +0 -1
  43. package/dist/chunk-D746VR3B.js +0 -38
  44. package/dist/chunk-D746VR3B.js.map +0 -1
  45. package/dist/chunk-DJIEG6K7.js +0 -20
  46. package/dist/chunk-DJIEG6K7.js.map +0 -1
  47. package/dist/chunk-DLKIQBK6.js +0 -106
  48. package/dist/chunk-DLKIQBK6.js.map +0 -1
  49. package/dist/chunk-EBRDO4Y6.js +0 -31
  50. package/dist/chunk-EBRDO4Y6.js.map +0 -1
  51. package/dist/chunk-FXN6IIT5.js +0 -14
  52. package/dist/chunk-FXN6IIT5.js.map +0 -1
  53. package/dist/chunk-GMTG7X2L.js +0 -16
  54. package/dist/chunk-GMTG7X2L.js.map +0 -1
  55. package/dist/chunk-HQ2VRCH7.js +0 -42
  56. package/dist/chunk-HQ2VRCH7.js.map +0 -1
  57. package/dist/chunk-JH6GM6XU.js.map +0 -1
  58. package/dist/chunk-JLDU462R.js +0 -1352
  59. package/dist/chunk-JLDU462R.js.map +0 -1
  60. package/dist/chunk-MGNGSGMF.js +0 -203
  61. package/dist/chunk-MGNGSGMF.js.map +0 -1
  62. package/dist/chunk-NFF5VF4U.js +0 -28
  63. package/dist/chunk-NFF5VF4U.js.map +0 -1
  64. package/dist/chunk-QEAMC4IJ.js +0 -34
  65. package/dist/chunk-QEAMC4IJ.js.map +0 -1
  66. package/dist/chunk-QZZC53HF.js +0 -38
  67. package/dist/chunk-QZZC53HF.js.map +0 -1
  68. package/dist/chunk-RUQXGZ35.js +0 -34
  69. package/dist/chunk-RUQXGZ35.js.map +0 -1
  70. package/dist/chunk-SA2D4A5U.js +0 -1496
  71. package/dist/chunk-SA2D4A5U.js.map +0 -1
  72. package/dist/chunk-SD7U4BNA.js +0 -174
  73. package/dist/chunk-SD7U4BNA.js.map +0 -1
  74. package/dist/chunk-SJR2SACI.js +0 -30
  75. package/dist/chunk-SJR2SACI.js.map +0 -1
  76. package/dist/chunk-TCLMLVUQ.js +0 -38
  77. package/dist/chunk-TCLMLVUQ.js.map +0 -1
  78. package/dist/chunk-TDTKOJKN.js +0 -52
  79. package/dist/chunk-TDTKOJKN.js.map +0 -1
  80. package/dist/chunk-UGWIZ3RI.js +0 -7
  81. package/dist/chunk-UGWIZ3RI.js.map +0 -1
  82. package/dist/chunk-UOJWOHRM.js +0 -16
  83. package/dist/chunk-UOJWOHRM.js.map +0 -1
  84. package/dist/chunk-VD5NXQP7.js +0 -42
  85. package/dist/chunk-VD5NXQP7.js.map +0 -1
  86. package/dist/chunk-W2TKG2UL.js +0 -37
  87. package/dist/chunk-W2TKG2UL.js.map +0 -1
  88. package/dist/chunk-W6ROKCY5.js +0 -28
  89. package/dist/chunk-W6ROKCY5.js.map +0 -1
  90. package/dist/chunk-XNMM64WU.js +0 -221
  91. package/dist/chunk-XNMM64WU.js.map +0 -1
  92. package/dist/cli/commands/capabilities-explain.d.ts +0 -3
  93. package/dist/cli/commands/capabilities-explain.js +0 -10
  94. package/dist/cli/commands/capabilities-explain.js.map +0 -1
  95. package/dist/cli/commands/capabilities-list.d.ts +0 -3
  96. package/dist/cli/commands/capabilities-list.js +0 -10
  97. package/dist/cli/commands/capabilities-list.js.map +0 -1
  98. package/dist/cli/commands/doctor.d.ts +0 -3
  99. package/dist/cli/commands/doctor.js +0 -7
  100. package/dist/cli/commands/doctor.js.map +0 -1
  101. package/dist/cli/commands/routes.d.ts +0 -3
  102. package/dist/cli/commands/routes.js +0 -7
  103. package/dist/cli/commands/routes.js.map +0 -1
  104. package/dist/cli/commands/run.d.ts +0 -3
  105. package/dist/cli/commands/run.js +0 -31
  106. package/dist/cli/commands/run.js.map +0 -1
  107. package/dist/cli/commands/setup.d.ts +0 -3
  108. package/dist/cli/commands/setup.js +0 -7
  109. package/dist/cli/commands/setup.js.map +0 -1
  110. package/dist/cli/formatters/json.d.ts +0 -3
  111. package/dist/cli/formatters/json.js +0 -8
  112. package/dist/cli/formatters/json.js.map +0 -1
  113. package/dist/cli/formatters/table.d.ts +0 -3
  114. package/dist/cli/formatters/table.js +0 -8
  115. package/dist/cli/formatters/table.js.map +0 -1
  116. package/dist/core/contracts/envelope.js +0 -1
  117. package/dist/core/contracts/envelope.js.map +0 -1
  118. package/dist/core/contracts/task.d.ts +0 -7
  119. package/dist/core/contracts/task.js +0 -1
  120. package/dist/core/contracts/task.js.map +0 -1
  121. package/dist/core/contracts/tasks/check_run.annotations.list.d.ts +0 -5
  122. package/dist/core/contracts/tasks/check_run.annotations.list.js +0 -8
  123. package/dist/core/contracts/tasks/check_run.annotations.list.js.map +0 -1
  124. package/dist/core/contracts/tasks/issue.assignees.update.d.ts +0 -5
  125. package/dist/core/contracts/tasks/issue.assignees.update.js +0 -8
  126. package/dist/core/contracts/tasks/issue.assignees.update.js.map +0 -1
  127. package/dist/core/contracts/tasks/issue.blocked_by.add.d.ts +0 -5
  128. package/dist/core/contracts/tasks/issue.blocked_by.add.js +0 -8
  129. package/dist/core/contracts/tasks/issue.blocked_by.add.js.map +0 -1
  130. package/dist/core/contracts/tasks/issue.blocked_by.remove.d.ts +0 -5
  131. package/dist/core/contracts/tasks/issue.blocked_by.remove.js +0 -8
  132. package/dist/core/contracts/tasks/issue.blocked_by.remove.js.map +0 -1
  133. package/dist/core/contracts/tasks/issue.close.d.ts +0 -5
  134. package/dist/core/contracts/tasks/issue.close.js +0 -8
  135. package/dist/core/contracts/tasks/issue.close.js.map +0 -1
  136. package/dist/core/contracts/tasks/issue.comments.create.d.ts +0 -5
  137. package/dist/core/contracts/tasks/issue.comments.create.js +0 -8
  138. package/dist/core/contracts/tasks/issue.comments.create.js.map +0 -1
  139. package/dist/core/contracts/tasks/issue.comments.list.d.ts +0 -5
  140. package/dist/core/contracts/tasks/issue.comments.list.js +0 -8
  141. package/dist/core/contracts/tasks/issue.comments.list.js.map +0 -1
  142. package/dist/core/contracts/tasks/issue.create.d.ts +0 -5
  143. package/dist/core/contracts/tasks/issue.create.js +0 -8
  144. package/dist/core/contracts/tasks/issue.create.js.map +0 -1
  145. package/dist/core/contracts/tasks/issue.delete.d.ts +0 -5
  146. package/dist/core/contracts/tasks/issue.delete.js +0 -8
  147. package/dist/core/contracts/tasks/issue.delete.js.map +0 -1
  148. package/dist/core/contracts/tasks/issue.labels.update.d.ts +0 -5
  149. package/dist/core/contracts/tasks/issue.labels.update.js +0 -8
  150. package/dist/core/contracts/tasks/issue.labels.update.js.map +0 -1
  151. package/dist/core/contracts/tasks/issue.linked_prs.list.d.ts +0 -5
  152. package/dist/core/contracts/tasks/issue.linked_prs.list.js +0 -8
  153. package/dist/core/contracts/tasks/issue.linked_prs.list.js.map +0 -1
  154. package/dist/core/contracts/tasks/issue.list.d.ts +0 -5
  155. package/dist/core/contracts/tasks/issue.list.js +0 -8
  156. package/dist/core/contracts/tasks/issue.list.js.map +0 -1
  157. package/dist/core/contracts/tasks/issue.milestone.set.d.ts +0 -5
  158. package/dist/core/contracts/tasks/issue.milestone.set.js +0 -8
  159. package/dist/core/contracts/tasks/issue.milestone.set.js.map +0 -1
  160. package/dist/core/contracts/tasks/issue.parent.remove.d.ts +0 -5
  161. package/dist/core/contracts/tasks/issue.parent.remove.js +0 -8
  162. package/dist/core/contracts/tasks/issue.parent.remove.js.map +0 -1
  163. package/dist/core/contracts/tasks/issue.parent.set.d.ts +0 -5
  164. package/dist/core/contracts/tasks/issue.parent.set.js +0 -8
  165. package/dist/core/contracts/tasks/issue.parent.set.js.map +0 -1
  166. package/dist/core/contracts/tasks/issue.relations.get.d.ts +0 -5
  167. package/dist/core/contracts/tasks/issue.relations.get.js +0 -8
  168. package/dist/core/contracts/tasks/issue.relations.get.js.map +0 -1
  169. package/dist/core/contracts/tasks/issue.reopen.d.ts +0 -5
  170. package/dist/core/contracts/tasks/issue.reopen.js +0 -8
  171. package/dist/core/contracts/tasks/issue.reopen.js.map +0 -1
  172. package/dist/core/contracts/tasks/issue.update.d.ts +0 -5
  173. package/dist/core/contracts/tasks/issue.update.js +0 -8
  174. package/dist/core/contracts/tasks/issue.update.js.map +0 -1
  175. package/dist/core/contracts/tasks/issue.view.d.ts +0 -5
  176. package/dist/core/contracts/tasks/issue.view.js +0 -8
  177. package/dist/core/contracts/tasks/issue.view.js.map +0 -1
  178. package/dist/core/contracts/tasks/pr.assignees.update.d.ts +0 -5
  179. package/dist/core/contracts/tasks/pr.assignees.update.js +0 -8
  180. package/dist/core/contracts/tasks/pr.assignees.update.js.map +0 -1
  181. package/dist/core/contracts/tasks/pr.branch.update.d.ts +0 -5
  182. package/dist/core/contracts/tasks/pr.branch.update.js +0 -8
  183. package/dist/core/contracts/tasks/pr.branch.update.js.map +0 -1
  184. package/dist/core/contracts/tasks/pr.checks.get_failed.d.ts +0 -5
  185. package/dist/core/contracts/tasks/pr.checks.get_failed.js +0 -8
  186. package/dist/core/contracts/tasks/pr.checks.get_failed.js.map +0 -1
  187. package/dist/core/contracts/tasks/pr.checks.rerun_all.d.ts +0 -5
  188. package/dist/core/contracts/tasks/pr.checks.rerun_all.js +0 -8
  189. package/dist/core/contracts/tasks/pr.checks.rerun_all.js.map +0 -1
  190. package/dist/core/contracts/tasks/pr.checks.rerun_failed.d.ts +0 -5
  191. package/dist/core/contracts/tasks/pr.checks.rerun_failed.js +0 -8
  192. package/dist/core/contracts/tasks/pr.checks.rerun_failed.js.map +0 -1
  193. package/dist/core/contracts/tasks/pr.comment.reply.d.ts +0 -5
  194. package/dist/core/contracts/tasks/pr.comment.reply.js +0 -8
  195. package/dist/core/contracts/tasks/pr.comment.reply.js.map +0 -1
  196. package/dist/core/contracts/tasks/pr.comment.resolve.d.ts +0 -5
  197. package/dist/core/contracts/tasks/pr.comment.resolve.js +0 -8
  198. package/dist/core/contracts/tasks/pr.comment.resolve.js.map +0 -1
  199. package/dist/core/contracts/tasks/pr.comment.unresolve.d.ts +0 -5
  200. package/dist/core/contracts/tasks/pr.comment.unresolve.js +0 -8
  201. package/dist/core/contracts/tasks/pr.comment.unresolve.js.map +0 -1
  202. package/dist/core/contracts/tasks/pr.comments.list.d.ts +0 -5
  203. package/dist/core/contracts/tasks/pr.comments.list.js +0 -8
  204. package/dist/core/contracts/tasks/pr.comments.list.js.map +0 -1
  205. package/dist/core/contracts/tasks/pr.diff.list_files.d.ts +0 -5
  206. package/dist/core/contracts/tasks/pr.diff.list_files.js +0 -8
  207. package/dist/core/contracts/tasks/pr.diff.list_files.js.map +0 -1
  208. package/dist/core/contracts/tasks/pr.list.d.ts +0 -5
  209. package/dist/core/contracts/tasks/pr.list.js +0 -8
  210. package/dist/core/contracts/tasks/pr.list.js.map +0 -1
  211. package/dist/core/contracts/tasks/pr.merge.execute.d.ts +0 -5
  212. package/dist/core/contracts/tasks/pr.merge.execute.js +0 -8
  213. package/dist/core/contracts/tasks/pr.merge.execute.js.map +0 -1
  214. package/dist/core/contracts/tasks/pr.mergeability.view.d.ts +0 -5
  215. package/dist/core/contracts/tasks/pr.mergeability.view.js +0 -8
  216. package/dist/core/contracts/tasks/pr.mergeability.view.js.map +0 -1
  217. package/dist/core/contracts/tasks/pr.ready_for_review.set.d.ts +0 -5
  218. package/dist/core/contracts/tasks/pr.ready_for_review.set.js +0 -8
  219. package/dist/core/contracts/tasks/pr.ready_for_review.set.js.map +0 -1
  220. package/dist/core/contracts/tasks/pr.review.submit_approve.d.ts +0 -5
  221. package/dist/core/contracts/tasks/pr.review.submit_approve.js +0 -8
  222. package/dist/core/contracts/tasks/pr.review.submit_approve.js.map +0 -1
  223. package/dist/core/contracts/tasks/pr.review.submit_comment.d.ts +0 -5
  224. package/dist/core/contracts/tasks/pr.review.submit_comment.js +0 -8
  225. package/dist/core/contracts/tasks/pr.review.submit_comment.js.map +0 -1
  226. package/dist/core/contracts/tasks/pr.review.submit_request_changes.d.ts +0 -5
  227. package/dist/core/contracts/tasks/pr.review.submit_request_changes.js +0 -8
  228. package/dist/core/contracts/tasks/pr.review.submit_request_changes.js.map +0 -1
  229. package/dist/core/contracts/tasks/pr.reviewers.request.d.ts +0 -5
  230. package/dist/core/contracts/tasks/pr.reviewers.request.js +0 -8
  231. package/dist/core/contracts/tasks/pr.reviewers.request.js.map +0 -1
  232. package/dist/core/contracts/tasks/pr.reviews.list.d.ts +0 -5
  233. package/dist/core/contracts/tasks/pr.reviews.list.js +0 -8
  234. package/dist/core/contracts/tasks/pr.reviews.list.js.map +0 -1
  235. package/dist/core/contracts/tasks/pr.status.checks.d.ts +0 -5
  236. package/dist/core/contracts/tasks/pr.status.checks.js +0 -8
  237. package/dist/core/contracts/tasks/pr.status.checks.js.map +0 -1
  238. package/dist/core/contracts/tasks/pr.view.d.ts +0 -5
  239. package/dist/core/contracts/tasks/pr.view.js +0 -8
  240. package/dist/core/contracts/tasks/pr.view.js.map +0 -1
  241. package/dist/core/contracts/tasks/project_v2.fields.list.d.ts +0 -5
  242. package/dist/core/contracts/tasks/project_v2.fields.list.js +0 -8
  243. package/dist/core/contracts/tasks/project_v2.fields.list.js.map +0 -1
  244. package/dist/core/contracts/tasks/project_v2.item.add_issue.d.ts +0 -5
  245. package/dist/core/contracts/tasks/project_v2.item.add_issue.js +0 -8
  246. package/dist/core/contracts/tasks/project_v2.item.add_issue.js.map +0 -1
  247. package/dist/core/contracts/tasks/project_v2.item.field.update.d.ts +0 -5
  248. package/dist/core/contracts/tasks/project_v2.item.field.update.js +0 -8
  249. package/dist/core/contracts/tasks/project_v2.item.field.update.js.map +0 -1
  250. package/dist/core/contracts/tasks/project_v2.items.list.d.ts +0 -5
  251. package/dist/core/contracts/tasks/project_v2.items.list.js +0 -8
  252. package/dist/core/contracts/tasks/project_v2.items.list.js.map +0 -1
  253. package/dist/core/contracts/tasks/project_v2.org.get.d.ts +0 -5
  254. package/dist/core/contracts/tasks/project_v2.org.get.js +0 -8
  255. package/dist/core/contracts/tasks/project_v2.org.get.js.map +0 -1
  256. package/dist/core/contracts/tasks/project_v2.user.get.d.ts +0 -5
  257. package/dist/core/contracts/tasks/project_v2.user.get.js +0 -8
  258. package/dist/core/contracts/tasks/project_v2.user.get.js.map +0 -1
  259. package/dist/core/contracts/tasks/release.create_draft.d.ts +0 -5
  260. package/dist/core/contracts/tasks/release.create_draft.js +0 -8
  261. package/dist/core/contracts/tasks/release.create_draft.js.map +0 -1
  262. package/dist/core/contracts/tasks/release.get.d.ts +0 -5
  263. package/dist/core/contracts/tasks/release.get.js +0 -8
  264. package/dist/core/contracts/tasks/release.get.js.map +0 -1
  265. package/dist/core/contracts/tasks/release.list.d.ts +0 -5
  266. package/dist/core/contracts/tasks/release.list.js +0 -8
  267. package/dist/core/contracts/tasks/release.list.js.map +0 -1
  268. package/dist/core/contracts/tasks/release.publish_draft.d.ts +0 -5
  269. package/dist/core/contracts/tasks/release.publish_draft.js +0 -8
  270. package/dist/core/contracts/tasks/release.publish_draft.js.map +0 -1
  271. package/dist/core/contracts/tasks/release.update.d.ts +0 -5
  272. package/dist/core/contracts/tasks/release.update.js +0 -8
  273. package/dist/core/contracts/tasks/release.update.js.map +0 -1
  274. package/dist/core/contracts/tasks/repo.issue_types.list.d.ts +0 -5
  275. package/dist/core/contracts/tasks/repo.issue_types.list.js +0 -8
  276. package/dist/core/contracts/tasks/repo.issue_types.list.js.map +0 -1
  277. package/dist/core/contracts/tasks/repo.labels.list.d.ts +0 -5
  278. package/dist/core/contracts/tasks/repo.labels.list.js +0 -8
  279. package/dist/core/contracts/tasks/repo.labels.list.js.map +0 -1
  280. package/dist/core/contracts/tasks/repo.view.d.ts +0 -5
  281. package/dist/core/contracts/tasks/repo.view.js +0 -8
  282. package/dist/core/contracts/tasks/repo.view.js.map +0 -1
  283. package/dist/core/contracts/tasks/workflow.get.d.ts +0 -5
  284. package/dist/core/contracts/tasks/workflow.get.js +0 -8
  285. package/dist/core/contracts/tasks/workflow.get.js.map +0 -1
  286. package/dist/core/contracts/tasks/workflow.list.d.ts +0 -5
  287. package/dist/core/contracts/tasks/workflow.list.js +0 -8
  288. package/dist/core/contracts/tasks/workflow.list.js.map +0 -1
  289. package/dist/core/contracts/tasks/workflow_dispatch.run.d.ts +0 -5
  290. package/dist/core/contracts/tasks/workflow_dispatch.run.js +0 -8
  291. package/dist/core/contracts/tasks/workflow_dispatch.run.js.map +0 -1
  292. package/dist/core/contracts/tasks/workflow_job.logs.analyze.d.ts +0 -5
  293. package/dist/core/contracts/tasks/workflow_job.logs.analyze.js +0 -8
  294. package/dist/core/contracts/tasks/workflow_job.logs.analyze.js.map +0 -1
  295. package/dist/core/contracts/tasks/workflow_job.logs.get.d.ts +0 -5
  296. package/dist/core/contracts/tasks/workflow_job.logs.get.js +0 -8
  297. package/dist/core/contracts/tasks/workflow_job.logs.get.js.map +0 -1
  298. package/dist/core/contracts/tasks/workflow_run.artifacts.list.d.ts +0 -5
  299. package/dist/core/contracts/tasks/workflow_run.artifacts.list.js +0 -8
  300. package/dist/core/contracts/tasks/workflow_run.artifacts.list.js.map +0 -1
  301. package/dist/core/contracts/tasks/workflow_run.cancel.d.ts +0 -5
  302. package/dist/core/contracts/tasks/workflow_run.cancel.js +0 -8
  303. package/dist/core/contracts/tasks/workflow_run.cancel.js.map +0 -1
  304. package/dist/core/contracts/tasks/workflow_run.get.d.ts +0 -5
  305. package/dist/core/contracts/tasks/workflow_run.get.js +0 -8
  306. package/dist/core/contracts/tasks/workflow_run.get.js.map +0 -1
  307. package/dist/core/contracts/tasks/workflow_run.jobs.list.d.ts +0 -5
  308. package/dist/core/contracts/tasks/workflow_run.jobs.list.js +0 -8
  309. package/dist/core/contracts/tasks/workflow_run.jobs.list.js.map +0 -1
  310. package/dist/core/contracts/tasks/workflow_run.rerun_all.d.ts +0 -5
  311. package/dist/core/contracts/tasks/workflow_run.rerun_all.js +0 -8
  312. package/dist/core/contracts/tasks/workflow_run.rerun_all.js.map +0 -1
  313. package/dist/core/contracts/tasks/workflow_run.rerun_failed.d.ts +0 -5
  314. package/dist/core/contracts/tasks/workflow_run.rerun_failed.js +0 -8
  315. package/dist/core/contracts/tasks/workflow_run.rerun_failed.js.map +0 -1
  316. package/dist/core/contracts/tasks/workflow_runs.list.d.ts +0 -5
  317. package/dist/core/contracts/tasks/workflow_runs.list.js +0 -8
  318. package/dist/core/contracts/tasks/workflow_runs.list.js.map +0 -1
  319. package/dist/core/errors/codes.d.ts +0 -13
  320. package/dist/core/errors/codes.js +0 -7
  321. package/dist/core/errors/codes.js.map +0 -1
  322. package/dist/core/errors/map-error.d.ts +0 -5
  323. package/dist/core/errors/map-error.js +0 -8
  324. package/dist/core/errors/map-error.js.map +0 -1
  325. package/dist/core/errors/retryability.d.ts +0 -3
  326. package/dist/core/errors/retryability.js +0 -8
  327. package/dist/core/errors/retryability.js.map +0 -1
  328. package/dist/core/execute/execute.d.ts +0 -28
  329. package/dist/core/execute/execute.js +0 -11
  330. package/dist/core/execute/execute.js.map +0 -1
  331. package/dist/core/execution/adapters/cli-adapter.d.ts +0 -22
  332. package/dist/core/execution/adapters/cli-adapter.js +0 -69
  333. package/dist/core/execution/adapters/cli-adapter.js.map +0 -1
  334. package/dist/core/execution/adapters/cli-capability-adapter.d.ts +0 -16
  335. package/dist/core/execution/adapters/cli-capability-adapter.js +0 -11
  336. package/dist/core/execution/adapters/cli-capability-adapter.js.map +0 -1
  337. package/dist/core/execution/adapters/graphql-adapter.d.ts +0 -25
  338. package/dist/core/execution/adapters/graphql-adapter.js +0 -44
  339. package/dist/core/execution/adapters/graphql-adapter.js.map +0 -1
  340. package/dist/core/execution/adapters/graphql-capability-adapter.d.ts +0 -20
  341. package/dist/core/execution/adapters/graphql-capability-adapter.js +0 -11
  342. package/dist/core/execution/adapters/graphql-capability-adapter.js.map +0 -1
  343. package/dist/core/execution/adapters/rest-adapter.d.ts +0 -3
  344. package/dist/core/execution/adapters/rest-adapter.js +0 -8
  345. package/dist/core/execution/adapters/rest-adapter.js.map +0 -1
  346. package/dist/core/execution/cli/safe-runner.d.ts +0 -12
  347. package/dist/core/execution/cli/safe-runner.js +0 -7
  348. package/dist/core/execution/cli/safe-runner.js.map +0 -1
  349. package/dist/core/execution/normalizer.d.ts +0 -13
  350. package/dist/core/execution/normalizer.js +0 -9
  351. package/dist/core/execution/normalizer.js.map +0 -1
  352. package/dist/core/execution/preflight.d.ts +0 -24
  353. package/dist/core/execution/preflight.js +0 -8
  354. package/dist/core/execution/preflight.js.map +0 -1
  355. package/dist/core/registry/index.d.ts +0 -15
  356. package/dist/core/registry/index.js +0 -12
  357. package/dist/core/registry/index.js.map +0 -1
  358. package/dist/core/registry/operation-card-schema.d.ts +0 -167
  359. package/dist/core/registry/operation-card-schema.js +0 -7
  360. package/dist/core/registry/operation-card-schema.js.map +0 -1
  361. package/dist/core/registry/schema-validator.d.ts +0 -16
  362. package/dist/core/registry/schema-validator.js +0 -9
  363. package/dist/core/registry/schema-validator.js.map +0 -1
  364. package/dist/core/registry/types.d.ts +0 -51
  365. package/dist/core/registry/types.js +0 -1
  366. package/dist/core/registry/types.js.map +0 -1
  367. package/dist/core/routing/capability-registry.d.ts +0 -8
  368. package/dist/core/routing/capability-registry.js +0 -15
  369. package/dist/core/routing/capability-registry.js.map +0 -1
  370. package/dist/core/routing/engine.d.ts +0 -32
  371. package/dist/core/routing/engine.js +0 -23
  372. package/dist/core/routing/engine.js.map +0 -1
  373. package/dist/core/routing/policy.d.ts +0 -3
  374. package/dist/core/routing/policy.js +0 -7
  375. package/dist/core/routing/policy.js.map +0 -1
  376. package/dist/core/routing/reason-codes.d.ts +0 -4
  377. package/dist/core/routing/reason-codes.js +0 -15
  378. package/dist/core/routing/reason-codes.js.map +0 -1
  379. package/dist/core/telemetry/logger.d.ts +0 -8
  380. package/dist/core/telemetry/logger.js +0 -9
  381. package/dist/core/telemetry/logger.js.map +0 -1
  382. package/dist/core/telemetry/metrics.d.ts +0 -7
  383. package/dist/core/telemetry/metrics.js +0 -1
  384. package/dist/core/telemetry/metrics.js.map +0 -1
  385. package/dist/gql/client.d.ts +0 -314
  386. package/dist/gql/client.js +0 -19
  387. package/dist/gql/client.js.map +0 -1
  388. package/dist/gql/generated/common-types.d.ts +0 -36
  389. package/dist/gql/generated/common-types.js +0 -1
  390. package/dist/gql/generated/common-types.js.map +0 -1
  391. package/dist/gql/operations/issue-assignees-update.generated.d.ts +0 -33
  392. package/dist/gql/operations/issue-assignees-update.generated.js +0 -28
  393. package/dist/gql/operations/issue-assignees-update.generated.js.map +0 -1
  394. package/dist/gql/operations/issue-blocked-by-add.generated.d.ts +0 -30
  395. package/dist/gql/operations/issue-blocked-by-add.generated.js +0 -26
  396. package/dist/gql/operations/issue-blocked-by-add.generated.js.map +0 -1
  397. package/dist/gql/operations/issue-blocked-by-remove.generated.d.ts +0 -30
  398. package/dist/gql/operations/issue-blocked-by-remove.generated.js +0 -26
  399. package/dist/gql/operations/issue-blocked-by-remove.generated.js.map +0 -1
  400. package/dist/gql/operations/issue-close.generated.d.ts +0 -27
  401. package/dist/gql/operations/issue-close.generated.js +0 -25
  402. package/dist/gql/operations/issue-close.generated.js.map +0 -1
  403. package/dist/gql/operations/issue-comment-create.generated.d.ts +0 -31
  404. package/dist/gql/operations/issue-comment-create.generated.js +0 -27
  405. package/dist/gql/operations/issue-comment-create.generated.js.map +0 -1
  406. package/dist/gql/operations/issue-comments-list.generated.d.ts +0 -59
  407. package/dist/gql/operations/issue-comments-list.generated.js +0 -9
  408. package/dist/gql/operations/issue-comments-list.generated.js.map +0 -1
  409. package/dist/gql/operations/issue-create.generated.d.ts +0 -31
  410. package/dist/gql/operations/issue-create.generated.js +0 -27
  411. package/dist/gql/operations/issue-create.generated.js.map +0 -1
  412. package/dist/gql/operations/issue-delete.generated.d.ts +0 -22
  413. package/dist/gql/operations/issue-delete.generated.js +0 -21
  414. package/dist/gql/operations/issue-delete.generated.js.map +0 -1
  415. package/dist/gql/operations/issue-labels-update.generated.d.ts +0 -33
  416. package/dist/gql/operations/issue-labels-update.generated.js +0 -28
  417. package/dist/gql/operations/issue-labels-update.generated.js.map +0 -1
  418. package/dist/gql/operations/issue-linked-prs-list.generated.d.ts +0 -132
  419. package/dist/gql/operations/issue-linked-prs-list.generated.js +0 -39
  420. package/dist/gql/operations/issue-linked-prs-list.generated.js.map +0 -1
  421. package/dist/gql/operations/issue-list.generated.d.ts +0 -40
  422. package/dist/gql/operations/issue-list.generated.js +0 -9
  423. package/dist/gql/operations/issue-list.generated.js.map +0 -1
  424. package/dist/gql/operations/issue-milestone-set.generated.d.ts +0 -30
  425. package/dist/gql/operations/issue-milestone-set.generated.js +0 -26
  426. package/dist/gql/operations/issue-milestone-set.generated.js.map +0 -1
  427. package/dist/gql/operations/issue-parent-remove.generated.d.ts +0 -30
  428. package/dist/gql/operations/issue-parent-remove.generated.js +0 -26
  429. package/dist/gql/operations/issue-parent-remove.generated.js.map +0 -1
  430. package/dist/gql/operations/issue-parent-set.generated.d.ts +0 -30
  431. package/dist/gql/operations/issue-parent-set.generated.js +0 -26
  432. package/dist/gql/operations/issue-parent-set.generated.js.map +0 -1
  433. package/dist/gql/operations/issue-relations-get.generated.d.ts +0 -49
  434. package/dist/gql/operations/issue-relations-get.generated.js +0 -40
  435. package/dist/gql/operations/issue-relations-get.generated.js.map +0 -1
  436. package/dist/gql/operations/issue-reopen.generated.d.ts +0 -27
  437. package/dist/gql/operations/issue-reopen.generated.js +0 -25
  438. package/dist/gql/operations/issue-reopen.generated.js.map +0 -1
  439. package/dist/gql/operations/issue-update.generated.d.ts +0 -31
  440. package/dist/gql/operations/issue-update.generated.js +0 -27
  441. package/dist/gql/operations/issue-update.generated.js.map +0 -1
  442. package/dist/gql/operations/issue-view.generated.d.ts +0 -31
  443. package/dist/gql/operations/issue-view.generated.js +0 -9
  444. package/dist/gql/operations/issue-view.generated.js.map +0 -1
  445. package/dist/gql/operations/pr-comment-reply.generated.d.ts +0 -26
  446. package/dist/gql/operations/pr-comment-reply.generated.js +0 -25
  447. package/dist/gql/operations/pr-comment-reply.generated.js.map +0 -1
  448. package/dist/gql/operations/pr-comment-resolve.generated.d.ts +0 -26
  449. package/dist/gql/operations/pr-comment-resolve.generated.js +0 -24
  450. package/dist/gql/operations/pr-comment-resolve.generated.js.map +0 -1
  451. package/dist/gql/operations/pr-comment-unresolve.generated.d.ts +0 -26
  452. package/dist/gql/operations/pr-comment-unresolve.generated.js +0 -24
  453. package/dist/gql/operations/pr-comment-unresolve.generated.js.map +0 -1
  454. package/dist/gql/operations/pr-comments-list.generated.d.ts +0 -84
  455. package/dist/gql/operations/pr-comments-list.generated.js +0 -58
  456. package/dist/gql/operations/pr-comments-list.generated.js.map +0 -1
  457. package/dist/gql/operations/pr-diff-list-files.generated.d.ts +0 -42
  458. package/dist/gql/operations/pr-diff-list-files.generated.js +0 -9
  459. package/dist/gql/operations/pr-diff-list-files.generated.js.map +0 -1
  460. package/dist/gql/operations/pr-list.generated.d.ts +0 -40
  461. package/dist/gql/operations/pr-list.generated.js +0 -9
  462. package/dist/gql/operations/pr-list.generated.js.map +0 -1
  463. package/dist/gql/operations/pr-reviews-list.generated.d.ts +0 -64
  464. package/dist/gql/operations/pr-reviews-list.generated.js +0 -9
  465. package/dist/gql/operations/pr-reviews-list.generated.js.map +0 -1
  466. package/dist/gql/operations/pr-view.generated.d.ts +0 -31
  467. package/dist/gql/operations/pr-view.generated.js +0 -9
  468. package/dist/gql/operations/pr-view.generated.js.map +0 -1
  469. package/dist/gql/operations/repo-view.generated.d.ts +0 -33
  470. package/dist/gql/operations/repo-view.generated.js +0 -9
  471. package/dist/gql/operations/repo-view.generated.js.map +0 -1
  472. package/dist/shared/constants.d.ts +0 -3
  473. package/dist/shared/constants.js +0 -6
  474. package/dist/shared/constants.js.map +0 -1
  475. package/dist/shared/types.d.ts +0 -3
  476. package/dist/shared/types.js +0 -1
  477. package/dist/shared/types.js.map +0 -1
  478. package/dist/shared/utils.d.ts +0 -3
  479. package/dist/shared/utils.js +0 -8
  480. package/dist/shared/utils.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import {
2
- getOperationCard
3
- } from "./chunk-JH6GM6XU.js";
2
+ getOperationCard,
3
+ listOperationCards
4
+ } from "./chunk-OL4ARD3R.js";
4
5
 
5
6
  // src/agent-interface/tools/explain-tool.ts
6
7
  function extractRequiredInputs(inputSchema) {
@@ -38,7 +39,16 @@ function explainCapability(capabilityId) {
38
39
  };
39
40
  }
40
41
 
42
+ // src/agent-interface/tools/list-capabilities-tool.ts
43
+ function listCapabilities() {
44
+ return listOperationCards().map((card) => ({
45
+ capability_id: card.capability_id,
46
+ description: card.description
47
+ }));
48
+ }
49
+
41
50
  export {
42
- explainCapability
51
+ explainCapability,
52
+ listCapabilities
43
53
  };
44
- //# sourceMappingURL=chunk-4PLVKNCF.js.map
54
+ //# sourceMappingURL=chunk-SCIJMW5P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/agent-interface/tools/explain-tool.ts","../src/agent-interface/tools/list-capabilities-tool.ts"],"sourcesContent":["import { getOperationCard } from \"../../core/registry/index.js\"\n\nexport type CapabilityExplanation = {\n capability_id: string\n purpose: string\n required_inputs: string[]\n preferred_route: \"cli\" | \"graphql\" | \"rest\"\n fallback_routes: Array<\"cli\" | \"graphql\" | \"rest\">\n output_fields: string[]\n}\n\nfunction extractRequiredInputs(inputSchema: Record<string, unknown> | null | undefined): string[] {\n if (!inputSchema || typeof inputSchema !== \"object\") {\n return []\n }\n\n const required = (inputSchema as Record<string, unknown>).required\n if (!Array.isArray(required)) {\n return []\n }\n\n return required.filter((entry): entry is string => typeof entry === \"string\")\n}\n\nfunction extractOutputFields(outputSchema: Record<string, unknown> | null | undefined): string[] {\n if (!outputSchema || typeof outputSchema !== \"object\") {\n return []\n }\n\n const properties = (outputSchema as Record<string, unknown>).properties\n if (!properties || typeof properties !== \"object\") {\n return []\n }\n\n return Object.keys(properties)\n}\n\nexport function explainCapability(capabilityId: string): CapabilityExplanation {\n const card = getOperationCard(capabilityId)\n if (!card) {\n throw new Error(`Unknown capability: ${capabilityId}`)\n }\n\n return {\n capability_id: card.capability_id,\n purpose: card.description,\n required_inputs: extractRequiredInputs(card.input_schema),\n preferred_route: card.routing.preferred,\n fallback_routes: [...card.routing.fallbacks],\n output_fields: extractOutputFields(card.output_schema),\n }\n}\n","import { listOperationCards } from \"../../core/registry/index.js\"\n\nexport type CapabilityListItem = {\n capability_id: string\n description: string\n}\n\nexport function listCapabilities(): CapabilityListItem[] {\n return listOperationCards().map((card) => ({\n capability_id: card.capability_id,\n description: card.description,\n }))\n}\n"],"mappings":";;;;;;AAWA,SAAS,sBAAsB,aAAmE;AAChG,MAAI,CAAC,eAAe,OAAO,gBAAgB,UAAU;AACnD,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,WAAY,YAAwC;AAC1D,MAAI,CAAC,MAAM,QAAQ,QAAQ,GAAG;AAC5B,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,SAAS,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ;AAC9E;AAEA,SAAS,oBAAoB,cAAoE;AAC/F,MAAI,CAAC,gBAAgB,OAAO,iBAAiB,UAAU;AACrD,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,aAAc,aAAyC;AAC7D,MAAI,CAAC,cAAc,OAAO,eAAe,UAAU;AACjD,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,OAAO,KAAK,UAAU;AAC/B;AAEO,SAAS,kBAAkB,cAA6C;AAC7E,QAAM,OAAO,iBAAiB,YAAY;AAC1C,MAAI,CAAC,MAAM;AACT,UAAM,IAAI,MAAM,uBAAuB,YAAY,EAAE;AAAA,EACvD;AAEA,SAAO;AAAA,IACL,eAAe,KAAK;AAAA,IACpB,SAAS,KAAK;AAAA,IACd,iBAAiB,sBAAsB,KAAK,YAAY;AAAA,IACxD,iBAAiB,KAAK,QAAQ;AAAA,IAC9B,iBAAiB,CAAC,GAAG,KAAK,QAAQ,SAAS;AAAA,IAC3C,eAAe,oBAAoB,KAAK,aAAa;AAAA,EACvD;AACF;;;AC5CO,SAAS,mBAAyC;AACvD,SAAO,mBAAmB,EAAE,IAAI,CAAC,UAAU;AAAA,IACzC,eAAe,KAAK;AAAA,IACpB,aAAa,KAAK;AAAA,EACpB,EAAE;AACJ;","names":[]}
@@ -0,0 +1,57 @@
1
+ # ghx CLI Skill
2
+
3
+ Use `ghx` as the default interface for supported GitHub operations.
4
+
5
+ ## Session Bootstrap (run once)
6
+
7
+ ```bash
8
+ gh auth status
9
+ ghx capabilities list
10
+ ```
11
+
12
+ If authentication fails, stop and request authentication before continuing.
13
+
14
+ ## Workflow
15
+
16
+ 1. Choose a capability from `ghx capabilities list`.
17
+ 2. If required inputs are unclear, inspect the capability:
18
+
19
+ ```bash
20
+ ghx capabilities explain <capability_id>
21
+ ```
22
+
23
+ 3. Execute with structured JSON input:
24
+
25
+ ```bash
26
+ ghx run <capability_id> --input '<json>'
27
+ ```
28
+
29
+ ## Result Handling Rules
30
+
31
+ `ghx run` returns a result envelope: `{ ok, data, error, meta }`.
32
+
33
+ - Check `ok` first.
34
+ - If `ok=true`, use `data`.
35
+ - If `ok=false`, read `error.code` and `error.message`.
36
+ - If `error.retryable=true`, retry once.
37
+ - For supported operations, do not parse raw `gh` output.
38
+
39
+ ## Input Conventions
40
+
41
+ - Repository identity is `owner` + `name`.
42
+ - Do not guess input fields; run `ghx capabilities explain <capability_id>`.
43
+
44
+ ## Examples
45
+
46
+ ```bash
47
+ ghx run repo.view --input '{"owner":"octocat","name":"hello-world"}'
48
+ ghx run issue.create --input '{"owner":"octocat","name":"hello-world","title":"Bug report","body":"Steps to reproduce"}'
49
+ ghx run pr.view --input '{"owner":"octocat","name":"hello-world","prNumber":42}'
50
+ ghx run pr.checks.get_failed --input '{"owner":"octocat","name":"hello-world","prNumber":42}'
51
+ ```
52
+
53
+ ## Guardrails
54
+
55
+ - Prefer `ghx` over direct `gh` or API calls for supported operations.
56
+ - Treat `meta.route_used` as informational only.
57
+ - If a required input is unknown, ask the user instead of guessing.
package/dist/cli/index.js CHANGED
@@ -1,50 +1,382 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- setupCommand
4
- } from "../chunk-MGNGSGMF.js";
3
+ explainCapability,
4
+ listCapabilities
5
+ } from "../chunk-SCIJMW5P.js";
5
6
  import {
6
- capabilitiesExplainCommand
7
- } from "../chunk-HQ2VRCH7.js";
8
- import {
9
- capabilitiesListCommand
10
- } from "../chunk-SJR2SACI.js";
11
- import {
12
- runCommand
13
- } from "../chunk-22WWCK6A.js";
14
- import "../chunk-4PLVKNCF.js";
15
- import "../chunk-GMTG7X2L.js";
16
- import "../chunk-SD7U4BNA.js";
17
- import "../chunk-DLKIQBK6.js";
18
- import "../chunk-SA2D4A5U.js";
19
- import "../chunk-XNMM64WU.js";
20
- import "../chunk-UGWIZ3RI.js";
21
- import "../chunk-B6RLMKS4.js";
22
- import "../chunk-573MDG3I.js";
23
- import "../chunk-3MRJX72M.js";
24
- import "../chunk-5JRLVOF2.js";
25
- import "../chunk-W2TKG2UL.js";
26
- import "../chunk-QEAMC4IJ.js";
27
- import "../chunk-TDTKOJKN.js";
28
- import "../chunk-UOJWOHRM.js";
29
- import "../chunk-JH6GM6XU.js";
30
- import "../chunk-2W4L5YCC.js";
31
- import "../chunk-JLDU462R.js";
32
- import "../chunk-EBRDO4Y6.js";
33
- import "../chunk-RUQXGZ35.js";
34
- import "../chunk-TCLMLVUQ.js";
35
- import "../chunk-VD5NXQP7.js";
36
- import "../chunk-NFF5VF4U.js";
37
- import "../chunk-D746VR3B.js";
38
- import "../chunk-W6ROKCY5.js";
39
- import "../chunk-QZZC53HF.js";
7
+ createGithubClient,
8
+ errorCodes,
9
+ executeTask
10
+ } from "../chunk-PJ2JKKQE.js";
11
+ import "../chunk-OL4ARD3R.js";
40
12
 
41
13
  // src/cli/index.ts
42
14
  import { realpathSync } from "fs";
43
15
  import { pathToFileURL } from "url";
16
+
17
+ // src/cli/commands/capabilities-explain.ts
44
18
  function usage() {
19
+ return "Usage: ghx capabilities explain <capability_id> [--json]";
20
+ }
21
+ function parseArgs(argv) {
22
+ const asJson = argv.includes("--json");
23
+ const capabilityId = argv.find((arg) => !arg.startsWith("-"));
24
+ return { capabilityId, asJson };
25
+ }
26
+ async function capabilitiesExplainCommand(argv = []) {
27
+ const { capabilityId, asJson } = parseArgs(argv);
28
+ if (!capabilityId) {
29
+ process.stderr.write(`${usage()}
30
+ `);
31
+ return 1;
32
+ }
33
+ try {
34
+ const explained = explainCapability(capabilityId);
35
+ if (asJson) {
36
+ process.stdout.write(`${JSON.stringify(explained)}
37
+ `);
38
+ return 0;
39
+ }
40
+ process.stdout.write(`${JSON.stringify(explained, null, 2)}
41
+ `);
42
+ return 0;
43
+ } catch (error) {
44
+ const message = error instanceof Error ? error.message : String(error);
45
+ process.stderr.write(`${message}
46
+ `);
47
+ return 1;
48
+ }
49
+ }
50
+
51
+ // src/cli/commands/capabilities-list.ts
52
+ function parseArgs2(argv) {
53
+ return {
54
+ asJson: argv.includes("--json")
55
+ };
56
+ }
57
+ async function capabilitiesListCommand(argv = []) {
58
+ const { asJson } = parseArgs2(argv);
59
+ const capabilities = listCapabilities();
60
+ if (asJson) {
61
+ process.stdout.write(`${JSON.stringify(capabilities)}
62
+ `);
63
+ return 0;
64
+ }
65
+ const lines = capabilities.map((item) => `${item.capability_id} - ${item.description}`);
66
+ process.stdout.write(`${lines.join("\n")}
67
+ `);
68
+ return 0;
69
+ }
70
+
71
+ // src/cli/commands/run.ts
72
+ var GITHUB_GRAPHQL_ENDPOINT = "https://api.github.com/graphql";
73
+ function parseRunArgs(argv) {
74
+ const [task, ...rest] = argv;
75
+ if (!task || task.trim().length === 0) {
76
+ throw new Error("Usage: ghx run <task> --input '<json>' [--check-gh-preflight]");
77
+ }
78
+ const inputIndex = rest.findIndex((arg) => arg === "--input");
79
+ const inlineInput = rest.find((arg) => arg.startsWith("--input="));
80
+ const inputCandidate = inputIndex >= 0 ? rest[inputIndex + 1] : void 0;
81
+ const inputRaw = inputCandidate && !inputCandidate.startsWith("--") ? inputCandidate : inlineInput ? inlineInput.slice("--input=".length) : void 0;
82
+ if (!inputRaw) {
83
+ throw new Error("Missing --input JSON");
84
+ }
85
+ let parsed;
86
+ try {
87
+ parsed = JSON.parse(inputRaw);
88
+ } catch {
89
+ throw new Error("Invalid JSON for --input");
90
+ }
91
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
92
+ throw new Error("--input must be a JSON object");
93
+ }
94
+ const skipGhPreflight = !rest.includes("--check-gh-preflight");
95
+ return { task, input: parsed, skipGhPreflight };
96
+ }
97
+ function resolveGithubToken() {
98
+ const token = process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN;
99
+ if (!token || token.trim().length === 0) {
100
+ throw new Error("Missing GITHUB_TOKEN or GH_TOKEN for GraphQL transport");
101
+ }
102
+ return token;
103
+ }
104
+ async function executeGraphqlRequest(token, query, variables) {
105
+ const response = await fetch(GITHUB_GRAPHQL_ENDPOINT, {
106
+ method: "POST",
107
+ headers: {
108
+ "content-type": "application/json",
109
+ accept: "application/json",
110
+ authorization: `Bearer ${token}`,
111
+ "user-agent": "ghx"
112
+ },
113
+ body: JSON.stringify({ query, variables: variables ?? {} })
114
+ });
115
+ const payload = await response.json();
116
+ if (!response.ok) {
117
+ const message = payload.message ?? `GitHub GraphQL request failed with status ${response.status}`;
118
+ throw new Error(message);
119
+ }
120
+ if (Array.isArray(payload.errors) && payload.errors.length > 0) {
121
+ const message = payload.errors[0]?.message ?? "GitHub GraphQL returned errors";
122
+ throw new Error(message);
123
+ }
124
+ if (payload.data === void 0) {
125
+ throw new Error("GitHub GraphQL response missing data");
126
+ }
127
+ return payload.data;
128
+ }
129
+ async function runCommand(argv = []) {
130
+ if (argv.length === 0) {
131
+ process.stdout.write("Usage: ghx run <task> --input '<json>' [--check-gh-preflight]\n");
132
+ return 1;
133
+ }
134
+ const { task, input, skipGhPreflight } = parseRunArgs(argv);
135
+ const githubToken = resolveGithubToken();
136
+ const githubClient = createGithubClient({
137
+ async execute(query, variables) {
138
+ return executeGraphqlRequest(githubToken, query, variables);
139
+ }
140
+ });
141
+ const request = {
142
+ task,
143
+ input
144
+ };
145
+ const result = await executeTask(request, {
146
+ githubClient,
147
+ githubToken,
148
+ skipGhPreflight
149
+ });
150
+ process.stdout.write(`${JSON.stringify(result)}
151
+ `);
152
+ return 0;
153
+ }
154
+
155
+ // src/cli/commands/setup.ts
156
+ import { access, appendFile, mkdir, readFile, writeFile } from "fs/promises";
157
+ import { homedir } from "os";
158
+ import { dirname, join } from "path";
159
+ import readline from "readline/promises";
160
+ import { fileURLToPath } from "url";
161
+ import { Ajv } from "ajv";
162
+ var ajv = new Ajv({ allErrors: true, strict: false });
163
+ var setupOptionsSchema = {
164
+ type: "object",
165
+ additionalProperties: false,
166
+ required: ["scope", "assumeYes", "dryRun", "verifyOnly", "track"],
167
+ properties: {
168
+ scope: {
169
+ type: "string",
170
+ enum: ["user", "project"]
171
+ },
172
+ assumeYes: { type: "boolean" },
173
+ dryRun: { type: "boolean" },
174
+ verifyOnly: { type: "boolean" },
175
+ track: { type: "boolean" }
176
+ }
177
+ };
178
+ var validateSetupOptions = ajv.compile(setupOptionsSchema);
179
+ var setupCommandDirectory = dirname(fileURLToPath(import.meta.url));
180
+ var setupSkillAssetPathCandidates = [
181
+ join(setupCommandDirectory, "..", "assets", "skills", "ghx", "SKILL.md"),
182
+ join(setupCommandDirectory, "assets", "skills", "ghx", "SKILL.md"),
183
+ join(setupCommandDirectory, "cli", "assets", "skills", "ghx", "SKILL.md")
184
+ ];
185
+ function isENOENT(error) {
186
+ return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
187
+ }
188
+ function createSetupError(message, code) {
189
+ const error = new Error(message);
190
+ error.code = code;
191
+ return error;
192
+ }
193
+ async function loadSetupSkillContent() {
194
+ for (const candidatePath of setupSkillAssetPathCandidates) {
195
+ try {
196
+ return await readFile(candidatePath, "utf8");
197
+ } catch (error) {
198
+ if (isENOENT(error)) {
199
+ continue;
200
+ }
201
+ throw error;
202
+ }
203
+ }
204
+ throw createSetupError(
205
+ `Setup skill asset not found. Checked: ${setupSkillAssetPathCandidates.join(", ")}`,
206
+ errorCodes.NotFound
207
+ );
208
+ }
209
+ function usage2() {
210
+ return "Usage: ghx setup --scope <user|project> [--yes] [--dry-run] [--verify] [--track]";
211
+ }
212
+ function parseScope(argv) {
213
+ const inline = argv.find((arg) => arg.startsWith("--scope="));
214
+ if (inline) {
215
+ const raw = inline.slice("--scope=".length);
216
+ if (raw === "user" || raw === "project") {
217
+ return raw;
218
+ }
219
+ return void 0;
220
+ }
221
+ const scopeIndex = argv.findIndex((arg) => arg === "--scope");
222
+ if (scopeIndex < 0) {
223
+ return void 0;
224
+ }
225
+ const value = argv[scopeIndex + 1];
226
+ if (value === "user" || value === "project") {
227
+ return value;
228
+ }
229
+ return void 0;
230
+ }
231
+ function parseArgs3(argv) {
232
+ const scope = parseScope(argv);
233
+ if (!scope) {
234
+ return null;
235
+ }
236
+ const options = {
237
+ scope,
238
+ assumeYes: argv.includes("--yes"),
239
+ dryRun: argv.includes("--dry-run"),
240
+ verifyOnly: argv.includes("--verify"),
241
+ track: argv.includes("--track")
242
+ };
243
+ if (!validateSetupOptions(options)) {
244
+ return null;
245
+ }
246
+ return options;
247
+ }
248
+ function resolveSkillPath(scope) {
249
+ const base = scope === "user" ? homedir() : process.cwd();
250
+ return join(base, ".agents", "skills", "ghx", "SKILL.md");
251
+ }
252
+ function resolveTrackingPath() {
253
+ return join(homedir(), ".agents", "ghx", "setup-events.jsonl");
254
+ }
255
+ async function writeTrackingEvent(options) {
256
+ if (!options.track) {
257
+ return;
258
+ }
259
+ const trackingPath = resolveTrackingPath();
260
+ await mkdir(join(homedir(), ".agents", "ghx"), { recursive: true });
261
+ await appendFile(
262
+ trackingPath,
263
+ `${JSON.stringify({
264
+ command: "setup",
265
+ scope: options.scope,
266
+ mode: options.mode,
267
+ success: options.success,
268
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
269
+ })}
270
+ `,
271
+ "utf8"
272
+ );
273
+ }
274
+ async function confirmOverwrite(skillPath) {
275
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
276
+ return false;
277
+ }
278
+ const rl = readline.createInterface({
279
+ input: process.stdin,
280
+ output: process.stdout
281
+ });
282
+ try {
283
+ const answer = await rl.question(`Skill already exists at ${skillPath}. Overwrite? [y/N] `);
284
+ const normalized = answer.trim().toLowerCase();
285
+ return normalized === "y" || normalized === "yes";
286
+ } finally {
287
+ rl.close();
288
+ }
289
+ }
290
+ async function verifySkill(skillPath) {
291
+ try {
292
+ const content = await readFile(skillPath, "utf8");
293
+ return content.includes("ghx capabilities");
294
+ } catch (error) {
295
+ if (isENOENT(error)) {
296
+ return false;
297
+ }
298
+ throw error;
299
+ }
300
+ }
301
+ async function skillFileExists(skillPath) {
302
+ try {
303
+ await access(skillPath);
304
+ return true;
305
+ } catch (error) {
306
+ if (isENOENT(error)) {
307
+ return false;
308
+ }
309
+ throw error;
310
+ }
311
+ }
312
+ async function setupCommand(argv = []) {
313
+ const parsed = parseArgs3(argv);
314
+ if (!parsed) {
315
+ process.stderr.write(`${usage2()}
316
+ `);
317
+ return 1;
318
+ }
319
+ const skillPath = resolveSkillPath(parsed.scope);
320
+ try {
321
+ if (parsed.verifyOnly) {
322
+ const ok = await verifySkill(skillPath);
323
+ if (!ok) {
324
+ process.stderr.write(`Verify failed: skill not installed at ${skillPath}
325
+ `);
326
+ return 1;
327
+ }
328
+ process.stdout.write(`Verify passed: skill installed at ${skillPath}
329
+ `);
330
+ return 0;
331
+ }
332
+ if (parsed.dryRun) {
333
+ process.stdout.write(`Dry run: would write ${skillPath}
334
+ `);
335
+ return 0;
336
+ }
337
+ const alreadyExists = await skillFileExists(skillPath);
338
+ if (alreadyExists && !parsed.assumeYes) {
339
+ const approved = await confirmOverwrite(skillPath);
340
+ if (!approved) {
341
+ process.stderr.write(
342
+ `Skill already exists at ${skillPath}. Re-run with --yes or confirm overwrite interactively.
343
+ `
344
+ );
345
+ await writeTrackingEvent({
346
+ track: parsed.track,
347
+ scope: parsed.scope,
348
+ mode: "apply",
349
+ success: false
350
+ });
351
+ return 1;
352
+ }
353
+ }
354
+ const skillContent = await loadSetupSkillContent();
355
+ await mkdir(dirname(skillPath), { recursive: true });
356
+ await writeFile(skillPath, skillContent, "utf8");
357
+ process.stdout.write(`Setup complete: wrote ${skillPath}
358
+ `);
359
+ process.stdout.write("Try: ghx capabilities list\n");
360
+ await writeTrackingEvent({
361
+ track: parsed.track,
362
+ scope: parsed.scope,
363
+ mode: "apply",
364
+ success: true
365
+ });
366
+ return 0;
367
+ } catch (error) {
368
+ const message = error instanceof Error ? error.message : String(error);
369
+ process.stderr.write(`Setup failed: ${message}
370
+ `);
371
+ return 1;
372
+ }
373
+ }
374
+
375
+ // src/cli/index.ts
376
+ function usage3() {
45
377
  return [
46
378
  "Usage:",
47
- " ghx run <task> --input '<json>'",
379
+ " ghx run <task> --input '<json>' [--check-gh-preflight]",
48
380
  " ghx setup --scope <user|project> [--yes] [--dry-run] [--verify] [--track]",
49
381
  " ghx capabilities list",
50
382
  " ghx capabilities explain <capability_id>"
@@ -53,7 +385,7 @@ function usage() {
53
385
  async function main(argv = process.argv.slice(2)) {
54
386
  const [command, ...rest] = argv;
55
387
  if (!command || command === "--help" || command === "-h") {
56
- process.stdout.write(`${usage()}
388
+ process.stdout.write(`${usage3()}
57
389
  `);
58
390
  return 0;
59
391
  }
@@ -67,7 +399,7 @@ async function main(argv = process.argv.slice(2)) {
67
399
  const [subcommand, ...subcommandArgs] = rest;
68
400
  if (!subcommand) {
69
401
  process.stderr.write(`Missing capabilities subcommand.
70
- ${usage()}
402
+ ${usage3()}
71
403
  `);
72
404
  return 1;
73
405
  }
@@ -78,12 +410,12 @@ ${usage()}
78
410
  return capabilitiesExplainCommand(subcommandArgs);
79
411
  }
80
412
  process.stderr.write(`Unknown capabilities subcommand: ${subcommand}
81
- ${usage()}
413
+ ${usage3()}
82
414
  `);
83
415
  return 1;
84
416
  }
85
417
  process.stderr.write(`Unknown command: ${command}
86
- ${usage()}
418
+ ${usage3()}
87
419
  `);
88
420
  return 1;
89
421
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { realpathSync } from \"node:fs\"\nimport { pathToFileURL } from \"node:url\"\n\nimport { capabilitiesExplainCommand } from \"./commands/capabilities-explain.js\"\nimport { capabilitiesListCommand } from \"./commands/capabilities-list.js\"\nimport { runCommand } from \"./commands/run.js\"\nimport { setupCommand } from \"./commands/setup.js\"\n\nfunction usage(): string {\n return [\n \"Usage:\",\n \" ghx run <task> --input '<json>'\",\n \" ghx setup --scope <user|project> [--yes] [--dry-run] [--verify] [--track]\",\n \" ghx capabilities list\",\n \" ghx capabilities explain <capability_id>\"\n ].join(\"\\n\")\n}\n\nexport async function main(argv: string[] = process.argv.slice(2)): Promise<number> {\n const [command, ...rest] = argv\n\n if (!command || command === \"--help\" || command === \"-h\") {\n process.stdout.write(`${usage()}\\n`)\n return 0\n }\n\n if (command === \"run\") {\n return runCommand(rest)\n }\n\n if (command === \"setup\") {\n return setupCommand(rest)\n }\n\n if (command === \"capabilities\") {\n const [subcommand, ...subcommandArgs] = rest\n\n if (!subcommand) {\n process.stderr.write(`Missing capabilities subcommand.\\n${usage()}\\n`)\n return 1\n }\n\n if (subcommand === \"list\") {\n return capabilitiesListCommand(subcommandArgs)\n }\n\n if (subcommand === \"explain\") {\n return capabilitiesExplainCommand(subcommandArgs)\n }\n\n process.stderr.write(`Unknown capabilities subcommand: ${subcommand}\\n${usage()}\\n`)\n return 1\n }\n\n process.stderr.write(`Unknown command: ${command}\\n${usage()}\\n`)\n return 1\n}\n\nconst isDirectRun = (() => {\n if (!process.argv[1]) {\n return false\n }\n\n try {\n const currentEntry = realpathSync(new URL(import.meta.url))\n const invokedEntry = realpathSync(process.argv[1])\n return currentEntry === invokedEntry || import.meta.url === pathToFileURL(process.argv[1]).href\n } catch {\n return import.meta.url === pathToFileURL(process.argv[1]).href\n }\n})()\n\nif (isDirectRun) {\n main().then(\n (exitCode) => {\n process.exitCode = exitCode\n },\n (error: unknown) => {\n const message = error instanceof Error ? error.message : String(error)\n process.stderr.write(`${message}\\n`)\n process.exit(1)\n }\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAO9B,SAAS,QAAgB;AACvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEA,eAAsB,KAAK,OAAiB,QAAQ,KAAK,MAAM,CAAC,GAAoB;AAClF,QAAM,CAAC,SAAS,GAAG,IAAI,IAAI;AAE3B,MAAI,CAAC,WAAW,YAAY,YAAY,YAAY,MAAM;AACxD,YAAQ,OAAO,MAAM,GAAG,MAAM,CAAC;AAAA,CAAI;AACnC,WAAO;AAAA,EACT;AAEA,MAAI,YAAY,OAAO;AACrB,WAAO,WAAW,IAAI;AAAA,EACxB;AAEA,MAAI,YAAY,SAAS;AACvB,WAAO,aAAa,IAAI;AAAA,EAC1B;AAEA,MAAI,YAAY,gBAAgB;AAC9B,UAAM,CAAC,YAAY,GAAG,cAAc,IAAI;AAExC,QAAI,CAAC,YAAY;AACf,cAAQ,OAAO,MAAM;AAAA,EAAqC,MAAM,CAAC;AAAA,CAAI;AACrE,aAAO;AAAA,IACT;AAEA,QAAI,eAAe,QAAQ;AACzB,aAAO,wBAAwB,cAAc;AAAA,IAC/C;AAEA,QAAI,eAAe,WAAW;AAC5B,aAAO,2BAA2B,cAAc;AAAA,IAClD;AAEA,YAAQ,OAAO,MAAM,oCAAoC,UAAU;AAAA,EAAK,MAAM,CAAC;AAAA,CAAI;AACnF,WAAO;AAAA,EACT;AAEA,UAAQ,OAAO,MAAM,oBAAoB,OAAO;AAAA,EAAK,MAAM,CAAC;AAAA,CAAI;AAChE,SAAO;AACT;AAEA,IAAM,eAAe,MAAM;AACzB,MAAI,CAAC,QAAQ,KAAK,CAAC,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,eAAe,aAAa,IAAI,IAAI,YAAY,GAAG,CAAC;AAC1D,UAAM,eAAe,aAAa,QAAQ,KAAK,CAAC,CAAC;AACjD,WAAO,iBAAiB,gBAAgB,YAAY,QAAQ,cAAc,QAAQ,KAAK,CAAC,CAAC,EAAE;AAAA,EAC7F,QAAQ;AACN,WAAO,YAAY,QAAQ,cAAc,QAAQ,KAAK,CAAC,CAAC,EAAE;AAAA,EAC5D;AACF,GAAG;AAEH,IAAI,aAAa;AACf,OAAK,EAAE;AAAA,IACL,CAAC,aAAa;AACZ,cAAQ,WAAW;AAAA,IACrB;AAAA,IACA,CAAC,UAAmB;AAClB,YAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,cAAQ,OAAO,MAAM,GAAG,OAAO;AAAA,CAAI;AACnC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/cli/index.ts","../../src/cli/commands/capabilities-explain.ts","../../src/cli/commands/capabilities-list.ts","../../src/cli/commands/run.ts","../../src/cli/commands/setup.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { realpathSync } from \"node:fs\"\nimport { pathToFileURL } from \"node:url\"\n\nimport { capabilitiesExplainCommand } from \"./commands/capabilities-explain.js\"\nimport { capabilitiesListCommand } from \"./commands/capabilities-list.js\"\nimport { runCommand } from \"./commands/run.js\"\nimport { setupCommand } from \"./commands/setup.js\"\n\nfunction usage(): string {\n return [\n \"Usage:\",\n \" ghx run <task> --input '<json>' [--check-gh-preflight]\",\n \" ghx setup --scope <user|project> [--yes] [--dry-run] [--verify] [--track]\",\n \" ghx capabilities list\",\n \" ghx capabilities explain <capability_id>\",\n ].join(\"\\n\")\n}\n\nexport async function main(argv: string[] = process.argv.slice(2)): Promise<number> {\n const [command, ...rest] = argv\n\n if (!command || command === \"--help\" || command === \"-h\") {\n process.stdout.write(`${usage()}\\n`)\n return 0\n }\n\n if (command === \"run\") {\n return runCommand(rest)\n }\n\n if (command === \"setup\") {\n return setupCommand(rest)\n }\n\n if (command === \"capabilities\") {\n const [subcommand, ...subcommandArgs] = rest\n\n if (!subcommand) {\n process.stderr.write(`Missing capabilities subcommand.\\n${usage()}\\n`)\n return 1\n }\n\n if (subcommand === \"list\") {\n return capabilitiesListCommand(subcommandArgs)\n }\n\n if (subcommand === \"explain\") {\n return capabilitiesExplainCommand(subcommandArgs)\n }\n\n process.stderr.write(`Unknown capabilities subcommand: ${subcommand}\\n${usage()}\\n`)\n return 1\n }\n\n process.stderr.write(`Unknown command: ${command}\\n${usage()}\\n`)\n return 1\n}\n\nconst isDirectRun = (() => {\n if (!process.argv[1]) {\n return false\n }\n\n try {\n const currentEntry = realpathSync(new URL(import.meta.url))\n const invokedEntry = realpathSync(process.argv[1])\n return currentEntry === invokedEntry || import.meta.url === pathToFileURL(process.argv[1]).href\n } catch {\n return import.meta.url === pathToFileURL(process.argv[1]).href\n }\n})()\n\nif (isDirectRun) {\n main().then(\n (exitCode) => {\n process.exitCode = exitCode\n },\n (error: unknown) => {\n const message = error instanceof Error ? error.message : String(error)\n process.stderr.write(`${message}\\n`)\n process.exit(1)\n },\n )\n}\n","import { explainCapability } from \"../../agent-interface/tools/explain-tool.js\"\n\nfunction usage(): string {\n return \"Usage: ghx capabilities explain <capability_id> [--json]\"\n}\n\nfunction parseArgs(argv: string[]): { capabilityId: string | undefined; asJson: boolean } {\n const asJson = argv.includes(\"--json\")\n const capabilityId = argv.find((arg) => !arg.startsWith(\"-\"))\n return { capabilityId, asJson }\n}\n\nexport async function capabilitiesExplainCommand(argv: string[] = []): Promise<number> {\n const { capabilityId, asJson } = parseArgs(argv)\n\n if (!capabilityId) {\n process.stderr.write(`${usage()}\\n`)\n return 1\n }\n\n try {\n const explained = explainCapability(capabilityId)\n\n if (asJson) {\n process.stdout.write(`${JSON.stringify(explained)}\\n`)\n return 0\n }\n\n process.stdout.write(`${JSON.stringify(explained, null, 2)}\\n`)\n return 0\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n process.stderr.write(`${message}\\n`)\n return 1\n }\n}\n","import { listCapabilities } from \"../../agent-interface/tools/list-capabilities-tool.js\"\n\nfunction parseArgs(argv: string[]): { asJson: boolean } {\n return {\n asJson: argv.includes(\"--json\"),\n }\n}\n\nexport async function capabilitiesListCommand(argv: string[] = []): Promise<number> {\n const { asJson } = parseArgs(argv)\n const capabilities = listCapabilities()\n\n if (asJson) {\n process.stdout.write(`${JSON.stringify(capabilities)}\\n`)\n return 0\n }\n\n const lines = capabilities.map((item) => `${item.capability_id} - ${item.description}`)\n process.stdout.write(`${lines.join(\"\\n\")}\\n`)\n return 0\n}\n","import type { TaskRequest } from \"../../core/contracts/task.js\"\nimport { executeTask } from \"../../core/routing/engine.js\"\nimport { createGithubClient } from \"../../gql/client.js\"\n\nconst GITHUB_GRAPHQL_ENDPOINT = \"https://api.github.com/graphql\"\n\nfunction parseRunArgs(argv: string[]): {\n task: string\n input: Record<string, unknown>\n skipGhPreflight: boolean\n} {\n const [task, ...rest] = argv\n if (!task || task.trim().length === 0) {\n throw new Error(\"Usage: ghx run <task> --input '<json>' [--check-gh-preflight]\")\n }\n\n const inputIndex = rest.findIndex((arg) => arg === \"--input\")\n const inlineInput = rest.find((arg) => arg.startsWith(\"--input=\"))\n const inputCandidate = inputIndex >= 0 ? rest[inputIndex + 1] : undefined\n const inputRaw =\n inputCandidate && !inputCandidate.startsWith(\"--\")\n ? inputCandidate\n : inlineInput\n ? inlineInput.slice(\"--input=\".length)\n : undefined\n\n if (!inputRaw) {\n throw new Error(\"Missing --input JSON\")\n }\n\n let parsed: unknown\n try {\n parsed = JSON.parse(inputRaw)\n } catch {\n throw new Error(\"Invalid JSON for --input\")\n }\n\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n throw new Error(\"--input must be a JSON object\")\n }\n\n const skipGhPreflight = !rest.includes(\"--check-gh-preflight\")\n\n return { task, input: parsed as Record<string, unknown>, skipGhPreflight }\n}\n\nfunction resolveGithubToken(): string {\n const token = process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN\n if (!token || token.trim().length === 0) {\n throw new Error(\"Missing GITHUB_TOKEN or GH_TOKEN for GraphQL transport\")\n }\n\n return token\n}\n\nasync function executeGraphqlRequest<TData>(\n token: string,\n query: string,\n variables?: Record<string, unknown>,\n): Promise<TData> {\n const response = await fetch(GITHUB_GRAPHQL_ENDPOINT, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n accept: \"application/json\",\n authorization: `Bearer ${token}`,\n \"user-agent\": \"ghx\",\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 const message =\n payload.message ?? `GitHub GraphQL request failed with status ${response.status}`\n throw new Error(message)\n }\n\n if (Array.isArray(payload.errors) && payload.errors.length > 0) {\n const message = payload.errors[0]?.message ?? \"GitHub GraphQL returned errors\"\n throw new Error(message)\n }\n\n if (payload.data === undefined) {\n throw new Error(\"GitHub GraphQL response missing data\")\n }\n\n return payload.data\n}\n\nexport async function runCommand(argv: string[] = []): Promise<number> {\n if (argv.length === 0) {\n process.stdout.write(\"Usage: ghx run <task> --input '<json>' [--check-gh-preflight]\\n\")\n return 1\n }\n\n const { task, input, skipGhPreflight } = parseRunArgs(argv)\n const githubToken = resolveGithubToken()\n\n const githubClient = createGithubClient({\n async execute<TData>(query: string, variables?: Record<string, unknown>): Promise<TData> {\n return executeGraphqlRequest<TData>(githubToken, query, variables)\n },\n })\n\n const request: TaskRequest = {\n task,\n input,\n }\n\n const result = await executeTask(request, {\n githubClient,\n githubToken,\n skipGhPreflight,\n })\n\n process.stdout.write(`${JSON.stringify(result)}\\n`)\n return 0\n}\n","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\"\nimport { fileURLToPath } from \"node:url\"\n\nimport { Ajv } from \"ajv\"\nimport type { ErrorCode } from \"../../core/errors/codes.js\"\nimport { errorCodes } from \"../../core/errors/codes.js\"\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\ntype SetupError = Error & { code?: ErrorCode }\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 setupCommandDirectory = dirname(fileURLToPath(import.meta.url))\nconst setupSkillAssetPathCandidates = [\n join(setupCommandDirectory, \"..\", \"assets\", \"skills\", \"ghx\", \"SKILL.md\"),\n join(setupCommandDirectory, \"assets\", \"skills\", \"ghx\", \"SKILL.md\"),\n join(setupCommandDirectory, \"cli\", \"assets\", \"skills\", \"ghx\", \"SKILL.md\"),\n]\n\nfunction isENOENT(error: unknown): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as { code?: string }).code === \"ENOENT\"\n )\n}\n\nfunction createSetupError(message: string, code: ErrorCode): SetupError {\n const error = new Error(message) as SetupError\n error.code = code\n return error\n}\n\nasync function loadSetupSkillContent(): Promise<string> {\n for (const candidatePath of setupSkillAssetPathCandidates) {\n try {\n return await readFile(candidatePath, \"utf8\")\n } catch (error) {\n if (isENOENT(error)) {\n continue\n }\n\n throw error\n }\n }\n\n throw createSetupError(\n `Setup skill asset not found. Checked: ${setupSkillAssetPathCandidates.join(\", \")}`,\n errorCodes.NotFound,\n )\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\", \"skills\", \"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 (isENOENT(error)) {\n return false\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 (isENOENT(error)) {\n return false\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({\n track: parsed.track,\n scope: parsed.scope,\n mode: \"apply\",\n success: false,\n })\n return 1\n }\n }\n\n const skillContent = await loadSetupSkillContent()\n await mkdir(dirname(skillPath), { recursive: true })\n await writeFile(skillPath, skillContent, \"utf8\")\n\n process.stdout.write(`Setup complete: wrote ${skillPath}\\n`)\n process.stdout.write(\"Try: ghx capabilities list\\n\")\n await writeTrackingEvent({\n track: parsed.track,\n scope: parsed.scope,\n mode: \"apply\",\n success: true,\n })\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":"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","names":["parseArgs","usage","parseArgs","usage"]}
@@ -1,5 +1,17 @@
1
- import { RouteReasonCode } from '../routing/reason-codes.js';
2
- import { ErrorCode } from '../errors/codes.js';
1
+ declare const errorCodes: {
2
+ readonly Auth: "AUTH";
3
+ readonly NotFound: "NOT_FOUND";
4
+ readonly Validation: "VALIDATION";
5
+ readonly RateLimit: "RATE_LIMIT";
6
+ readonly Network: "NETWORK";
7
+ readonly Server: "SERVER";
8
+ readonly AdapterUnsupported: "ADAPTER_UNSUPPORTED";
9
+ readonly Unknown: "UNKNOWN";
10
+ };
11
+ type ErrorCode = (typeof errorCodes)[keyof typeof errorCodes];
12
+
13
+ declare const routeReasonCodes: readonly ["INPUT_VALIDATION", "OUTPUT_VALIDATION", "CARD_PREFERRED", "CARD_FALLBACK", "PREFLIGHT_FAILED", "ENV_CONSTRAINT", "CAPABILITY_LIMIT", "DEFAULT_POLICY"];
14
+ type RouteReasonCode = (typeof routeReasonCodes)[number];
3
15
 
4
16
  type RouteSource = "cli" | "rest" | "graphql";
5
17
  interface ResultError {
@@ -40,4 +52,4 @@ interface ResultEnvelope<TData = unknown> {
40
52
  meta: ResultMeta;
41
53
  }
42
54
 
43
- export type { AttemptMeta, ResultEnvelope, ResultError, ResultMeta, RouteSource };
55
+ export type { AttemptMeta as A, ResultEnvelope as R, RouteSource as a, RouteReasonCode as b, ResultError as c, ResultMeta as d };