diffing 0.4.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -7
- package/dist/cli-agent-BatQgghr.mjs +499 -0
- package/dist/cli-agent-BwZE05CQ.mjs +499 -0
- package/dist/cli-agent-CKE1Cvor.mjs +513 -0
- package/dist/cli-agent-CLvCYpmH.mjs +499 -0
- package/dist/cli-agent-CX8Fa1Ph.mjs +499 -0
- package/dist/cli-agent-SILzesQP.mjs +513 -0
- package/dist/cli-agent-USzLoAit.mjs +499 -0
- package/dist/cli-gh-BV5az425.mjs +147 -0
- package/dist/cli-gh-Bo6fOHQR.mjs +147 -0
- package/dist/cli-gh-D1LoWJl-.mjs +147 -0
- package/dist/cli-gh-D1sIZ-jX.mjs +147 -0
- package/dist/cli-gh-DROAJlHi.mjs +147 -0
- package/dist/cli-gh-DiT8BWwu.mjs +147 -0
- package/dist/cli.mjs +97 -3381
- package/dist/client/assets/{angular-html-DIKVmS-w.js → angular-html-CDZ9SrQX.js} +1 -1
- package/dist/client/assets/{angular-ts-DK13mfBQ.js → angular-ts-CNMbVia5.js} +1 -1
- package/dist/client/assets/{apl-NVZUxqwo.js → apl-BqNxQgsm.js} +1 -1
- package/dist/client/assets/{arc-kijUuucY.js → arc-BrMp-_55.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-Dup-CzBS.js → architectureDiagram-3BPJPVTR-BIZJkdXp.js} +1 -1
- package/dist/client/assets/{astro-RPdCumat.js → astro-r55-Uy0e.js} +1 -1
- package/dist/client/assets/{blade-_ubz_KMD.js → blade-F8SZw05t.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-Cl0-G1MY.js → blockDiagram-GPEHLZMM-DlzFca7z.js} +1 -1
- package/dist/client/assets/{c-IEKcSTtW.js → c-DMmuyoXv.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-C3T6FV-K.js → c4Diagram-AAUBKEIU-BqJFYdcn.js} +1 -1
- package/dist/client/assets/channel-DVxVbqCb.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-B5MFxFjX.js → chunk-2J33WTMH-CRN3t_Zt.js} +1 -1
- package/dist/client/assets/{chunk-3OPIFGDE-DWxCOZgI.js → chunk-3OPIFGDE-Bb8pGWXE.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-DWdovlBC.js → chunk-4BX2VUAB--s6olL4E.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CFSaZijP.js → chunk-55IACEB6-C-iaNYfB.js} +1 -1
- package/dist/client/assets/{chunk-5ZQYHXKU-BH_cLkIj.js → chunk-5ZQYHXKU-Bvzi1CUr.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-BbsJC2PT.js → chunk-727SXJPM-CjoyjZeg.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-tFAP6fC1.js → chunk-AQP2D5EJ-BJJOqjwm.js} +1 -1
- package/dist/client/assets/{chunk-BSJP7CBP-BGuhsdwy.js → chunk-BSJP7CBP-A0UL_0xV.js} +1 -1
- package/dist/client/assets/{chunk-CSCIHK7Q-DXSJWhsY.js → chunk-CSCIHK7Q-DW570vKT.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-6vBylg_I.js → chunk-FMBD7UC4-CzNJ-Iy-.js} +1 -1
- package/dist/client/assets/{chunk-KSCS5N6A-C7iBFsUg.js → chunk-KSCS5N6A-DCbYTAZg.js} +1 -1
- package/dist/client/assets/{chunk-L5ZTLDWV-CRU3nvaK.js → chunk-L5ZTLDWV-BMdyyjjc.js} +1 -1
- package/dist/client/assets/{chunk-LZXEDZCA-6ppA-_4h.js → chunk-LZXEDZCA-BENQV-I4.js} +2 -2
- package/dist/client/assets/{chunk-ND2GUHAM-D1cTmgHe.js → chunk-ND2GUHAM-C1y3WzOx.js} +1 -1
- package/dist/client/assets/{chunk-NZK2D7GU-CpUab6v7.js → chunk-NZK2D7GU-BkBT6O_M.js} +1 -1
- package/dist/client/assets/{chunk-O5CBEL6O-cDxBycWe.js → chunk-O5CBEL6O-jdz4J9aA.js} +1 -1
- package/dist/client/assets/chunk-QZHKN3VN-mumapnEV.js +1 -0
- package/dist/client/assets/chunk-WU5MYG2G-Bsqs8ZKl.js +1 -0
- package/dist/client/assets/{chunk-XPW4576I-CI9GEEdy.js → chunk-XPW4576I-Bf8OI8wY.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-CKaaw3uU.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BxwzeqDR.js +1 -0
- package/dist/client/assets/{cobol-BVhbHJgp.js → cobol-BanHX5pe.js} +1 -1
- package/dist/client/assets/{coffee-gY6asS_B.js → coffee-CACo0LEP.js} +1 -1
- package/dist/client/assets/{cose-bilkent-S5V4N54A-BOs7zxZa.js → cose-bilkent-S5V4N54A-7mNCsL0j.js} +1 -1
- package/dist/client/assets/{cpp-el3R6exS.js → cpp-4Kwtmkwn.js} +1 -1
- package/dist/client/assets/{crystal-D2_0btIo.js → crystal-D1kAaPsE.js} +1 -1
- package/dist/client/assets/{css-DtPe7dg4.js → css-CCMEBYEn.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-CR_0cBOz.js → dagre-BM42HDAG-BTEYZegB.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-D9um0wp2.js → diagram-2AECGRRQ-Cj_XZNTN.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-Dx0TEfBJ.js → diagram-5GNKFQAL-DVTFfYPd.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-DjBHOuUD.js → diagram-KO2AKTUF-C7BU5Ncp.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-CK2MO5Gx.js → diagram-LMA3HP47-06rwT7mb.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-CANQancN.js → diagram-OG6HWLK6-COEuKA9B.js} +1 -1
- package/dist/client/assets/{dist-DGlwcsQQ.js → dist-C-G1vI6B.js} +1 -1
- package/dist/client/assets/{edge-Ch_PYBsB.js → edge-BV-WbkC9.js} +1 -1
- package/dist/client/assets/{elixir-DEJrJATq.js → elixir-C6pMvu6H.js} +1 -1
- package/dist/client/assets/{elm-Brlko4-d.js → elm-D8LnUrCG.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-Dnfrs6yk.js → erDiagram-TEJ5UH35-SPxPVg85.js} +1 -1
- package/dist/client/assets/{erb-DQPphNua.js → erb-C6ADBE0Q.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-BNMdFtjG.js → flowDiagram-I6XJVG4X-DyEhCtUv.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-X-fPXz_A.js → ganttDiagram-6RSMTGT7-fj-zRHIk.js} +1 -1
- package/dist/client/assets/{git-rebase-BpS915SI.js → git-rebase-BhYZ4R3x.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CRN_dRXM.js → gitGraphDiagram-PVQCEYII-CpUJh4CR.js} +1 -1
- package/dist/client/assets/{glimmer-js-DZDngVuD.js → glimmer-js-D2CVO-NF.js} +1 -1
- package/dist/client/assets/{glimmer-ts-DKNjJvyp.js → glimmer-ts-BjYisPeM.js} +1 -1
- package/dist/client/assets/{glsl-C-Y1tHoU.js → glsl-qP0lyfIY.js} +1 -1
- package/dist/client/assets/{graphql-DYVBNazO.js → graphql-BZE_lBur.js} +1 -1
- package/dist/client/assets/{hack-DewKAtLe.js → hack-C6KM9SLG.js} +1 -1
- package/dist/client/assets/{haml-CIA_AeXu.js → haml-BT3JKqL8.js} +1 -1
- package/dist/client/assets/{handlebars-Bade6JXX.js → handlebars-SHKYyRQ6.js} +1 -1
- package/dist/client/assets/{html-C4hhbuGp.js → html-CAc9HUGa.js} +1 -1
- package/dist/client/assets/{html-derivative-BXfztBtv.js → html-derivative-Cu6n_YRN.js} +1 -1
- package/dist/client/assets/{http-Cq90-CTl.js → http-o21PuOy8.js} +1 -1
- package/dist/client/assets/{hurl-DklQHYoa.js → hurl-ClrxMWQi.js} +1 -1
- package/dist/client/assets/{index-j9gqGQit.js → index-BPI8nJUS.js} +98 -98
- package/dist/client/assets/index-F_YfUisJ.css +1 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-Ht-AcvP4.js → infoDiagram-5YYISTIA-DDYGwUUs.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-k_l70iFb.js → ishikawaDiagram-YF4QCWOH-Benmqbm6.js} +1 -1
- package/dist/client/assets/{java-BMUwLm1h.js → java-Bmlmy6B3.js} +1 -1
- package/dist/client/assets/{javascript-B8nPCUVp.js → javascript-Bdrc0lyI.js} +1 -1
- package/dist/client/assets/{jinja-CkxiRcB3.js → jinja-DBkct7nV.js} +1 -1
- package/dist/client/assets/{jison-CFnN5uQs.js → jison-Tb1xkShc.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-C98PUC9Y.js → journeyDiagram-JHISSGLW-CCkv1GnE.js} +1 -1
- package/dist/client/assets/{json-B7HNnjIx.js → json-DwLxGyui.js} +1 -1
- package/dist/client/assets/{jsx-BfVPuW3i.js → jsx-DWSSTqEB.js} +1 -1
- package/dist/client/assets/{julia-Bj0ETGjT.js → julia-LUN3XhcV.js} +1 -1
- package/dist/client/assets/{just-CqIe_c9k.js → just-C6LrD5tm.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-BE-uvH7w.js → kanban-definition-UN3LZRKU-CQSBf6Ys.js} +1 -1
- package/dist/client/assets/{latex-Cvy8E64e.js → latex-aaU-rirg.js} +1 -1
- package/dist/client/assets/{line-BpooNUgm.js → line-DG7hZYkR.js} +1 -1
- package/dist/client/assets/{linear-CM6ZoyCp.js → linear-A5s-ps1u.js} +1 -1
- package/dist/client/assets/{liquid-x09l8QqE.js → liquid-BhVOoUfG.js} +1 -1
- package/dist/client/assets/{lua-BSlDLjt5.js → lua-BTF9vmdD.js} +1 -1
- package/dist/client/assets/{marko-CoNMQlTn.js → marko-DlwBrpd_.js} +1 -1
- package/dist/client/assets/{mdc-BSzVESPu.js → mdc-H8mdhEag.js} +1 -1
- package/dist/client/assets/{mermaid-parser.core-BDXJMxHu.js → mermaid-parser.core-BKvEMhB3.js} +1 -1
- package/dist/client/assets/{mermaid.core-Dw-_vXTc.js → mermaid.core-BaDGp29W.js} +3 -3
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-BTxGT8rM.js → mindmap-definition-RKZ34NQL-BCrf7cJv.js} +1 -1
- package/dist/client/assets/{nginx-CBhJTj0i.js → nginx-DoaqXoFJ.js} +1 -1
- package/dist/client/assets/{nim-CtHbOBlO.js → nim-DqoAP4Np.js} +1 -1
- package/dist/client/assets/{perl-DLMzG3tu.js → perl-D1ou0isN.js} +1 -1
- package/dist/client/assets/{php-KomVR3Hz.js → php-DL6kQj3i.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-BBUObAJW.js → pieDiagram-4H26LBE5-CF0X4ECG.js} +1 -1
- package/dist/client/assets/{pug-T4SRLx8P.js → pug-Bn3xDPVT.js} +1 -1
- package/dist/client/assets/{qml-DJdSRUmU.js → qml-CaA5S6hT.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-B7vvauZv.js → quadrantDiagram-W4KKPZXB-A76pK4Cy.js} +1 -1
- package/dist/client/assets/{r-CwuTg9lK.js → r-DuUvfJBZ.js} +1 -1
- package/dist/client/assets/{razor-Ch4dgsGY.js → razor-DOv4xAWl.js} +1 -1
- package/dist/client/assets/{regexp-D2GTwJE0.js → regexp-DXetztjB.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-DpcNiR3Y.js → requirementDiagram-4Y6WPE33-Cju--fB8.js} +1 -1
- package/dist/client/assets/{rst-D78f0DyR.js → rst-CDn5EUee.js} +1 -1
- package/dist/client/assets/{ruby-BUcw6ITs.js → ruby-40qcnJX-.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-ChzSQD2O.js → sankeyDiagram-5OEKKPKP-CvkQY1O-.js} +1 -1
- package/dist/client/assets/{sas-DoT2JDsj.js → sas-D3a9oRtu.js} +1 -1
- package/dist/client/assets/{scss-B6G_d-6b.js → scss-BJ8ZKq49.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-CzkdL8s7.js → sequenceDiagram-3UESZ5HK-DKU8lZlC.js} +1 -1
- package/dist/client/assets/{shellscript-DI252Bga.js → shellscript-yTgK8aYT.js} +1 -1
- package/dist/client/assets/{shellsession-BuO_s8FQ.js → shellsession-DrVaQSNg.js} +1 -1
- package/dist/client/assets/{soy-DZTZJTEE.js → soy-BasCadaZ.js} +1 -1
- package/dist/client/assets/{sql-C4isoJr_.js → sql-COJH6ALP.js} +1 -1
- package/dist/client/assets/{src-BMvz5HE8.js → src-BokBJ4oL.js} +1 -1
- package/dist/client/assets/{stata-Dhu6qITh.js → stata-Ble9lhMp.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-DvYcrdap.js → stateDiagram-AJRCARHV-9IU9PT8A.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-Ce46Lf8G.js +1 -0
- package/dist/client/assets/{surrealql-CSDpq5j3.js → surrealql-BZ5cQJLk.js} +1 -1
- package/dist/client/assets/{svelte-C4ITAvxr.js → svelte-CLa9l6VK.js} +1 -1
- package/dist/client/assets/{templ-BTgKA9-7.js → templ-DVKkE2Tb.js} +1 -1
- package/dist/client/assets/{tex-Dg4N9ndP.js → tex-BET3iISl.js} +1 -1
- package/dist/client/assets/{timeline-definition-PNZ67QCA-Djt5Lwk2.js → timeline-definition-PNZ67QCA-CkkYIhNz.js} +1 -1
- package/dist/client/assets/{ts-tags-BufYnYos.js → ts-tags-D5fPAs5W.js} +1 -1
- package/dist/client/assets/{tsx-DmkFP0sw.js → tsx-CfNzz9iB.js} +1 -1
- package/dist/client/assets/{twig-BJv_IWYK.js → twig-_Ml9CBGK.js} +1 -1
- package/dist/client/assets/{typescript-BKp05Qme.js → typescript-DMiV0dhX.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-DDVADTIa.js → vennDiagram-CIIHVFJN-HUv6L4Dt.js} +1 -1
- package/dist/client/assets/{vue-BsHXCXzh.js → vue-BcbmWIQt.js} +1 -1
- package/dist/client/assets/{vue-html-CCsH-lmo.js → vue-html-CcUgk6WA.js} +1 -1
- package/dist/client/assets/{vue-vine-B5P1JXxo.js → vue-vine-BbIBT3jy.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-yeVKWvtX.js → wardleyDiagram-YWT4CUSO-avUfWkuC.js} +1 -1
- package/dist/client/assets/{xml-CFkhYff0.js → xml-9mtlBTUG.js} +1 -1
- package/dist/client/assets/{xsl-Dc5XRzm6.js → xsl-Dm8BN5j0.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6--8Ik-9v0.js → xychartDiagram-2RQKCTM6-BSZPOH7-.js} +1 -1
- package/dist/client/assets/{yaml-BTCCxCxi.js → yaml-Ccz1qKlL.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/mcp-B6mCC7D3.mjs +1047 -0
- package/dist/mcp-BMTZLQuB.mjs +758 -0
- package/dist/mcp-BUF2nEL7.mjs +1036 -0
- package/dist/mcp-Bpx76OGU.mjs +945 -0
- package/dist/mcp-C1T7LI0H.mjs +1036 -0
- package/dist/mcp-C4Bjmf9m.mjs +1047 -0
- package/dist/mcp-CFxcdEcJ.mjs +733 -0
- package/dist/mcp-CwjThGi2.mjs +913 -0
- package/dist/mcp-D4OsB9lt.mjs +1047 -0
- package/dist/mcp-DJ2batvt.mjs +913 -0
- package/dist/mcp-D_LGvBTw.mjs +1047 -0
- package/dist/mcp-Ds_lPX_o.mjs +913 -0
- package/dist/plan-format-B6nbAw_c.mjs +132 -0
- package/dist/server-95UE5bgh.mjs +3367 -0
- package/dist/server-B0cS95Lf.mjs +3488 -0
- package/dist/server-Bj-6KlK5.mjs +3367 -0
- package/dist/server-Bpf84Il0.mjs +3367 -0
- package/dist/server-CYSpLbdA.mjs +3360 -0
- package/dist/server-ChT2DCaR.mjs +3701 -0
- package/dist/server-DJxysGxV.mjs +3701 -0
- package/dist/server-Dov7jbV3.mjs +3367 -0
- package/dist/server-eQ2E4Axo.mjs +3367 -0
- package/dist/server-lock-C_wPtEsH.mjs +909 -0
- package/dist/server-lock-Cbu3qHdu.mjs +924 -0
- package/dist/server-lock-D32inEn9.mjs +924 -0
- package/dist/server-lock-Ddcat0HF.mjs +851 -0
- package/dist/server-lock-Dq_1CJaF.mjs +1047 -0
- package/dist/server-lock-Ujbcgq28.mjs +954 -0
- package/dist/update-check-CXeSZANo.mjs +129 -0
- package/package.json +3 -2
- package/dist/client/assets/channel-CpWSvbvQ.js +0 -1
- package/dist/client/assets/chunk-QZHKN3VN-HhMIifwl.js +0 -1
- package/dist/client/assets/chunk-WU5MYG2G-CvIzXEms.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-DFu-dNVy.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-D7Xcgo6q.js +0 -1
- package/dist/client/assets/index-CMyunQt6.css +0 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D5igY81I.js +0 -1
|
@@ -0,0 +1,147 @@
|
|
|
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 };
|