@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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/execution/cli/safe-runner.ts","../src/core/errors/codes.ts","../src/core/execution/normalizer.ts","../src/core/registry/schema-validator.ts","../src/core/telemetry/logger.ts","../src/core/execute/execute.ts","../src/core/errors/map-error.ts","../src/core/errors/retryability.ts","../src/core/execution/adapters/cli-capability-adapter.ts","../src/core/execution/adapters/graphql-capability-adapter.ts","../src/core/execution/preflight.ts","../src/core/routing/policy.ts","../src/core/routing/engine.ts","../src/gql/client.ts","../src/gql/operations/issue-comments-list.generated.ts","../src/gql/operations/issue-list.generated.ts","../src/gql/operations/issue-view.generated.ts","../src/gql/operations/pr-diff-list-files.generated.ts","../src/gql/operations/pr-list.generated.ts","../src/gql/operations/pr-reviews-list.generated.ts","../src/gql/operations/pr-view.generated.ts","../src/gql/operations/repo-view.generated.ts"],"sourcesContent":["import { spawn } from \"node:child_process\"\n\nimport type { CliCommandRunner } from \"../adapters/cli-capability-adapter.js\"\n\nconst DEFAULT_MAX_OUTPUT_BYTES = 1_000_000\n\ntype SafeRunnerOptions = {\n maxOutputBytes?: number\n}\n\nexport function createSafeCliCommandRunner(options?: SafeRunnerOptions): CliCommandRunner {\n const maxOutputBytes = options?.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES\n\n return {\n run(\n command: string,\n args: string[],\n timeoutMs: number,\n ): Promise<{ stdout: string; stderr: string; exitCode: number }> {\n if (timeoutMs <= 0) {\n return Promise.reject(new Error(\"timeoutMs must be a positive number\"))\n }\n\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n shell: false,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n })\n\n const stdoutChunks: Buffer[] = []\n const stderrChunks: Buffer[] = []\n let stdoutSize = 0\n let stderrSize = 0\n let failureReason: \"timeout\" | \"overflow\" | null = null\n let settled = false\n\n const timer = setTimeout(() => {\n if (failureReason === null) {\n failureReason = \"timeout\"\n }\n child.kill(\"SIGKILL\")\n }, timeoutMs)\n\n function settleError(error: Error): void {\n if (settled) {\n return\n }\n\n settled = true\n clearTimeout(timer)\n reject(error)\n }\n\n function settleSuccess(stdout: string, stderr: string, exitCode: number): void {\n if (settled) {\n return\n }\n\n settled = true\n clearTimeout(timer)\n resolve({ stdout, stderr, exitCode })\n }\n\n child.stdout?.on(\"data\", (chunk: Buffer) => {\n if (failureReason === \"overflow\") {\n return\n }\n\n stdoutSize += chunk.length\n if (stdoutSize + stderrSize > maxOutputBytes) {\n if (failureReason === null) {\n failureReason = \"overflow\"\n clearTimeout(timer)\n child.kill(\"SIGKILL\")\n settleError(new Error(`CLI output exceeded ${maxOutputBytes} bytes`))\n return\n }\n\n child.kill(\"SIGKILL\")\n return\n }\n\n stdoutChunks.push(chunk)\n })\n\n child.stderr?.on(\"data\", (chunk: Buffer) => {\n if (failureReason === \"overflow\") {\n return\n }\n\n stderrSize += chunk.length\n if (stdoutSize + stderrSize > maxOutputBytes) {\n if (failureReason === null) {\n failureReason = \"overflow\"\n clearTimeout(timer)\n child.kill(\"SIGKILL\")\n settleError(new Error(`CLI output exceeded ${maxOutputBytes} bytes`))\n return\n }\n\n child.kill(\"SIGKILL\")\n return\n }\n\n stderrChunks.push(chunk)\n })\n\n child.on(\"error\", (error) => {\n settleError(error)\n })\n\n child.on(\"close\", (code) => {\n if (failureReason === \"timeout\") {\n settleError(new Error(`CLI command timed out after ${timeoutMs}ms`))\n return\n }\n\n if (failureReason === \"overflow\") {\n settleError(new Error(`CLI output exceeded ${maxOutputBytes} bytes`))\n return\n }\n\n settleSuccess(\n Buffer.concat(stdoutChunks).toString(\"utf8\"),\n Buffer.concat(stderrChunks).toString(\"utf8\"),\n code ?? 1,\n )\n })\n })\n },\n }\n}\n","export const errorCodes = {\n Auth: \"AUTH\",\n NotFound: \"NOT_FOUND\",\n Validation: \"VALIDATION\",\n RateLimit: \"RATE_LIMIT\",\n Network: \"NETWORK\",\n Server: \"SERVER\",\n AdapterUnsupported: \"ADAPTER_UNSUPPORTED\",\n Unknown: \"UNKNOWN\",\n} as const\n\nexport type ErrorCode = (typeof errorCodes)[keyof typeof errorCodes]\n","import type { ResultEnvelope } from \"../contracts/envelope.js\"\nimport type { RouteReasonCode } from \"../routing/reason-codes.js\"\n\ntype MetaInput = {\n capabilityId: string\n reason: RouteReasonCode | undefined\n pagination?: ResultEnvelope[\"meta\"][\"pagination\"]\n}\n\nfunction buildMeta(route: \"cli\" | \"rest\" | \"graphql\", options: MetaInput): ResultEnvelope[\"meta\"] {\n const meta: ResultEnvelope[\"meta\"] = {\n capability_id: options.capabilityId,\n route_used: route,\n }\n\n if (options.reason !== undefined) {\n meta.reason = options.reason\n }\n\n if (options.pagination !== undefined) {\n meta.pagination = options.pagination\n }\n\n return meta\n}\n\nexport function normalizeResult<TData>(\n data: TData,\n route: \"cli\" | \"rest\" | \"graphql\",\n options: MetaInput,\n): ResultEnvelope<TData> {\n return {\n ok: true,\n data,\n meta: buildMeta(route, options),\n }\n}\n\nexport function normalizeError<TData = unknown>(\n error: NonNullable<ResultEnvelope[\"error\"]>,\n route: \"cli\" | \"rest\" | \"graphql\",\n options: MetaInput,\n): ResultEnvelope<TData> {\n return {\n ok: false,\n error,\n meta: buildMeta(route, options),\n }\n}\n","import type { ErrorObject, ValidateFunction } from \"ajv\"\nimport { Ajv } from \"ajv\"\n\ntype SchemaValidationError = {\n instancePath: string\n message: string\n keyword: string\n params: Record<string, unknown>\n}\n\ntype SchemaValidationResult =\n | { ok: true }\n | {\n ok: false\n errors: SchemaValidationError[]\n }\n\nconst ajv = new Ajv({\n allErrors: true,\n strict: false,\n})\n\nconst validatorCache = new WeakMap<Record<string, unknown>, ValidateFunction>()\n\nfunction mapAjvErrors(errors: ErrorObject[] | null | undefined): SchemaValidationError[] {\n if (!errors) {\n return []\n }\n\n return errors.map((error) => ({\n instancePath: error.instancePath,\n message: error.message ?? \"schema validation failed\",\n keyword: error.keyword,\n params: error.params,\n }))\n}\n\nfunction getValidator(schema: Record<string, unknown>): ValidateFunction {\n const cached = validatorCache.get(schema)\n if (cached) {\n return cached\n }\n\n const validator = ajv.compile(schema)\n validatorCache.set(schema, validator)\n return validator\n}\n\nfunction validate(schema: Record<string, unknown>, payload: unknown): SchemaValidationResult {\n const validator = getValidator(schema)\n const ok = validator(payload)\n\n if (ok) {\n return { ok: true }\n }\n\n return {\n ok: false,\n errors: mapAjvErrors(validator.errors),\n }\n}\n\nexport function validateInput(\n inputSchema: Record<string, unknown>,\n params: Record<string, unknown>,\n): SchemaValidationResult {\n return validate(inputSchema, params)\n}\n\nexport function validateOutput(\n outputSchema: Record<string, unknown>,\n data: unknown,\n): SchemaValidationResult {\n return validate(outputSchema, data)\n}\n","type Primitive = string | number | boolean | null\n\ntype LogValue = Primitive | LogValue[] | { [key: string]: LogValue }\n\nconst SENSITIVE_KEY_PATTERN = /(token|authorization|cookie|secret|password|api[_-]?key)/i\n\nfunction redactValue(value: LogValue): LogValue {\n if (Array.isArray(value)) {\n return value.map(redactValue)\n }\n\n if (value && typeof value === \"object\") {\n const redacted: Record<string, LogValue> = {}\n for (const [key, nested] of Object.entries(value)) {\n redacted[key] = SENSITIVE_KEY_PATTERN.test(key) ? \"[REDACTED]\" : redactValue(nested)\n }\n return redacted\n }\n\n return value\n}\n\nexport function sanitizeTelemetryContext(\n context: Record<string, LogValue>,\n): Record<string, LogValue> {\n return redactValue(context) as Record<string, LogValue>\n}\n\nexport function logMetric(\n name: string,\n value: number,\n context: Record<string, LogValue> = {},\n): void {\n if (process.env.GHX_TELEMETRY_STDOUT !== \"1\") {\n return\n }\n\n const payload = {\n timestamp: new Date().toISOString(),\n metric: name,\n value,\n context: sanitizeTelemetryContext(context),\n }\n\n process.stdout.write(`${JSON.stringify(payload)}\\n`)\n}\n","import type { ResultEnvelope, RouteSource } from \"../contracts/envelope.js\"\nimport type { ErrorCode } from \"../errors/codes.js\"\nimport { errorCodes } from \"../errors/codes.js\"\nimport { normalizeError } from \"../execution/normalizer.js\"\nimport { validateInput, validateOutput } from \"../registry/schema-validator.js\"\nimport type { OperationCard } from \"../registry/types.js\"\nimport { logMetric } from \"../telemetry/logger.js\"\n\ntype PreflightResult =\n | { ok: true }\n | {\n ok: false\n code: ErrorCode\n message: string\n retryable: boolean\n details?: Record<string, unknown>\n }\n\ntype ExecuteOptions = {\n card: OperationCard\n params: Record<string, unknown>\n routingContext?: Record<string, unknown>\n trace?: boolean\n retry?: {\n maxAttemptsPerRoute?: number\n }\n preflight: (route: RouteSource) => Promise<PreflightResult>\n routes: Record<RouteSource, (params: Record<string, unknown>) => Promise<ResultEnvelope>>\n}\n\nfunction parsePredicateValue(raw: string): unknown {\n const value = raw.trim()\n if (value === \"true\") {\n return true\n }\n if (value === \"false\") {\n return false\n }\n if (value === \"null\") {\n return null\n }\n\n const numeric = Number(value)\n if (!Number.isNaN(numeric) && value.length > 0) {\n return numeric\n }\n\n return value.replace(/^['\"]|['\"]$/g, \"\")\n}\n\nfunction resolvePathValue(source: Record<string, unknown>, path: string): unknown {\n const segments = path.split(\".\").filter((segment) => segment.length > 0)\n let current: unknown = source\n\n for (const segment of segments) {\n if (typeof current !== \"object\" || current === null || Array.isArray(current)) {\n return undefined\n }\n\n current = (current as Record<string, unknown>)[segment]\n }\n\n return current\n}\n\nfunction evaluateSuitabilityPreferred(\n card: OperationCard,\n params: Record<string, unknown>,\n routingContext: Record<string, unknown>,\n): RouteSource {\n const rules = card.routing.suitability ?? []\n\n for (const rule of rules) {\n const alwaysMatch = /^(cli|graphql|rest)$/i.exec(rule.predicate.trim())\n const alwaysRoute = alwaysMatch?.[1]\n if (rule.when === \"always\" && alwaysRoute) {\n return alwaysRoute.toLowerCase() as RouteSource\n }\n\n const conditionalMatch = /^(cli|graphql|rest)\\s+if\\s+([a-zA-Z0-9_.]+)\\s*(==|!=)\\s*(.+)$/i.exec(\n rule.predicate.trim(),\n )\n\n if (!conditionalMatch) {\n continue\n }\n\n const [, targetRouteRaw = \"\", rawPath = \"\", operator = \"==\", rawExpected = \"\"] =\n conditionalMatch\n const targetRoute = targetRouteRaw.toLowerCase() as RouteSource\n const source = rule.when === \"env\" ? routingContext : params\n const path =\n rawPath.startsWith(\"params.\") || rawPath.startsWith(\"env.\")\n ? rawPath.split(\".\").slice(1).join(\".\")\n : rawPath\n const actual = resolvePathValue(source, path)\n const expected = parsePredicateValue(rawExpected)\n const matches = operator === \"==\" ? actual === expected : actual !== expected\n\n if (matches) {\n return targetRoute\n }\n }\n\n return card.routing.preferred\n}\n\nfunction routePlan(\n card: OperationCard,\n params: Record<string, unknown>,\n routingContext: Record<string, unknown>,\n): RouteSource[] {\n const preferred = evaluateSuitabilityPreferred(card, params, routingContext)\n const planned = new Set<RouteSource>([preferred, ...card.routing.fallbacks])\n return [...planned]\n}\n\nexport async function execute(options: ExecuteOptions): Promise<ResultEnvelope> {\n const inputValidation = validateInput(options.card.input_schema, options.params)\n if (!inputValidation.ok) {\n return normalizeError(\n {\n code: errorCodes.Validation,\n message: \"Input schema validation failed\",\n retryable: false,\n details: { ajvErrors: inputValidation.errors },\n },\n options.card.routing.preferred,\n {\n capabilityId: options.card.capability_id,\n reason: \"INPUT_VALIDATION\",\n },\n )\n }\n\n const attempts: NonNullable<ResultEnvelope[\"meta\"][\"attempts\"]> = []\n const maxAttemptsPerRoute = Math.max(1, options.retry?.maxAttemptsPerRoute ?? 1)\n let lastError: ResultEnvelope[\"error\"]\n let firstError: ResultEnvelope[\"error\"]\n\n const routingContext = options.routingContext ?? {}\n\n for (const route of routePlan(options.card, options.params, routingContext)) {\n logMetric(\"route.plan\", 1, {\n capability_id: options.card.capability_id,\n route,\n })\n\n const preflight = await options.preflight(route)\n if (!preflight.ok) {\n logMetric(\"route.preflight_skipped\", 1, {\n capability_id: options.card.capability_id,\n route,\n error_code: preflight.code,\n })\n attempts.push({ route, status: \"skipped\", error_code: preflight.code })\n lastError = {\n code: preflight.code,\n message: preflight.message,\n retryable: preflight.retryable,\n ...(preflight.details ? { details: preflight.details } : {}),\n }\n firstError ??= lastError\n continue\n }\n\n const routeHandler = options.routes[route]\n if (typeof routeHandler !== \"function\") {\n logMetric(\"route.missing_handler\", 1, {\n capability_id: options.card.capability_id,\n route,\n })\n\n const handlerError = {\n code: errorCodes.AdapterUnsupported,\n message: `No route handler configured for '${route}'`,\n retryable: false,\n details: { route },\n }\n\n attempts.push({ route, status: \"skipped\", error_code: errorCodes.AdapterUnsupported })\n lastError = handlerError\n firstError ??= handlerError\n continue\n }\n\n for (let attempt = 0; attempt < maxAttemptsPerRoute; attempt += 1) {\n const result = await routeHandler(options.params)\n logMetric(\"route.attempt\", 1, {\n capability_id: options.card.capability_id,\n route,\n ok: result.ok,\n })\n const attemptRecord: {\n route: RouteSource\n status: \"success\" | \"error\"\n error_code?: ErrorCode\n } = {\n route,\n status: result.ok ? \"success\" : \"error\",\n }\n if (result.error?.code) {\n attemptRecord.error_code = result.error.code\n }\n attempts.push(attemptRecord)\n\n if (result.ok) {\n const outputValidation = validateOutput(options.card.output_schema, result.data)\n if (!outputValidation.ok) {\n const envelope = normalizeError(\n {\n code: errorCodes.Server,\n message: \"Output schema validation failed\",\n retryable: false,\n details: { ajvErrors: outputValidation.errors },\n },\n route,\n {\n capabilityId: options.card.capability_id,\n reason: \"OUTPUT_VALIDATION\",\n },\n )\n\n if (options.trace) {\n envelope.meta.attempts = attempts\n }\n\n return envelope\n }\n\n if (options.trace) {\n result.meta.attempts = attempts\n }\n return result\n }\n\n lastError = result.error\n firstError ??= result.error\n if (!result.error?.retryable) {\n if (result.error?.code !== errorCodes.AdapterUnsupported) {\n if (options.trace) {\n result.meta.attempts = attempts\n }\n return result\n }\n break\n }\n }\n }\n\n const finalError = lastError ??\n firstError ?? {\n code: errorCodes.Unknown,\n message: \"No route produced a result\",\n retryable: false,\n }\n\n const envelope = normalizeError(finalError, options.card.routing.preferred, {\n capabilityId: options.card.capability_id,\n reason: \"CARD_FALLBACK\",\n })\n\n if (options.trace) {\n envelope.meta.attempts = attempts\n }\n\n return envelope\n}\n","import type { ErrorCode } from \"./codes.js\"\nimport { errorCodes } from \"./codes.js\"\n\nfunction toMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message\n }\n\n return String(error)\n}\n\nexport function mapErrorToCode(error: unknown): ErrorCode {\n const message = toMessage(error).toLowerCase()\n\n if (\n message.includes(\"rate limit\") ||\n message.includes(\" 429\") ||\n message.includes(\"too many requests\")\n ) {\n return errorCodes.RateLimit\n }\n\n if (message.includes(\"timeout\")) {\n return errorCodes.Network\n }\n\n if (\n message.includes(\"econn\") ||\n message.includes(\"enotfound\") ||\n message.includes(\"eai_again\") ||\n message.includes(\"network\") ||\n message.includes(\"connection reset\")\n ) {\n return errorCodes.Network\n }\n\n if (\n message.includes(\" 500\") ||\n message.includes(\" 502\") ||\n message.includes(\" 503\") ||\n message.includes(\" 504\")\n ) {\n return errorCodes.Server\n }\n\n if (\n message.includes(\"auth\") ||\n message.includes(\"forbidden\") ||\n message.includes(\"unauthorized\")\n ) {\n return errorCodes.Auth\n }\n\n if (\n message.includes(\"validation\") ||\n message.includes(\"invalid\") ||\n message.includes(\"required\") ||\n message.includes(\"positive integer\")\n ) {\n return errorCodes.Validation\n }\n\n if (message.includes(\"not found\") || message.includes(\" 404\")) {\n return errorCodes.NotFound\n }\n\n return errorCodes.Unknown\n}\n","import { errorCodes } from \"./codes.js\"\n\nconst retryableCodes = new Set<string>([\n errorCodes.Network,\n errorCodes.RateLimit,\n errorCodes.Server,\n])\n\nexport function isRetryableErrorCode(code: string): boolean {\n return retryableCodes.has(code)\n}\n","import type { ResultEnvelope } from \"../../contracts/envelope.js\"\nimport { errorCodes } from \"../../errors/codes.js\"\nimport { mapErrorToCode } from \"../../errors/map-error.js\"\nimport { isRetryableErrorCode } from \"../../errors/retryability.js\"\nimport type { OperationCard } from \"../../registry/types.js\"\nimport { normalizeError, normalizeResult } from \"../normalizer.js\"\n\nexport type CliCapabilityId =\n | \"repo.view\"\n | \"repo.labels.list\"\n | \"repo.issue_types.list\"\n | \"issue.view\"\n | \"issue.list\"\n | \"issue.comments.list\"\n | \"pr.view\"\n | \"pr.list\"\n | \"pr.status.checks\"\n | \"pr.checks.get_failed\"\n | \"pr.mergeability.view\"\n | \"pr.ready_for_review.set\"\n | \"pr.review.submit_approve\"\n | \"pr.review.submit_request_changes\"\n | \"pr.review.submit_comment\"\n | \"pr.merge.execute\"\n | \"pr.checks.rerun_failed\"\n | \"pr.checks.rerun_all\"\n | \"pr.reviewers.request\"\n | \"pr.assignees.update\"\n | \"pr.branch.update\"\n | \"check_run.annotations.list\"\n | \"workflow_runs.list\"\n | \"workflow_run.jobs.list\"\n | \"workflow_job.logs.get\"\n | \"workflow_job.logs.analyze\"\n | \"workflow.list\"\n | \"workflow.get\"\n | \"workflow_run.get\"\n | \"workflow_run.rerun_all\"\n | \"workflow_run.cancel\"\n | \"workflow_run.artifacts.list\"\n | \"project_v2.org.get\"\n | \"project_v2.user.get\"\n | \"project_v2.fields.list\"\n | \"project_v2.items.list\"\n | \"project_v2.item.add_issue\"\n | \"project_v2.item.field.update\"\n | \"release.list\"\n | \"release.get\"\n | \"release.create_draft\"\n | \"release.update\"\n | \"release.publish_draft\"\n | \"workflow_dispatch.run\"\n | \"workflow_run.rerun_failed\"\n\nexport type CliCommandRunner = {\n run(\n command: string,\n args: string[],\n timeoutMs: number,\n ): Promise<{ stdout: string; stderr: string; exitCode: number }>\n}\n\nconst DEFAULT_TIMEOUT_MS = 10_000\nconst DEFAULT_LIST_FIRST = 30\nconst MAX_WORKFLOW_JOB_LOG_CHARS = 50_000\nconst REDACTED_CLI_ERROR_MESSAGE = \"gh command failed; stderr redacted for safety\"\nconst NON_JSON_STDOUT_CAPABILITIES = new Set<CliCapabilityId>([\n \"pr.checks.rerun_failed\",\n \"pr.checks.rerun_all\",\n \"pr.reviewers.request\",\n \"pr.assignees.update\",\n \"pr.branch.update\",\n \"workflow_run.cancel\",\n \"workflow_run.rerun_failed\",\n \"workflow_run.rerun_all\",\n])\nconst REPO_ISSUE_TYPES_GRAPHQL_QUERY =\n \"query($owner:String!,$name:String!,$first:Int!,$after:String){repository(owner:$owner,name:$name){issueTypes(first:$first,after:$after){nodes{id name color isEnabled} pageInfo{hasNextPage endCursor}}}}\"\nconst ISSUE_COMMENTS_GRAPHQL_QUERY =\n \"query($owner:String!,$name:String!,$issueNumber:Int!,$first:Int!,$after:String){repository(owner:$owner,name:$name){issue(number:$issueNumber){comments(first:$first,after:$after){nodes{id body createdAt url author{login}} pageInfo{hasNextPage endCursor}}}}}\"\n\nfunction containsSensitiveText(value: string): boolean {\n return /(gh[pousr]_[A-Za-z0-9_]+|github_pat_[A-Za-z0-9_]+|authorization:\\s*bearer\\s+\\S+|bearer\\s+[A-Za-z0-9._-]{20,}|(?:api[_-]?key|token|secret|password)\\s*[=:]\\s*\\S+)/i.test(\n value,\n )\n}\n\nfunction sanitizeCliErrorMessage(stderr: string, exitCode: number): string {\n const trimmed = stderr.trim()\n if (!trimmed) {\n return `gh exited with code ${exitCode}`\n }\n\n if (containsSensitiveText(trimmed)) {\n return REDACTED_CLI_ERROR_MESSAGE\n }\n\n return trimmed\n}\n\nfunction shouldFallbackRerunFailedToAll(stderr: string): boolean {\n const normalized = stderr.toLowerCase()\n return normalized.includes(\"cannot be rerun\") && normalized.includes(\"cannot be retried\")\n}\n\nfunction parseStrictPositiveInt(value: unknown): number | null {\n return typeof value === \"number\" && Number.isInteger(value) && value > 0 ? value : null\n}\n\nfunction parseListFirst(value: unknown): number | null {\n if (value === undefined) {\n return DEFAULT_LIST_FIRST\n }\n\n return parseStrictPositiveInt(value)\n}\n\nfunction parseNonEmptyString(value: unknown): string | null {\n if (typeof value !== \"string\") {\n return null\n }\n\n const trimmed = value.trim()\n return trimmed.length > 0 ? trimmed : null\n}\n\nfunction requireRepo(owner: string, name: string, capabilityId: CliCapabilityId): void {\n if (!owner || !name) {\n throw new Error(`Missing owner/name for ${capabilityId}`)\n }\n}\n\nfunction commandTokens(card: OperationCard | undefined, fallbackCommand: string): string[] {\n const fromCard = card?.cli?.command\n const command =\n typeof fromCard === \"string\" && fromCard.trim().length > 0 ? fromCard : fallbackCommand\n return command.trim().split(/\\s+/)\n}\n\nfunction jsonFieldsFromCard(card: OperationCard | undefined, fallbackFields: string): string {\n const fields = card?.cli?.jsonFields\n if (Array.isArray(fields) && fields.length > 0) {\n return fields.join(\",\")\n }\n\n return fallbackFields\n}\n\nfunction buildArgs(\n capabilityId: CliCapabilityId,\n params: Record<string, unknown>,\n card?: OperationCard,\n): string[] {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n if (capabilityId === \"repo.view\") {\n const args = commandTokens(card, \"repo view\")\n if (repo) {\n args.push(repo)\n }\n\n args.push(\n \"--json\",\n jsonFieldsFromCard(\n card,\n \"id,name,nameWithOwner,isPrivate,stargazerCount,forkCount,url,defaultBranchRef\",\n ),\n )\n return args\n }\n\n if (capabilityId === \"repo.labels.list\") {\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for repo.labels.list\")\n }\n\n const args = commandTokens(card, \"label list\")\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\n \"--limit\",\n String(first),\n \"--json\",\n jsonFieldsFromCard(card, \"id,name,description,color,isDefault\"),\n )\n return args\n }\n\n if (capabilityId === \"repo.issue_types.list\") {\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for repo.issue_types.list\")\n }\n\n const after = params.after\n if (!(after === undefined || after === null || typeof after === \"string\")) {\n throw new Error(\"Invalid after cursor for repo.issue_types.list\")\n }\n\n if (!owner || !name) {\n throw new Error(\"Missing owner/name for repo.issue_types.list\")\n }\n\n const args = [\n ...commandTokens(card, \"api graphql\"),\n \"-f\",\n `query=${REPO_ISSUE_TYPES_GRAPHQL_QUERY}`,\n \"-f\",\n `owner=${owner}`,\n \"-f\",\n `name=${name}`,\n \"-F\",\n `first=${first}`,\n ]\n\n if (typeof after === \"string\" && after.length > 0) {\n args.push(\"-f\", `after=${after}`)\n }\n\n return args\n }\n\n if (capabilityId === \"issue.view\") {\n const issueNumber = parseStrictPositiveInt(params.issueNumber)\n if (issueNumber === null) {\n throw new Error(\"Missing or invalid issueNumber for issue.view\")\n }\n\n const args = [...commandTokens(card, \"issue view\"), String(issueNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\"--json\", jsonFieldsFromCard(card, \"id,number,title,state,url\"))\n return args\n }\n\n if (capabilityId === \"issue.list\") {\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for issue.list\")\n }\n\n const args = commandTokens(card, \"issue list\")\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\n \"--limit\",\n String(first),\n \"--json\",\n jsonFieldsFromCard(card, \"id,number,title,state,url\"),\n )\n return args\n }\n\n if (capabilityId === \"issue.comments.list\") {\n const issueNumber = parseStrictPositiveInt(params.issueNumber)\n if (issueNumber === null) {\n throw new Error(\"Missing or invalid issueNumber for issue.comments.list\")\n }\n\n const first = parseStrictPositiveInt(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for issue.comments.list\")\n }\n\n const after = params.after\n if (!(after === undefined || after === null || typeof after === \"string\")) {\n throw new Error(\"Invalid after cursor for issue.comments.list\")\n }\n\n const args = [\n ...commandTokens(card, \"api graphql\"),\n \"-f\",\n `query=${ISSUE_COMMENTS_GRAPHQL_QUERY}`,\n \"-f\",\n `owner=${owner}`,\n \"-f\",\n `name=${name}`,\n \"-F\",\n `issueNumber=${issueNumber}`,\n \"-F\",\n `first=${first}`,\n ]\n\n if (typeof after === \"string\" && after.length > 0) {\n args.push(\"-f\", `after=${after}`)\n }\n\n return args\n }\n\n if (capabilityId === \"pr.view\") {\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) {\n throw new Error(\"Missing or invalid prNumber for pr.view\")\n }\n\n const args = [...commandTokens(card, \"pr view\"), String(prNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\"--json\", jsonFieldsFromCard(card, \"id,number,title,state,url\"))\n return args\n }\n\n if (capabilityId === \"pr.list\") {\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for pr.list\")\n }\n\n const args = commandTokens(card, \"pr list\")\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\n \"--limit\",\n String(first),\n \"--json\",\n jsonFieldsFromCard(card, \"id,number,title,state,url\"),\n )\n return args\n }\n\n if (capabilityId === \"pr.status.checks\" || capabilityId === \"pr.checks.get_failed\") {\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) {\n throw new Error(`Missing or invalid prNumber for ${capabilityId}`)\n }\n\n const args = [...commandTokens(card, \"pr checks\"), String(prNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\"--json\", jsonFieldsFromCard(card, \"name,state,bucket,workflow,link\"))\n return args\n }\n\n if (capabilityId === \"pr.mergeability.view\") {\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) {\n throw new Error(\"Missing or invalid prNumber for pr.mergeability.view\")\n }\n\n const args = [...commandTokens(card, \"pr view\"), String(prNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\n \"--json\",\n jsonFieldsFromCard(card, \"mergeable,mergeStateStatus,reviewDecision,isDraft,state\"),\n )\n return args\n }\n\n if (capabilityId === \"pr.ready_for_review.set\") {\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) {\n throw new Error(\"Missing or invalid prNumber for pr.ready_for_review.set\")\n }\n\n if (typeof params.ready !== \"boolean\") {\n throw new Error(\"Missing or invalid ready for pr.ready_for_review.set\")\n }\n\n const args = [...commandTokens(card, \"pr ready\"), String(prNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n if (!params.ready) {\n args.push(\"--undo\")\n }\n\n return args\n }\n\n if (\n capabilityId === \"pr.review.submit_approve\" ||\n capabilityId === \"pr.review.submit_request_changes\" ||\n capabilityId === \"pr.review.submit_comment\"\n ) {\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) {\n throw new Error(`Missing or invalid prNumber for ${capabilityId}`)\n }\n\n const args = [...commandTokens(card, \"pr review\"), String(prNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n if (capabilityId === \"pr.review.submit_approve\") {\n args.push(\"--approve\")\n const body = parseNonEmptyString(params.body)\n if (body) {\n args.push(\"--body\", body)\n }\n return args\n }\n\n const body = parseNonEmptyString(params.body)\n if (body === null) {\n throw new Error(`Missing or invalid body for ${capabilityId}`)\n }\n\n if (capabilityId === \"pr.review.submit_request_changes\") {\n args.push(\"--request-changes\", \"--body\", body)\n return args\n }\n\n args.push(\"--comment\", \"--body\", body)\n return args\n }\n\n if (capabilityId === \"pr.merge.execute\") {\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) {\n throw new Error(\"Missing or invalid prNumber for pr.merge.execute\")\n }\n\n const method = params.method === undefined ? \"merge\" : params.method\n if (method !== \"merge\" && method !== \"squash\" && method !== \"rebase\") {\n throw new Error(\"Missing or invalid method for pr.merge.execute\")\n }\n\n if (params.deleteBranch !== undefined && typeof params.deleteBranch !== \"boolean\") {\n throw new Error(\"Missing or invalid deleteBranch for pr.merge.execute\")\n }\n\n const args = [...commandTokens(card, \"pr merge\"), String(prNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(`--${method}`)\n\n if (params.deleteBranch === true) {\n args.push(\"--delete-branch\")\n }\n\n return args\n }\n\n if (capabilityId === \"pr.checks.rerun_failed\" || capabilityId === \"pr.checks.rerun_all\") {\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) {\n throw new Error(`Missing or invalid prNumber for ${capabilityId}`)\n }\n\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) {\n throw new Error(`Missing or invalid runId for ${capabilityId}`)\n }\n\n const args = [...commandTokens(card, \"run rerun\"), String(runId)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n if (capabilityId === \"pr.checks.rerun_failed\") {\n args.push(\"--failed\")\n }\n\n return args\n }\n\n if (capabilityId === \"pr.reviewers.request\") {\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) {\n throw new Error(\"Missing or invalid prNumber for pr.reviewers.request\")\n }\n\n const reviewers = Array.isArray(params.reviewers)\n ? params.reviewers.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n\n if (reviewers.length === 0) {\n throw new Error(\"Missing or invalid reviewers for pr.reviewers.request\")\n }\n\n const args = [...commandTokens(card, \"pr edit\"), String(prNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\"--add-reviewer\", reviewers.join(\",\"))\n return args\n }\n\n if (capabilityId === \"pr.assignees.update\") {\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) {\n throw new Error(\"Missing or invalid prNumber for pr.assignees.update\")\n }\n\n const addAssignees = Array.isArray(params.add)\n ? params.add.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n const removeAssignees = Array.isArray(params.remove)\n ? params.remove.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n\n if (addAssignees.length === 0 && removeAssignees.length === 0) {\n throw new Error(\"Missing or invalid add/remove assignees for pr.assignees.update\")\n }\n\n const args = [...commandTokens(card, \"pr edit\"), String(prNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n if (addAssignees.length > 0) {\n args.push(\"--add-assignee\", addAssignees.join(\",\"))\n }\n\n if (removeAssignees.length > 0) {\n args.push(\"--remove-assignee\", removeAssignees.join(\",\"))\n }\n\n return args\n }\n\n if (capabilityId === \"pr.branch.update\") {\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) {\n throw new Error(\"Missing or invalid prNumber for pr.branch.update\")\n }\n\n const args = [...commandTokens(card, \"pr update-branch\"), String(prNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n return args\n }\n\n if (capabilityId === \"check_run.annotations.list\") {\n const checkRunId = parseStrictPositiveInt(params.checkRunId)\n if (checkRunId === null) {\n throw new Error(\"Missing or invalid checkRunId for check_run.annotations.list\")\n }\n\n if (!owner || !name) {\n throw new Error(\"Missing owner/name for check_run.annotations.list\")\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/check-runs/${checkRunId}/annotations`,\n ]\n return args\n }\n\n if (capabilityId === \"workflow_runs.list\") {\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for workflow_runs.list\")\n }\n\n const args = commandTokens(card, \"run list\")\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n if (typeof params.branch === \"string\" && params.branch.length > 0) {\n args.push(\"--branch\", params.branch)\n }\n if (typeof params.event === \"string\" && params.event.length > 0) {\n args.push(\"--event\", params.event)\n }\n if (typeof params.status === \"string\" && params.status.length > 0) {\n args.push(\"--status\", params.status)\n }\n\n args.push(\n \"--limit\",\n String(first),\n \"--json\",\n jsonFieldsFromCard(card, \"databaseId,workflowName,status,conclusion,headBranch,url\"),\n )\n return args\n }\n\n if (capabilityId === \"workflow_run.jobs.list\") {\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) {\n throw new Error(\"Missing or invalid runId for workflow_run.jobs.list\")\n }\n\n const args = [...commandTokens(card, \"run view\"), String(runId)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\"--json\", \"jobs\")\n return args\n }\n\n if (capabilityId === \"workflow_job.logs.get\" || capabilityId === \"workflow_job.logs.analyze\") {\n const jobId = parseStrictPositiveInt(params.jobId)\n if (jobId === null) {\n throw new Error(`Missing or invalid jobId for ${capabilityId}`)\n }\n\n const args = [...commandTokens(card, \"run view\"), \"--job\", String(jobId), \"--log\"]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n return args\n }\n\n if (capabilityId === \"workflow.list\") {\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for workflow.list\")\n }\n\n const args = commandTokens(card, \"workflow list\")\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\"--limit\", String(first), \"--json\", jsonFieldsFromCard(card, \"id,name,path,state\"))\n return args\n }\n\n if (capabilityId === \"workflow.get\") {\n const workflowId =\n parseNonEmptyString(params.workflowId) ??\n (typeof params.workflowId === \"number\" ? String(params.workflowId) : null)\n if (workflowId === null) {\n throw new Error(\"Missing or invalid workflowId for workflow.get\")\n }\n\n const args = [...commandTokens(card, \"workflow view\"), workflowId]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\"--json\", jsonFieldsFromCard(card, \"id,name,path,state,url\"))\n return args\n }\n\n if (capabilityId === \"workflow_run.get\") {\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) {\n throw new Error(\"Missing or invalid runId for workflow_run.get\")\n }\n\n const args = [...commandTokens(card, \"run view\"), String(runId)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\n \"--json\",\n jsonFieldsFromCard(\n card,\n \"databaseId,workflowName,status,conclusion,headBranch,headSha,url,event,createdAt,updatedAt,startedAt\",\n ),\n )\n return args\n }\n\n if (capabilityId === \"workflow_run.rerun_all\" || capabilityId === \"workflow_run.cancel\") {\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) {\n throw new Error(`Missing or invalid runId for ${capabilityId}`)\n }\n\n const args = [\n ...commandTokens(\n card,\n capabilityId === \"workflow_run.rerun_all\" ? \"run rerun\" : \"run cancel\",\n ),\n String(runId),\n ]\n\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n return args\n }\n\n if (capabilityId === \"workflow_run.artifacts.list\") {\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) {\n throw new Error(\"Missing or invalid runId for workflow_run.artifacts.list\")\n }\n\n const args = [...commandTokens(card, \"run view\"), String(runId)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\"--json\", jsonFieldsFromCard(card, \"artifacts\"))\n return args\n }\n\n if (capabilityId === \"project_v2.org.get\" || capabilityId === \"project_v2.user.get\") {\n const ownerParam = capabilityId === \"project_v2.org.get\" ? params.org : params.user\n const owner = parseNonEmptyString(ownerParam)\n const projectNumber = parseStrictPositiveInt(params.projectNumber)\n if (owner === null || projectNumber === null) {\n throw new Error(`Missing or invalid owner/projectNumber for ${capabilityId}`)\n }\n\n const args = [\n ...commandTokens(card, \"project view\"),\n String(projectNumber),\n \"--owner\",\n owner,\n \"--format\",\n \"json\",\n ]\n return args\n }\n\n if (capabilityId === \"project_v2.fields.list\") {\n const projectNumber = parseStrictPositiveInt(params.projectNumber)\n const projectOwner = parseNonEmptyString(params.owner)\n if (projectNumber === null || projectOwner === null) {\n throw new Error(\"Missing or invalid owner/projectNumber for project_v2.fields.list\")\n }\n\n const args = [\n ...commandTokens(card, \"project field-list\"),\n String(projectNumber),\n \"--owner\",\n projectOwner,\n \"--format\",\n \"json\",\n ]\n return args\n }\n\n if (capabilityId === \"project_v2.items.list\") {\n const projectNumber = parseStrictPositiveInt(params.projectNumber)\n const projectOwner = parseNonEmptyString(params.owner)\n const first = parseListFirst(params.first)\n if (projectNumber === null || projectOwner === null || first === null) {\n throw new Error(\"Missing or invalid owner/projectNumber/first for project_v2.items.list\")\n }\n\n const args = [\n ...commandTokens(card, \"project item-list\"),\n String(projectNumber),\n \"--owner\",\n projectOwner,\n \"--format\",\n \"json\",\n \"--limit\",\n String(first),\n ]\n return args\n }\n\n if (capabilityId === \"release.list\") {\n requireRepo(owner, name, capabilityId)\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for release.list\")\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/releases`,\n \"-F\",\n `per_page=${first}`,\n ]\n return args\n }\n\n if (capabilityId === \"release.get\") {\n requireRepo(owner, name, capabilityId)\n const tagName = parseNonEmptyString(params.tagName)\n if (tagName === null) {\n throw new Error(\"Missing or invalid tagName for release.get\")\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/releases/tags/${encodeURIComponent(tagName)}`,\n ]\n return args\n }\n\n if (capabilityId === \"release.create_draft\") {\n requireRepo(owner, name, capabilityId)\n const tagName = parseNonEmptyString(params.tagName)\n if (tagName === null) {\n throw new Error(\"Missing or invalid tagName for release.create_draft\")\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/releases`,\n \"--method\",\n \"POST\",\n \"-f\",\n `tag_name=${tagName}`,\n \"-F\",\n \"draft=true\",\n ]\n\n const title = parseNonEmptyString(params.title)\n if (title) {\n args.push(\"-f\", `name=${title}`)\n }\n\n const notes = parseNonEmptyString(params.notes)\n if (notes) {\n args.push(\"-f\", `body=${notes}`)\n }\n\n const target = parseNonEmptyString(params.targetCommitish)\n if (target) {\n args.push(\"-f\", `target_commitish=${target}`)\n }\n\n if (typeof params.prerelease === \"boolean\") {\n args.push(\"-F\", `prerelease=${params.prerelease ? \"true\" : \"false\"}`)\n }\n\n return args\n }\n\n if (capabilityId === \"release.update\") {\n requireRepo(owner, name, capabilityId)\n const releaseId = parseStrictPositiveInt(params.releaseId)\n if (releaseId === null) {\n throw new Error(\"Missing or invalid releaseId for release.update\")\n }\n\n if (params.draft !== undefined && params.draft !== true) {\n throw new Error(\n \"release.update only supports draft=true; use release.publish_draft to publish\",\n )\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/releases/${releaseId}`,\n \"--method\",\n \"PATCH\",\n \"-F\",\n \"draft=true\",\n ]\n\n const tagName = parseNonEmptyString(params.tagName)\n if (tagName) {\n args.push(\"-f\", `tag_name=${tagName}`)\n }\n\n const title = parseNonEmptyString(params.title)\n if (title) {\n args.push(\"-f\", `name=${title}`)\n }\n\n const notes = parseNonEmptyString(params.notes)\n if (notes) {\n args.push(\"-f\", `body=${notes}`)\n }\n\n const target = parseNonEmptyString(params.targetCommitish)\n if (target) {\n args.push(\"-f\", `target_commitish=${target}`)\n }\n\n if (typeof params.prerelease === \"boolean\") {\n args.push(\"-F\", `prerelease=${params.prerelease ? \"true\" : \"false\"}`)\n }\n\n return args\n }\n\n if (capabilityId === \"release.publish_draft\") {\n requireRepo(owner, name, capabilityId)\n const releaseId = parseStrictPositiveInt(params.releaseId)\n if (releaseId === null) {\n throw new Error(\"Missing or invalid releaseId for release.publish_draft\")\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/releases/${releaseId}`,\n \"--method\",\n \"PATCH\",\n \"-F\",\n \"draft=false\",\n ]\n\n const title = parseNonEmptyString(params.title)\n if (title) {\n args.push(\"-f\", `name=${title}`)\n }\n\n const notes = parseNonEmptyString(params.notes)\n if (notes) {\n args.push(\"-f\", `body=${notes}`)\n }\n\n if (typeof params.prerelease === \"boolean\") {\n args.push(\"-F\", `prerelease=${params.prerelease ? \"true\" : \"false\"}`)\n }\n\n return args\n }\n\n if (capabilityId === \"workflow_dispatch.run\") {\n requireRepo(owner, name, capabilityId)\n const workflowId = parseNonEmptyString(params.workflowId)\n if (workflowId === null) {\n throw new Error(\"Missing or invalid workflowId for workflow_dispatch.run\")\n }\n\n const ref = parseNonEmptyString(params.ref)\n if (ref === null) {\n throw new Error(\"Missing or invalid ref for workflow_dispatch.run\")\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/actions/workflows/${encodeURIComponent(workflowId)}/dispatches`,\n \"--method\",\n \"POST\",\n \"-f\",\n `ref=${ref}`,\n ]\n\n if (params.inputs !== undefined) {\n if (\n typeof params.inputs !== \"object\" ||\n params.inputs === null ||\n Array.isArray(params.inputs)\n ) {\n throw new Error(\"Missing or invalid inputs for workflow_dispatch.run\")\n }\n\n const inputEntries = Object.entries(params.inputs as Record<string, unknown>)\n for (const [key, value] of inputEntries) {\n if (!key.trim()) {\n throw new Error(\"Missing or invalid inputs for workflow_dispatch.run\")\n }\n\n if (\n !(typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\")\n ) {\n throw new Error(\"Missing or invalid inputs for workflow_dispatch.run\")\n }\n\n args.push(\"-f\", `inputs[${key}]=${String(value)}`)\n }\n }\n\n return args\n }\n\n if (capabilityId === \"workflow_run.rerun_failed\") {\n requireRepo(owner, name, capabilityId)\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) {\n throw new Error(\"Missing or invalid runId for workflow_run.rerun_failed\")\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/actions/runs/${runId}/rerun-failed-jobs`,\n \"--method\",\n \"POST\",\n ]\n return args\n }\n\n if (capabilityId === \"project_v2.item.add_issue\") {\n const projectNumber = parseStrictPositiveInt(params.projectNumber)\n const projectOwner = parseNonEmptyString(params.owner)\n const issueUrl = parseNonEmptyString(params.issueUrl)\n if (projectNumber === null || projectOwner === null || issueUrl === null) {\n throw new Error(\n \"Missing or invalid owner/projectNumber/issueUrl for project_v2.item.add_issue\",\n )\n }\n\n const args = [\n ...commandTokens(card, \"project item-add\"),\n String(projectNumber),\n \"--owner\",\n projectOwner,\n \"--url\",\n issueUrl,\n \"--format\",\n \"json\",\n ]\n return args\n }\n\n if (capabilityId === \"project_v2.item.field.update\") {\n const projectId = parseNonEmptyString(params.projectId)\n const itemId = parseNonEmptyString(params.itemId)\n const fieldId = parseNonEmptyString(params.fieldId)\n if (projectId === null || itemId === null || fieldId === null) {\n throw new Error(\n \"Missing or invalid projectId/itemId/fieldId for project_v2.item.field.update\",\n )\n }\n\n const args = [\n ...commandTokens(card, \"project item-edit\"),\n \"--project-id\",\n projectId,\n \"--id\",\n itemId,\n \"--field-id\",\n fieldId,\n ]\n\n const valueText = parseNonEmptyString(params.valueText)\n const valueDate = parseNonEmptyString(params.valueDate)\n const valueSingleSelectOptionId = parseNonEmptyString(params.valueSingleSelectOptionId)\n const valueIterationId = parseNonEmptyString(params.valueIterationId)\n const clear = params.clear === true\n\n if (valueText !== null) {\n args.push(\"--text\", valueText)\n } else if (typeof params.valueNumber === \"number\" && Number.isFinite(params.valueNumber)) {\n args.push(\"--number\", String(params.valueNumber))\n } else if (valueDate !== null) {\n args.push(\"--date\", valueDate)\n } else if (valueSingleSelectOptionId !== null) {\n args.push(\"--single-select-option-id\", valueSingleSelectOptionId)\n } else if (valueIterationId !== null) {\n args.push(\"--iteration-id\", valueIterationId)\n } else if (clear) {\n args.push(\"--clear\")\n } else {\n throw new Error(\"Missing field value update for project_v2.item.field.update\")\n }\n\n return args\n }\n throw new Error(`Unsupported CLI capability: ${capabilityId}`)\n}\n\nfunction parseCliData(stdout: string): unknown {\n const trimmed = stdout.trim()\n if (!trimmed) {\n return {}\n }\n\n return JSON.parse(trimmed)\n}\n\nfunction normalizeListItem(item: unknown): Record<string, unknown> {\n if (typeof item !== \"object\" || item === null || Array.isArray(item)) {\n return {}\n }\n\n const input = item as Record<string, unknown>\n return {\n id: input.id,\n number: input.number,\n title: input.title,\n state: input.state,\n url: input.url,\n }\n}\n\nfunction normalizeWorkflowItem(item: unknown): Record<string, unknown> {\n if (typeof item !== \"object\" || item === null || Array.isArray(item)) {\n return {\n id: 0,\n name: null,\n path: null,\n state: null,\n }\n }\n\n const input = item as Record<string, unknown>\n return {\n id: typeof input.id === \"number\" ? input.id : 0,\n name: typeof input.name === \"string\" ? input.name : null,\n path: typeof input.path === \"string\" ? input.path : null,\n state: typeof input.state === \"string\" ? input.state : null,\n }\n}\n\nfunction normalizeProjectV2Summary(data: unknown): Record<string, unknown> {\n const input =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n\n return {\n id: typeof input.id === \"string\" ? input.id : null,\n title: typeof input.title === \"string\" ? input.title : null,\n shortDescription: typeof input.shortDescription === \"string\" ? input.shortDescription : null,\n public: typeof input.public === \"boolean\" ? input.public : null,\n closed: typeof input.closed === \"boolean\" ? input.closed : null,\n url: typeof input.url === \"string\" ? input.url : null,\n }\n}\n\nfunction normalizeCheckItem(item: unknown): Record<string, unknown> {\n if (typeof item !== \"object\" || item === null || Array.isArray(item)) {\n return {\n name: null,\n state: null,\n bucket: null,\n workflow: null,\n link: null,\n }\n }\n\n const input = item as Record<string, unknown>\n return {\n name: typeof input.name === \"string\" ? input.name : null,\n state: typeof input.state === \"string\" ? input.state : null,\n bucket: typeof input.bucket === \"string\" ? input.bucket : null,\n workflow: typeof input.workflow === \"string\" ? input.workflow : null,\n link: typeof input.link === \"string\" ? input.link : null,\n }\n}\n\nfunction normalizeCheckBucket(value: unknown): string | null {\n if (typeof value !== \"string\") {\n return null\n }\n\n return value.trim().toLowerCase()\n}\n\nfunction isCheckFailureBucket(bucket: unknown): boolean {\n const normalized = normalizeCheckBucket(bucket)\n if (!normalized) {\n return false\n }\n\n return normalized === \"fail\" || normalized === \"cancel\"\n}\n\nfunction isCheckPendingBucket(bucket: unknown): boolean {\n const normalized = normalizeCheckBucket(bucket)\n if (!normalized) {\n return false\n }\n\n return normalized === \"pending\"\n}\n\nfunction isCheckPassBucket(bucket: unknown): boolean {\n const normalized = normalizeCheckBucket(bucket)\n if (!normalized) {\n return false\n }\n\n return normalized === \"pass\"\n}\n\nfunction normalizeCliData(\n capabilityId: CliCapabilityId,\n data: unknown,\n params: Record<string, unknown>,\n): unknown {\n const normalizeRelease = (input: unknown): Record<string, unknown> => {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) {\n return {\n id: 0,\n tagName: null,\n name: null,\n isDraft: false,\n isPrerelease: false,\n url: null,\n targetCommitish: null,\n createdAt: null,\n publishedAt: null,\n }\n }\n\n const record = input as Record<string, unknown>\n return {\n id: typeof record.id === \"number\" ? record.id : 0,\n tagName: typeof record.tag_name === \"string\" ? record.tag_name : null,\n name: typeof record.name === \"string\" ? record.name : null,\n isDraft: typeof record.draft === \"boolean\" ? record.draft : false,\n isPrerelease: typeof record.prerelease === \"boolean\" ? record.prerelease : false,\n url: typeof record.html_url === \"string\" ? record.html_url : null,\n targetCommitish: typeof record.target_commitish === \"string\" ? record.target_commitish : null,\n createdAt: typeof record.created_at === \"string\" ? record.created_at : null,\n publishedAt: typeof record.published_at === \"string\" ? record.published_at : null,\n }\n }\n\n if (capabilityId === \"repo.view\") {\n const input =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const defaultBranchRef =\n typeof input.defaultBranchRef === \"object\" && input.defaultBranchRef !== null\n ? (input.defaultBranchRef as Record<string, unknown>)\n : null\n\n return {\n id: input.id,\n name: input.name,\n nameWithOwner: input.nameWithOwner,\n isPrivate: input.isPrivate,\n stargazerCount: input.stargazerCount,\n forkCount: input.forkCount,\n url: input.url,\n defaultBranch: typeof defaultBranchRef?.name === \"string\" ? defaultBranchRef.name : null,\n }\n }\n\n if (capabilityId === \"repo.labels.list\") {\n const labels = Array.isArray(data) ? data : []\n return {\n items: labels.map((label) => {\n if (typeof label !== \"object\" || label === null || Array.isArray(label)) {\n return {\n id: null,\n name: null,\n description: null,\n color: null,\n isDefault: null,\n }\n }\n\n const record = label as Record<string, unknown>\n return {\n id: typeof record.id === \"string\" ? record.id : null,\n name: typeof record.name === \"string\" ? record.name : null,\n description: typeof record.description === \"string\" ? record.description : null,\n color: typeof record.color === \"string\" ? record.color : null,\n isDefault: typeof record.isDefault === \"boolean\" ? record.isDefault : null,\n }\n }),\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n },\n }\n }\n\n if (capabilityId === \"repo.issue_types.list\") {\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const payload =\n typeof root.data === \"object\" && root.data !== null && !Array.isArray(root.data)\n ? (root.data as Record<string, unknown>)\n : {}\n const repository =\n typeof payload.repository === \"object\" &&\n payload.repository !== null &&\n !Array.isArray(payload.repository)\n ? (payload.repository as Record<string, unknown>)\n : {}\n const connection =\n typeof repository.issueTypes === \"object\" &&\n repository.issueTypes !== null &&\n !Array.isArray(repository.issueTypes)\n ? (repository.issueTypes as Record<string, unknown>)\n : {}\n const nodes = Array.isArray(connection.nodes) ? connection.nodes : []\n const pageInfo =\n typeof connection.pageInfo === \"object\" &&\n connection.pageInfo !== null &&\n !Array.isArray(connection.pageInfo)\n ? (connection.pageInfo as Record<string, unknown>)\n : {}\n\n return {\n items: nodes.map((node) => {\n if (typeof node !== \"object\" || node === null || Array.isArray(node)) {\n return {\n id: null,\n name: null,\n color: null,\n isEnabled: null,\n }\n }\n\n const record = node as Record<string, unknown>\n return {\n id: typeof record.id === \"string\" ? record.id : null,\n name: typeof record.name === \"string\" ? record.name : null,\n color: typeof record.color === \"string\" ? record.color : null,\n isEnabled: typeof record.isEnabled === \"boolean\" ? record.isEnabled : null,\n }\n }),\n pageInfo: {\n hasNextPage: typeof pageInfo.hasNextPage === \"boolean\" ? pageInfo.hasNextPage : false,\n endCursor: typeof pageInfo.endCursor === \"string\" ? pageInfo.endCursor : null,\n },\n }\n }\n\n if (capabilityId === \"issue.list\" || capabilityId === \"pr.list\") {\n const items = Array.isArray(data) ? data.map((entry) => normalizeListItem(entry)) : []\n return {\n items,\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n },\n }\n }\n\n if (capabilityId === \"issue.comments.list\") {\n if (parseStrictPositiveInt(params.first) === null) {\n throw new Error(\"Missing or invalid first for issue.comments.list\")\n }\n\n const input =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const commentsConnection =\n typeof input.data === \"object\" && input.data !== null && !Array.isArray(input.data)\n ? (input.data as Record<string, unknown>).repository\n : null\n const repository =\n typeof commentsConnection === \"object\" &&\n commentsConnection !== null &&\n !Array.isArray(commentsConnection)\n ? (commentsConnection as Record<string, unknown>)\n : null\n const issue =\n typeof repository?.issue === \"object\" &&\n repository.issue !== null &&\n !Array.isArray(repository.issue)\n ? (repository.issue as Record<string, unknown>)\n : null\n const comments =\n typeof issue?.comments === \"object\" &&\n issue.comments !== null &&\n !Array.isArray(issue.comments)\n ? (issue.comments as Record<string, unknown>)\n : null\n const nodes = Array.isArray(comments?.nodes) ? comments.nodes : null\n const pageInfo =\n typeof comments?.pageInfo === \"object\" &&\n comments.pageInfo !== null &&\n !Array.isArray(comments.pageInfo)\n ? (comments.pageInfo as Record<string, unknown>)\n : null\n\n if (nodes === null || pageInfo === null || typeof pageInfo.hasNextPage !== \"boolean\") {\n throw new Error(\"Invalid CLI payload: comments connection is malformed\")\n }\n\n const normalizedItems = nodes.flatMap((comment) => {\n if (typeof comment !== \"object\" || comment === null || Array.isArray(comment)) {\n throw new Error(\"Invalid CLI payload: comment item must be an object\")\n }\n\n const commentRecord = comment as Record<string, unknown>\n const author =\n typeof commentRecord.author === \"object\" && commentRecord.author !== null\n ? (commentRecord.author as Record<string, unknown>)\n : null\n\n if (\n typeof commentRecord.id !== \"string\" ||\n typeof commentRecord.body !== \"string\" ||\n typeof commentRecord.url !== \"string\" ||\n typeof commentRecord.createdAt !== \"string\"\n ) {\n throw new Error(\"Invalid CLI payload: comment item has invalid field types\")\n }\n\n return [\n {\n id: commentRecord.id,\n body: commentRecord.body,\n authorLogin: typeof author?.login === \"string\" ? author.login : null,\n url: commentRecord.url,\n createdAt: commentRecord.createdAt,\n },\n ]\n })\n\n return {\n items: normalizedItems,\n pageInfo: {\n hasNextPage: pageInfo.hasNextPage,\n endCursor: typeof pageInfo.endCursor === \"string\" ? pageInfo.endCursor : null,\n },\n }\n }\n\n if (capabilityId === \"pr.status.checks\" || capabilityId === \"pr.checks.get_failed\") {\n const checks = Array.isArray(data) ? data.map((entry) => normalizeCheckItem(entry)) : []\n const failed = checks.filter((entry) => isCheckFailureBucket(entry.bucket))\n const pending = checks.filter((entry) => isCheckPendingBucket(entry.bucket))\n const passed = checks.filter((entry) => isCheckPassBucket(entry.bucket))\n\n return {\n items: capabilityId === \"pr.checks.get_failed\" ? failed : checks,\n summary: {\n total: checks.length,\n failed: failed.length,\n pending: pending.length,\n passed: passed.length,\n },\n }\n }\n\n if (capabilityId === \"pr.mergeability.view\") {\n const input =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n\n return {\n mergeable: typeof input.mergeable === \"string\" ? input.mergeable : null,\n mergeStateStatus: typeof input.mergeStateStatus === \"string\" ? input.mergeStateStatus : null,\n reviewDecision: typeof input.reviewDecision === \"string\" ? input.reviewDecision : null,\n isDraft: Boolean(input.isDraft),\n state: typeof input.state === \"string\" ? input.state : \"UNKNOWN\",\n }\n }\n\n if (capabilityId === \"pr.ready_for_review.set\") {\n const prNumber = Number(params.prNumber)\n const ready = Boolean(params.ready)\n\n return {\n prNumber,\n isDraft: !ready,\n }\n }\n\n if (\n capabilityId === \"pr.review.submit_approve\" ||\n capabilityId === \"pr.review.submit_request_changes\" ||\n capabilityId === \"pr.review.submit_comment\"\n ) {\n const prNumber = Number(params.prNumber)\n const event =\n capabilityId === \"pr.review.submit_approve\"\n ? \"APPROVE\"\n : capabilityId === \"pr.review.submit_request_changes\"\n ? \"REQUEST_CHANGES\"\n : \"COMMENT\"\n\n return {\n prNumber,\n event,\n submitted: true,\n body: typeof params.body === \"string\" ? params.body : null,\n }\n }\n\n if (capabilityId === \"pr.merge.execute\") {\n const method =\n params.method === \"squash\" || params.method === \"rebase\" ? params.method : \"merge\"\n return {\n prNumber: Number(params.prNumber),\n method,\n queued: true,\n deleteBranch: params.deleteBranch === true,\n }\n }\n\n if (capabilityId === \"pr.checks.rerun_failed\" || capabilityId === \"pr.checks.rerun_all\") {\n const effectiveMode =\n params.__effectiveRerunMode === \"all\"\n ? \"all\"\n : capabilityId === \"pr.checks.rerun_failed\"\n ? \"failed\"\n : \"all\"\n\n return {\n prNumber: Number(params.prNumber),\n runId: Number(params.runId),\n mode: effectiveMode,\n queued: true,\n }\n }\n\n if (capabilityId === \"pr.reviewers.request\") {\n const reviewers = Array.isArray(params.reviewers)\n ? params.reviewers.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n\n return {\n prNumber: Number(params.prNumber),\n reviewers,\n updated: true,\n }\n }\n\n if (capabilityId === \"pr.assignees.update\") {\n const add = Array.isArray(params.add)\n ? params.add.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n const remove = Array.isArray(params.remove)\n ? params.remove.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n\n return {\n prNumber: Number(params.prNumber),\n add,\n remove,\n updated: true,\n }\n }\n\n if (capabilityId === \"pr.branch.update\") {\n return {\n prNumber: Number(params.prNumber),\n updated: true,\n }\n }\n\n if (capabilityId === \"check_run.annotations.list\") {\n const annotations = Array.isArray(data) ? data : []\n\n return {\n items: annotations.map((annotation) => {\n if (typeof annotation !== \"object\" || annotation === null || Array.isArray(annotation)) {\n return {\n path: null,\n startLine: null,\n endLine: null,\n level: null,\n message: null,\n title: null,\n details: null,\n }\n }\n\n const record = annotation as Record<string, unknown>\n return {\n path: typeof record.path === \"string\" ? record.path : null,\n startLine: typeof record.start_line === \"number\" ? record.start_line : null,\n endLine: typeof record.end_line === \"number\" ? record.end_line : null,\n level: typeof record.annotation_level === \"string\" ? record.annotation_level : null,\n message: typeof record.message === \"string\" ? record.message : null,\n title: typeof record.title === \"string\" ? record.title : null,\n details: typeof record.raw_details === \"string\" ? record.raw_details : null,\n }\n }),\n }\n }\n\n if (capabilityId === \"workflow_runs.list\") {\n const runs = Array.isArray(data) ? data : []\n\n return {\n items: runs.map((run) => {\n if (typeof run !== \"object\" || run === null || Array.isArray(run)) {\n return {\n id: 0,\n workflowName: null,\n status: null,\n conclusion: null,\n headBranch: null,\n url: null,\n }\n }\n\n const record = run as Record<string, unknown>\n return {\n id: typeof record.databaseId === \"number\" ? record.databaseId : 0,\n workflowName: typeof record.workflowName === \"string\" ? record.workflowName : null,\n status: typeof record.status === \"string\" ? record.status : null,\n conclusion: typeof record.conclusion === \"string\" ? record.conclusion : null,\n headBranch: typeof record.headBranch === \"string\" ? record.headBranch : null,\n url: typeof record.url === \"string\" ? record.url : null,\n }\n }),\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n },\n }\n }\n\n if (capabilityId === \"workflow_run.jobs.list\") {\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const jobs = Array.isArray(root.jobs) ? root.jobs : []\n\n return {\n items: jobs.map((job) => {\n if (typeof job !== \"object\" || job === null || Array.isArray(job)) {\n return {\n id: 0,\n name: null,\n status: null,\n conclusion: null,\n startedAt: null,\n completedAt: null,\n url: null,\n }\n }\n\n const record = job as Record<string, unknown>\n return {\n id: typeof record.databaseId === \"number\" ? record.databaseId : 0,\n name: typeof record.name === \"string\" ? record.name : null,\n status: typeof record.status === \"string\" ? record.status : null,\n conclusion: typeof record.conclusion === \"string\" ? record.conclusion : null,\n startedAt: typeof record.startedAt === \"string\" ? record.startedAt : null,\n completedAt: typeof record.completedAt === \"string\" ? record.completedAt : null,\n url: typeof record.url === \"string\" ? record.url : null,\n }\n }),\n }\n }\n\n if (capabilityId === \"workflow_job.logs.get\") {\n const jobId = Number(params.jobId)\n\n const rawLog = typeof data === \"string\" ? data : String(data)\n const truncated = rawLog.length > MAX_WORKFLOW_JOB_LOG_CHARS\n\n return {\n jobId,\n log: truncated ? rawLog.slice(0, MAX_WORKFLOW_JOB_LOG_CHARS) : rawLog,\n truncated,\n }\n }\n\n if (capabilityId === \"workflow_job.logs.analyze\") {\n const jobId = Number(params.jobId)\n\n const rawLog = typeof data === \"string\" ? data : String(data)\n const truncated = rawLog.length > MAX_WORKFLOW_JOB_LOG_CHARS\n const boundedLog = truncated ? rawLog.slice(0, MAX_WORKFLOW_JOB_LOG_CHARS) : rawLog\n\n const lines = boundedLog.split(/\\r?\\n/)\n const errorLines = lines.filter((line) => /\\berror\\b/i.test(line))\n const topErrorLines = errorLines.slice(0, 10)\n const warningLines = lines.filter((line) => /\\bwarn(ing)?\\b/i.test(line))\n\n return {\n jobId,\n truncated,\n summary: {\n errorCount: errorLines.length,\n warningCount: warningLines.length,\n topErrorLines,\n },\n }\n }\n\n if (capabilityId === \"workflow.list\") {\n const workflows = Array.isArray(data) ? data : []\n return {\n items: workflows.map((workflow) => normalizeWorkflowItem(workflow)),\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n },\n }\n }\n\n if (capabilityId === \"release.list\") {\n const items = Array.isArray(data) ? data.map((item) => normalizeRelease(item)) : []\n return {\n items,\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n },\n }\n }\n\n if (capabilityId === \"workflow.get\") {\n const input = normalizeWorkflowItem(data)\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n\n return {\n ...input,\n url: typeof root.url === \"string\" ? root.url : null,\n }\n }\n\n if (capabilityId === \"workflow_run.get\") {\n const input =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n\n return {\n id: typeof input.databaseId === \"number\" ? input.databaseId : 0,\n workflowName: typeof input.workflowName === \"string\" ? input.workflowName : null,\n status: typeof input.status === \"string\" ? input.status : null,\n conclusion: typeof input.conclusion === \"string\" ? input.conclusion : null,\n headBranch: typeof input.headBranch === \"string\" ? input.headBranch : null,\n headSha: typeof input.headSha === \"string\" ? input.headSha : null,\n event: typeof input.event === \"string\" ? input.event : null,\n createdAt: typeof input.createdAt === \"string\" ? input.createdAt : null,\n updatedAt: typeof input.updatedAt === \"string\" ? input.updatedAt : null,\n startedAt: typeof input.startedAt === \"string\" ? input.startedAt : null,\n url: typeof input.url === \"string\" ? input.url : null,\n }\n }\n\n if (capabilityId === \"workflow_run.rerun_all\") {\n return {\n runId: Number(params.runId),\n status: \"requested\",\n }\n }\n\n if (capabilityId === \"workflow_run.cancel\") {\n return {\n runId: Number(params.runId),\n status: \"cancel_requested\",\n }\n }\n\n if (capabilityId === \"workflow_run.artifacts.list\") {\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const artifacts = Array.isArray(root.artifacts) ? root.artifacts : []\n\n return {\n items: artifacts.map((artifact) => {\n if (typeof artifact !== \"object\" || artifact === null || Array.isArray(artifact)) {\n return {\n id: 0,\n name: null,\n sizeInBytes: null,\n archiveDownloadUrl: null,\n }\n }\n\n const record = artifact as Record<string, unknown>\n return {\n id: typeof record.id === \"number\" ? record.id : 0,\n name: typeof record.name === \"string\" ? record.name : null,\n sizeInBytes: typeof record.sizeInBytes === \"number\" ? record.sizeInBytes : null,\n archiveDownloadUrl:\n typeof record.archiveDownloadUrl === \"string\" ? record.archiveDownloadUrl : null,\n }\n }),\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n },\n }\n }\n\n if (capabilityId === \"project_v2.org.get\" || capabilityId === \"project_v2.user.get\") {\n return normalizeProjectV2Summary(data)\n }\n\n if (capabilityId === \"project_v2.fields.list\") {\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const fields = Array.isArray(root.fields) ? root.fields : []\n\n return {\n items: fields.map((field) => {\n if (typeof field !== \"object\" || field === null || Array.isArray(field)) {\n return {\n id: null,\n name: null,\n dataType: null,\n }\n }\n\n const record = field as Record<string, unknown>\n return {\n id: typeof record.id === \"string\" ? record.id : null,\n name: typeof record.name === \"string\" ? record.name : null,\n dataType: typeof record.dataType === \"string\" ? record.dataType : null,\n }\n }),\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n },\n }\n }\n\n if (capabilityId === \"project_v2.items.list\") {\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const items = Array.isArray(root.items) ? root.items : []\n\n return {\n items: items.map((item) => {\n if (typeof item !== \"object\" || item === null || Array.isArray(item)) {\n return {\n id: null,\n contentType: null,\n contentNumber: null,\n contentTitle: null,\n }\n }\n\n const record = item as Record<string, unknown>\n const content =\n typeof record.content === \"object\" &&\n record.content !== null &&\n !Array.isArray(record.content)\n ? (record.content as Record<string, unknown>)\n : {}\n\n return {\n id: typeof record.id === \"string\" ? record.id : null,\n contentType: typeof content.type === \"string\" ? content.type : null,\n contentNumber: typeof content.number === \"number\" ? content.number : null,\n contentTitle: typeof content.title === \"string\" ? content.title : null,\n }\n }),\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n },\n }\n }\n\n if (capabilityId === \"project_v2.item.add_issue\") {\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n\n return {\n itemId: typeof root.id === \"string\" ? root.id : null,\n added: true,\n }\n }\n\n if (capabilityId === \"project_v2.item.field.update\") {\n return {\n itemId: parseNonEmptyString(params.itemId),\n updated: true,\n }\n }\n\n if (\n capabilityId === \"release.get\" ||\n capabilityId === \"release.create_draft\" ||\n capabilityId === \"release.update\"\n ) {\n return normalizeRelease(data)\n }\n\n if (capabilityId === \"release.publish_draft\") {\n const release = normalizeRelease(data)\n return {\n ...release,\n wasDraft: Boolean(params.__wasDraft),\n }\n }\n\n if (capabilityId === \"workflow_dispatch.run\") {\n return {\n workflowId: String(params.workflowId),\n ref: String(params.ref),\n dispatched: true,\n }\n }\n\n if (capabilityId === \"workflow_run.rerun_failed\") {\n return {\n runId: Number(params.runId),\n rerunFailed: true,\n }\n }\n\n if (capabilityId === \"issue.view\" || capabilityId === \"pr.view\") {\n return normalizeListItem(data)\n }\n\n return data\n}\n\nexport async function runCliCapability(\n runner: CliCommandRunner,\n capabilityId: CliCapabilityId,\n params: Record<string, unknown>,\n card?: OperationCard,\n): Promise<ResultEnvelope> {\n try {\n if (capabilityId === \"release.publish_draft\") {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const releaseId = parseStrictPositiveInt(params.releaseId)\n if (!owner || !name || releaseId === null) {\n throw new Error(\"Missing owner/name/releaseId for release.publish_draft\")\n }\n\n const readArgs = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/releases/${releaseId}`,\n ]\n const readResult = await runner.run(\"gh\", readArgs, DEFAULT_TIMEOUT_MS)\n if (readResult.exitCode !== 0) {\n const code = mapErrorToCode(readResult.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(readResult.stderr, readResult.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId, exitCode: readResult.exitCode },\n },\n \"cli\",\n { capabilityId, reason: \"CARD_FALLBACK\" },\n )\n }\n\n const currentRelease = parseCliData(readResult.stdout)\n const currentDraftValue =\n typeof currentRelease === \"object\" &&\n currentRelease !== null &&\n !Array.isArray(currentRelease)\n ? (currentRelease as Record<string, unknown>).draft\n : undefined\n\n if (currentDraftValue !== true) {\n return normalizeError(\n {\n code: errorCodes.Validation,\n message: \"release.publish_draft requires an existing draft release\",\n retryable: false,\n },\n \"cli\",\n { capabilityId, reason: \"CARD_FALLBACK\" },\n )\n }\n\n const args = buildArgs(capabilityId, params, card)\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId, exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId, reason: \"CARD_FALLBACK\" },\n )\n }\n\n const normalized = normalizeCliData(capabilityId, parseCliData(result.stdout), {\n ...params,\n __wasDraft: true,\n })\n return normalizeResult(normalized, \"cli\", { capabilityId, reason: \"CARD_FALLBACK\" })\n }\n\n const args = buildArgs(capabilityId, params, card)\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n let failureStderr = result.stderr\n if (result.exitCode !== 0) {\n if (\n capabilityId === \"pr.checks.rerun_failed\" &&\n shouldFallbackRerunFailedToAll(result.stderr)\n ) {\n const rerunAllArgs = buildArgs(\"pr.checks.rerun_all\", params, card)\n const rerunAllResult = await runner.run(\"gh\", rerunAllArgs, DEFAULT_TIMEOUT_MS)\n if (rerunAllResult.exitCode === 0) {\n const rerunData = NON_JSON_STDOUT_CAPABILITIES.has(capabilityId)\n ? {}\n : parseCliData(rerunAllResult.stdout)\n const fallbackData = normalizeCliData(capabilityId, rerunData, {\n ...params,\n __effectiveRerunMode: \"all\",\n })\n return normalizeResult(fallbackData, \"cli\", { capabilityId, reason: \"CARD_FALLBACK\" })\n }\n\n failureStderr = rerunAllResult.stderr || rerunAllResult.stdout || result.stderr\n }\n\n const code = mapErrorToCode(failureStderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(failureStderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId, exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId, reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data =\n capabilityId === \"workflow_job.logs.get\" || capabilityId === \"workflow_job.logs.analyze\"\n ? result.stdout\n : NON_JSON_STDOUT_CAPABILITIES.has(capabilityId)\n ? {}\n : parseCliData(result.stdout)\n const normalized = normalizeCliData(capabilityId, data, params)\n return normalizeResult(normalized, \"cli\", { capabilityId, reason: \"CARD_FALLBACK\" })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n {\n code: errorCodes.Server,\n message: \"Failed to parse CLI JSON output\",\n retryable: false,\n },\n \"cli\",\n { capabilityId, reason: \"CARD_FALLBACK\" },\n )\n }\n\n if (error instanceof Error && error.message.toLowerCase().includes(\"invalid cli payload\")) {\n return normalizeError(\n {\n code: errorCodes.Server,\n message: error.message,\n retryable: false,\n },\n \"cli\",\n { capabilityId, reason: \"CARD_FALLBACK\" },\n )\n }\n\n if (error instanceof Error && error.message.toLowerCase().includes(\"invalid after cursor\")) {\n return normalizeError(\n {\n code: errorCodes.Validation,\n message: error.message,\n retryable: false,\n },\n \"cli\",\n { capabilityId, reason: \"CARD_FALLBACK\" },\n )\n }\n\n if (\n error instanceof Error &&\n error.message.toLowerCase().includes(\"only supports draft=true\")\n ) {\n return normalizeError(\n {\n code: errorCodes.Validation,\n message: error.message,\n retryable: false,\n },\n \"cli\",\n { capabilityId, reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId, reason: \"CARD_FALLBACK\" },\n )\n }\n}\n","import type {\n GithubClient,\n IssueAssigneesUpdateInput,\n IssueBlockedByInput,\n IssueCommentCreateInput,\n IssueCommentsListInput,\n IssueCreateInput,\n IssueLabelsUpdateInput,\n IssueLinkedPrsListInput,\n IssueListInput,\n IssueMilestoneSetInput,\n IssueMutationInput,\n IssueParentRemoveInput,\n IssueParentSetInput,\n IssueRelationsGetInput,\n IssueUpdateInput,\n IssueViewInput,\n PrCommentsListInput,\n PrDiffListFilesInput,\n PrListInput,\n PrReviewsListInput,\n PrViewInput,\n RepoViewInput,\n} from \"../../../gql/client.js\"\nimport type { ResultEnvelope } from \"../../contracts/envelope.js\"\nimport { errorCodes } from \"../../errors/codes.js\"\nimport { mapErrorToCode } from \"../../errors/map-error.js\"\nimport { isRetryableErrorCode } from \"../../errors/retryability.js\"\nimport { normalizeError, normalizeResult } from \"../normalizer.js\"\n\nexport type GraphqlCapabilityId =\n | \"repo.view\"\n | \"issue.view\"\n | \"issue.list\"\n | \"issue.comments.list\"\n | \"issue.create\"\n | \"issue.update\"\n | \"issue.close\"\n | \"issue.reopen\"\n | \"issue.delete\"\n | \"issue.labels.update\"\n | \"issue.assignees.update\"\n | \"issue.milestone.set\"\n | \"issue.comments.create\"\n | \"issue.linked_prs.list\"\n | \"issue.relations.get\"\n | \"issue.parent.set\"\n | \"issue.parent.remove\"\n | \"issue.blocked_by.add\"\n | \"issue.blocked_by.remove\"\n | \"pr.view\"\n | \"pr.list\"\n | \"pr.comments.list\"\n | \"pr.reviews.list\"\n | \"pr.diff.list_files\"\n | \"pr.comment.reply\"\n | \"pr.comment.resolve\"\n | \"pr.comment.unresolve\"\n | \"project_v2.org.get\"\n | \"project_v2.user.get\"\n | \"project_v2.fields.list\"\n | \"project_v2.items.list\"\n | \"project_v2.item.add_issue\"\n | \"project_v2.item.field.update\"\n | \"repo.issue_types.list\"\n\nconst DEFAULT_LIST_FIRST = 30\n\nfunction unsupportedGraphqlCapability(capabilityId: string): ResultEnvelope {\n return normalizeError(\n {\n code: errorCodes.AdapterUnsupported,\n message: `Unsupported GraphQL capability: ${capabilityId}`,\n retryable: false,\n },\n \"graphql\",\n { capabilityId, reason: \"CAPABILITY_LIMIT\" },\n )\n}\n\nfunction withDefaultFirst(params: Record<string, unknown>): Record<string, unknown> {\n if (params.first === undefined) {\n return {\n ...params,\n first: DEFAULT_LIST_FIRST,\n }\n }\n\n return params\n}\n\nfunction requireNonEmptyString(\n params: Record<string, unknown>,\n field: string,\n capabilityId: GraphqlCapabilityId,\n): string {\n const value = params[field]\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new Error(`Missing or invalid ${field} for ${capabilityId}`)\n }\n\n return value\n}\n\nexport async function runGraphqlCapability(\n client: Pick<\n GithubClient,\n | \"fetchRepoView\"\n | \"fetchIssueView\"\n | \"fetchIssueList\"\n | \"fetchIssueCommentsList\"\n | \"fetchPrView\"\n | \"fetchPrList\"\n | \"fetchPrCommentsList\"\n | \"fetchPrReviewsList\"\n | \"fetchPrDiffListFiles\"\n | \"replyToReviewThread\"\n | \"resolveReviewThread\"\n | \"unresolveReviewThread\"\n > &\n Partial<\n Pick<\n GithubClient,\n | \"createIssue\"\n | \"updateIssue\"\n | \"closeIssue\"\n | \"reopenIssue\"\n | \"deleteIssue\"\n | \"updateIssueLabels\"\n | \"updateIssueAssignees\"\n | \"setIssueMilestone\"\n | \"createIssueComment\"\n | \"fetchIssueLinkedPrs\"\n | \"fetchIssueRelations\"\n | \"setIssueParent\"\n | \"removeIssueParent\"\n | \"addIssueBlockedBy\"\n | \"removeIssueBlockedBy\"\n >\n >,\n capabilityId: GraphqlCapabilityId,\n params: Record<string, unknown>,\n): Promise<ResultEnvelope> {\n try {\n if (capabilityId === \"repo.view\") {\n const data = await client.fetchRepoView(params as RepoViewInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.view\") {\n const data = await client.fetchIssueView(params as IssueViewInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.list\") {\n const data = await client.fetchIssueList(withDefaultFirst(params) as IssueListInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.comments.list\") {\n const data = await client.fetchIssueCommentsList(params as IssueCommentsListInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.create\") {\n if (!client.createIssue) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.createIssue(params as IssueCreateInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.update\") {\n if (!client.updateIssue) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.updateIssue(params as IssueUpdateInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.close\") {\n if (!client.closeIssue) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.closeIssue(params as IssueMutationInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.reopen\") {\n if (!client.reopenIssue) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.reopenIssue(params as IssueMutationInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.delete\") {\n if (!client.deleteIssue) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.deleteIssue(params as IssueMutationInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.labels.update\") {\n if (!client.updateIssueLabels) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.updateIssueLabels(params as IssueLabelsUpdateInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.assignees.update\") {\n if (!client.updateIssueAssignees) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.updateIssueAssignees(params as IssueAssigneesUpdateInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.milestone.set\") {\n if (!client.setIssueMilestone) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.setIssueMilestone(params as IssueMilestoneSetInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.comments.create\") {\n if (!client.createIssueComment) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.createIssueComment(params as IssueCommentCreateInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.linked_prs.list\") {\n if (!client.fetchIssueLinkedPrs) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.fetchIssueLinkedPrs(params as IssueLinkedPrsListInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.relations.get\") {\n if (!client.fetchIssueRelations) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.fetchIssueRelations(params as IssueRelationsGetInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.parent.set\") {\n if (!client.setIssueParent) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.setIssueParent(params as IssueParentSetInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.parent.remove\") {\n if (!client.removeIssueParent) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.removeIssueParent(params as IssueParentRemoveInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.blocked_by.add\") {\n if (!client.addIssueBlockedBy) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.addIssueBlockedBy(params as IssueBlockedByInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"issue.blocked_by.remove\") {\n if (!client.removeIssueBlockedBy) {\n return unsupportedGraphqlCapability(capabilityId)\n }\n const data = await client.removeIssueBlockedBy(params as IssueBlockedByInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.view\") {\n const data = await client.fetchPrView(params as PrViewInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.list\") {\n const data = await client.fetchPrList(withDefaultFirst(params) as PrListInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.comments.list\") {\n const data = await client.fetchPrCommentsList(withDefaultFirst(params) as PrCommentsListInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.reviews.list\") {\n const data = await client.fetchPrReviewsList(withDefaultFirst(params) as PrReviewsListInput)\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.diff.list_files\") {\n const data = await client.fetchPrDiffListFiles(\n withDefaultFirst(params) as PrDiffListFilesInput,\n )\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.comment.reply\") {\n const threadId = requireNonEmptyString(params, \"threadId\", capabilityId)\n const body = requireNonEmptyString(params, \"body\", capabilityId)\n const data = await client.replyToReviewThread({ threadId, body })\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.comment.resolve\") {\n const threadId = requireNonEmptyString(params, \"threadId\", capabilityId)\n const data = await client.resolveReviewThread({ threadId })\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n if (capabilityId === \"pr.comment.unresolve\") {\n const threadId = requireNonEmptyString(params, \"threadId\", capabilityId)\n const data = await client.unresolveReviewThread({ threadId })\n return normalizeResult(data, \"graphql\", { capabilityId, reason: \"CARD_PREFERRED\" })\n }\n\n return unsupportedGraphqlCapability(capabilityId)\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"graphql\",\n { capabilityId, reason: \"CARD_PREFERRED\" },\n )\n }\n}\n","import type { RouteSource } from \"../contracts/envelope.js\"\nimport type { ErrorCode } from \"../errors/codes.js\"\nimport { errorCodes } from \"../errors/codes.js\"\n\nexport type PreflightInput = {\n route: RouteSource\n githubToken?: string | null\n ghCliAvailable?: boolean\n ghAuthenticated?: boolean\n}\n\nexport type PreflightResult =\n | { ok: true }\n | {\n ok: false\n code: ErrorCode\n message: string\n retryable: boolean\n details: { route: RouteSource }\n }\n\nexport function preflightCheck(input: PreflightInput): PreflightResult {\n if (input.route === \"rest\") {\n return {\n ok: false,\n code: errorCodes.AdapterUnsupported,\n message: \"REST route is planned but not implemented in v1\",\n retryable: false,\n details: { route: input.route },\n }\n }\n\n if (input.route === \"cli\" && input.ghCliAvailable === false) {\n return {\n ok: false,\n code: errorCodes.Validation,\n message: \"GitHub CLI is required for cli route\",\n retryable: false,\n details: { route: input.route },\n }\n }\n\n if (input.route === \"cli\" && input.ghAuthenticated === false) {\n return {\n ok: false,\n code: errorCodes.Auth,\n message: \"GitHub CLI authentication is required for cli route\",\n retryable: false,\n details: { route: input.route },\n }\n }\n\n if (input.route === \"graphql\") {\n const token = input.githubToken?.trim()\n if (!token) {\n return {\n ok: false,\n code: errorCodes.Auth,\n message: \"GitHub token is required for graphql route\",\n retryable: false,\n details: { route: input.route },\n }\n }\n }\n\n return { ok: true }\n}\n","export const routePreferenceOrder = [\"cli\", \"graphql\"] as const\n","import type { GithubClient } from \"../../gql/client.js\"\nimport type { ResultEnvelope, RouteSource } from \"../contracts/envelope.js\"\nimport type { TaskRequest } from \"../contracts/task.js\"\nimport { errorCodes } from \"../errors/codes.js\"\nimport { execute } from \"../execute/execute.js\"\nimport {\n type CliCapabilityId,\n type CliCommandRunner,\n runCliCapability,\n} from \"../execution/adapters/cli-capability-adapter.js\"\nimport {\n type GraphqlCapabilityId,\n runGraphqlCapability,\n} from \"../execution/adapters/graphql-capability-adapter.js\"\nimport { createSafeCliCommandRunner } from \"../execution/cli/safe-runner.js\"\nimport { normalizeError } from \"../execution/normalizer.js\"\nimport { preflightCheck } from \"../execution/preflight.js\"\nimport { getOperationCard } from \"../registry/index.js\"\nimport { routePreferenceOrder } from \"./policy.js\"\nimport type { RouteReasonCode } from \"./reason-codes.js\"\n\nexport function chooseRoute(): (typeof routePreferenceOrder)[number] {\n return routePreferenceOrder[0]\n}\n\ntype ExecutionDeps = {\n githubClient: Pick<\n GithubClient,\n | \"fetchRepoView\"\n | \"fetchIssueCommentsList\"\n | \"fetchIssueList\"\n | \"fetchIssueView\"\n | \"fetchPrList\"\n | \"fetchPrView\"\n | \"fetchPrCommentsList\"\n | \"fetchPrReviewsList\"\n | \"fetchPrDiffListFiles\"\n | \"replyToReviewThread\"\n | \"resolveReviewThread\"\n | \"unresolveReviewThread\"\n >\n githubToken?: string | null\n cliRunner?: CliCommandRunner\n ghCliAvailable?: boolean\n ghAuthenticated?: boolean\n skipGhPreflight?: boolean\n reason?: RouteReasonCode\n}\n\nconst DEFAULT_REASON: RouteReasonCode = \"DEFAULT_POLICY\"\n\ntype CliEnvironmentState = {\n ghCliAvailable: boolean\n ghAuthenticated: boolean\n}\n\nconst CLI_ENV_CACHE_TTL_MS = 30_000\nconst cliEnvironmentCache = new WeakMap<\n CliCommandRunner,\n { value: CliEnvironmentState; expiresAt: number }\n>()\nconst cliEnvironmentInFlight = new WeakMap<CliCommandRunner, Promise<CliEnvironmentState>>()\nconst defaultCliRunner = createSafeCliCommandRunner()\nasync function detectCliEnvironment(runner: CliCommandRunner): Promise<CliEnvironmentState> {\n try {\n const version = await runner.run(\"gh\", [\"--version\"], 1_500)\n if (version.exitCode !== 0) {\n return {\n ghCliAvailable: false,\n ghAuthenticated: false,\n }\n }\n\n const auth = await runner.run(\"gh\", [\"auth\", \"status\"], 2_500)\n return {\n ghCliAvailable: true,\n ghAuthenticated: auth.exitCode === 0,\n }\n } catch {\n return {\n ghCliAvailable: false,\n ghAuthenticated: false,\n }\n }\n}\n\nasync function detectCliEnvironmentCached(runner: CliCommandRunner): Promise<CliEnvironmentState> {\n const now = Date.now()\n const cached = cliEnvironmentCache.get(runner)\n if (cached && cached.expiresAt > now) {\n return cached.value\n }\n\n const inFlight = cliEnvironmentInFlight.get(runner)\n if (inFlight) {\n return inFlight\n }\n\n const probePromise = detectCliEnvironment(runner)\n .then((value) => {\n cliEnvironmentCache.set(runner, {\n value,\n expiresAt: Date.now() + CLI_ENV_CACHE_TTL_MS,\n })\n cliEnvironmentInFlight.delete(runner)\n return value\n })\n .catch((error) => {\n cliEnvironmentInFlight.delete(runner)\n throw error\n })\n\n cliEnvironmentInFlight.set(runner, probePromise)\n return probePromise\n}\n\nexport async function executeTask(\n request: TaskRequest,\n deps: ExecutionDeps,\n): Promise<ResultEnvelope> {\n const reason = deps.reason ?? DEFAULT_REASON\n const card = getOperationCard(request.task)\n if (!card) {\n return normalizeError(\n {\n code: errorCodes.Validation,\n message: `Unsupported task: ${request.task}`,\n retryable: false,\n },\n chooseRoute(),\n { capabilityId: request.task, reason },\n )\n }\n\n const cliRunner = deps.cliRunner ?? defaultCliRunner\n\n return execute({\n card,\n params: request.input as Record<string, unknown>,\n routingContext: {\n ghCliAvailable: deps.ghCliAvailable,\n ghAuthenticated: deps.ghAuthenticated,\n githubTokenPresent: Boolean(deps.githubToken),\n },\n retry: {\n maxAttemptsPerRoute: 2,\n },\n preflight: async (route: RouteSource) => {\n const preflightInput: Parameters<typeof preflightCheck>[0] = { route }\n if (deps.githubToken !== undefined) {\n preflightInput.githubToken = deps.githubToken\n }\n\n if (route === \"cli\") {\n if (deps.ghCliAvailable !== undefined) {\n preflightInput.ghCliAvailable = deps.ghCliAvailable\n }\n\n if (deps.ghAuthenticated !== undefined) {\n preflightInput.ghAuthenticated = deps.ghAuthenticated\n }\n\n if (\n preflightInput.ghCliAvailable === undefined ||\n preflightInput.ghAuthenticated === undefined\n ) {\n if (deps.skipGhPreflight === true) {\n if (preflightInput.ghCliAvailable === undefined) {\n preflightInput.ghCliAvailable = true\n }\n\n if (preflightInput.ghAuthenticated === undefined) {\n preflightInput.ghAuthenticated = true\n }\n } else {\n const detected = await detectCliEnvironmentCached(cliRunner)\n\n if (preflightInput.ghCliAvailable === undefined) {\n preflightInput.ghCliAvailable = detected.ghCliAvailable\n }\n\n if (preflightInput.ghAuthenticated === undefined) {\n preflightInput.ghAuthenticated = detected.ghAuthenticated\n }\n }\n }\n }\n\n return preflightCheck(preflightInput)\n },\n routes: {\n graphql: async () =>\n runGraphqlCapability(\n deps.githubClient,\n request.task as GraphqlCapabilityId,\n request.input as Record<string, unknown>,\n ),\n cli: async () => {\n return runCliCapability(\n cliRunner,\n request.task as CliCapabilityId,\n request.input as Record<string, unknown>,\n card,\n )\n },\n rest: async () =>\n normalizeError(\n {\n code: errorCodes.AdapterUnsupported,\n message: `Route 'rest' is not implemented for task '${request.task}'`,\n retryable: false,\n details: { route: \"rest\", task: request.task },\n },\n \"rest\",\n { capabilityId: request.task, reason },\n ),\n },\n })\n}\n","import { type DocumentNode, print } from \"graphql\"\nimport type { GraphQLClient, RequestDocument, RequestOptions } from \"graphql-request\"\nimport type {\n IssueCommentsListQuery,\n IssueCommentsListQueryVariables,\n} from \"./operations/issue-comments-list.generated.js\"\nimport { getSdk as getIssueCommentsListSdk } from \"./operations/issue-comments-list.generated.js\"\nimport type { IssueListQuery, IssueListQueryVariables } from \"./operations/issue-list.generated.js\"\nimport { getSdk as getIssueListSdk } from \"./operations/issue-list.generated.js\"\nimport type { IssueViewQuery, IssueViewQueryVariables } from \"./operations/issue-view.generated.js\"\nimport { getSdk as getIssueViewSdk } from \"./operations/issue-view.generated.js\"\nimport type {\n PrDiffListFilesQuery,\n PrDiffListFilesQueryVariables,\n} from \"./operations/pr-diff-list-files.generated.js\"\nimport { getSdk as getPrDiffListFilesSdk } from \"./operations/pr-diff-list-files.generated.js\"\nimport type { PrListQuery, PrListQueryVariables } from \"./operations/pr-list.generated.js\"\nimport { getSdk as getPrListSdk } from \"./operations/pr-list.generated.js\"\nimport type {\n PrReviewsListQuery,\n PrReviewsListQueryVariables,\n} from \"./operations/pr-reviews-list.generated.js\"\nimport { getSdk as getPrReviewsListSdk } from \"./operations/pr-reviews-list.generated.js\"\nimport type { PrViewQuery, PrViewQueryVariables } from \"./operations/pr-view.generated.js\"\nimport { getSdk as getPrViewSdk } from \"./operations/pr-view.generated.js\"\nimport type { RepoViewQuery, RepoViewQueryVariables } from \"./operations/repo-view.generated.js\"\nimport { getSdk as getRepoViewSdk } 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 (\n !Array.isArray(value) ||\n value.some((entry) => typeof entry !== \"string\" || entry.trim().length === 0)\n ) {\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 (\n input.milestoneNumber !== null &&\n (!Number.isInteger(input.milestoneNumber) || input.milestoneNumber <= 0)\n ) {\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\" &&\n documentOrOptions !== null &&\n \"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(\n sdk: SdkClients[\"issue\"],\n input: IssueViewInput,\n): 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(\n sdk: SdkClients[\"issueList\"],\n input: IssueListInput,\n): 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 (\n !issueRecord ||\n typeof issueRecord.id !== \"string\" ||\n typeof issueRecord.number !== \"number\"\n ) {\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(\n graphqlClient: GraphqlClient,\n input: IssueCreateInput,\n): Promise<IssueMutationData> {\n assertIssueCreateInput(input)\n\n const repositoryLookupResult = await graphqlClient.query<unknown, GraphqlVariables>(\n ISSUE_CREATE_REPOSITORY_ID_QUERY,\n {\n owner: input.owner,\n name: input.name,\n },\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(\n graphqlClient: GraphqlClient,\n input: IssueUpdateInput,\n): 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(\n graphqlClient: GraphqlClient,\n input: IssueMutationInput,\n): 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(\n graphqlClient: GraphqlClient,\n input: IssueMutationInput,\n): 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(\n graphqlClient: GraphqlClient,\n input: IssueMutationInput,\n): 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>(\n ISSUE_LABELS_LOOKUP_QUERY,\n {\n issueId: input.issueId,\n },\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)\n ?.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>(\n ISSUE_LABELS_UPDATE_MUTATION,\n {\n issueId: input.issueId,\n labelIds,\n },\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>(\n ISSUE_ASSIGNEES_LOOKUP_QUERY,\n {\n issueId: input.issueId,\n },\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)\n ?.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>(\n ISSUE_ASSIGNEES_UPDATE_MUTATION,\n {\n issueId: input.issueId,\n assigneeIds,\n },\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>(\n ISSUE_MILESTONE_LOOKUP_QUERY,\n {\n issueId: input.issueId,\n milestoneNumber: input.milestoneNumber,\n },\n )\n const resolvedId = asRecord(\n asRecord(asRecord(asRecord(lookupResult)?.node)?.repository)?.milestone,\n )?.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>(\n ISSUE_MILESTONE_SET_MUTATION,\n {\n issueId: input.issueId,\n milestoneId,\n },\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>(\n ISSUE_COMMENT_CREATE_MUTATION,\n {\n issueId: input.issueId,\n body: input.body,\n },\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(\n (subject): subject is Record<string, unknown> =>\n Boolean(subject) && subject?.[\"__typename\"] === \"PullRequest\",\n )\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 {\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}\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\"])\n ? blockedByConnection[\"nodes\"]\n : []\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(\n graphqlClient: GraphqlClient,\n input: IssueParentSetInput,\n): 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>(\n ISSUE_PARENT_LOOKUP_QUERY,\n {\n issueId: input.issueId,\n },\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>(\n ISSUE_PARENT_REMOVE_MUTATION,\n {\n issueId: input.issueId,\n parentIssueId,\n },\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>(\n ISSUE_BLOCKED_BY_ADD_MUTATION,\n {\n issueId: input.issueId,\n blockedByIssueId: input.blockedByIssueId,\n },\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>(\n ISSUE_BLOCKED_BY_REMOVE_MUTATION,\n {\n issueId: input.issueId,\n blockedByIssueId: input.blockedByIssueId,\n },\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 {\n id: review.id,\n authorLogin: review.author?.login ?? null,\n body: review.body,\n state: review.state,\n submittedAt: review.submittedAt ?? null,\n url: review.url,\n commitOid: review.commit?.oid ?? null,\n },\n ]\n : [],\n ),\n pageInfo: {\n endCursor: reviews.pageInfo.endCursor ?? null,\n hasNextPage: reviews.pageInfo.hasNextPage,\n },\n }\n}\n\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 {\n path: file.path,\n additions: file.additions,\n deletions: file.deletions,\n },\n ]\n : [],\n ),\n pageInfo: {\n endCursor: files.pageInfo.endCursor ?? null,\n hasNextPage: files.pageInfo.hasNextPage,\n },\n }\n}\n\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 =\n threadEdges.length > 0\n ? threadEdges\n : Array.isArray(reviewThreads.nodes)\n ? reviewThreads.nodes.map((node) => ({ cursor: null, node }))\n : []\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 =\n 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(\n result: unknown,\n mutationKey: string,\n): 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>(\n REVIEW_THREAD_STATE_QUERY,\n {\n threadId: input.threadId,\n },\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>(\n PR_COMMENT_UNRESOLVE_MUTATION,\n {\n threadId: input.threadId,\n },\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(\n tokenOrOptions: string | TokenClientOptions,\n): 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","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"../generated/common-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type IssueCommentsListQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n issueNumber: Types.Scalars[\"Int\"][\"input\"]\n first: Types.Scalars[\"Int\"][\"input\"]\n after?: Types.InputMaybe<Types.Scalars[\"String\"][\"input\"]>\n}>\n\nexport type IssueCommentsListQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n issue?: {\n __typename?: \"Issue\"\n comments: {\n __typename?: \"IssueCommentConnection\"\n nodes?: Array<{\n __typename?: \"IssueComment\"\n id: string\n body: string\n createdAt: any\n url: any\n author?:\n | { __typename?: \"Bot\"; login: string }\n | { __typename?: \"EnterpriseUserAccount\"; login: string }\n | { __typename?: \"Mannequin\"; login: string }\n | { __typename?: \"Organization\"; login: string }\n | { __typename?: \"User\"; login: string }\n | null\n } | null> | null\n pageInfo: { __typename?: \"PageInfo\"; endCursor?: string | null; hasNextPage: boolean }\n }\n } | null\n } | null\n}\n\nexport const IssueCommentsListDocument = `\n query IssueCommentsList($owner: String!, $name: String!, $issueNumber: Int!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n issue(number: $issueNumber) {\n comments(first: $first, after: $after) {\n nodes {\n id\n body\n createdAt\n url\n author {\n login\n }\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n IssueCommentsList(\n variables: IssueCommentsListQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<IssueCommentsListQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<IssueCommentsListQuery>({\n document: IssueCommentsListDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"IssueCommentsList\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"../generated/common-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type IssueListQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n first: Types.Scalars[\"Int\"][\"input\"]\n after?: Types.InputMaybe<Types.Scalars[\"String\"][\"input\"]>\n}>\n\nexport type IssueListQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n issues: {\n __typename?: \"IssueConnection\"\n nodes?: Array<{\n __typename?: \"Issue\"\n id: string\n number: number\n title: string\n state: Types.IssueState\n url: any\n } | null> | null\n pageInfo: { __typename?: \"PageInfo\"; endCursor?: string | null; hasNextPage: boolean }\n }\n } | null\n}\n\nexport const IssueListDocument = `\n query IssueList($owner: String!, $name: String!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n issues(\n first: $first\n after: $after\n orderBy: {field: CREATED_AT, direction: DESC}\n ) {\n nodes {\n id\n number\n title\n state\n url\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n IssueList(\n variables: IssueListQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<IssueListQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<IssueListQuery>({\n document: IssueListDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"IssueList\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"../generated/common-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type IssueViewQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n issueNumber: Types.Scalars[\"Int\"][\"input\"]\n}>\n\nexport type IssueViewQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n issue?: {\n __typename?: \"Issue\"\n id: string\n number: number\n title: string\n state: Types.IssueState\n url: any\n } | null\n } | null\n}\n\nexport const IssueViewDocument = `\n query IssueView($owner: String!, $name: String!, $issueNumber: Int!) {\n repository(owner: $owner, name: $name) {\n issue(number: $issueNumber) {\n id\n number\n title\n state\n url\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n IssueView(\n variables: IssueViewQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<IssueViewQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<IssueViewQuery>({\n document: IssueViewDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"IssueView\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"../generated/common-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type PrDiffListFilesQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n prNumber: Types.Scalars[\"Int\"][\"input\"]\n first: Types.Scalars[\"Int\"][\"input\"]\n after?: Types.InputMaybe<Types.Scalars[\"String\"][\"input\"]>\n}>\n\nexport type PrDiffListFilesQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n pullRequest?: {\n __typename?: \"PullRequest\"\n files?: {\n __typename?: \"PullRequestChangedFileConnection\"\n nodes?: Array<{\n __typename?: \"PullRequestChangedFile\"\n path: string\n additions: number\n deletions: number\n } | null> | null\n pageInfo: { __typename?: \"PageInfo\"; hasNextPage: boolean; endCursor?: string | null }\n } | null\n } | null\n } | null\n}\n\nexport const PrDiffListFilesDocument = `\n query PrDiffListFiles($owner: String!, $name: String!, $prNumber: Int!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n pullRequest(number: $prNumber) {\n files(first: $first, after: $after) {\n nodes {\n path\n additions\n deletions\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n PrDiffListFiles(\n variables: PrDiffListFilesQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<PrDiffListFilesQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<PrDiffListFilesQuery>({\n document: PrDiffListFilesDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"PrDiffListFiles\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"../generated/common-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type PrListQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n first: Types.Scalars[\"Int\"][\"input\"]\n after?: Types.InputMaybe<Types.Scalars[\"String\"][\"input\"]>\n}>\n\nexport type PrListQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n pullRequests: {\n __typename?: \"PullRequestConnection\"\n nodes?: Array<{\n __typename?: \"PullRequest\"\n id: string\n number: number\n title: string\n state: Types.PullRequestState\n url: any\n } | null> | null\n pageInfo: { __typename?: \"PageInfo\"; endCursor?: string | null; hasNextPage: boolean }\n }\n } | null\n}\n\nexport const PrListDocument = `\n query PrList($owner: String!, $name: String!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n pullRequests(\n first: $first\n after: $after\n orderBy: {field: CREATED_AT, direction: DESC}\n ) {\n nodes {\n id\n number\n title\n state\n url\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n PrList(\n variables: PrListQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<PrListQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<PrListQuery>({\n document: PrListDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"PrList\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"../generated/common-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type PrReviewsListQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n prNumber: Types.Scalars[\"Int\"][\"input\"]\n first: Types.Scalars[\"Int\"][\"input\"]\n after?: Types.InputMaybe<Types.Scalars[\"String\"][\"input\"]>\n}>\n\nexport type PrReviewsListQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n pullRequest?: {\n __typename?: \"PullRequest\"\n reviews?: {\n __typename?: \"PullRequestReviewConnection\"\n nodes?: Array<{\n __typename?: \"PullRequestReview\"\n id: string\n body: string\n state: Types.PullRequestReviewState\n submittedAt?: any | null\n url: any\n author?:\n | { __typename?: \"Bot\"; login: string }\n | { __typename?: \"EnterpriseUserAccount\"; login: string }\n | { __typename?: \"Mannequin\"; login: string }\n | { __typename?: \"Organization\"; login: string }\n | { __typename?: \"User\"; login: string }\n | null\n commit?: { __typename?: \"Commit\"; oid: any } | null\n } | null> | null\n pageInfo: { __typename?: \"PageInfo\"; hasNextPage: boolean; endCursor?: string | null }\n } | null\n } | null\n } | null\n}\n\nexport const PrReviewsListDocument = `\n query PrReviewsList($owner: String!, $name: String!, $prNumber: Int!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n pullRequest(number: $prNumber) {\n reviews(first: $first, after: $after) {\n nodes {\n id\n author {\n login\n }\n body\n state\n submittedAt\n url\n commit {\n oid\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n PrReviewsList(\n variables: PrReviewsListQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<PrReviewsListQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<PrReviewsListQuery>({\n document: PrReviewsListDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"PrReviewsList\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"../generated/common-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type PrViewQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n prNumber: Types.Scalars[\"Int\"][\"input\"]\n}>\n\nexport type PrViewQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n pullRequest?: {\n __typename?: \"PullRequest\"\n id: string\n number: number\n title: string\n state: Types.PullRequestState\n url: any\n } | null\n } | null\n}\n\nexport const PrViewDocument = `\n query PrView($owner: String!, $name: String!, $prNumber: Int!) {\n repository(owner: $owner, name: $name) {\n pullRequest(number: $prNumber) {\n id\n number\n title\n state\n url\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n PrView(\n variables: PrViewQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<PrViewQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<PrViewQuery>({\n document: PrViewDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"PrView\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"../generated/common-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type RepoViewQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n}>\n\nexport type RepoViewQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n id: string\n name: string\n nameWithOwner: string\n isPrivate: boolean\n stargazerCount: number\n forkCount: number\n url: any\n defaultBranchRef?: { __typename?: \"Ref\"; name: string } | null\n } | null\n}\n\nexport const RepoViewDocument = `\n query RepoView($owner: String!, $name: String!) {\n repository(owner: $owner, name: $name) {\n id\n name\n nameWithOwner\n isPrivate\n stargazerCount\n forkCount\n url\n defaultBranchRef {\n name\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n RepoView(\n variables: RepoViewQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<RepoViewQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<RepoViewQuery>({\n document: RepoViewDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"RepoView\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n"],"mappings":"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","names":["envelope","body","owner","args","result","normalized","DEFAULT_LIST_FIRST","defaultWrapper","getSdk","defaultWrapper","getSdk","defaultWrapper","getSdk","defaultWrapper","getSdk","defaultWrapper","getSdk","defaultWrapper","getSdk","defaultWrapper","getSdk","getSdk"]}