diffing 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/README.md +52 -18
  2. package/dist/{cli-agent-D71pq2ep.mjs → cli-agent-CLrK54k2.mjs} +2 -2
  3. package/dist/{cli-gh-D5OCnjNe.mjs → cli-gh-8YC1NzyM.mjs} +6 -1
  4. package/dist/cli.mjs +3 -3
  5. package/dist/client/assets/{angular-html-Dh86jUvr.js → angular-html-DdAR2u-k.js} +1 -1
  6. package/dist/client/assets/{angular-ts-Bh4wRJtT.js → angular-ts-Dz_vWKSu.js} +1 -1
  7. package/dist/client/assets/{apl-BSXBHduT.js → apl-BJ5QXrIk.js} +1 -1
  8. package/dist/client/assets/{arc-CRQlhBrV.js → arc-D9erSW6x.js} +1 -1
  9. package/dist/client/assets/{architectureDiagram-3BPJPVTR-BXq3UvEv.js → architectureDiagram-3BPJPVTR-CCQWZLXR.js} +1 -1
  10. package/dist/client/assets/{astro-Bh00klUw.js → astro-BQAej5a5.js} +1 -1
  11. package/dist/client/assets/{blade-CisA3zhm.js → blade-DkAmuwDx.js} +1 -1
  12. package/dist/client/assets/{blockDiagram-GPEHLZMM-Bw-PTAJr.js → blockDiagram-GPEHLZMM-vwjxNybI.js} +1 -1
  13. package/dist/client/assets/{c-D-pHVWrf.js → c-DG5p-ChJ.js} +1 -1
  14. package/dist/client/assets/{c4Diagram-AAUBKEIU-C0XyiqC_.js → c4Diagram-AAUBKEIU-DJ_hVlh4.js} +1 -1
  15. package/dist/client/assets/channel-DmZgR6r0.js +1 -0
  16. package/dist/client/assets/{chunk-2J33WTMH-DekjZXNj.js → chunk-2J33WTMH-CiLowxCo.js} +1 -1
  17. package/dist/client/assets/{chunk-3OPIFGDE-BtROpcL8.js → chunk-3OPIFGDE-H3jjMR5Y.js} +1 -1
  18. package/dist/client/assets/{chunk-4BX2VUAB-C92XLTlx.js → chunk-4BX2VUAB-Dk0dk4n5.js} +1 -1
  19. package/dist/client/assets/{chunk-55IACEB6-CceUgh8N.js → chunk-55IACEB6-nbLiUMJS.js} +1 -1
  20. package/dist/client/assets/{chunk-5ZQYHXKU-DSbYPAe7.js → chunk-5ZQYHXKU-DZ8RgHg8.js} +1 -1
  21. package/dist/client/assets/{chunk-727SXJPM-DVzUJa-9.js → chunk-727SXJPM-DDe5dqJV.js} +1 -1
  22. package/dist/client/assets/{chunk-AQP2D5EJ-6n3Z_IFa.js → chunk-AQP2D5EJ-DmpNclOr.js} +1 -1
  23. package/dist/client/assets/{chunk-BSJP7CBP-BgVLnkxr.js → chunk-BSJP7CBP-BKQKvtIj.js} +1 -1
  24. package/dist/client/assets/{chunk-CSCIHK7Q-CkGMXntp.js → chunk-CSCIHK7Q-D27t4cyv.js} +1 -1
  25. package/dist/client/assets/{chunk-FMBD7UC4-BM8lrLBo.js → chunk-FMBD7UC4-Bu3LA663.js} +1 -1
  26. package/dist/client/assets/{chunk-KSCS5N6A-Bm2pjMQg.js → chunk-KSCS5N6A-Ed5HNXRW.js} +1 -1
  27. package/dist/client/assets/{chunk-L5ZTLDWV-VL17ikXM.js → chunk-L5ZTLDWV-DLjJZgf8.js} +1 -1
  28. package/dist/client/assets/{chunk-LZXEDZCA-B629g67M.js → chunk-LZXEDZCA-B-cs89SM.js} +2 -2
  29. package/dist/client/assets/{chunk-ND2GUHAM-CjZGwhKA.js → chunk-ND2GUHAM-D_kPSuUA.js} +1 -1
  30. package/dist/client/assets/{chunk-NZK2D7GU-DGsLjESY.js → chunk-NZK2D7GU-D1u3pjq-.js} +1 -1
  31. package/dist/client/assets/{chunk-O5CBEL6O-EyUrGY3l.js → chunk-O5CBEL6O-Mt0cnPSf.js} +1 -1
  32. package/dist/client/assets/chunk-QZHKN3VN-BrYnBs7h.js +1 -0
  33. package/dist/client/assets/chunk-WU5MYG2G-CdBcsQs_.js +1 -0
  34. package/dist/client/assets/{chunk-XPW4576I-C2TeAQmQ.js → chunk-XPW4576I-Bt8a8x28.js} +1 -1
  35. package/dist/client/assets/classDiagram-4FO5ZUOK-CCpp3t5M.js +1 -0
  36. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-B1aV1sYb.js +1 -0
  37. package/dist/client/assets/{cobol-DsRZMP16.js → cobol-Daidj_5Y.js} +1 -1
  38. package/dist/client/assets/{coffee-DP0-MMsE.js → coffee-DUMdB2Cr.js} +1 -1
  39. package/dist/client/assets/{cose-bilkent-S5V4N54A-DMmK0b0W.js → cose-bilkent-S5V4N54A-DVUDLXie.js} +1 -1
  40. package/dist/client/assets/{cpp-B6XYbbze.js → cpp-C2FeX1Mc.js} +1 -1
  41. package/dist/client/assets/{crystal-dBLPFLMp.js → crystal-D4yb9blJ.js} +1 -1
  42. package/dist/client/assets/{css-tgwuSZL0.js → css-B5cr0U9F.js} +1 -1
  43. package/dist/client/assets/{dagre-BM42HDAG-CgNkf0TR.js → dagre-BM42HDAG-DdZWb-Ee.js} +1 -1
  44. package/dist/client/assets/{diagram-2AECGRRQ-ocAqn0LV.js → diagram-2AECGRRQ-C9DOZt92.js} +1 -1
  45. package/dist/client/assets/{diagram-5GNKFQAL-CB1Yo4Gc.js → diagram-5GNKFQAL-Bbc07UKr.js} +1 -1
  46. package/dist/client/assets/{diagram-KO2AKTUF-B2vpMBRT.js → diagram-KO2AKTUF-C-lUzY3m.js} +1 -1
  47. package/dist/client/assets/{diagram-LMA3HP47-DuxZOaQS.js → diagram-LMA3HP47-D-OjEFhp.js} +1 -1
  48. package/dist/client/assets/{diagram-OG6HWLK6-CkShDmcv.js → diagram-OG6HWLK6-BjtWGvrf.js} +1 -1
  49. package/dist/client/assets/{dist-BgZIvk5w.js → dist-BXZygPdX.js} +1 -1
  50. package/dist/client/assets/{edge-Bokubn8E.js → edge-RCQWcWNp.js} +1 -1
  51. package/dist/client/assets/{elixir-BEzcf3Xg.js → elixir-DwKyVg2X.js} +1 -1
  52. package/dist/client/assets/{elm-vJyLTAER.js → elm-DjR33IVs.js} +1 -1
  53. package/dist/client/assets/{erDiagram-TEJ5UH35-BFV1NQAH.js → erDiagram-TEJ5UH35-C5T4ywLG.js} +1 -1
  54. package/dist/client/assets/{erb-DDkAmjBS.js → erb-BnhUH1Hk.js} +1 -1
  55. package/dist/client/assets/{flowDiagram-I6XJVG4X-DU8xbFdO.js → flowDiagram-I6XJVG4X-BJmjm7Kx.js} +1 -1
  56. package/dist/client/assets/{ganttDiagram-6RSMTGT7-DCb7Qh0c.js → ganttDiagram-6RSMTGT7-DREPnzu5.js} +1 -1
  57. package/dist/client/assets/{git-rebase-DWcifAdK.js → git-rebase-DzXoSDXA.js} +1 -1
  58. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-C_Tw-piE.js → gitGraphDiagram-PVQCEYII-DIR4G_-_.js} +1 -1
  59. package/dist/client/assets/{glimmer-js--HDru5ys.js → glimmer-js-HKnZpCn_.js} +1 -1
  60. package/dist/client/assets/{glimmer-ts-DAdXisHh.js → glimmer-ts-DedV7rWs.js} +1 -1
  61. package/dist/client/assets/{glsl-CmIRlJht.js → glsl-Bz-0Alp2.js} +1 -1
  62. package/dist/client/assets/{graphql-tx4-7I3U.js → graphql-DSKkDYCD.js} +1 -1
  63. package/dist/client/assets/{hack-yA0XjhF7.js → hack-CnaHZm8k.js} +1 -1
  64. package/dist/client/assets/{haml-BR5MUE1b.js → haml-huGFYKlj.js} +1 -1
  65. package/dist/client/assets/{handlebars-BPOF7iOf.js → handlebars-CKmgzfWY.js} +1 -1
  66. package/dist/client/assets/{html-BbteRk96.js → html-B9Ih_dUU.js} +1 -1
  67. package/dist/client/assets/{html-derivative-59NNrcMm.js → html-derivative-YabD-M5d.js} +1 -1
  68. package/dist/client/assets/{http-D3odGQI4.js → http-Bdu12JYX.js} +1 -1
  69. package/dist/client/assets/{hurl-BLTj8fPj.js → hurl-twZzDTNs.js} +1 -1
  70. package/dist/client/assets/{index-DHXpO7eS.js → index-BktdZRWB.js} +122 -118
  71. package/dist/client/assets/{index-BZcKS8Sb.css → index-YlwaPTSG.css} +1 -1
  72. package/dist/client/assets/{infoDiagram-5YYISTIA-CI6hJyRl.js → infoDiagram-5YYISTIA-D2ty2R-i.js} +1 -1
  73. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-gMS1P1LQ.js → ishikawaDiagram-YF4QCWOH-Ccnc9xlE.js} +1 -1
  74. package/dist/client/assets/{java-CsViuzs_.js → java-_5trO-p9.js} +1 -1
  75. package/dist/client/assets/{javascript-DQgsl2Dh.js → javascript-BOQn0ikE.js} +1 -1
  76. package/dist/client/assets/{jinja-DQNp2NUA.js → jinja-BgY-0IBz.js} +1 -1
  77. package/dist/client/assets/{jison-CDDOZQdc.js → jison-BLNTmT1_.js} +1 -1
  78. package/dist/client/assets/{journeyDiagram-JHISSGLW-BTQ_Ws_h.js → journeyDiagram-JHISSGLW-W7eWXlw0.js} +1 -1
  79. package/dist/client/assets/{json-DP4TqCuE.js → json-BLbH8rZf.js} +1 -1
  80. package/dist/client/assets/{jsx-Df5hn0Tf.js → jsx-CxteptsJ.js} +1 -1
  81. package/dist/client/assets/{julia--u33yGLi.js → julia-B__Ncp_z.js} +1 -1
  82. package/dist/client/assets/{just-BCpMmSOD.js → just-DBsHUGW1.js} +1 -1
  83. package/dist/client/assets/{kanban-definition-UN3LZRKU-CvqGbLR_.js → kanban-definition-UN3LZRKU-Z_AFL-rd.js} +1 -1
  84. package/dist/client/assets/{latex-D8D4jZGw.js → latex-DFF_0wxo.js} +1 -1
  85. package/dist/client/assets/{line-DBgaS_RW.js → line-aAv8TyOs.js} +1 -1
  86. package/dist/client/assets/{linear-RQVzKNVU.js → linear-BOvEZKH8.js} +1 -1
  87. package/dist/client/assets/{liquid-CkH85f12.js → liquid-kDWCO6d7.js} +1 -1
  88. package/dist/client/assets/{lua-iKoV7WE3.js → lua-CYTFayq-.js} +1 -1
  89. package/dist/client/assets/{marko-N8ScQSqT.js → marko-Dpmz3Pdx.js} +1 -1
  90. package/dist/client/assets/{mdc-BvHTOxsp.js → mdc-BsxHyM1i.js} +1 -1
  91. package/dist/client/assets/{mermaid-parser.core-CwDRwMR7.js → mermaid-parser.core-D8z_CWL1.js} +1 -1
  92. package/dist/client/assets/{mermaid.core-D2LDJgXO.js → mermaid.core-DNKchnly.js} +3 -3
  93. package/dist/client/assets/{mindmap-definition-RKZ34NQL-FRnPh642.js → mindmap-definition-RKZ34NQL-xQKMV4Kw.js} +1 -1
  94. package/dist/client/assets/{nginx-DGgvASuI.js → nginx-CcdTDme-.js} +1 -1
  95. package/dist/client/assets/{nim-D-v9hzvR.js → nim-B5wWDskL.js} +1 -1
  96. package/dist/client/assets/{perl-CG8leJ8K.js → perl-Ce2_iKLz.js} +1 -1
  97. package/dist/client/assets/{php-DvkeSP10.js → php-DuLCFERd.js} +1 -1
  98. package/dist/client/assets/{pieDiagram-4H26LBE5-CepOg38Y.js → pieDiagram-4H26LBE5-CBSCJnUr.js} +1 -1
  99. package/dist/client/assets/{pug-B4T7-xaL.js → pug-BfQJoQj1.js} +1 -1
  100. package/dist/client/assets/{qml-BE6D5Bxn.js → qml-DYeovlVl.js} +1 -1
  101. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DOFAsP60.js → quadrantDiagram-W4KKPZXB-uEcgb0Rm.js} +1 -1
  102. package/dist/client/assets/{r-BKZg9Mcq.js → r-DgHSP56L.js} +1 -1
  103. package/dist/client/assets/{razor-D-02oaxL.js → razor-B00x7W-i.js} +1 -1
  104. package/dist/client/assets/{regexp-BDFvAR1k.js → regexp-CmWVupmd.js} +1 -1
  105. package/dist/client/assets/{requirementDiagram-4Y6WPE33-BBVNH-2W.js → requirementDiagram-4Y6WPE33-Q4yY_ALe.js} +1 -1
  106. package/dist/client/assets/{review-export-D5iIl46_.js → review-export-pcqDKNqx.js} +1 -1
  107. package/dist/client/assets/{rst-BcT26OSj.js → rst-B3VARbTX.js} +1 -1
  108. package/dist/client/assets/{ruby-Cq_YQvFT.js → ruby-CaxKSSbT.js} +1 -1
  109. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BQfCTbBX.js → sankeyDiagram-5OEKKPKP-B-GLzFGa.js} +1 -1
  110. package/dist/client/assets/{sas-DN9oTxKY.js → sas-Ue0rHUIk.js} +1 -1
  111. package/dist/client/assets/{scss-BK_sp3z2.js → scss-BJJ7_L6c.js} +1 -1
  112. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-CKAW2eyx.js → sequenceDiagram-3UESZ5HK-DW0em0D_.js} +1 -1
  113. package/dist/client/assets/{shellscript-CvNpOu0J.js → shellscript-C6LkZs1u.js} +1 -1
  114. package/dist/client/assets/{shellsession-8-yj2cJj.js → shellsession-CkZu1e84.js} +1 -1
  115. package/dist/client/assets/{soy-C6Q9atPF.js → soy-CDaZV57J.js} +1 -1
  116. package/dist/client/assets/{sql-CBL3BuHb.js → sql-CLfMGH4x.js} +1 -1
  117. package/dist/client/assets/{src-D-VUWIK5.js → src-C27zxuNO.js} +1 -1
  118. package/dist/client/assets/{stata-B2Q7Vqzu.js → stata-B0kNMHc9.js} +1 -1
  119. package/dist/client/assets/{stateDiagram-AJRCARHV-BGJiv0qO.js → stateDiagram-AJRCARHV-CrO_D3m4.js} +1 -1
  120. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-C9KDGD7R.js +1 -0
  121. package/dist/client/assets/{surrealql-C-A2N8vk.js → surrealql-D9os_yZO.js} +1 -1
  122. package/dist/client/assets/{svelte-VAut_-uy.js → svelte-2SxVToeO.js} +1 -1
  123. package/dist/client/assets/{templ-mUetM--K.js → templ-DzmZB67T.js} +1 -1
  124. package/dist/client/assets/{tex-BT53mWGp.js → tex-BMPk3nHk.js} +1 -1
  125. package/dist/client/assets/{timeline-definition-PNZ67QCA-lVwMt1rk.js → timeline-definition-PNZ67QCA-C9FBevHv.js} +1 -1
  126. package/dist/client/assets/{ts-tags-VkIOkgLN.js → ts-tags-CG14Bplc.js} +1 -1
  127. package/dist/client/assets/{tsx-D_aaGHTf.js → tsx-D6NK461A.js} +1 -1
  128. package/dist/client/assets/{twig-CufwqKkk.js → twig-Agh0j5sD.js} +1 -1
  129. package/dist/client/assets/{typescript-osFD2CEV.js → typescript-_AkeziZ2.js} +1 -1
  130. package/dist/client/assets/{vennDiagram-CIIHVFJN-_K9NtpA5.js → vennDiagram-CIIHVFJN-2H9HfhhR.js} +1 -1
  131. package/dist/client/assets/{vue-Bub1rXmL.js → vue-C1z3QGG9.js} +1 -1
  132. package/dist/client/assets/{vue-html-CN3x2pYg.js → vue-html-C1RMzLZk.js} +1 -1
  133. package/dist/client/assets/{vue-vine-C0csYkGm.js → vue-vine-oOixA6ge.js} +1 -1
  134. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-B2jTMfra.js → wardleyDiagram-YWT4CUSO-BJxrQhTf.js} +1 -1
  135. package/dist/client/assets/{xml-my6OjeGb.js → xml-okuDZ7vq.js} +1 -1
  136. package/dist/client/assets/{xsl-Bx0YVn26.js → xsl-S_n3XrKb.js} +1 -1
  137. package/dist/client/assets/{xychartDiagram-2RQKCTM6-DfZ4YYXU.js → xychartDiagram-2RQKCTM6-BGdee7KG.js} +1 -1
  138. package/dist/client/assets/{yaml-DanwOypk.js → yaml-BoX-kqX1.js} +1 -1
  139. package/dist/client/index.html +2 -2
  140. package/dist/{doctor-q6oA64hm.mjs → doctor-CmP0u7-d.mjs} +1 -1
  141. package/dist/github-BjZZcSKV.mjs +2 -0
  142. package/dist/{github-HfIlIS-J.mjs → github-oCZx5aim.mjs} +270 -29
  143. package/dist/{mcp-eor39qmD.mjs → mcp-CqxXILYL.mjs} +1 -1
  144. package/dist/{server-C105rwQw.mjs → server-CczuXSWo.mjs} +164 -11
  145. package/package.json +3 -3
  146. package/dist/cli-agent-B4hU6Xay.mjs +0 -499
  147. package/dist/cli-agent-B_PHd635.mjs +0 -499
  148. package/dist/cli-agent-BatQgghr.mjs +0 -499
  149. package/dist/cli-agent-BkkRbKqq.mjs +0 -513
  150. package/dist/cli-agent-BlMtx1Tx.mjs +0 -736
  151. package/dist/cli-agent-BwZE05CQ.mjs +0 -499
  152. package/dist/cli-agent-C4Fb90GL.mjs +0 -728
  153. package/dist/cli-agent-CKE1Cvor.mjs +0 -513
  154. package/dist/cli-agent-CLvCYpmH.mjs +0 -499
  155. package/dist/cli-agent-CX8Fa1Ph.mjs +0 -499
  156. package/dist/cli-agent-ChALuNbw.mjs +0 -841
  157. package/dist/cli-agent-KxNAFIPf.mjs +0 -450
  158. package/dist/cli-agent-SILzesQP.mjs +0 -513
  159. package/dist/cli-agent-USzLoAit.mjs +0 -499
  160. package/dist/cli-agent-qBT8clNM.mjs +0 -841
  161. package/dist/cli-gh-6qiblgj7.mjs +0 -150
  162. package/dist/cli-gh-BV5az425.mjs +0 -147
  163. package/dist/cli-gh-Bo6fOHQR.mjs +0 -147
  164. package/dist/cli-gh-CDGSpndZ.mjs +0 -147
  165. package/dist/cli-gh-D1LoWJl-.mjs +0 -147
  166. package/dist/cli-gh-D1sIZ-jX.mjs +0 -147
  167. package/dist/cli-gh-DROAJlHi.mjs +0 -147
  168. package/dist/cli-gh-DgqscIkg.mjs +0 -147
  169. package/dist/cli-gh-DiT8BWwu.mjs +0 -147
  170. package/dist/cli-gh-KjPnyST6.mjs +0 -150
  171. package/dist/cli-gh-abs-IJrz.mjs +0 -147
  172. package/dist/client/assets/channel-CDxgOu-3.js +0 -1
  173. package/dist/client/assets/chunk-QZHKN3VN-DJCeMpP8.js +0 -1
  174. package/dist/client/assets/chunk-WU5MYG2G-BbuOkMaH.js +0 -1
  175. package/dist/client/assets/classDiagram-4FO5ZUOK-D5oJbiED.js +0 -1
  176. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-5MJt5ZxQ.js +0 -1
  177. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-CdUgMghp.js +0 -1
  178. package/dist/comment-format-CKTt0fzi.mjs +0 -113
  179. package/dist/comment-format-DG_PAehC.mjs +0 -117
  180. package/dist/github-C9GLNak7.mjs +0 -2
  181. package/dist/mcp-7eXATtez.mjs +0 -1334
  182. package/dist/mcp-B6mCC7D3.mjs +0 -1047
  183. package/dist/mcp-BBk8AIO4.mjs +0 -1334
  184. package/dist/mcp-BJxrW9dS.mjs +0 -1334
  185. package/dist/mcp-BMTZLQuB.mjs +0 -758
  186. package/dist/mcp-BUF2nEL7.mjs +0 -1036
  187. package/dist/mcp-BWeWR4yd.mjs +0 -255
  188. package/dist/mcp-BgZO-iXI.mjs +0 -1047
  189. package/dist/mcp-BhT5GgYF.mjs +0 -1334
  190. package/dist/mcp-Bpx76OGU.mjs +0 -945
  191. package/dist/mcp-BsGdNA88.mjs +0 -1334
  192. package/dist/mcp-BxBm3d5l.mjs +0 -1047
  193. package/dist/mcp-C1T7LI0H.mjs +0 -1036
  194. package/dist/mcp-C4Bjmf9m.mjs +0 -1047
  195. package/dist/mcp-CFxcdEcJ.mjs +0 -733
  196. package/dist/mcp-Ca9QAlJ0.mjs +0 -1334
  197. package/dist/mcp-CphIUJUg.mjs +0 -1047
  198. package/dist/mcp-CtKRXQRC.mjs +0 -1047
  199. package/dist/mcp-CwjThGi2.mjs +0 -913
  200. package/dist/mcp-D4OsB9lt.mjs +0 -1047
  201. package/dist/mcp-DJ2batvt.mjs +0 -913
  202. package/dist/mcp-DNZQvKKF.mjs +0 -298
  203. package/dist/mcp-DO4zfNZX.mjs +0 -298
  204. package/dist/mcp-D_LGvBTw.mjs +0 -1047
  205. package/dist/mcp-Ds_lPX_o.mjs +0 -913
  206. package/dist/plan-format-B6nbAw_c.mjs +0 -132
  207. package/dist/plan-format-Bi46QS0m.mjs +0 -132
  208. package/dist/plan-format-DVnF8xrq.mjs +0 -126
  209. package/dist/plan-format-f62JWFI-.mjs +0 -117
  210. package/dist/plan-format-mSDtsPcC.mjs +0 -132
  211. package/dist/review-export-BoV0884M.mjs +0 -66
  212. package/dist/review-export-CKTI5Od_.mjs +0 -66
  213. package/dist/server-95UE5bgh.mjs +0 -3367
  214. package/dist/server-AisDKkpW.mjs +0 -3227
  215. package/dist/server-B0cS95Lf.mjs +0 -3488
  216. package/dist/server-BUsRhL1B.mjs +0 -3283
  217. package/dist/server-BZBFquG8.mjs +0 -3875
  218. package/dist/server-Bc2m9R5-.mjs +0 -3263
  219. package/dist/server-Bj-6KlK5.mjs +0 -3367
  220. package/dist/server-Bmt57wV5.mjs +0 -3875
  221. package/dist/server-Bpf84Il0.mjs +0 -3367
  222. package/dist/server-C15WRRnS.mjs +0 -3740
  223. package/dist/server-CYSpLbdA.mjs +0 -3360
  224. package/dist/server-ChT2DCaR.mjs +0 -3701
  225. package/dist/server-D0Ni8PKP.mjs +0 -3252
  226. package/dist/server-D2xEbakj.mjs +0 -3874
  227. package/dist/server-DJxysGxV.mjs +0 -3701
  228. package/dist/server-Dov7jbV3.mjs +0 -3367
  229. package/dist/server-TOElOuNP.mjs +0 -3258
  230. package/dist/server-eQ2E4Axo.mjs +0 -3367
  231. package/dist/server-lock-C_wPtEsH.mjs +0 -909
  232. package/dist/server-lock-Cbu3qHdu.mjs +0 -924
  233. package/dist/server-lock-D32inEn9.mjs +0 -924
  234. package/dist/server-lock-D73NKKbn.mjs +0 -842
  235. package/dist/server-lock-DaSx7DjW.mjs +0 -1049
  236. package/dist/server-lock-Ddcat0HF.mjs +0 -851
  237. package/dist/server-lock-Dj9fG9md.mjs +0 -838
  238. package/dist/server-lock-Dq_1CJaF.mjs +0 -1047
  239. package/dist/server-lock-Ujbcgq28.mjs +0 -954
  240. package/dist/update-check-CXeSZANo.mjs +0 -129
  241. package/dist/update-check-DAPFCqpF.mjs +0 -129
