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.
- package/README.md +52 -18
- package/dist/{cli-agent-D71pq2ep.mjs → cli-agent-CLrK54k2.mjs} +2 -2
- package/dist/{cli-gh-D5OCnjNe.mjs → cli-gh-8YC1NzyM.mjs} +6 -1
- package/dist/cli.mjs +3 -3
- package/dist/client/assets/{angular-html-Dh86jUvr.js → angular-html-DdAR2u-k.js} +1 -1
- package/dist/client/assets/{angular-ts-Bh4wRJtT.js → angular-ts-Dz_vWKSu.js} +1 -1
- package/dist/client/assets/{apl-BSXBHduT.js → apl-BJ5QXrIk.js} +1 -1
- package/dist/client/assets/{arc-CRQlhBrV.js → arc-D9erSW6x.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-BXq3UvEv.js → architectureDiagram-3BPJPVTR-CCQWZLXR.js} +1 -1
- package/dist/client/assets/{astro-Bh00klUw.js → astro-BQAej5a5.js} +1 -1
- package/dist/client/assets/{blade-CisA3zhm.js → blade-DkAmuwDx.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-Bw-PTAJr.js → blockDiagram-GPEHLZMM-vwjxNybI.js} +1 -1
- package/dist/client/assets/{c-D-pHVWrf.js → c-DG5p-ChJ.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-C0XyiqC_.js → c4Diagram-AAUBKEIU-DJ_hVlh4.js} +1 -1
- package/dist/client/assets/channel-DmZgR6r0.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-DekjZXNj.js → chunk-2J33WTMH-CiLowxCo.js} +1 -1
- package/dist/client/assets/{chunk-3OPIFGDE-BtROpcL8.js → chunk-3OPIFGDE-H3jjMR5Y.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-C92XLTlx.js → chunk-4BX2VUAB-Dk0dk4n5.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CceUgh8N.js → chunk-55IACEB6-nbLiUMJS.js} +1 -1
- package/dist/client/assets/{chunk-5ZQYHXKU-DSbYPAe7.js → chunk-5ZQYHXKU-DZ8RgHg8.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-DVzUJa-9.js → chunk-727SXJPM-DDe5dqJV.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-6n3Z_IFa.js → chunk-AQP2D5EJ-DmpNclOr.js} +1 -1
- package/dist/client/assets/{chunk-BSJP7CBP-BgVLnkxr.js → chunk-BSJP7CBP-BKQKvtIj.js} +1 -1
- package/dist/client/assets/{chunk-CSCIHK7Q-CkGMXntp.js → chunk-CSCIHK7Q-D27t4cyv.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-BM8lrLBo.js → chunk-FMBD7UC4-Bu3LA663.js} +1 -1
- package/dist/client/assets/{chunk-KSCS5N6A-Bm2pjMQg.js → chunk-KSCS5N6A-Ed5HNXRW.js} +1 -1
- package/dist/client/assets/{chunk-L5ZTLDWV-VL17ikXM.js → chunk-L5ZTLDWV-DLjJZgf8.js} +1 -1
- package/dist/client/assets/{chunk-LZXEDZCA-B629g67M.js → chunk-LZXEDZCA-B-cs89SM.js} +2 -2
- package/dist/client/assets/{chunk-ND2GUHAM-CjZGwhKA.js → chunk-ND2GUHAM-D_kPSuUA.js} +1 -1
- package/dist/client/assets/{chunk-NZK2D7GU-DGsLjESY.js → chunk-NZK2D7GU-D1u3pjq-.js} +1 -1
- package/dist/client/assets/{chunk-O5CBEL6O-EyUrGY3l.js → chunk-O5CBEL6O-Mt0cnPSf.js} +1 -1
- package/dist/client/assets/chunk-QZHKN3VN-BrYnBs7h.js +1 -0
- package/dist/client/assets/chunk-WU5MYG2G-CdBcsQs_.js +1 -0
- package/dist/client/assets/{chunk-XPW4576I-C2TeAQmQ.js → chunk-XPW4576I-Bt8a8x28.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-CCpp3t5M.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-B1aV1sYb.js +1 -0
- package/dist/client/assets/{cobol-DsRZMP16.js → cobol-Daidj_5Y.js} +1 -1
- package/dist/client/assets/{coffee-DP0-MMsE.js → coffee-DUMdB2Cr.js} +1 -1
- package/dist/client/assets/{cose-bilkent-S5V4N54A-DMmK0b0W.js → cose-bilkent-S5V4N54A-DVUDLXie.js} +1 -1
- package/dist/client/assets/{cpp-B6XYbbze.js → cpp-C2FeX1Mc.js} +1 -1
- package/dist/client/assets/{crystal-dBLPFLMp.js → crystal-D4yb9blJ.js} +1 -1
- package/dist/client/assets/{css-tgwuSZL0.js → css-B5cr0U9F.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-CgNkf0TR.js → dagre-BM42HDAG-DdZWb-Ee.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-ocAqn0LV.js → diagram-2AECGRRQ-C9DOZt92.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-CB1Yo4Gc.js → diagram-5GNKFQAL-Bbc07UKr.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-B2vpMBRT.js → diagram-KO2AKTUF-C-lUzY3m.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-DuxZOaQS.js → diagram-LMA3HP47-D-OjEFhp.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-CkShDmcv.js → diagram-OG6HWLK6-BjtWGvrf.js} +1 -1
- package/dist/client/assets/{dist-BgZIvk5w.js → dist-BXZygPdX.js} +1 -1
- package/dist/client/assets/{edge-Bokubn8E.js → edge-RCQWcWNp.js} +1 -1
- package/dist/client/assets/{elixir-BEzcf3Xg.js → elixir-DwKyVg2X.js} +1 -1
- package/dist/client/assets/{elm-vJyLTAER.js → elm-DjR33IVs.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-BFV1NQAH.js → erDiagram-TEJ5UH35-C5T4ywLG.js} +1 -1
- package/dist/client/assets/{erb-DDkAmjBS.js → erb-BnhUH1Hk.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-DU8xbFdO.js → flowDiagram-I6XJVG4X-BJmjm7Kx.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-DCb7Qh0c.js → ganttDiagram-6RSMTGT7-DREPnzu5.js} +1 -1
- package/dist/client/assets/{git-rebase-DWcifAdK.js → git-rebase-DzXoSDXA.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-C_Tw-piE.js → gitGraphDiagram-PVQCEYII-DIR4G_-_.js} +1 -1
- package/dist/client/assets/{glimmer-js--HDru5ys.js → glimmer-js-HKnZpCn_.js} +1 -1
- package/dist/client/assets/{glimmer-ts-DAdXisHh.js → glimmer-ts-DedV7rWs.js} +1 -1
- package/dist/client/assets/{glsl-CmIRlJht.js → glsl-Bz-0Alp2.js} +1 -1
- package/dist/client/assets/{graphql-tx4-7I3U.js → graphql-DSKkDYCD.js} +1 -1
- package/dist/client/assets/{hack-yA0XjhF7.js → hack-CnaHZm8k.js} +1 -1
- package/dist/client/assets/{haml-BR5MUE1b.js → haml-huGFYKlj.js} +1 -1
- package/dist/client/assets/{handlebars-BPOF7iOf.js → handlebars-CKmgzfWY.js} +1 -1
- package/dist/client/assets/{html-BbteRk96.js → html-B9Ih_dUU.js} +1 -1
- package/dist/client/assets/{html-derivative-59NNrcMm.js → html-derivative-YabD-M5d.js} +1 -1
- package/dist/client/assets/{http-D3odGQI4.js → http-Bdu12JYX.js} +1 -1
- package/dist/client/assets/{hurl-BLTj8fPj.js → hurl-twZzDTNs.js} +1 -1
- package/dist/client/assets/{index-DHXpO7eS.js → index-BktdZRWB.js} +122 -118
- package/dist/client/assets/{index-BZcKS8Sb.css → index-YlwaPTSG.css} +1 -1
- package/dist/client/assets/{infoDiagram-5YYISTIA-CI6hJyRl.js → infoDiagram-5YYISTIA-D2ty2R-i.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-gMS1P1LQ.js → ishikawaDiagram-YF4QCWOH-Ccnc9xlE.js} +1 -1
- package/dist/client/assets/{java-CsViuzs_.js → java-_5trO-p9.js} +1 -1
- package/dist/client/assets/{javascript-DQgsl2Dh.js → javascript-BOQn0ikE.js} +1 -1
- package/dist/client/assets/{jinja-DQNp2NUA.js → jinja-BgY-0IBz.js} +1 -1
- package/dist/client/assets/{jison-CDDOZQdc.js → jison-BLNTmT1_.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-BTQ_Ws_h.js → journeyDiagram-JHISSGLW-W7eWXlw0.js} +1 -1
- package/dist/client/assets/{json-DP4TqCuE.js → json-BLbH8rZf.js} +1 -1
- package/dist/client/assets/{jsx-Df5hn0Tf.js → jsx-CxteptsJ.js} +1 -1
- package/dist/client/assets/{julia--u33yGLi.js → julia-B__Ncp_z.js} +1 -1
- package/dist/client/assets/{just-BCpMmSOD.js → just-DBsHUGW1.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-CvqGbLR_.js → kanban-definition-UN3LZRKU-Z_AFL-rd.js} +1 -1
- package/dist/client/assets/{latex-D8D4jZGw.js → latex-DFF_0wxo.js} +1 -1
- package/dist/client/assets/{line-DBgaS_RW.js → line-aAv8TyOs.js} +1 -1
- package/dist/client/assets/{linear-RQVzKNVU.js → linear-BOvEZKH8.js} +1 -1
- package/dist/client/assets/{liquid-CkH85f12.js → liquid-kDWCO6d7.js} +1 -1
- package/dist/client/assets/{lua-iKoV7WE3.js → lua-CYTFayq-.js} +1 -1
- package/dist/client/assets/{marko-N8ScQSqT.js → marko-Dpmz3Pdx.js} +1 -1
- package/dist/client/assets/{mdc-BvHTOxsp.js → mdc-BsxHyM1i.js} +1 -1
- package/dist/client/assets/{mermaid-parser.core-CwDRwMR7.js → mermaid-parser.core-D8z_CWL1.js} +1 -1
- package/dist/client/assets/{mermaid.core-D2LDJgXO.js → mermaid.core-DNKchnly.js} +3 -3
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-FRnPh642.js → mindmap-definition-RKZ34NQL-xQKMV4Kw.js} +1 -1
- package/dist/client/assets/{nginx-DGgvASuI.js → nginx-CcdTDme-.js} +1 -1
- package/dist/client/assets/{nim-D-v9hzvR.js → nim-B5wWDskL.js} +1 -1
- package/dist/client/assets/{perl-CG8leJ8K.js → perl-Ce2_iKLz.js} +1 -1
- package/dist/client/assets/{php-DvkeSP10.js → php-DuLCFERd.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-CepOg38Y.js → pieDiagram-4H26LBE5-CBSCJnUr.js} +1 -1
- package/dist/client/assets/{pug-B4T7-xaL.js → pug-BfQJoQj1.js} +1 -1
- package/dist/client/assets/{qml-BE6D5Bxn.js → qml-DYeovlVl.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DOFAsP60.js → quadrantDiagram-W4KKPZXB-uEcgb0Rm.js} +1 -1
- package/dist/client/assets/{r-BKZg9Mcq.js → r-DgHSP56L.js} +1 -1
- package/dist/client/assets/{razor-D-02oaxL.js → razor-B00x7W-i.js} +1 -1
- package/dist/client/assets/{regexp-BDFvAR1k.js → regexp-CmWVupmd.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-BBVNH-2W.js → requirementDiagram-4Y6WPE33-Q4yY_ALe.js} +1 -1
- package/dist/client/assets/{review-export-D5iIl46_.js → review-export-pcqDKNqx.js} +1 -1
- package/dist/client/assets/{rst-BcT26OSj.js → rst-B3VARbTX.js} +1 -1
- package/dist/client/assets/{ruby-Cq_YQvFT.js → ruby-CaxKSSbT.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BQfCTbBX.js → sankeyDiagram-5OEKKPKP-B-GLzFGa.js} +1 -1
- package/dist/client/assets/{sas-DN9oTxKY.js → sas-Ue0rHUIk.js} +1 -1
- package/dist/client/assets/{scss-BK_sp3z2.js → scss-BJJ7_L6c.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-CKAW2eyx.js → sequenceDiagram-3UESZ5HK-DW0em0D_.js} +1 -1
- package/dist/client/assets/{shellscript-CvNpOu0J.js → shellscript-C6LkZs1u.js} +1 -1
- package/dist/client/assets/{shellsession-8-yj2cJj.js → shellsession-CkZu1e84.js} +1 -1
- package/dist/client/assets/{soy-C6Q9atPF.js → soy-CDaZV57J.js} +1 -1
- package/dist/client/assets/{sql-CBL3BuHb.js → sql-CLfMGH4x.js} +1 -1
- package/dist/client/assets/{src-D-VUWIK5.js → src-C27zxuNO.js} +1 -1
- package/dist/client/assets/{stata-B2Q7Vqzu.js → stata-B0kNMHc9.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-BGJiv0qO.js → stateDiagram-AJRCARHV-CrO_D3m4.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-C9KDGD7R.js +1 -0
- package/dist/client/assets/{surrealql-C-A2N8vk.js → surrealql-D9os_yZO.js} +1 -1
- package/dist/client/assets/{svelte-VAut_-uy.js → svelte-2SxVToeO.js} +1 -1
- package/dist/client/assets/{templ-mUetM--K.js → templ-DzmZB67T.js} +1 -1
- package/dist/client/assets/{tex-BT53mWGp.js → tex-BMPk3nHk.js} +1 -1
- package/dist/client/assets/{timeline-definition-PNZ67QCA-lVwMt1rk.js → timeline-definition-PNZ67QCA-C9FBevHv.js} +1 -1
- package/dist/client/assets/{ts-tags-VkIOkgLN.js → ts-tags-CG14Bplc.js} +1 -1
- package/dist/client/assets/{tsx-D_aaGHTf.js → tsx-D6NK461A.js} +1 -1
- package/dist/client/assets/{twig-CufwqKkk.js → twig-Agh0j5sD.js} +1 -1
- package/dist/client/assets/{typescript-osFD2CEV.js → typescript-_AkeziZ2.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-_K9NtpA5.js → vennDiagram-CIIHVFJN-2H9HfhhR.js} +1 -1
- package/dist/client/assets/{vue-Bub1rXmL.js → vue-C1z3QGG9.js} +1 -1
- package/dist/client/assets/{vue-html-CN3x2pYg.js → vue-html-C1RMzLZk.js} +1 -1
- package/dist/client/assets/{vue-vine-C0csYkGm.js → vue-vine-oOixA6ge.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-B2jTMfra.js → wardleyDiagram-YWT4CUSO-BJxrQhTf.js} +1 -1
- package/dist/client/assets/{xml-my6OjeGb.js → xml-okuDZ7vq.js} +1 -1
- package/dist/client/assets/{xsl-Bx0YVn26.js → xsl-S_n3XrKb.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-DfZ4YYXU.js → xychartDiagram-2RQKCTM6-BGdee7KG.js} +1 -1
- package/dist/client/assets/{yaml-DanwOypk.js → yaml-BoX-kqX1.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/{doctor-q6oA64hm.mjs → doctor-CmP0u7-d.mjs} +1 -1
- package/dist/github-BjZZcSKV.mjs +2 -0
- package/dist/{github-HfIlIS-J.mjs → github-oCZx5aim.mjs} +270 -29
- package/dist/{mcp-eor39qmD.mjs → mcp-CqxXILYL.mjs} +1 -1
- package/dist/{server-C105rwQw.mjs → server-CczuXSWo.mjs} +164 -11
- package/package.json +3 -3
- package/dist/cli-agent-B4hU6Xay.mjs +0 -499
- package/dist/cli-agent-B_PHd635.mjs +0 -499
- package/dist/cli-agent-BatQgghr.mjs +0 -499
- package/dist/cli-agent-BkkRbKqq.mjs +0 -513
- package/dist/cli-agent-BlMtx1Tx.mjs +0 -736
- package/dist/cli-agent-BwZE05CQ.mjs +0 -499
- package/dist/cli-agent-C4Fb90GL.mjs +0 -728
- package/dist/cli-agent-CKE1Cvor.mjs +0 -513
- package/dist/cli-agent-CLvCYpmH.mjs +0 -499
- package/dist/cli-agent-CX8Fa1Ph.mjs +0 -499
- package/dist/cli-agent-ChALuNbw.mjs +0 -841
- package/dist/cli-agent-KxNAFIPf.mjs +0 -450
- package/dist/cli-agent-SILzesQP.mjs +0 -513
- package/dist/cli-agent-USzLoAit.mjs +0 -499
- package/dist/cli-agent-qBT8clNM.mjs +0 -841
- package/dist/cli-gh-6qiblgj7.mjs +0 -150
- package/dist/cli-gh-BV5az425.mjs +0 -147
- package/dist/cli-gh-Bo6fOHQR.mjs +0 -147
- package/dist/cli-gh-CDGSpndZ.mjs +0 -147
- package/dist/cli-gh-D1LoWJl-.mjs +0 -147
- package/dist/cli-gh-D1sIZ-jX.mjs +0 -147
- package/dist/cli-gh-DROAJlHi.mjs +0 -147
- package/dist/cli-gh-DgqscIkg.mjs +0 -147
- package/dist/cli-gh-DiT8BWwu.mjs +0 -147
- package/dist/cli-gh-KjPnyST6.mjs +0 -150
- package/dist/cli-gh-abs-IJrz.mjs +0 -147
- package/dist/client/assets/channel-CDxgOu-3.js +0 -1
- package/dist/client/assets/chunk-QZHKN3VN-DJCeMpP8.js +0 -1
- package/dist/client/assets/chunk-WU5MYG2G-BbuOkMaH.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-D5oJbiED.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-5MJt5ZxQ.js +0 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-CdUgMghp.js +0 -1
- package/dist/comment-format-CKTt0fzi.mjs +0 -113
- package/dist/comment-format-DG_PAehC.mjs +0 -117
- package/dist/github-C9GLNak7.mjs +0 -2
- package/dist/mcp-7eXATtez.mjs +0 -1334
- package/dist/mcp-B6mCC7D3.mjs +0 -1047
- package/dist/mcp-BBk8AIO4.mjs +0 -1334
- package/dist/mcp-BJxrW9dS.mjs +0 -1334
- package/dist/mcp-BMTZLQuB.mjs +0 -758
- package/dist/mcp-BUF2nEL7.mjs +0 -1036
- package/dist/mcp-BWeWR4yd.mjs +0 -255
- package/dist/mcp-BgZO-iXI.mjs +0 -1047
- package/dist/mcp-BhT5GgYF.mjs +0 -1334
- package/dist/mcp-Bpx76OGU.mjs +0 -945
- package/dist/mcp-BsGdNA88.mjs +0 -1334
- package/dist/mcp-BxBm3d5l.mjs +0 -1047
- package/dist/mcp-C1T7LI0H.mjs +0 -1036
- package/dist/mcp-C4Bjmf9m.mjs +0 -1047
- package/dist/mcp-CFxcdEcJ.mjs +0 -733
- package/dist/mcp-Ca9QAlJ0.mjs +0 -1334
- package/dist/mcp-CphIUJUg.mjs +0 -1047
- package/dist/mcp-CtKRXQRC.mjs +0 -1047
- package/dist/mcp-CwjThGi2.mjs +0 -913
- package/dist/mcp-D4OsB9lt.mjs +0 -1047
- package/dist/mcp-DJ2batvt.mjs +0 -913
- package/dist/mcp-DNZQvKKF.mjs +0 -298
- package/dist/mcp-DO4zfNZX.mjs +0 -298
- package/dist/mcp-D_LGvBTw.mjs +0 -1047
- package/dist/mcp-Ds_lPX_o.mjs +0 -913
- package/dist/plan-format-B6nbAw_c.mjs +0 -132
- package/dist/plan-format-Bi46QS0m.mjs +0 -132
- package/dist/plan-format-DVnF8xrq.mjs +0 -126
- package/dist/plan-format-f62JWFI-.mjs +0 -117
- package/dist/plan-format-mSDtsPcC.mjs +0 -132
- package/dist/review-export-BoV0884M.mjs +0 -66
- package/dist/review-export-CKTI5Od_.mjs +0 -66
- package/dist/server-95UE5bgh.mjs +0 -3367
- package/dist/server-AisDKkpW.mjs +0 -3227
- package/dist/server-B0cS95Lf.mjs +0 -3488
- package/dist/server-BUsRhL1B.mjs +0 -3283
- package/dist/server-BZBFquG8.mjs +0 -3875
- package/dist/server-Bc2m9R5-.mjs +0 -3263
- package/dist/server-Bj-6KlK5.mjs +0 -3367
- package/dist/server-Bmt57wV5.mjs +0 -3875
- package/dist/server-Bpf84Il0.mjs +0 -3367
- package/dist/server-C15WRRnS.mjs +0 -3740
- package/dist/server-CYSpLbdA.mjs +0 -3360
- package/dist/server-ChT2DCaR.mjs +0 -3701
- package/dist/server-D0Ni8PKP.mjs +0 -3252
- package/dist/server-D2xEbakj.mjs +0 -3874
- package/dist/server-DJxysGxV.mjs +0 -3701
- package/dist/server-Dov7jbV3.mjs +0 -3367
- package/dist/server-TOElOuNP.mjs +0 -3258
- package/dist/server-eQ2E4Axo.mjs +0 -3367
- package/dist/server-lock-C_wPtEsH.mjs +0 -909
- package/dist/server-lock-Cbu3qHdu.mjs +0 -924
- package/dist/server-lock-D32inEn9.mjs +0 -924
- package/dist/server-lock-D73NKKbn.mjs +0 -842
- package/dist/server-lock-DaSx7DjW.mjs +0 -1049
- package/dist/server-lock-Ddcat0HF.mjs +0 -851
- package/dist/server-lock-Dj9fG9md.mjs +0 -838
- package/dist/server-lock-Dq_1CJaF.mjs +0 -1047
- package/dist/server-lock-Ujbcgq28.mjs +0 -954
- package/dist/update-check-CXeSZANo.mjs +0 -129
- package/dist/update-check-DAPFCqpF.mjs +0 -129
package/dist/cli-gh-DiT8BWwu.mjs
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { i as readServerLock, r as isLockAlive, s as formatComments } from "./server-lock-C_wPtEsH.mjs";
|
|
2
|
-
import { parseArgs } from "node:util";
|
|
3
|
-
//#region src/cli-gh.ts
|
|
4
|
-
/**
|
|
5
|
-
* `diffing gh …` — the headless / port-agnostic surface for the PR review
|
|
6
|
-
* mode. Mirrors the shape of the local review CLI: each subcommand resolves
|
|
7
|
-
* the running server from the per-repo lockfile and talks to it via
|
|
8
|
-
* localhost HTTP. No port ever leaves the lockfile.
|
|
9
|
-
*
|
|
10
|
-
* diffing gh pr-fetch <ref> → GET /api/gh/pr/init then dump
|
|
11
|
-
* diffing gh pr-review → POST /api/gh/submit (current session)
|
|
12
|
-
* diffing gh pr-list-comments → GET /api/gh/pr-session/comments (XML)
|
|
13
|
-
* diffing gh status → GET /api/gh/session (one-line summary)
|
|
14
|
-
*/
|
|
15
|
-
const EXIT_OK = 0;
|
|
16
|
-
const EXIT_NO_SERVER = 3;
|
|
17
|
-
const EXIT_NOT_FOUND = 4;
|
|
18
|
-
const EXIT_USAGE = 5;
|
|
19
|
-
function baseUrl() {
|
|
20
|
-
const lock = readServerLock();
|
|
21
|
-
if (!lock || !isLockAlive(lock)) {
|
|
22
|
-
console.error("No diffing server running for this repo. Start one with `diffing \"gh pr <ref>\"`.");
|
|
23
|
-
process.exit(EXIT_NO_SERVER);
|
|
24
|
-
}
|
|
25
|
-
return `http://${lock.host === "0.0.0.0" || lock.host === "::" ? "127.0.0.1" : lock.host}:${lock.port}`;
|
|
26
|
-
}
|
|
27
|
-
async function ghStatus() {
|
|
28
|
-
const base = baseUrl();
|
|
29
|
-
const res = await fetch(`${base}/api/gh/session`);
|
|
30
|
-
if (res.status === 404) {
|
|
31
|
-
console.error("No active PR session. Start one with `diffing \"gh pr <ref>\"`.");
|
|
32
|
-
return EXIT_NOT_FOUND;
|
|
33
|
-
}
|
|
34
|
-
const s = await res.json();
|
|
35
|
-
const submittedLine = s.submittedAt ? `submitted at ${new Date(s.submittedAt).toISOString()} → ${s.submittedReviewUrl ?? "(no url)"}` : "not submitted yet";
|
|
36
|
-
console.log(`${s.owner}/${s.repo}#${s.pullNumber} ${s.title}`);
|
|
37
|
-
console.log(` url: ${s.url}`);
|
|
38
|
-
console.log(` author: ${s.author?.login ?? "(unknown)"}`);
|
|
39
|
-
console.log(` +${s.additions} -${s.deletions} (${s.changedFiles} files)`);
|
|
40
|
-
console.log(` head: ${s.headSha.slice(0, 7)}`);
|
|
41
|
-
console.log(` base: ${s.baseSha.slice(0, 7)}`);
|
|
42
|
-
console.log(` existing: ${s.existingComments?.length ?? 0} review comments (read-only context)`);
|
|
43
|
-
console.log(` new: ${s.comments?.length ?? 0} comments in this session`);
|
|
44
|
-
console.log(` status: ${submittedLine}`);
|
|
45
|
-
return EXIT_OK;
|
|
46
|
-
}
|
|
47
|
-
async function ghPrFetch(args) {
|
|
48
|
-
const { values, positionals } = parseArgs({
|
|
49
|
-
args,
|
|
50
|
-
options: { json: { type: "boolean" } },
|
|
51
|
-
allowPositionals: true
|
|
52
|
-
});
|
|
53
|
-
const ref = positionals[0];
|
|
54
|
-
if (!ref) {
|
|
55
|
-
console.error("Usage: diffing gh pr-fetch <ref> [--json]");
|
|
56
|
-
return EXIT_USAGE;
|
|
57
|
-
}
|
|
58
|
-
const base = baseUrl();
|
|
59
|
-
const res = await fetch(`${base}/api/gh/pr/init`, {
|
|
60
|
-
method: "POST",
|
|
61
|
-
headers: { "Content-Type": "application/json" },
|
|
62
|
-
body: JSON.stringify({ ref })
|
|
63
|
-
});
|
|
64
|
-
if (!res.ok) {
|
|
65
|
-
const err = await res.json().catch(() => ({}));
|
|
66
|
-
console.error(`Failed to fetch PR: ${err.error ?? res.statusText}`);
|
|
67
|
-
return 1;
|
|
68
|
-
}
|
|
69
|
-
const result = await res.json();
|
|
70
|
-
if (values.json) process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
71
|
-
else console.log(`${result.owner}/${result.repo}#${result.pullNumber} ${result.url}`);
|
|
72
|
-
return EXIT_OK;
|
|
73
|
-
}
|
|
74
|
-
async function ghPrListComments() {
|
|
75
|
-
const base = baseUrl();
|
|
76
|
-
const res = await fetch(`${base}/api/gh/pr-session/comments`);
|
|
77
|
-
if (res.status === 404) {
|
|
78
|
-
console.error("No active PR session.");
|
|
79
|
-
return EXIT_NOT_FOUND;
|
|
80
|
-
}
|
|
81
|
-
const comments = await res.json();
|
|
82
|
-
process.stdout.write(formatComments(comments) + "\n");
|
|
83
|
-
return EXIT_OK;
|
|
84
|
-
}
|
|
85
|
-
async function ghPrReview(args) {
|
|
86
|
-
const { values } = parseArgs({
|
|
87
|
-
args,
|
|
88
|
-
options: {
|
|
89
|
-
decision: {
|
|
90
|
-
type: "string",
|
|
91
|
-
short: "d"
|
|
92
|
-
},
|
|
93
|
-
body: {
|
|
94
|
-
type: "string",
|
|
95
|
-
short: "b"
|
|
96
|
-
},
|
|
97
|
-
"dry-run": { type: "boolean" },
|
|
98
|
-
json: { type: "boolean" }
|
|
99
|
-
},
|
|
100
|
-
allowPositionals: false
|
|
101
|
-
});
|
|
102
|
-
const decision = values.decision;
|
|
103
|
-
if (decision !== "approve" && decision !== "comment" && decision !== "request-changes") {
|
|
104
|
-
console.error("Usage: diffing gh pr-review --decision <approve|comment|request-changes> [--body <text>] [--dry-run]");
|
|
105
|
-
return EXIT_USAGE;
|
|
106
|
-
}
|
|
107
|
-
const base = baseUrl();
|
|
108
|
-
const payload = {
|
|
109
|
-
decision,
|
|
110
|
-
body: values.body ?? "",
|
|
111
|
-
dryRun: values["dry-run"] === true
|
|
112
|
-
};
|
|
113
|
-
const res = await fetch(`${base}/api/gh/submit`, {
|
|
114
|
-
method: "POST",
|
|
115
|
-
headers: { "Content-Type": "application/json" },
|
|
116
|
-
body: JSON.stringify(payload)
|
|
117
|
-
});
|
|
118
|
-
if (!res.ok) {
|
|
119
|
-
const err = await res.json().catch(() => ({}));
|
|
120
|
-
console.error(`Failed to submit review: ${err.error ?? res.statusText}`);
|
|
121
|
-
return 1;
|
|
122
|
-
}
|
|
123
|
-
const result = await res.json();
|
|
124
|
-
if (values.json) process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
125
|
-
else if (result.ok) if (result.dryRun) console.log("Dry run OK — payload would have been accepted by GitHub.");
|
|
126
|
-
else console.log(`Review submitted via ${result.authSource}: ${result.reviewUrl ?? `#${result.reviewId}`}`);
|
|
127
|
-
else {
|
|
128
|
-
console.error(`Submit failed (auth=${result.authSource}): ${result.error ?? "unknown error"}`);
|
|
129
|
-
return 1;
|
|
130
|
-
}
|
|
131
|
-
return EXIT_OK;
|
|
132
|
-
}
|
|
133
|
-
async function runGhSubcommand(args) {
|
|
134
|
-
const action = args[0];
|
|
135
|
-
const rest = args.slice(1);
|
|
136
|
-
switch (action) {
|
|
137
|
-
case "status": return ghStatus();
|
|
138
|
-
case "pr-fetch": return ghPrFetch(rest);
|
|
139
|
-
case "pr-review": return ghPrReview(rest);
|
|
140
|
-
case "pr-list-comments": return ghPrListComments();
|
|
141
|
-
default:
|
|
142
|
-
console.error("Usage: diffing gh <status|pr-fetch|pr-review|pr-list-comments> [...]");
|
|
143
|
-
return EXIT_USAGE;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
//#endregion
|
|
147
|
-
export { runGhSubcommand };
|
package/dist/cli-gh-KjPnyST6.mjs
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { t as formatComments } from "./comment-format-DG_PAehC.mjs";
|
|
2
|
-
import { i as readServerLock, r as isLockAlive } from "./server-lock-uqSdDYeR.mjs";
|
|
3
|
-
import { parseArgs } from "node:util";
|
|
4
|
-
//#region src/cli-gh.ts
|
|
5
|
-
/**
|
|
6
|
-
* `diffing gh …` — the headless / port-agnostic surface for the PR review
|
|
7
|
-
* mode. Mirrors the shape of the local review CLI: each subcommand resolves
|
|
8
|
-
* the running server from the per-repo lockfile and talks to it via
|
|
9
|
-
* localhost HTTP. No port ever leaves the lockfile.
|
|
10
|
-
*
|
|
11
|
-
* diffing gh pr-fetch <ref> → GET /api/gh/pr/init then dump
|
|
12
|
-
* diffing gh pr-review → POST /api/gh/submit (current session)
|
|
13
|
-
* diffing gh pr-list-comments → GET /api/gh/pr-session/comments (XML)
|
|
14
|
-
* diffing gh status → GET /api/gh/session (one-line summary)
|
|
15
|
-
*/
|
|
16
|
-
const EXIT_OK = 0;
|
|
17
|
-
const EXIT_NO_SERVER = 3;
|
|
18
|
-
const EXIT_NOT_FOUND = 4;
|
|
19
|
-
const EXIT_USAGE = 5;
|
|
20
|
-
function baseUrl() {
|
|
21
|
-
const lock = readServerLock();
|
|
22
|
-
if (!lock || !isLockAlive(lock)) {
|
|
23
|
-
console.error("No diffing server running for this repo. Start one with `diffing \"gh pr <ref>\"`.");
|
|
24
|
-
process.exit(EXIT_NO_SERVER);
|
|
25
|
-
}
|
|
26
|
-
return `http://${lock.host === "0.0.0.0" || lock.host === "::" ? "127.0.0.1" : lock.host}:${lock.port}`;
|
|
27
|
-
}
|
|
28
|
-
async function ghStatus() {
|
|
29
|
-
const base = baseUrl();
|
|
30
|
-
const res = await fetch(`${base}/api/gh/session`);
|
|
31
|
-
if (res.status === 404) {
|
|
32
|
-
console.error("No active PR session. Start one with `diffing \"gh pr <ref>\"`.");
|
|
33
|
-
return EXIT_NOT_FOUND;
|
|
34
|
-
}
|
|
35
|
-
const s = await res.json();
|
|
36
|
-
const submittedLine = s.submittedAt ? `submitted at ${new Date(s.submittedAt).toISOString()} → ${s.submittedReviewUrl ?? "(no url)"}` : "not submitted yet";
|
|
37
|
-
console.log(`${s.owner}/${s.repo}#${s.pullNumber} ${s.title}`);
|
|
38
|
-
console.log(` url: ${s.url}`);
|
|
39
|
-
console.log(` author: ${s.author?.login ?? "(unknown)"}`);
|
|
40
|
-
console.log(` +${s.additions} -${s.deletions} (${s.changedFiles} files)`);
|
|
41
|
-
console.log(` head: ${s.headSha.slice(0, 7)}`);
|
|
42
|
-
console.log(` base: ${s.baseSha.slice(0, 7)}`);
|
|
43
|
-
console.log(` existing: ${s.existingComments?.length ?? 0} review comments (read-only context)`);
|
|
44
|
-
console.log(` new: ${s.comments?.length ?? 0} comments in this session`);
|
|
45
|
-
console.log(` status: ${submittedLine}`);
|
|
46
|
-
return EXIT_OK;
|
|
47
|
-
}
|
|
48
|
-
async function ghPrFetch(args) {
|
|
49
|
-
const { values, positionals } = parseArgs({
|
|
50
|
-
args,
|
|
51
|
-
options: { json: { type: "boolean" } },
|
|
52
|
-
allowPositionals: true
|
|
53
|
-
});
|
|
54
|
-
const ref = positionals[0];
|
|
55
|
-
if (!ref) {
|
|
56
|
-
console.error("Usage: diffing gh pr-fetch <ref> [--json]");
|
|
57
|
-
return EXIT_USAGE;
|
|
58
|
-
}
|
|
59
|
-
const base = baseUrl();
|
|
60
|
-
let res = await fetch(`${base}/api/gh/pr/refresh`, { method: "POST" });
|
|
61
|
-
if (res.status === 404) res = await fetch(`${base}/api/gh/pr/init`, {
|
|
62
|
-
method: "POST",
|
|
63
|
-
headers: { "Content-Type": "application/json" },
|
|
64
|
-
body: JSON.stringify({ ref })
|
|
65
|
-
});
|
|
66
|
-
if (!res.ok) {
|
|
67
|
-
const err = await res.json().catch(() => ({}));
|
|
68
|
-
console.error(`Failed to fetch PR: ${err.error ?? res.statusText}`);
|
|
69
|
-
return 1;
|
|
70
|
-
}
|
|
71
|
-
const sessionRes = await fetch(`${base}/api/gh/session`);
|
|
72
|
-
const result = sessionRes.ok ? await sessionRes.json() : await res.json();
|
|
73
|
-
if (values.json) process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
74
|
-
else console.log(`${result.owner}/${result.repo}#${result.pullNumber} ${result.url}`);
|
|
75
|
-
return EXIT_OK;
|
|
76
|
-
}
|
|
77
|
-
async function ghPrListComments() {
|
|
78
|
-
const base = baseUrl();
|
|
79
|
-
const res = await fetch(`${base}/api/gh/pr-session/comments`);
|
|
80
|
-
if (res.status === 404) {
|
|
81
|
-
console.error("No active PR session.");
|
|
82
|
-
return EXIT_NOT_FOUND;
|
|
83
|
-
}
|
|
84
|
-
const comments = await res.json();
|
|
85
|
-
process.stdout.write(formatComments(comments) + "\n");
|
|
86
|
-
return EXIT_OK;
|
|
87
|
-
}
|
|
88
|
-
async function ghPrReview(args) {
|
|
89
|
-
const { values } = parseArgs({
|
|
90
|
-
args,
|
|
91
|
-
options: {
|
|
92
|
-
decision: {
|
|
93
|
-
type: "string",
|
|
94
|
-
short: "d"
|
|
95
|
-
},
|
|
96
|
-
body: {
|
|
97
|
-
type: "string",
|
|
98
|
-
short: "b"
|
|
99
|
-
},
|
|
100
|
-
"dry-run": { type: "boolean" },
|
|
101
|
-
json: { type: "boolean" }
|
|
102
|
-
},
|
|
103
|
-
allowPositionals: false
|
|
104
|
-
});
|
|
105
|
-
const decision = values.decision;
|
|
106
|
-
if (decision !== "approve" && decision !== "comment" && decision !== "request-changes" && decision !== "draft") {
|
|
107
|
-
console.error("Usage: diffing gh pr-review --decision <approve|comment|request-changes|draft> [--body <text>] [--dry-run]");
|
|
108
|
-
return EXIT_USAGE;
|
|
109
|
-
}
|
|
110
|
-
const base = baseUrl();
|
|
111
|
-
const payload = {
|
|
112
|
-
decision,
|
|
113
|
-
body: values.body ?? "",
|
|
114
|
-
dryRun: values["dry-run"] === true
|
|
115
|
-
};
|
|
116
|
-
const res = await fetch(`${base}/api/gh/submit`, {
|
|
117
|
-
method: "POST",
|
|
118
|
-
headers: { "Content-Type": "application/json" },
|
|
119
|
-
body: JSON.stringify(payload)
|
|
120
|
-
});
|
|
121
|
-
if (!res.ok) {
|
|
122
|
-
const err = await res.json().catch(() => ({}));
|
|
123
|
-
console.error(`Failed to submit review: ${err.error ?? res.statusText}`);
|
|
124
|
-
return 1;
|
|
125
|
-
}
|
|
126
|
-
const result = await res.json();
|
|
127
|
-
if (values.json) process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
128
|
-
else if (result.ok) if (result.dryRun) console.log("Dry run OK — payload would have been accepted by GitHub.");
|
|
129
|
-
else console.log(`Review submitted via ${result.authSource}: ${result.reviewUrl ?? `#${result.reviewId}`}`);
|
|
130
|
-
else {
|
|
131
|
-
console.error(`Submit failed (auth=${result.authSource}): ${result.error ?? "unknown error"}`);
|
|
132
|
-
return 1;
|
|
133
|
-
}
|
|
134
|
-
return EXIT_OK;
|
|
135
|
-
}
|
|
136
|
-
async function runGhSubcommand(args) {
|
|
137
|
-
const action = args[0];
|
|
138
|
-
const rest = args.slice(1);
|
|
139
|
-
switch (action) {
|
|
140
|
-
case "status": return ghStatus();
|
|
141
|
-
case "pr-fetch": return ghPrFetch(rest);
|
|
142
|
-
case "pr-review": return ghPrReview(rest);
|
|
143
|
-
case "pr-list-comments": return ghPrListComments();
|
|
144
|
-
default:
|
|
145
|
-
console.error("Usage: diffing gh <status|pr-fetch|pr-review|pr-list-comments> [...]");
|
|
146
|
-
return EXIT_USAGE;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
//#endregion
|
|
150
|
-
export { runGhSubcommand };
|
package/dist/cli-gh-abs-IJrz.mjs
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { a as formatComments, n as readServerLock, t as isLockAlive } from "./server-lock-D73NKKbn.mjs";
|
|
2
|
-
import { parseArgs } from "node:util";
|
|
3
|
-
//#region src/cli-gh.ts
|
|
4
|
-
/**
|
|
5
|
-
* `diffing gh …` — the headless / port-agnostic surface for the PR review
|
|
6
|
-
* mode. Mirrors the shape of the local review CLI: each subcommand resolves
|
|
7
|
-
* the running server from the per-repo lockfile and talks to it via
|
|
8
|
-
* localhost HTTP. No port ever leaves the lockfile.
|
|
9
|
-
*
|
|
10
|
-
* diffing gh pr-fetch <ref> → GET /api/gh/pr/init then dump
|
|
11
|
-
* diffing gh pr-review → POST /api/gh/submit (current session)
|
|
12
|
-
* diffing gh pr-list-comments → GET /api/gh/pr-session/comments (XML)
|
|
13
|
-
* diffing gh status → GET /api/gh/session (one-line summary)
|
|
14
|
-
*/
|
|
15
|
-
const EXIT_OK = 0;
|
|
16
|
-
const EXIT_NO_SERVER = 3;
|
|
17
|
-
const EXIT_NOT_FOUND = 4;
|
|
18
|
-
const EXIT_USAGE = 5;
|
|
19
|
-
function baseUrl() {
|
|
20
|
-
const lock = readServerLock();
|
|
21
|
-
if (!lock || !isLockAlive(lock)) {
|
|
22
|
-
console.error("No diffing server running for this repo. Start one with `diffing \"gh pr <ref>\"`.");
|
|
23
|
-
process.exit(EXIT_NO_SERVER);
|
|
24
|
-
}
|
|
25
|
-
return `http://${lock.host === "0.0.0.0" || lock.host === "::" ? "127.0.0.1" : lock.host}:${lock.port}`;
|
|
26
|
-
}
|
|
27
|
-
async function ghStatus() {
|
|
28
|
-
const base = baseUrl();
|
|
29
|
-
const res = await fetch(`${base}/api/gh/session`);
|
|
30
|
-
if (res.status === 404) {
|
|
31
|
-
console.error("No active PR session. Start one with `diffing \"gh pr <ref>\"`.");
|
|
32
|
-
return EXIT_NOT_FOUND;
|
|
33
|
-
}
|
|
34
|
-
const s = await res.json();
|
|
35
|
-
const submittedLine = s.submittedAt ? `submitted at ${new Date(s.submittedAt).toISOString()} → ${s.submittedReviewUrl ?? "(no url)"}` : "not submitted yet";
|
|
36
|
-
console.log(`${s.owner}/${s.repo}#${s.pullNumber} ${s.title}`);
|
|
37
|
-
console.log(` url: ${s.url}`);
|
|
38
|
-
console.log(` author: ${s.author?.login ?? "(unknown)"}`);
|
|
39
|
-
console.log(` +${s.additions} -${s.deletions} (${s.changedFiles} files)`);
|
|
40
|
-
console.log(` head: ${s.headSha.slice(0, 7)}`);
|
|
41
|
-
console.log(` base: ${s.baseSha.slice(0, 7)}`);
|
|
42
|
-
console.log(` existing: ${s.existingComments?.length ?? 0} review comments (read-only context)`);
|
|
43
|
-
console.log(` new: ${s.comments?.length ?? 0} comments in this session`);
|
|
44
|
-
console.log(` status: ${submittedLine}`);
|
|
45
|
-
return EXIT_OK;
|
|
46
|
-
}
|
|
47
|
-
async function ghPrFetch(args) {
|
|
48
|
-
const { values, positionals } = parseArgs({
|
|
49
|
-
args,
|
|
50
|
-
options: { json: { type: "boolean" } },
|
|
51
|
-
allowPositionals: true
|
|
52
|
-
});
|
|
53
|
-
const ref = positionals[0];
|
|
54
|
-
if (!ref) {
|
|
55
|
-
console.error("Usage: diffing gh pr-fetch <ref> [--json]");
|
|
56
|
-
return EXIT_USAGE;
|
|
57
|
-
}
|
|
58
|
-
const base = baseUrl();
|
|
59
|
-
const res = await fetch(`${base}/api/gh/pr/init`, {
|
|
60
|
-
method: "POST",
|
|
61
|
-
headers: { "Content-Type": "application/json" },
|
|
62
|
-
body: JSON.stringify({ ref })
|
|
63
|
-
});
|
|
64
|
-
if (!res.ok) {
|
|
65
|
-
const err = await res.json().catch(() => ({}));
|
|
66
|
-
console.error(`Failed to fetch PR: ${err.error ?? res.statusText}`);
|
|
67
|
-
return 1;
|
|
68
|
-
}
|
|
69
|
-
const result = await res.json();
|
|
70
|
-
if (values.json) process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
71
|
-
else console.log(`${result.owner}/${result.repo}#${result.pullNumber} ${result.url}`);
|
|
72
|
-
return EXIT_OK;
|
|
73
|
-
}
|
|
74
|
-
async function ghPrListComments() {
|
|
75
|
-
const base = baseUrl();
|
|
76
|
-
const res = await fetch(`${base}/api/gh/pr-session/comments`);
|
|
77
|
-
if (res.status === 404) {
|
|
78
|
-
console.error("No active PR session.");
|
|
79
|
-
return EXIT_NOT_FOUND;
|
|
80
|
-
}
|
|
81
|
-
const comments = await res.json();
|
|
82
|
-
process.stdout.write(formatComments(comments) + "\n");
|
|
83
|
-
return EXIT_OK;
|
|
84
|
-
}
|
|
85
|
-
async function ghPrReview(args) {
|
|
86
|
-
const { values } = parseArgs({
|
|
87
|
-
args,
|
|
88
|
-
options: {
|
|
89
|
-
decision: {
|
|
90
|
-
type: "string",
|
|
91
|
-
short: "d"
|
|
92
|
-
},
|
|
93
|
-
body: {
|
|
94
|
-
type: "string",
|
|
95
|
-
short: "b"
|
|
96
|
-
},
|
|
97
|
-
"dry-run": { type: "boolean" },
|
|
98
|
-
json: { type: "boolean" }
|
|
99
|
-
},
|
|
100
|
-
allowPositionals: false
|
|
101
|
-
});
|
|
102
|
-
const decision = values.decision;
|
|
103
|
-
if (decision !== "approve" && decision !== "comment" && decision !== "request-changes") {
|
|
104
|
-
console.error("Usage: diffing gh pr-review --decision <approve|comment|request-changes> [--body <text>] [--dry-run]");
|
|
105
|
-
return EXIT_USAGE;
|
|
106
|
-
}
|
|
107
|
-
const base = baseUrl();
|
|
108
|
-
const payload = {
|
|
109
|
-
decision,
|
|
110
|
-
body: values.body ?? "",
|
|
111
|
-
dryRun: values["dry-run"] === true
|
|
112
|
-
};
|
|
113
|
-
const res = await fetch(`${base}/api/gh/submit`, {
|
|
114
|
-
method: "POST",
|
|
115
|
-
headers: { "Content-Type": "application/json" },
|
|
116
|
-
body: JSON.stringify(payload)
|
|
117
|
-
});
|
|
118
|
-
if (!res.ok) {
|
|
119
|
-
const err = await res.json().catch(() => ({}));
|
|
120
|
-
console.error(`Failed to submit review: ${err.error ?? res.statusText}`);
|
|
121
|
-
return 1;
|
|
122
|
-
}
|
|
123
|
-
const result = await res.json();
|
|
124
|
-
if (values.json) process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
125
|
-
else if (result.ok) if (result.dryRun) console.log("Dry run OK — payload would have been accepted by GitHub.");
|
|
126
|
-
else console.log(`Review submitted via ${result.authSource}: ${result.reviewUrl ?? `#${result.reviewId}`}`);
|
|
127
|
-
else {
|
|
128
|
-
console.error(`Submit failed (auth=${result.authSource}): ${result.error ?? "unknown error"}`);
|
|
129
|
-
return 1;
|
|
130
|
-
}
|
|
131
|
-
return EXIT_OK;
|
|
132
|
-
}
|
|
133
|
-
async function runGhSubcommand(args) {
|
|
134
|
-
const action = args[0];
|
|
135
|
-
const rest = args.slice(1);
|
|
136
|
-
switch (action) {
|
|
137
|
-
case "status": return ghStatus();
|
|
138
|
-
case "pr-fetch": return ghPrFetch(rest);
|
|
139
|
-
case "pr-review": return ghPrReview(rest);
|
|
140
|
-
case "pr-list-comments": return ghPrListComments();
|
|
141
|
-
default:
|
|
142
|
-
console.error("Usage: diffing gh <status|pr-fetch|pr-review|pr-list-comments> [...]");
|
|
143
|
-
return EXIT_USAGE;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
//#endregion
|
|
147
|
-
export { runGhSubcommand };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{at as e,ot as t}from"./chunk-CSCIHK7Q-CkGMXntp.js";var n=(n,r)=>t.lang.round(e.parse(n)[r]);export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./src-D-VUWIK5.js";var t=class{constructor(e){this.init=e,this.records=this.init()}static{e(this,`ImperativeState`)}reset(){this.records=this.init()}};export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e,p as t}from"./src-D-VUWIK5.js";import{x as n}from"./chunk-CSCIHK7Q-CkGMXntp.js";var r=e(e=>{let{securityLevel:r}=n(),i=t(`body`);return r===`sandbox`&&(i=t((t(`#i${e}`).node()?.contentDocument??document).body)),i.select(`#${e}`)},`selectSvgElement`);export{r as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./src-D-VUWIK5.js";import"./chunk-CSCIHK7Q-CkGMXntp.js";import"./chunk-5ZQYHXKU-DSbYPAe7.js";import"./chunk-O5CBEL6O-EyUrGY3l.js";import"./chunk-FMBD7UC4-BM8lrLBo.js";import"./chunk-BSJP7CBP-BgVLnkxr.js";import"./chunk-L5ZTLDWV-VL17ikXM.js";import"./chunk-ND2GUHAM-CjZGwhKA.js";import"./chunk-55IACEB6-CceUgh8N.js";import"./chunk-2J33WTMH-DekjZXNj.js";import"./chunk-NZK2D7GU-DGsLjESY.js";import"./chunk-3OPIFGDE-BtROpcL8.js";import"./chunk-KSCS5N6A-Bm2pjMQg.js";import"./chunk-LZXEDZCA-B629g67M.js";import{i as t,n,r,t as i}from"./chunk-727SXJPM-DVzUJa-9.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./src-D-VUWIK5.js";import"./chunk-CSCIHK7Q-CkGMXntp.js";import"./chunk-5ZQYHXKU-DSbYPAe7.js";import"./chunk-O5CBEL6O-EyUrGY3l.js";import"./chunk-FMBD7UC4-BM8lrLBo.js";import"./chunk-BSJP7CBP-BgVLnkxr.js";import"./chunk-L5ZTLDWV-VL17ikXM.js";import"./chunk-ND2GUHAM-CjZGwhKA.js";import"./chunk-55IACEB6-CceUgh8N.js";import"./chunk-2J33WTMH-DekjZXNj.js";import"./chunk-NZK2D7GU-DGsLjESY.js";import"./chunk-3OPIFGDE-BtROpcL8.js";import"./chunk-KSCS5N6A-Bm2pjMQg.js";import"./chunk-LZXEDZCA-B629g67M.js";import{i as t,n,r,t as i}from"./chunk-727SXJPM-DVzUJa-9.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./src-D-VUWIK5.js";import"./chunk-CSCIHK7Q-CkGMXntp.js";import"./chunk-5ZQYHXKU-DSbYPAe7.js";import"./chunk-O5CBEL6O-EyUrGY3l.js";import"./chunk-BSJP7CBP-BgVLnkxr.js";import"./chunk-L5ZTLDWV-VL17ikXM.js";import"./chunk-55IACEB6-CceUgh8N.js";import"./chunk-2J33WTMH-DekjZXNj.js";import"./chunk-NZK2D7GU-DGsLjESY.js";import"./chunk-3OPIFGDE-BtROpcL8.js";import"./chunk-KSCS5N6A-Bm2pjMQg.js";import"./chunk-LZXEDZCA-B629g67M.js";import{i as t,n,r,t as i}from"./chunk-AQP2D5EJ-6n3Z_IFa.js";var a={parser:n,get db(){return new i(2)},renderer:r,styles:t,init:e(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
//#region src/lib/comment-format.ts
|
|
2
|
-
/** Plain-language guidance the agent should act on, derived from the verdict. */
|
|
3
|
-
function reviewDecisionSummary(decision) {
|
|
4
|
-
switch (decision) {
|
|
5
|
-
case "approved": return "The reviewer APPROVED these changes. Address any open comments below, then proceed — the overall direction is good.";
|
|
6
|
-
case "changes-requested": return "The reviewer REQUESTED EDITS. Address every open comment below and apply the requested changes before considering this review done.";
|
|
7
|
-
case "rejected": return "The reviewer REJECTED these changes. Do NOT keep building on this approach; reconsider it in light of the comments below before continuing.";
|
|
8
|
-
case "comment-only": return "The reviewer chose COMMENT-ONLY mode. You MUST NOT edit any files. Only reply to the comments below — answer questions, provide clarification, or discuss. The general comment (if any) is your prompt for the chat.";
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Render review comments as the `<code-review-comments>` XML envelope used to
|
|
13
|
-
* hand a review to an AI agent. Shared by the UI clipboard button
|
|
14
|
-
* (`useComments.formatAllComments`), the server's `/api/review/send` handoff,
|
|
15
|
-
* and the `diffing` CLI/MCP so every channel emits byte-identical output.
|
|
16
|
-
*
|
|
17
|
-
* A review may carry a headline `decision` (approve / request edits / reject / comment-only)
|
|
18
|
-
* and/or an overall comment, so the envelope is emitted even with zero inline
|
|
19
|
-
* comments — letting a reviewer submit a verdict without annotating any line.
|
|
20
|
-
*/
|
|
21
|
-
function formatComments(comments, generalComment, decision, mode) {
|
|
22
|
-
const trimmedGeneral = generalComment?.trim();
|
|
23
|
-
if (comments.length === 0 && !decision && !trimmedGeneral) return "";
|
|
24
|
-
const grouped = /* @__PURE__ */ new Map();
|
|
25
|
-
for (const comment of comments) {
|
|
26
|
-
const list = grouped.get(comment.filePath) ?? [];
|
|
27
|
-
list.push(comment);
|
|
28
|
-
grouped.set(comment.filePath, list);
|
|
29
|
-
}
|
|
30
|
-
const sortedFilePaths = [...grouped.keys()].sort((a, b) => a.localeCompare(b));
|
|
31
|
-
const modeAttr = mode && mode !== "standard" ? ` mode="${mode}"` : "";
|
|
32
|
-
const lines = [];
|
|
33
|
-
lines.push(decision ? `<code-review-comments decision="${decision}"${modeAttr}>` : `<code-review-comments${modeAttr}>`);
|
|
34
|
-
lines.push(" <instructions>");
|
|
35
|
-
lines.push(" You are an AI coding assistant. You are receiving a structured list of code review comments to address in the repository.");
|
|
36
|
-
if (mode === "comment-only") lines.push(" ⚠️ COMMENT-ONLY MODE: You MUST NOT edit any files. Your only task is to reply to the comments below — answer questions, provide clarification, or discuss. The general comment (if present) is your prompt for this chat.");
|
|
37
|
-
else lines.push(" For each file, review the inline comments and apply the changes requested.");
|
|
38
|
-
if (decision) {
|
|
39
|
-
lines.push(" - The \"decision\" attribute on the root element is the reviewer's headline verdict: \"approved\", \"changes-requested\", \"rejected\", or \"comment-only\".");
|
|
40
|
-
lines.push(" - <decision-summary> tells you, in plain language, what to do next based on that verdict.");
|
|
41
|
-
}
|
|
42
|
-
if (mode) lines.push(` - The "mode" attribute on the root element controls your behavior: "standard" (apply edits) or "comment-only" (reply only, no edits).`);
|
|
43
|
-
lines.push(" - Target lines are specified by the \"line\" attribute (e.g. line=\"10\" or line=\"10-15\").");
|
|
44
|
-
lines.push(" - \"side\" indicates whether the comment is on \"additions\" (added/modified lines) or \"deletions\" (deleted/old lines).");
|
|
45
|
-
lines.push(" - \"status\" indicates whether the comment is \"open\" or \"resolved\". Only address comments with status=\"open\".");
|
|
46
|
-
lines.push(" - The <code> block contains the specific code context at the reviewed lines, prefixed with \"+\" or \"-\".");
|
|
47
|
-
lines.push(" - The <body> tag contains the review feedback or request.");
|
|
48
|
-
lines.push(" - If developers have replied to the comment, their discussion is captured under the <replies> element.");
|
|
49
|
-
lines.push(" - The comment \"id\" attribute can be used to reference or update the comment via API if available.");
|
|
50
|
-
lines.push("");
|
|
51
|
-
lines.push(" HOW TO REPLY OR ASK FOR CLARIFICATION:");
|
|
52
|
-
lines.push(" If you need to ask for clarification, explain what you did, or reply to any comment:");
|
|
53
|
-
lines.push("");
|
|
54
|
-
lines.push(" Option A: Via the diffing CLI or MCP (Preferred — port-agnostic, no copy-paste)");
|
|
55
|
-
lines.push(" diffing reply <comment-id> --body \"Your response\" --model \"<your-model-name>\"");
|
|
56
|
-
lines.push(" diffing resolve <comment-id>");
|
|
57
|
-
lines.push(" (Or the equivalent MCP tools: reply_to_comment, resolve_comment.)");
|
|
58
|
-
lines.push("");
|
|
59
|
-
lines.push(" Option B: Via the local HTTP API (if you know the running port)");
|
|
60
|
-
lines.push(" POST http://localhost:<port>/api/comments/<comment-id>/replies");
|
|
61
|
-
lines.push(" Payload: { \"body\": \"Your response or clarification request here\", \"model\": \"<your-model-name>\" }");
|
|
62
|
-
lines.push(" PUT http://localhost:<port>/api/comments/<comment-id> Payload: { \"status\": \"resolved\" }");
|
|
63
|
-
lines.push("");
|
|
64
|
-
lines.push(" Option C: Via Text Response (Offline / Chat Copy-Paste)");
|
|
65
|
-
lines.push(" If you do not have local API access, output your comments/replies inside a structured XML block at the end of your response:");
|
|
66
|
-
lines.push(" <comment-replies>");
|
|
67
|
-
lines.push(" <reply to=\"<comment-id>\" model=\"<your-model-name>\"><![CDATA[Your reply or clarification request here]]></reply>");
|
|
68
|
-
lines.push(" </comment-replies>");
|
|
69
|
-
lines.push(" </instructions>");
|
|
70
|
-
if (decision) lines.push(` <decision-summary><![CDATA[${reviewDecisionSummary(decision)}]]></decision-summary>`);
|
|
71
|
-
if (trimmedGeneral) {
|
|
72
|
-
lines.push(" <general-comment>");
|
|
73
|
-
lines.push(` <![CDATA[${trimmedGeneral}]]>`);
|
|
74
|
-
lines.push(" </general-comment>");
|
|
75
|
-
}
|
|
76
|
-
for (const filePath of sortedFilePaths) {
|
|
77
|
-
const fileComments = grouped.get(filePath);
|
|
78
|
-
lines.push(` <file path="${filePath}">`);
|
|
79
|
-
for (const comment of fileComments) {
|
|
80
|
-
const lineAttr = comment.lineNumber === 0 ? "file" : comment.startLineNumber && comment.startLineNumber !== comment.lineNumber ? `${comment.startLineNumber}-${comment.lineNumber}` : `${comment.lineNumber}`;
|
|
81
|
-
const isoDate = new Date(comment.createdAt).toISOString();
|
|
82
|
-
const severityAttr = comment.severity && comment.severity !== "none" ? ` severity="${comment.severity}"` : "";
|
|
83
|
-
lines.push(` <comment id="${comment.id}" line="${lineAttr}" side="${comment.side}" status="${comment.status}"${severityAttr} created-at="${isoDate}">`);
|
|
84
|
-
if (comment.lineNumber !== 0) {
|
|
85
|
-
const prefix = comment.side === "additions" ? "+" : "-";
|
|
86
|
-
const isMultiLine = comment.lineContent && comment.lineContent.includes("\n");
|
|
87
|
-
let codeVal = "";
|
|
88
|
-
if (isMultiLine) codeVal = `\n${comment.lineContent.split("\n").map((l) => `${prefix} ${l}`).join("\n")}\n`;
|
|
89
|
-
else codeVal = `${prefix} ${comment.lineContent}`;
|
|
90
|
-
lines.push(` <code><![CDATA[${codeVal}]]></code>`);
|
|
91
|
-
}
|
|
92
|
-
lines.push(` <body><![CDATA[${comment.body}]]></body>`);
|
|
93
|
-
if (comment.replies && comment.replies.length > 0) {
|
|
94
|
-
lines.push(" <replies>");
|
|
95
|
-
for (const reply of comment.replies) {
|
|
96
|
-
const replyIsoDate = new Date(reply.createdAt).toISOString();
|
|
97
|
-
const roleAttr = reply.role ? ` role="${reply.role}"` : " role=\"agent\"";
|
|
98
|
-
const modelAttr = reply.model ? ` model="${reply.model}"` : "";
|
|
99
|
-
lines.push(` <reply id="${reply.id}" created-at="${replyIsoDate}"${roleAttr}${modelAttr}>`);
|
|
100
|
-
lines.push(` <![CDATA[${reply.body}]]>`);
|
|
101
|
-
lines.push(" </reply>");
|
|
102
|
-
}
|
|
103
|
-
lines.push(" </replies>");
|
|
104
|
-
}
|
|
105
|
-
lines.push(" </comment>");
|
|
106
|
-
}
|
|
107
|
-
lines.push(" </file>");
|
|
108
|
-
}
|
|
109
|
-
lines.push("</code-review-comments>");
|
|
110
|
-
return lines.join("\n");
|
|
111
|
-
}
|
|
112
|
-
//#endregion
|
|
113
|
-
export { reviewDecisionSummary as n, formatComments as t };
|