@@ -1,736 +0,0 @@
1
- import { d as getProjectStorageDir } from "./git-Czo96ymM.mjs";
2
- import { t as formatComments } from "./comment-format-CKTt0fzi.mjs";
3
- import { n as formatPlanReview } from "./plan-format-Bi46QS0m.mjs";
4
- import { i as readServerLock, r as isLockAlive } from "./server-lock-uqSdDYeR.mjs";
5
- import { join } from "node:path";
6
- import { parseArgs } from "node:util";
7
- import { mkdir, readFile, writeFile } from "node:fs/promises";
8
- //#region src/cli-agent.ts
9
- /**
10
- * Agent-facing `diffing` subcommands. These make the user→agent handoff
11
- * port-agnostic: each resolves the running server via the per-repo lockfile
12
- * (`server.json`) so any agent with a shell — or a human — can drive the loop
13
- * without being told a port.
14
- *
15
- * diffing await-review block until the human clicks "Send to agent"
16
- * diffing reply <id> post an agent reply to a comment
17
- * diffing resolve <id> mark a comment resolved
18
- * diffing comments dump the current comments (XML or JSON)
19
- */
20
- const EXIT_OK = 0;
21
- const EXIT_AWAIT_TIMEOUT = 2;
22
- const EXIT_NO_SERVER = 3;
23
- const EXIT_NOT_FOUND = 4;
24
- const EXIT_USAGE = 5;
25
- let activeCapability;
26
- /** Resolve the running server's base URL from the lockfile, or exit cleanly. */
27
- function baseUrl() {
28
- const lock = readServerLock();
29
- if (!lock || !isLockAlive(lock)) {
30
- console.error("No diffing server running for this repo. Start one with `diffing`.");
31
- process.exit(EXIT_NO_SERVER);
32
- }
33
- const host = lock.host === "0.0.0.0" || lock.host === "::" ? "127.0.0.1" : lock.host;
34
- activeCapability = lock.mode === "tui" ? lock.capability : void 0;
35
- return `http://${host}:${lock.port}`;
36
- }
37
- /** Attach the per-session TUI capability while preserving ordinary web calls. */
38
- function apiFetch(input, init = {}) {
39
- const headers = new Headers(init.headers);
40
- if (activeCapability) headers.set("X-Diffing-Capability", activeCapability);
41
- return fetch(input, {
42
- ...init,
43
- headers
44
- });
45
- }
46
- async function readStdin() {
47
- const chunks = [];
48
- for await (const chunk of process.stdin) chunks.push(chunk);
49
- return Buffer.concat(chunks).toString("utf-8");
50
- }
51
- async function awaitReview(args) {
52
- const { values } = parseArgs({
53
- args,
54
- options: {
55
- timeout: {
56
- type: "string",
57
- short: "t"
58
- },
59
- since: { type: "string" },
60
- model: {
61
- type: "string",
62
- short: "m"
63
- },
64
- label: { type: "string" },
65
- "agent-id": { type: "string" }
66
- },
67
- allowPositionals: false
68
- });
69
- const totalBudgetMs = (values.timeout ? Number(values.timeout) : 570) * 1e3;
70
- const base = baseUrl();
71
- let agentId = typeof values["agent-id"] === "string" ? values["agent-id"] : void 0;
72
- try {
73
- const reg = await apiFetch(`${base}/api/agent/register`, {
74
- method: "POST",
75
- headers: { "Content-Type": "application/json" },
76
- body: JSON.stringify({
77
- agentId,
78
- model: values.model,
79
- label: values.label ?? values.model
80
- })
81
- });
82
- if (reg.ok) agentId = (await reg.json()).agentId ?? agentId;
83
- } catch {}
84
- let sinceRound = 0;
85
- try {
86
- sinceRound = (await apiFetch(`${base}/api/review/status`).then((r) => r.json())).round ?? 0;
87
- } catch {}
88
- const unregister = async () => {
89
- if (!agentId) return;
90
- try {
91
- await apiFetch(`${base}/api/agent/register/${encodeURIComponent(agentId)}`, { method: "DELETE" });
92
- } catch {}
93
- };
94
- const deadline = Date.now() + totalBudgetMs;
95
- while (Date.now() < deadline) {
96
- let res;
97
- try {
98
- res = await apiFetch(`${base}/api/review/await?timeoutMs=25000&sinceRound=${sinceRound}`, { signal: AbortSignal.timeout(3e4) });
99
- } catch (err) {
100
- if (err?.name === "TimeoutError") continue;
101
- console.error(`Failed to reach diffing server: ${err?.message ?? err}`);
102
- await unregister();
103
- return EXIT_NO_SERVER;
104
- }
105
- const result = await res.json();
106
- if (result.status === "released") {
107
- process.stdout.write(result.payload.commentXml + "\n");
108
- console.error(`DIFFING_REVIEW_ROUND=${result.payload.round}`);
109
- await unregister();
110
- return EXIT_OK;
111
- }
112
- sinceRound = result.round ?? sinceRound;
113
- }
114
- console.error("DIFFING_AWAIT_TIMEOUT");
115
- console.error("No review sent within the timeout. Run `diffing await-review` again to keep waiting.");
116
- await unregister();
117
- return EXIT_AWAIT_TIMEOUT;
118
- }
119
- async function reply(args) {
120
- const { values, positionals } = parseArgs({
121
- args,
122
- options: {
123
- body: {
124
- type: "string",
125
- short: "b"
126
- },
127
- model: {
128
- type: "string",
129
- short: "m"
130
- }
131
- },
132
- allowPositionals: true
133
- });
134
- const commentId = positionals[0];
135
- if (!commentId) {
136
- console.error("Usage: diffing reply <commentId> --body <text> [--model <name>]");
137
- return EXIT_USAGE;
138
- }
139
- let body = values.body;
140
- if (body === "-" || body === void 0) body = (await readStdin()).trim();
141
- if (!body) {
142
- console.error("A reply body is required (--body <text> or pipe via stdin).");
143
- return EXIT_USAGE;
144
- }
145
- const res = await apiFetch(`${baseUrl()}/api/comments/${commentId}/replies`, {
146
- method: "POST",
147
- headers: { "Content-Type": "application/json" },
148
- body: JSON.stringify({
149
- body,
150
- role: "agent",
151
- model: values.model
152
- })
153
- });
154
- if (res.status === 404) {
155
- console.error(`Comment ${commentId} not found.`);
156
- return EXIT_NOT_FOUND;
157
- }
158
- if (!res.ok) {
159
- console.error(`Failed to reply: HTTP ${res.status}`);
160
- return 1;
161
- }
162
- console.error(`Replied to ${commentId}.`);
163
- return EXIT_OK;
164
- }
165
- async function resolve$1(args) {
166
- const { positionals } = parseArgs({
167
- args,
168
- allowPositionals: true,
169
- options: {}
170
- });
171
- const commentId = positionals[0];
172
- if (!commentId) {
173
- console.error("Usage: diffing resolve <commentId>");
174
- return EXIT_USAGE;
175
- }
176
- const res = await apiFetch(`${baseUrl()}/api/comments/${commentId}`, {
177
- method: "PUT",
178
- headers: { "Content-Type": "application/json" },
179
- body: JSON.stringify({ status: "resolved" })
180
- });
181
- if (res.status === 404) {
182
- console.error(`Comment ${commentId} not found.`);
183
- return EXIT_NOT_FOUND;
184
- }
185
- if (!res.ok) {
186
- console.error(`Failed to resolve: HTTP ${res.status}`);
187
- return 1;
188
- }
189
- console.error(`Resolved ${commentId}.`);
190
- return EXIT_OK;
191
- }
192
- async function unresolve(args) {
193
- const { positionals } = parseArgs({
194
- args,
195
- allowPositionals: true,
196
- options: {}
197
- });
198
- const commentId = positionals[0];
199
- if (!commentId) {
200
- console.error("Usage: diffing unresolve <commentId>");
201
- return EXIT_USAGE;
202
- }
203
- const res = await apiFetch(`${baseUrl()}/api/comments/${commentId}`, {
204
- method: "PUT",
205
- headers: { "Content-Type": "application/json" },
206
- body: JSON.stringify({ status: "open" })
207
- });
208
- if (res.status === 404) {
209
- console.error(`Comment ${commentId} not found.`);
210
- return EXIT_NOT_FOUND;
211
- }
212
- if (!res.ok) {
213
- console.error(`Failed to unresolve: HTTP ${res.status}`);
214
- return 1;
215
- }
216
- console.error(`Re-opened ${commentId}.`);
217
- return EXIT_OK;
218
- }
219
- async function commentEdit(args) {
220
- const { values, positionals } = parseArgs({
221
- args,
222
- options: { body: {
223
- type: "string",
224
- short: "b"
225
- } },
226
- allowPositionals: true
227
- });
228
- const commentId = positionals[0];
229
- if (!commentId) {
230
- console.error("Usage: diffing comment edit <commentId> --body <text>");
231
- return EXIT_USAGE;
232
- }
233
- let body = values.body;
234
- if (body === "-" || body === void 0) body = (await readStdin()).trim();
235
- if (!body) {
236
- console.error("A body is required (--body <text> or stdin).");
237
- return EXIT_USAGE;
238
- }
239
- const res = await apiFetch(`${baseUrl()}/api/comments/${commentId}`, {
240
- method: "PUT",
241
- headers: { "Content-Type": "application/json" },
242
- body: JSON.stringify({ body })
243
- });
244
- if (res.status === 404) {
245
- console.error(`Comment ${commentId} not found.`);
246
- return EXIT_NOT_FOUND;
247
- }
248
- if (!res.ok) {
249
- console.error(`Failed to edit: HTTP ${res.status}`);
250
- return 1;
251
- }
252
- console.error(`Edited ${commentId}.`);
253
- return EXIT_OK;
254
- }
255
- async function commentDelete(args) {
256
- const { positionals } = parseArgs({
257
- args,
258
- allowPositionals: true,
259
- options: {}
260
- });
261
- const commentId = positionals[0];
262
- if (!commentId) {
263
- console.error("Usage: diffing comment delete <commentId>");
264
- return EXIT_USAGE;
265
- }
266
- const res = await apiFetch(`${baseUrl()}/api/comments/${commentId}`, { method: "DELETE" });
267
- if (res.status === 404) {
268
- console.error(`Comment ${commentId} not found.`);
269
- return EXIT_NOT_FOUND;
270
- }
271
- if (!res.ok) {
272
- console.error(`Failed to delete: HTTP ${res.status}`);
273
- return 1;
274
- }
275
- console.error(`Deleted ${commentId}.`);
276
- return EXIT_OK;
277
- }
278
- async function commentCmd(args) {
279
- const action = args[0];
280
- const rest = args.slice(1);
281
- switch (action) {
282
- case "edit": return commentEdit(rest);
283
- case "delete": return commentDelete(rest);
284
- default:
285
- console.error("Usage: diffing comment <edit|delete> ...");
286
- return EXIT_USAGE;
287
- }
288
- }
289
- async function url() {
290
- process.stdout.write(baseUrl() + "\n");
291
- return EXIT_OK;
292
- }
293
- async function comments(args) {
294
- const { values } = parseArgs({
295
- args,
296
- options: {
297
- open: { type: "boolean" },
298
- json: { type: "boolean" },
299
- format: { type: "string" }
300
- },
301
- allowPositionals: false
302
- });
303
- const all = await apiFetch(`${baseUrl()}/api/comments`).then((r) => r.json());
304
- const selected = values.open ? all.filter((c) => c.status === "open") : all;
305
- const format = values.format?.toLowerCase();
306
- if (values.json || format === "json") process.stdout.write(JSON.stringify(selected, null, 2) + "\n");
307
- else if (format === "markdown" || format === "md") {
308
- const { formatCommentsMarkdown } = await import("./review-export-CKTI5Od_.mjs");
309
- process.stdout.write(formatCommentsMarkdown(selected) + "\n");
310
- } else process.stdout.write(formatComments(selected) + "\n");
311
- return EXIT_OK;
312
- }
313
- /** Derive a human title from a plan's first heading or non-empty line. */
314
- function deriveTitle(body) {
315
- for (const raw of body.split("\n")) {
316
- const line = raw.trim();
317
- if (!line) continue;
318
- const heading = /^#{1,6}\s+(.*)$/.exec(line);
319
- return (heading ? heading[1] : line).slice(0, 120);
320
- }
321
- return "Untitled plan";
322
- }
323
- /** Long-poll the plan-review handoff until a decision arrives or time runs out. */
324
- async function pollPlanDecision(base, totalBudgetMs, seedSince) {
325
- let sinceRound = seedSince ?? 0;
326
- if (seedSince === void 0) try {
327
- sinceRound = (await apiFetch(`${base}/api/plan-review/status`).then((r) => r.json())).round ?? 0;
328
- } catch {}
329
- const deadline = Date.now() + totalBudgetMs;
330
- while (Date.now() < deadline) {
331
- let res;
332
- try {
333
- res = await apiFetch(`${base}/api/plan-review/await?timeoutMs=25000&sinceRound=${sinceRound}`, { signal: AbortSignal.timeout(3e4) });
334
- } catch (err) {
335
- if (err?.name === "TimeoutError") continue;
336
- console.error(`Failed to reach diffing server: ${err?.message ?? err}`);
337
- return EXIT_NO_SERVER;
338
- }
339
- const result = await res.json();
340
- if (result.status === "released") {
341
- process.stdout.write(result.payload.reviewXml + "\n");
342
- console.error(`DIFFING_PLAN_DECISION=${result.payload.decision}`);
343
- console.error(`DIFFING_PLAN_ROUND=${result.payload.round}`);
344
- return EXIT_OK;
345
- }
346
- sinceRound = result.round ?? sinceRound;
347
- }
348
- console.error("DIFFING_PLAN_AWAIT_TIMEOUT");
349
- console.error("No plan decision within the timeout. Run `diffing plan await` again to keep waiting.");
350
- return EXIT_AWAIT_TIMEOUT;
351
- }
352
- async function planSubmit(args) {
353
- const { values, positionals } = parseArgs({
354
- args,
355
- options: {
356
- title: { type: "string" },
357
- source: {
358
- type: "string",
359
- short: "s"
360
- },
361
- model: {
362
- type: "string",
363
- short: "m"
364
- },
365
- id: { type: "string" },
366
- wait: {
367
- type: "boolean",
368
- short: "w"
369
- },
370
- timeout: {
371
- type: "string",
372
- short: "t"
373
- },
374
- saveSource: {
375
- type: "boolean",
376
- short: "S"
377
- }
378
- },
379
- allowPositionals: true
380
- });
381
- const file = positionals[0];
382
- let body;
383
- if (!file || file === "-") body = await readStdin();
384
- else try {
385
- body = await readFile(file, "utf-8");
386
- } catch (err) {
387
- console.error(`Failed to read plan file ${file}: ${err?.message ?? err}`);
388
- return EXIT_USAGE;
389
- }
390
- body = body.replace(/\r\n/g, "\n");
391
- if (!body.trim()) {
392
- console.error("A plan body is required (pass a markdown file path or pipe via stdin).");
393
- return EXIT_USAGE;
394
- }
395
- const title = values.title || deriveTitle(body);
396
- const base = baseUrl();
397
- let source = values.source;
398
- if (!source && file && file !== "-") try {
399
- const { resolve } = await import("node:path");
400
- source = resolve(file);
401
- } catch {
402
- source = file;
403
- }
404
- let sinceRound = 0;
405
- if (values.wait) try {
406
- sinceRound = (await apiFetch(`${base}/api/plan-review/status`).then((r) => r.json())).round ?? 0;
407
- } catch {}
408
- const res = await apiFetch(`${base}/api/plans`, {
409
- method: "POST",
410
- headers: { "Content-Type": "application/json" },
411
- body: JSON.stringify({
412
- id: values.id,
413
- title,
414
- body,
415
- source,
416
- model: values.model
417
- })
418
- });
419
- if (!res.ok) {
420
- console.error(`Failed to submit plan: HTTP ${res.status}`);
421
- return 1;
422
- }
423
- const plan = await res.json();
424
- console.error(`Submitted plan ${plan.id} (v${plan.version}) — review at ${base}/plan/${plan.id}`);
425
- if (plan.sourcePath) console.error(`Source path: ${plan.sourcePath}`);
426
- if (values.saveSource) try {
427
- const sourcesDir = join(getProjectStorageDir(), "plan-sources");
428
- await mkdir(sourcesDir, { recursive: true });
429
- const sourcePath = join(sourcesDir, `${plan.id}.md`);
430
- await writeFile(sourcePath, body, "utf-8");
431
- console.error(`Saved source to ${sourcePath}`);
432
- } catch (err) {
433
- console.error(`Failed to save plan source: ${err?.message ?? err}`);
434
- }
435
- if (!values.wait) {
436
- process.stdout.write(plan.id + "\n");
437
- return EXIT_OK;
438
- }
439
- return pollPlanDecision(base, (values.timeout ? Number(values.timeout) : 570) * 1e3, sinceRound);
440
- }
441
- async function planAwait(args) {
442
- const { values } = parseArgs({
443
- args,
444
- options: { timeout: {
445
- type: "string",
446
- short: "t"
447
- } },
448
- allowPositionals: false
449
- });
450
- const totalBudgetMs = (values.timeout ? Number(values.timeout) : 570) * 1e3;
451
- return pollPlanDecision(baseUrl(), totalBudgetMs);
452
- }
453
- async function planList(args) {
454
- const { values } = parseArgs({
455
- args,
456
- options: { json: { type: "boolean" } },
457
- allowPositionals: false
458
- });
459
- const all = await apiFetch(`${baseUrl()}/api/plans`).then((r) => r.json());
460
- if (values.json) {
461
- process.stdout.write(JSON.stringify(all, null, 2) + "\n");
462
- return EXIT_OK;
463
- }
464
- if (all.length === 0) {
465
- console.error("No plans submitted yet.");
466
- return EXIT_OK;
467
- }
468
- for (const p of all) {
469
- const open = (p.comments ?? []).filter((c) => c.status === "open").length;
470
- process.stdout.write(`${p.id}\t[${p.decision}]\tv${p.version}\t${open} open comment(s)\t${p.title}\n`);
471
- }
472
- return EXIT_OK;
473
- }
474
- async function planShow(args) {
475
- const { values, positionals } = parseArgs({
476
- args,
477
- options: {
478
- json: { type: "boolean" },
479
- version: { type: "string" }
480
- },
481
- allowPositionals: true
482
- });
483
- const base = baseUrl();
484
- let planId = positionals[0];
485
- if (!planId) {
486
- const all = await apiFetch(`${base}/api/plans`).then((r) => r.json());
487
- if (all.length === 0) {
488
- console.error("No plans submitted yet.");
489
- return EXIT_NOT_FOUND;
490
- }
491
- planId = all[all.length - 1].id;
492
- }
493
- const res = await apiFetch(`${base}/api/plans/${planId}`);
494
- if (res.status === 404) {
495
- console.error(`Plan ${planId} not found.`);
496
- return EXIT_NOT_FOUND;
497
- }
498
- const plan = await res.json();
499
- const requestedVersion = values.version !== void 0 ? Number(values.version) : void 0;
500
- if (requestedVersion !== void 0 && (!Number.isFinite(requestedVersion) || requestedVersion < 1)) {
501
- console.error(`--version must be a positive integer.`);
502
- return EXIT_USAGE;
503
- }
504
- if (requestedVersion !== void 0 && requestedVersion !== plan.version) {
505
- if (!(plan.versions ?? []).find((v) => v.version === requestedVersion)) {
506
- console.error(`Version ${requestedVersion} not found for plan ${planId} (current: v${plan.version}).`);
507
- return EXIT_NOT_FOUND;
508
- }
509
- }
510
- if (values.json) process.stdout.write(JSON.stringify(plan, null, 2) + "\n");
511
- else process.stdout.write(formatPlanReview(plan, { viewingVersion: requestedVersion }) + "\n");
512
- return EXIT_OK;
513
- }
514
- async function planVersions(args) {
515
- const { values, positionals } = parseArgs({
516
- args,
517
- options: { json: { type: "boolean" } },
518
- allowPositionals: true
519
- });
520
- const base = baseUrl();
521
- let planId = positionals[0];
522
- if (!planId) {
523
- console.error("Usage: diffing plan versions <id> [--json]");
524
- return EXIT_USAGE;
525
- }
526
- const planRes = await apiFetch(`${base}/api/plans/${planId}`);
527
- if (planRes.status === 404) {
528
- console.error(`Plan ${planId} not found.`);
529
- return EXIT_NOT_FOUND;
530
- }
531
- const plan = await planRes.json();
532
- const versions = plan.versions ?? [];
533
- if (values.json) {
534
- process.stdout.write(JSON.stringify(versions, null, 2) + "\n");
535
- return EXIT_OK;
536
- }
537
- if (versions.length === 0) {
538
- console.error("This plan has no recorded versions.");
539
- return EXIT_OK;
540
- }
541
- for (const v of versions) {
542
- const marker = v.version === plan.version ? "*" : " ";
543
- const date = new Date(v.createdAt).toISOString().slice(0, 16).replace("T", " ");
544
- process.stdout.write(`${marker} v${v.version}\t${date}\t${v.title}\n`);
545
- }
546
- return EXIT_OK;
547
- }
548
- /** Locate which plan owns a given comment id (comment ids are globally unique). */
549
- async function findCommentPlan(base, commentId) {
550
- return (await apiFetch(`${base}/api/plans`).then((r) => r.json())).find((p) => (p.comments ?? []).some((c) => c.id === commentId)) ?? null;
551
- }
552
- async function planReply(args) {
553
- const { values, positionals } = parseArgs({
554
- args,
555
- options: {
556
- body: {
557
- type: "string",
558
- short: "b"
559
- },
560
- model: {
561
- type: "string",
562
- short: "m"
563
- }
564
- },
565
- allowPositionals: true
566
- });
567
- const commentId = positionals[0];
568
- if (!commentId) {
569
- console.error("Usage: diffing plan reply <commentId> --body <text> [--model <name>]");
570
- return EXIT_USAGE;
571
- }
572
- let body = values.body;
573
- if (body === "-" || body === void 0) body = (await readStdin()).trim();
574
- if (!body) {
575
- console.error("A reply body is required (--body <text> or pipe via stdin).");
576
- return EXIT_USAGE;
577
- }
578
- const base = baseUrl();
579
- const plan = await findCommentPlan(base, commentId);
580
- if (!plan) {
581
- console.error(`Plan comment ${commentId} not found.`);
582
- return EXIT_NOT_FOUND;
583
- }
584
- const res = await apiFetch(`${base}/api/plans/${plan.id}/comments/${commentId}/replies`, {
585
- method: "POST",
586
- headers: { "Content-Type": "application/json" },
587
- body: JSON.stringify({
588
- body,
589
- role: "agent",
590
- model: values.model
591
- })
592
- });
593
- if (!res.ok) {
594
- console.error(`Failed to reply: HTTP ${res.status}`);
595
- return 1;
596
- }
597
- console.error(`Replied to plan comment ${commentId}.`);
598
- return EXIT_OK;
599
- }
600
- async function planResolve(args) {
601
- const { positionals } = parseArgs({
602
- args,
603
- allowPositionals: true,
604
- options: {}
605
- });
606
- const commentId = positionals[0];
607
- if (!commentId) {
608
- console.error("Usage: diffing plan resolve <commentId>");
609
- return EXIT_USAGE;
610
- }
611
- const base = baseUrl();
612
- const plan = await findCommentPlan(base, commentId);
613
- if (!plan) {
614
- console.error(`Plan comment ${commentId} not found.`);
615
- return EXIT_NOT_FOUND;
616
- }
617
- const res = await apiFetch(`${base}/api/plans/${plan.id}/comments/${commentId}`, {
618
- method: "PUT",
619
- headers: { "Content-Type": "application/json" },
620
- body: JSON.stringify({ status: "resolved" })
621
- });
622
- if (!res.ok) {
623
- console.error(`Failed to resolve: HTTP ${res.status}`);
624
- return 1;
625
- }
626
- console.error(`Resolved plan comment ${commentId}.`);
627
- return EXIT_OK;
628
- }
629
- async function plan(args) {
630
- const action = args[0];
631
- const rest = args.slice(1);
632
- switch (action) {
633
- case "submit": return planSubmit(rest);
634
- case "await": return planAwait(rest);
635
- case "list": return planList(rest);
636
- case "show": return planShow(rest);
637
- case "versions": return planVersions(rest);
638
- case "reply": return planReply(rest);
639
- case "resolve": return planResolve(rest);
640
- default:
641
- console.error("Usage: diffing plan <submit|await|list|show|versions|reply|resolve> [...]");
642
- return EXIT_USAGE;
643
- }
644
- }
645
- async function doctor() {
646
- const { runDoctor, formatDoctorReport } = await import("./doctor-q6oA64hm.mjs");
647
- const report = await runDoctor({
648
- cwd: process.cwd(),
649
- cliImportMetaUrl: import.meta.url
650
- });
651
- process.stdout.write(formatDoctorReport(report) + "\n");
652
- return report.ok ? EXIT_OK : 1;
653
- }
654
- async function completion(args) {
655
- const shell = args[0];
656
- if (!shell || args.includes("--help") || args.includes("-h")) {
657
- console.error("Usage: diffing completion <bash|zsh|fish>");
658
- console.error(" # Install examples:");
659
- console.error(" # diffing completion bash >> ~/.bashrc");
660
- console.error(" # diffing completion zsh > ~/.zfunc/_diffing");
661
- console.error(" # diffing completion fish > ~/.config/fish/completions/diffing.fish");
662
- return EXIT_USAGE;
663
- }
664
- const { completionFor } = await import("./completions-ZSKYvW06.mjs");
665
- const script = completionFor(shell);
666
- if (!script) {
667
- console.error(`Unknown shell: ${shell}. Use bash, zsh, or fish.`);
668
- return EXIT_USAGE;
669
- }
670
- process.stdout.write(script);
671
- return EXIT_OK;
672
- }
673
- async function progress(args) {
674
- const { values } = parseArgs({
675
- args,
676
- options: {
677
- message: {
678
- type: "string",
679
- short: "m"
680
- },
681
- model: { type: "string" },
682
- "agent-id": { type: "string" },
683
- pct: { type: "string" },
684
- "comment-id": { type: "string" }
685
- },
686
- allowPositionals: true
687
- });
688
- const message = values.message || (args.find((a) => !a.startsWith("-")) ?? "");
689
- if (!message) {
690
- console.error("Usage: diffing progress --message \"Working on comment…\" [--model M] [--pct N]");
691
- return EXIT_USAGE;
692
- }
693
- const res = await apiFetch(`${baseUrl()}/api/agent/progress`, {
694
- method: "POST",
695
- headers: { "Content-Type": "application/json" },
696
- body: JSON.stringify({
697
- message,
698
- model: values.model,
699
- agentId: values["agent-id"],
700
- commentId: values["comment-id"],
701
- pct: values.pct != null ? Number(values.pct) : void 0
702
- })
703
- });
704
- if (!res.ok) {
705
- const err = await res.json().catch(() => ({}));
706
- console.error(err.error ?? res.statusText);
707
- return 1;
708
- }
709
- return EXIT_OK;
710
- }
711
- async function runSubcommand(name, args) {
712
- switch (name) {
713
- case "await-review": return awaitReview(args);
714
- case "reply": return reply(args);
715
- case "resolve": return resolve$1(args);
716
- case "unresolve": return unresolve(args);
717
- case "comment": return commentCmd(args);
718
- case "comments": return comments(args);
719
- case "url": return url();
720
- case "plan": return plan(args);
721
- case "update":
722
- const { runUpdateCommand } = await import("./update-check-fe0tR8tx.mjs");
723
- return runUpdateCommand();
724
- case "gh":
725
- const { runGhSubcommand } = await import("./cli-gh-6qiblgj7.mjs");
726
- return runGhSubcommand(args);
727
- case "doctor": return doctor();
728
- case "completion": return completion(args);
729
- case "progress": return progress(args);
730
- default:
731
- console.error(`Unknown subcommand: ${name}`);
732
- return EXIT_USAGE;
733
- }
734
- }
735
- //#endregion
736
- export { runSubcommand };