diffing 0.2.0 → 0.3.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 +185 -4
- package/dist/{cli-agent-Vbs-ePHv.mjs → cli-agent-KxNAFIPf.mjs} +8 -1
- package/dist/cli-gh-CDGSpndZ.mjs +147 -0
- package/dist/cli.mjs +1594 -68
- package/dist/client/assets/{angular-html-fdYbuxHF.js → angular-html-DbbrJavS.js} +1 -1
- package/dist/client/assets/{angular-ts-D3iFqR-R.js → angular-ts-tCrxb1ht.js} +1 -1
- package/dist/client/assets/{apl-MnBV-iQN.js → apl-DawII0w7.js} +1 -1
- package/dist/client/assets/arc-DIRV7ZXr.js +1 -0
- package/dist/client/assets/architecture-7EHR7CIX-BM5HxebS.js +1 -0
- package/dist/client/assets/architectureDiagram-3BPJPVTR-3IoH78OV.js +36 -0
- package/dist/client/assets/array-CkF66D10.js +1 -0
- package/dist/client/assets/{astro-BrpK01E7.js → astro-DIyGTFXc.js} +1 -1
- package/dist/client/assets/{blade-CGmyBuwD.js → blade-CuF4Z1mP.js} +1 -1
- package/dist/client/assets/blockDiagram-GPEHLZMM-CFxPndC0.js +132 -0
- package/dist/client/assets/{bsl-Dx5tFn3i.js → bsl-BrHd4RA2.js} +1 -1
- package/dist/client/assets/{c-xQnwtG9Y.js → c-DUrjo9T5.js} +1 -1
- package/dist/client/assets/c4Diagram-AAUBKEIU-CGMBnkiv.js +10 -0
- package/dist/client/assets/{cairo-wCCQTdA9.js → cairo-BDZ6TRZS.js} +1 -1
- package/dist/client/assets/channel-D5AdjEWX.js +1 -0
- package/dist/client/assets/chunk-2J33WTMH-CJMBLaXy.js +1 -0
- package/dist/client/assets/chunk-3OPIFGDE-C9HQWVLl.js +62 -0
- package/dist/client/assets/chunk-4BX2VUAB-Qqg72GQd.js +1 -0
- package/dist/client/assets/chunk-4EGX6M5U-C70lfA2p.js +1 -0
- package/dist/client/assets/chunk-55IACEB6-DZF8brTR.js +1 -0
- package/dist/client/assets/chunk-5DO6E6H7-PprNUwlI.js +1 -0
- package/dist/client/assets/chunk-5ZQYHXKU-BflVFV5z.js +2 -0
- package/dist/client/assets/chunk-727SXJPM-COn6BRLY.js +206 -0
- package/dist/client/assets/chunk-AQP2D5EJ-CNOjODUR.js +231 -0
- package/dist/client/assets/chunk-BR22UD5L-D8XCYMy9.js +1 -0
- package/dist/client/assets/chunk-BSJP7CBP-PQX4ASCI.js +1 -0
- package/dist/client/assets/chunk-CSCIHK7Q-BfmUvL-L.js +124 -0
- package/dist/client/assets/chunk-FHYWG6QK-CcHPrHH1.js +1 -0
- package/dist/client/assets/chunk-FMBD7UC4-DorfwLnQ.js +15 -0
- package/dist/client/assets/chunk-KSCS5N6A-CXY93mId.js +10 -0
- package/dist/client/assets/chunk-L5ZTLDWV-BjMrSVmH.js +1 -0
- package/dist/client/assets/chunk-LZXEDZCA-q8jj6Nyb.js +2 -0
- package/dist/client/assets/chunk-MPE355IW-Bf9yHfDS.js +1 -0
- package/dist/client/assets/chunk-MZUSXYTE-CnUIUKI4.js +1 -0
- package/dist/client/assets/chunk-N66VUXT2-ahAf9GvV.js +1 -0
- package/dist/client/assets/chunk-ND2GUHAM-BRRQbYHl.js +1 -0
- package/dist/client/assets/chunk-NNHCCRGN-DHF3V75i.js +159 -0
- package/dist/client/assets/chunk-NZK2D7GU-Czt1qHrO.js +1 -0
- package/dist/client/assets/chunk-O5CBEL6O-DEopURak.js +70 -0
- package/dist/client/assets/chunk-PUPMXCY4-D0KKIhut.js +1 -0
- package/dist/client/assets/chunk-QZHKN3VN-BE917fn9.js +1 -0
- package/dist/client/assets/chunk-UIBZB4QT-TYsZ_c8u.js +1 -0
- package/dist/client/assets/chunk-WCWK7LTN-Dj8SfnMU.js +1 -0
- package/dist/client/assets/chunk-WU5MYG2G-DdoWnPla.js +1 -0
- package/dist/client/assets/chunk-XPW4576I-DocCoKUT.js +32 -0
- package/dist/client/assets/classDiagram-4FO5ZUOK-CxjhKO7s.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CSScAAQ4.js +1 -0
- package/dist/client/assets/{cobol-ypVzOIQu.js → cobol-BylylR2x.js} +1 -1
- package/dist/client/assets/{coffee-CrtE1uj2.js → coffee-DCKfk8xx.js} +1 -1
- package/dist/client/assets/cose-bilkent-S5V4N54A-Cm0BD5CS.js +1 -0
- package/dist/client/assets/{cpp-DLd4XEKA.js → cpp-CfKCIrGK.js} +1 -1
- package/dist/client/assets/{crystal-CJYvpLt_.js → crystal-v-9RIu3l.js} +1 -1
- package/dist/client/assets/{css-DrX2B9os.js → css-XjlXeGmZ.js} +1 -1
- package/dist/client/assets/cytoscape.esm-B7MQoI9k.js +321 -0
- package/dist/client/assets/dagre-BM42HDAG-kqgFUaF1.js +4 -0
- package/dist/client/assets/dagre-DAhKikc0.js +1 -0
- package/dist/client/assets/defaultLocale-B_TxGd0k.js +1 -0
- package/dist/client/assets/diagram-2AECGRRQ-B3hBvGUc.js +43 -0
- package/dist/client/assets/diagram-5GNKFQAL-r8zU8C-Y.js +10 -0
- package/dist/client/assets/diagram-KO2AKTUF-CDWD5zkZ.js +3 -0
- package/dist/client/assets/diagram-LMA3HP47-CRRfS6RD.js +24 -0
- package/dist/client/assets/diagram-OG6HWLK6-ChBS6E-K.js +24 -0
- package/dist/client/assets/dist-DUTeKbN7.js +1 -0
- package/dist/client/assets/{edge-BsQYk9OW.js → edge-Cwh953i8.js} +1 -1
- package/dist/client/assets/{elixir-DU_VfGYR.js → elixir-C4MgLzTj.js} +1 -1
- package/dist/client/assets/{elm-W4eOLEDv.js → elm-CFBu8r7i.js} +1 -1
- package/dist/client/assets/erDiagram-TEJ5UH35-_03Fb9RH.js +85 -0
- package/dist/client/assets/{erb-D9FdIJ2e.js → erb-CrCna7R1.js} +1 -1
- package/dist/client/assets/{erlang-CtK0kQ6z.js → erlang-cuhwpmsu.js} +1 -1
- package/dist/client/assets/eventmodeling-FCH6USID-hlXE2E34.js +1 -0
- package/dist/client/assets/flowDiagram-I6XJVG4X-D9pSaH_8.js +162 -0
- package/dist/client/assets/{fortran-fixed-form-DBM4e0_k.js → fortran-fixed-form-DWr0EnJn.js} +1 -1
- package/dist/client/assets/{fsharp-CmzzGQLe.js → fsharp-CQ5iYSPA.js} +1 -1
- package/dist/client/assets/ganttDiagram-6RSMTGT7-DKBfXY9D.js +292 -0
- package/dist/client/assets/{gdresource-B_wbPqHd.js → gdresource-CN-lsNu5.js} +1 -1
- package/dist/client/assets/{git-commit-1z4D6NzL.js → git-commit-6e79eN7Q.js} +1 -1
- package/dist/client/assets/{git-rebase-BtPCXjbS.js → git-rebase-CExLk2dD.js} +1 -1
- package/dist/client/assets/gitGraph-WXDBUCRP-D_3ZhTam.js +1 -0
- package/dist/client/assets/gitGraphDiagram-PVQCEYII-BPQ2kpJA.js +106 -0
- package/dist/client/assets/{glimmer-js-BVfUGMUb.js → glimmer-js-wjBSKaMu.js} +1 -1
- package/dist/client/assets/{glimmer-ts-BZEaHDZL.js → glimmer-ts-CyjMXDgZ.js} +1 -1
- package/dist/client/assets/{glsl-CSiNDuwt.js → glsl-CWOoN8or.js} +1 -1
- package/dist/client/assets/graphlib-DBdw4opr.js +1 -0
- package/dist/client/assets/{graphql-Crf08Rhb.js → graphql-DI5CB58U.js} +1 -1
- package/dist/client/assets/{hack-DUiQuO20.js → hack-Ct_Cm7Pr.js} +1 -1
- package/dist/client/assets/{haml-BtvVTDRG.js → haml-DzAjli8d.js} +1 -1
- package/dist/client/assets/{handlebars-Bu_cdZA_.js → handlebars-BfJB0RYx.js} +1 -1
- package/dist/client/assets/{html-C4cun3zD.js → html-CK8auhK8.js} +1 -1
- package/dist/client/assets/{html-derivative-CQnD80KV.js → html-derivative-B7VntYnF.js} +1 -1
- package/dist/client/assets/{http-DuOJF9Kg.js → http-_Zy71Sv3.js} +1 -1
- package/dist/client/assets/{hurl-DgrdYsYh.js → hurl-VbL4I95z.js} +1 -1
- package/dist/client/assets/{hxml-DC4KwKt2.js → hxml-nwJci6H5.js} +1 -1
- package/dist/client/assets/index-C3p7VKOX.css +1 -0
- package/dist/client/assets/index-Dv9jPmOc.js +3921 -0
- package/dist/client/assets/info-J43DQDTF-CAllC7mK.js +1 -0
- package/dist/client/assets/infoDiagram-5YYISTIA-B5RN-4Ke.js +2 -0
- package/dist/client/assets/init-Ce66tIvf.js +1 -0
- package/dist/client/assets/ishikawaDiagram-YF4QCWOH-DpbSX3Zy.js +70 -0
- package/dist/client/assets/{java-D-vtFiv8.js → java-0CC2DnK9.js} +1 -1
- package/dist/client/assets/{javascript-CFYFXvdN.js → javascript-DKSTP7rz.js} +1 -1
- package/dist/client/assets/{jinja-fZvIg2_s.js → jinja-DoGBHNJ6.js} +1 -1
- package/dist/client/assets/{jison-DEzxLq5g.js → jison-Bnl3lPA2.js} +1 -1
- package/dist/client/assets/journeyDiagram-JHISSGLW-B_X4_qPO.js +139 -0
- package/dist/client/assets/{json-QM4VBqMC.js → json-BQ3Ddj6g.js} +1 -1
- package/dist/client/assets/{jsx-DLzUM_cC.js → jsx-C_aFDuFZ.js} +1 -1
- package/dist/client/assets/{julia-Dwt1SIpn.js → julia-nIjp5yMR.js} +1 -1
- package/dist/client/assets/{just-Dwp-hLcL.js → just-zc4yJ46n.js} +1 -1
- package/dist/client/assets/kanban-definition-UN3LZRKU-BSs4C5DW.js +89 -0
- package/dist/client/assets/katex-eRFNlMh0.js +257 -0
- package/dist/client/assets/{latex-CMF1JViz.js → latex-BszBC80j.js} +1 -1
- package/dist/client/assets/line-C9HWVwPi.js +1 -0
- package/dist/client/assets/linear-DatJfpKY.js +1 -0
- package/dist/client/assets/{liquid-czkpOZWY.js → liquid-DglQpTge.js} +1 -1
- package/dist/client/assets/{lua-DE5PD0Vh.js → lua-BcbliFeR.js} +1 -1
- package/dist/client/assets/{marko-DHeEvZiW.js → marko-BPm4M8j-.js} +1 -1
- package/dist/client/assets/{mdc-B941liUQ.js → mdc-BNUj07UF.js} +1 -1
- package/dist/client/assets/mermaid-parser.core-BVEKlqQr.js +4 -0
- package/dist/client/assets/mermaid.core-DVis21V_.js +9 -0
- package/dist/client/assets/mindmap-definition-RKZ34NQL-Cuo7KewF.js +96 -0
- package/dist/client/assets/{nextflow-CApkvBGW.js → nextflow-DSfydIxt.js} +1 -1
- package/dist/client/assets/{nginx-Pb9t8c-r.js → nginx-CSSJwkd6.js} +1 -1
- package/dist/client/assets/{nim-MMUvW_R1.js → nim-nQAskwTR.js} +1 -1
- package/dist/client/assets/ordinal-5ziJS8mo.js +1 -0
- package/dist/client/assets/packet-YPE3B663-Dy58IAiO.js +1 -0
- package/dist/client/assets/path-g3G46IZB.js +1 -0
- package/dist/client/assets/{perl-DXwXRmuC.js → perl-CtH8xYH6.js} +1 -1
- package/dist/client/assets/{php-D42kv59r.js → php-Dcc3T2PH.js} +1 -1
- package/dist/client/assets/pie-LRSECV5Y-FXFFfdz2.js +1 -0
- package/dist/client/assets/pieDiagram-4H26LBE5-BfpvCRmo.js +30 -0
- package/dist/client/assets/{pug-v0iesski.js → pug-BCLaymlV.js} +1 -1
- package/dist/client/assets/{qml-spxQQ-ei.js → qml-BpKydcOi.js} +1 -1
- package/dist/client/assets/quadrantDiagram-W4KKPZXB-CJY6un0-.js +7 -0
- package/dist/client/assets/{r-CobWTBG9.js → r-BzCB9dpd.js} +1 -1
- package/dist/client/assets/radar-GUYGQ44K-BKTzSQ68.js +1 -0
- package/dist/client/assets/{razor-B-_Ww3MB.js → razor-BWmujqiQ.js} +1 -1
- package/dist/client/assets/{regexp-BJMVs8R0.js → regexp-urCI3YiZ.js} +1 -1
- package/dist/client/assets/requirementDiagram-4Y6WPE33-DIHWguS0.js +84 -0
- package/dist/client/assets/rough.esm-BBrzuQ0N.js +1 -0
- package/dist/client/assets/{rst-BHcaWsY0.js → rst-YTDC9H6u.js} +1 -1
- package/dist/client/assets/{ruby-BCMT6kog.js → ruby-v1IXQAFZ.js} +1 -1
- package/dist/client/assets/sankeyDiagram-5OEKKPKP-DJRPEO_F.js +40 -0
- package/dist/client/assets/{sas-DHfZnd3R.js → sas-KDUG3BSk.js} +1 -1
- package/dist/client/assets/{scss-DjDsJvDO.js → scss-pLIGFpjD.js} +1 -1
- package/dist/client/assets/sequenceDiagram-3UESZ5HK-DX0jVCOU.js +162 -0
- package/dist/client/assets/{shaderlab-DXAhMdPo.js → shaderlab-CbbQwRPF.js} +1 -1
- package/dist/client/assets/{shellscript-B6qaIiU-.js → shellscript-B5ZTyEsK.js} +1 -1
- package/dist/client/assets/{shellsession-ByCeir2b.js → shellsession-DVK3bw4p.js} +1 -1
- package/dist/client/assets/{soy-C6WpnMSF.js → soy-BXgyj2-T.js} +1 -1
- package/dist/client/assets/{sparql-BdcL8cbr.js → sparql-DEoxFJ5d.js} +1 -1
- package/dist/client/assets/{sql-BIvSNLV_.js → sql-G2vZCmw6.js} +1 -1
- package/dist/client/assets/src-D9zkqEEX.js +1 -0
- package/dist/client/assets/{stata-PG9iZ--I.js → stata-C4mEnygx.js} +1 -1
- package/dist/client/assets/stateDiagram-AJRCARHV-AMtMxKgQ.js +1 -0
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-C89CM-_4.js +1 -0
- package/dist/client/assets/{surrealql-CmvCzG09.js → surrealql-Bf8gsTcP.js} +1 -1
- package/dist/client/assets/{svelte-ChumG88s.js → svelte-C1oIyl9t.js} +1 -1
- package/dist/client/assets/{templ-CmzuRY_a.js → templ-PJcWUuTF.js} +1 -1
- package/dist/client/assets/{tex-DL8t-_eJ.js → tex-B7Fnujsi.js} +1 -1
- package/dist/client/assets/timeline-definition-PNZ67QCA-BZJSqcAg.js +120 -0
- package/dist/client/assets/treeView-BLDUP644-DtjHwb6x.js +1 -0
- package/dist/client/assets/treemap-LRROVOQU-GqTXzMFU.js +1 -0
- package/dist/client/assets/{ts-tags-BFfE0Egm.js → ts-tags-CAAsFnUt.js} +1 -1
- package/dist/client/assets/{tsx-C1bFyHcE.js → tsx-DAKyTsWW.js} +1 -1
- package/dist/client/assets/{twig-DkIluZEQ.js → twig-Bd4dieZF.js} +1 -1
- package/dist/client/assets/{typescript-Gc86Bc3j.js → typescript-8myByDGd.js} +1 -1
- package/dist/client/assets/vennDiagram-CIIHVFJN-CMjBZNs2.js +34 -0
- package/dist/client/assets/{vue-C88JmL53.js → vue-fBA2B-QU.js} +1 -1
- package/dist/client/assets/{vue-html-Cry4aksC.js → vue-html-DEZECpsR.js} +1 -1
- package/dist/client/assets/{vue-vine-zlDkA3Ui.js → vue-vine-B_gG939R.js} +1 -1
- package/dist/client/assets/wardley-L42UT6IY-pROVAAhW.js +1 -0
- package/dist/client/assets/wardleyDiagram-YWT4CUSO-qeHmPLyL.js +78 -0
- package/dist/client/assets/{xml-NvwpIFDy.js → xml-DbXNss3s.js} +1 -1
- package/dist/client/assets/{xsl-CDjXvY9w.js → xsl-B7_dgqqc.js} +1 -1
- package/dist/client/assets/xychartDiagram-2RQKCTM6-NN2Et7YL.js +7 -0
- package/dist/client/assets/{yaml-Bh-LPjcH.js → yaml-DSyIApdJ.js} +1 -1
- package/dist/client/index.html +2 -5
- package/dist/{mcp-DKlThflu.mjs → mcp-BWeWR4yd.mjs} +3 -1
- package/dist/plan-format-f62JWFI-.mjs +117 -0
- package/dist/{server-lock-CAdqFSfl.mjs → server-lock-Dj9fG9md.mjs} +279 -132
- package/dist/update-check-DAPFCqpF.mjs +129 -0
- package/package.json +15 -5
- package/dist/cli-agent-Cfuy9fLC.mjs +0 -179
- package/dist/cli-agent-CtNivjQW.mjs +0 -179
- package/dist/cli-agent-DZBvZoXZ.mjs +0 -179
- package/dist/cli-agent-WzJPMH52.mjs +0 -174
- package/dist/cli-agent-uYUoCA4X.mjs +0 -179
- package/dist/client/assets/index-CZZd7iTh.js +0 -3887
- package/dist/client/assets/index-CkC-EvWo.css +0 -1
- package/dist/mcp-BQmH_By-.mjs +0 -119
- package/dist/mcp-CLgzC8_a.mjs +0 -119
- package/dist/mcp-D9E2HQZ9.mjs +0 -119
- package/dist/mcp-LVbLV17O.mjs +0 -119
- package/dist/mcp-nMwTAut3.mjs +0 -119
- package/dist/server-lock-BbiF7u3F.mjs +0 -493
- package/dist/server-lock-Bx9ixiF6.mjs +0 -575
- package/dist/server-lock-DIkImokU.mjs +0 -487
- package/dist/server-lock-DbxpfF3j.mjs +0 -575
- /package/dist/client/assets/{abap-CkQ0tsz-.js → abap-cWYhO34H.js} +0 -0
- /package/dist/client/assets/{actionscript-3-DHm0ZfF4.js → actionscript-3-B80ndJsD.js} +0 -0
- /package/dist/client/assets/{ada-DK_ua92Z.js → ada-C0C0SoYB.js} +0 -0
- /package/dist/client/assets/{andromeeda-D2ccw8v4.js → andromeeda-Ch2kWS7s.js} +0 -0
- /package/dist/client/assets/{apache-DXtpFu7o.js → apache-DBwBm4bB.js} +0 -0
- /package/dist/client/assets/{apex-DlnRRWpl.js → apex-FcV7UxQi.js} +0 -0
- /package/dist/client/assets/{applescript-CShk62ad.js → applescript-hQs8VNpS.js} +0 -0
- /package/dist/client/assets/{ara-CWN-FDkm.js → ara-BOadBOZg.js} +0 -0
- /package/dist/client/assets/{asciidoc-Bg-PM9Vn.js → asciidoc-BsfqiBck.js} +0 -0
- /package/dist/client/assets/{asm-DKOhR24S.js → asm-C2vUqzqz.js} +0 -0
- /package/dist/client/assets/{aurora-x-DpaEirL8.js → aurora-x-BHLqzt7j.js} +0 -0
- /package/dist/client/assets/{awk-3ibKHffv.js → awk-D4e-eeZT.js} +0 -0
- /package/dist/client/assets/{ayu-dark-ursiSH5k.js → ayu-dark-DCotN_ZT.js} +0 -0
- /package/dist/client/assets/{ayu-light-DMjlrKmx.js → ayu-light-CKB6o_im.js} +0 -0
- /package/dist/client/assets/{ayu-mirage-DZEMb75h.js → ayu-mirage-B38lW-C5.js} +0 -0
- /package/dist/client/assets/{ballerina-xx7VNGxs.js → ballerina-BzvFqbha.js} +0 -0
- /package/dist/client/assets/{bat-DGYsZ5wR.js → bat-CFyw2ERn.js} +0 -0
- /package/dist/client/assets/{beancount-D_ATR1UV.js → beancount-a6Gsu5WX.js} +0 -0
- /package/dist/client/assets/{berry-BqYMORfH.js → berry-C2jyz4Ah.js} +0 -0
- /package/dist/client/assets/{bibtex-CQTBDajW.js → bibtex-Dyet-B83.js} +0 -0
- /package/dist/client/assets/{bicep-CfNtxPrK.js → bicep-CghvUIvy.js} +0 -0
- /package/dist/client/assets/{bird2-C0dUPe3I.js → bird2-nHigvs-R.js} +0 -0
- /package/dist/client/assets/{c3-BUwZ5e3k.js → c3-9ZrcmAmr.js} +0 -0
- /package/dist/client/assets/{cadence-C3OKDYrr.js → cadence-BPDgYNWy.js} +0 -0
- /package/dist/client/assets/{catppuccin-frappe-CMnRXVZP.js → catppuccin-frappe-BY_2ofjk.js} +0 -0
- /package/dist/client/assets/{catppuccin-latte-CqhXSjCC.js → catppuccin-latte-D6GXPBmA.js} +0 -0
- /package/dist/client/assets/{catppuccin-macchiato-B6kneE0C.js → catppuccin-macchiato-BuW8_cyo.js} +0 -0
- /package/dist/client/assets/{catppuccin-mocha-CP8YZpvj.js → catppuccin-mocha-znex9DPe.js} +0 -0
- /package/dist/client/assets/{clarity-Crxe8gSr.js → clarity-Cmao5KSK.js} +0 -0
- /package/dist/client/assets/{clojure-BuzOUPMr.js → clojure-D2dPuTkk.js} +0 -0
- /package/dist/client/assets/{cmake-CCpZLdLI.js → cmake-DaqQuj4A.js} +0 -0
- /package/dist/client/assets/{codeowners-Bo1VYpHz.js → codeowners-B748jmvc.js} +0 -0
- /package/dist/client/assets/{codeql-Db01hzHE.js → codeql-CXb_8gHR.js} +0 -0
- /package/dist/client/assets/{common-lisp-CMlJIc6Y.js → common-lisp-UZn9nc_5.js} +0 -0
- /package/dist/client/assets/{coq-BlzBYp3f.js → coq-DtO6yBIf.js} +0 -0
- /package/dist/client/assets/{csharp-kfNshAa7.js → csharp-C3YlYcLV.js} +0 -0
- /package/dist/client/assets/{csv-Dr8ri5Nd.js → csv-BBwiVr0X.js} +0 -0
- /package/dist/client/assets/{cue-jXfhyOwY.js → cue-ScBFXY5f.js} +0 -0
- /package/dist/client/assets/{cypher-CayLeiaR.js → cypher-CGStaC1X.js} +0 -0
- /package/dist/client/assets/{d-BMZQ0mAy.js → d-CuTCIvnX.js} +0 -0
- /package/dist/client/assets/{dark-plus-B__q47Nr.js → dark-plus-BvePH-r3.js} +0 -0
- /package/dist/client/assets/{dart-gMOEMyuz.js → dart-CqEodbm2.js} +0 -0
- /package/dist/client/assets/{dax-C3t5LadU.js → dax-UdE5S0Dh.js} +0 -0
- /package/dist/client/assets/{desktop-DmhXLwLR.js → desktop-DfmsfHJA.js} +0 -0
- /package/dist/client/assets/{diff-togOXQX6.js → diff-CW0RWGd9.js} +0 -0
- /package/dist/client/assets/{docker--6N01olR.js → docker-B1qtW4ha.js} +0 -0
- /package/dist/client/assets/{dotenv-Bq930Yx8.js → dotenv-BUzOh1k8.js} +0 -0
- /package/dist/client/assets/{dracula-CBkSghcw.js → dracula-kJQjC_Gy.js} +0 -0
- /package/dist/client/assets/{dracula-soft-CCSYeoxL.js → dracula-soft-B3XhEjCl.js} +0 -0
- /package/dist/client/assets/{dream-maker-BiMf3DHl.js → dream-maker-CBvk18nW.js} +0 -0
- /package/dist/client/assets/{emacs-lisp-Dhht7he2.js → emacs-lisp-DvSgLhDc.js} +0 -0
- /package/dist/client/assets/{everforest-dark-NqSz4oHS.js → everforest-dark-u0zLn75q.js} +0 -0
- /package/dist/client/assets/{everforest-light-a3Yzs_lT.js → everforest-light-D3syIoAR.js} +0 -0
- /package/dist/client/assets/{fennel-BExc9TZf.js → fennel-C-1kWlGf.js} +0 -0
- /package/dist/client/assets/{fish-C2p-AJmZ.js → fish-CCpdtwqS.js} +0 -0
- /package/dist/client/assets/{fluent-CeYzs8Qy.js → fluent-BLg032oD.js} +0 -0
- /package/dist/client/assets/{fortran-free-form-BIQEK2Jw.js → fortran-free-form-Br4jRtSc.js} +0 -0
- /package/dist/client/assets/{gdscript-B5JQPh_-.js → gdscript-hSAZM1eh.js} +0 -0
- /package/dist/client/assets/{gdshader-vVjJ_Qr8.js → gdshader-D4XNAEs9.js} +0 -0
- /package/dist/client/assets/{genie-DGl5rqC8.js → genie-DmN-ICAN.js} +0 -0
- /package/dist/client/assets/{gherkin-CY_VLUnD.js → gherkin-cuHHmRcX.js} +0 -0
- /package/dist/client/assets/{github-dark-ClO4AStc.js → github-dark-CEBLh0--.js} +0 -0
- /package/dist/client/assets/{github-dark-default-CM0dPco8.js → github-dark-default-Dq0Z4Xai.js} +0 -0
- /package/dist/client/assets/{github-dark-dimmed-Cb6xxpXY.js → github-dark-dimmed-D90YmS4w.js} +0 -0
- /package/dist/client/assets/{github-dark-high-contrast-BpYtx2-M.js → github-dark-high-contrast-B6BWv1iC.js} +0 -0
- /package/dist/client/assets/{github-light-default-BmnCWL6x.js → github-light-default-DsPWmj4v.js} +0 -0
- /package/dist/client/assets/{github-light-high-contrast-rpagNF5O.js → github-light-high-contrast-C7aLb3kp.js} +0 -0
- /package/dist/client/assets/{github-light-CeOVFgf_.js → github-light-lXSVSq5T.js} +0 -0
- /package/dist/client/assets/{gleam-BarIG9kQ.js → gleam-D8VhqPDN.js} +0 -0
- /package/dist/client/assets/{gn-DhYsTPYc.js → gn-BjGRlX27.js} +0 -0
- /package/dist/client/assets/{gnuplot-CucLlTBc.js → gnuplot-BZCXuE4q.js} +0 -0
- /package/dist/client/assets/{go-toi-uWvg.js → go-BJpWXZEs.js} +0 -0
- /package/dist/client/assets/{groovy-Ds4dis_k.js → groovy-D9w3Dn-z.js} +0 -0
- /package/dist/client/assets/{gruvbox-dark-hard-aPiW8pQh.js → gruvbox-dark-hard-_deksD0U.js} +0 -0
- /package/dist/client/assets/{gruvbox-dark-medium-2HJCvzsS.js → gruvbox-dark-medium-CT31284j.js} +0 -0
- /package/dist/client/assets/{gruvbox-dark-soft-Da97ODX9.js → gruvbox-dark-soft-BZuEUCbj.js} +0 -0
- /package/dist/client/assets/{gruvbox-light-hard-BXlEipFe.js → gruvbox-light-hard-dxv4n_ZS.js} +0 -0
- /package/dist/client/assets/{gruvbox-light-medium-Cun-GjGk.js → gruvbox-light-medium-BsW_fVfR.js} +0 -0
- /package/dist/client/assets/{gruvbox-light-soft-Bd3qiiSw.js → gruvbox-light-soft-BiGy99gD.js} +0 -0
- /package/dist/client/assets/{haskell-B_jvz5Po.js → haskell-DqDdKEgk.js} +0 -0
- /package/dist/client/assets/{haxe-BRbuo5UO.js → haxe-DMg0jS3a.js} +0 -0
- /package/dist/client/assets/{hcl-BzNUCtsK.js → hcl-SZIZUK_X.js} +0 -0
- /package/dist/client/assets/{hjson-BxVo3sS2.js → hjson-DF1VspiE.js} +0 -0
- /package/dist/client/assets/{hlsl-C8Wes1nf.js → hlsl-DPe9L0Dt.js} +0 -0
- /package/dist/client/assets/{horizon-D54PjLAY.js → horizon-Ngud75Kn.js} +0 -0
- /package/dist/client/assets/{horizon-bright-D9RccdIr.js → horizon-bright-Cnljd0XD.js} +0 -0
- /package/dist/client/assets/{houston-CMu1N_4K.js → houston-BenZxlMr.js} +0 -0
- /package/dist/client/assets/{hy-dMrJKKU_.js → hy-B0f-B1mH.js} +0 -0
- /package/dist/client/assets/{imba-DG_oO8tg.js → imba-Bq3j1cW5.js} +0 -0
- /package/dist/client/assets/{ini-geHw79Aj.js → ini-BayloP2U.js} +0 -0
- /package/dist/client/assets/{json5-CDUsNqz6.js → json5-CRSfdIrY.js} +0 -0
- /package/dist/client/assets/{jsonc-D48xcwyD.js → jsonc-y4g9DQPx.js} +0 -0
- /package/dist/client/assets/{jsonl-cpIYDXEe.js → jsonl-D2paVn9r.js} +0 -0
- /package/dist/client/assets/{jsonnet-Da1lhszN.js → jsonnet-CLH27mtz.js} +0 -0
- /package/dist/client/assets/{jssm-B8BLrEGL.js → jssm-CPPYaqX-.js} +0 -0
- /package/dist/client/assets/{kanagawa-dragon-2Sk8Rx83.js → kanagawa-dragon-Bt5mhLu1.js} +0 -0
- /package/dist/client/assets/{kanagawa-lotus-CQVSWfJp.js → kanagawa-lotus-FGA3pRJk.js} +0 -0
- /package/dist/client/assets/{kanagawa-wave-BKWNioLX.js → kanagawa-wave-DnLVZPAD.js} +0 -0
- /package/dist/client/assets/{kdl-B-2tSRmp.js → kdl-D1BQjjnw.js} +0 -0
- /package/dist/client/assets/{kotlin-DepsEzh3.js → kotlin-ndCaDnf0.js} +0 -0
- /package/dist/client/assets/{kusto-BcCtXIb8.js → kusto-D-4nbkD3.js} +0 -0
- /package/dist/client/assets/{laserwave-BUqkO46F.js → laserwave-D2qAZkaG.js} +0 -0
- /package/dist/client/assets/{lean-CNO9ffpX.js → lean-YmtAsB0p.js} +0 -0
- /package/dist/client/assets/{less-Dj0T9pWC.js → less-DyHub3ow.js} +0 -0
- /package/dist/client/assets/{light-plus-C9Hnuc1T.js → light-plus-CP13QUvm.js} +0 -0
- /package/dist/client/assets/{llvm-DbV9b66l.js → llvm-DCcqrY0D.js} +0 -0
- /package/dist/client/assets/{log-BMblmPyH.js → log-DWAAMNbe.js} +0 -0
- /package/dist/client/assets/{logo-B78qMxws.js → logo-ClQMGkNL.js} +0 -0
- /package/dist/client/assets/{luau-BUd8xsdE.js → luau-CmcXFvLt.js} +0 -0
- /package/dist/client/assets/{make-Ev-6cJrd.js → make-DcfJyUzm.js} +0 -0
- /package/dist/client/assets/{markdown-CS4LI6sN.js → markdown-DXxotAxn.js} +0 -0
- /package/dist/client/assets/{material-theme-5rA1zn0D.js → material-theme-JFoPTBSr.js} +0 -0
- /package/dist/client/assets/{material-theme-darker-DGOEiL65.js → material-theme-darker-BHaqZ19v.js} +0 -0
- /package/dist/client/assets/{material-theme-lighter-CULfFRX0.js → material-theme-lighter-CGnnS2bs.js} +0 -0
- /package/dist/client/assets/{material-theme-ocean-LQZ9CleP.js → material-theme-ocean-Drhewjqf.js} +0 -0
- /package/dist/client/assets/{material-theme-palenight-Di_f5oks.js → material-theme-palenight-DbUypmpb.js} +0 -0
- /package/dist/client/assets/{matlab-C0qEtAx9.js → matlab-BlfbTznR.js} +0 -0
- /package/dist/client/assets/{mdx-CzvnbLXb.js → mdx-H8fyPQd8.js} +0 -0
- /package/dist/client/assets/{mermaid-BPquZaKt.js → mermaid-CWAV2dmV.js} +0 -0
- /package/dist/client/assets/{min-dark-rkuIbtJV.js → min-dark-BEelvXUB.js} +0 -0
- /package/dist/client/assets/{min-light-Dj_HOGsr.js → min-light-CTPBOACR.js} +0 -0
- /package/dist/client/assets/{mipsasm-k5DQoS6j.js → mipsasm-BWYFAm2s.js} +0 -0
- /package/dist/client/assets/{mojo-sTTDuNnR.js → mojo-DZcPJEIN.js} +0 -0
- /package/dist/client/assets/{monokai-D5p-u2ij.js → monokai-DQlZXbkg.js} +0 -0
- /package/dist/client/assets/{moonbit-j5ChFtBC.js → moonbit-6eslNlJL.js} +0 -0
- /package/dist/client/assets/{move-Dj0Gmn6R.js → move-DxFc9-QU.js} +0 -0
- /package/dist/client/assets/{narrat-DJgMz2oW.js → narrat-gv38dJOT.js} +0 -0
- /package/dist/client/assets/{nextflow-groovy-eDLuZ_oi.js → nextflow-groovy-DV4H3hok.js} +0 -0
- /package/dist/client/assets/{night-owl-CEdtPl3A.js → night-owl-BLcrYhaC.js} +0 -0
- /package/dist/client/assets/{night-owl-light-GdSldewm.js → night-owl-light-BG-tBJOz.js} +0 -0
- /package/dist/client/assets/{nix-CxIPS3pb.js → nix-NlOz3HGM.js} +0 -0
- /package/dist/client/assets/{nord-3WFAz5H9.js → nord-Dm2F5_QB.js} +0 -0
- /package/dist/client/assets/{nushell-GDfBmoBU.js → nushell-D86Z8aFF.js} +0 -0
- /package/dist/client/assets/{objective-c-MFQ_MGUa.js → objective-c-iuJvUjCv.js} +0 -0
- /package/dist/client/assets/{objective-cpp-Y83LcBE7.js → objective-cpp-C62JvfMT.js} +0 -0
- /package/dist/client/assets/{ocaml-FxYfaJxu.js → ocaml-Rbryo9lg.js} +0 -0
- /package/dist/client/assets/{odin-CprihY3z.js → odin-CfaOVNP_.js} +0 -0
- /package/dist/client/assets/{one-dark-pro-BB6mpmmA.js → one-dark-pro-DC9SHdX0.js} +0 -0
- /package/dist/client/assets/{one-light-BYLoxNtg.js → one-light-Doo39p0H.js} +0 -0
- /package/dist/client/assets/{openscad-Bc1FbpOi.js → openscad-DCRhgheK.js} +0 -0
- /package/dist/client/assets/{pascal-Bb4d8cUL.js → pascal-CTesTHtV.js} +0 -0
- /package/dist/client/assets/{pierre-dark-cF19s-RM.js → pierre-dark-Gtc9M_gS.js} +0 -0
- /package/dist/client/assets/{pierre-light-BdpX8OpD.js → pierre-light-EDxMHmhf.js} +0 -0
- /package/dist/client/assets/{pkl-tM25Sq0w.js → pkl-BjUMjQkt.js} +0 -0
- /package/dist/client/assets/{plastic-D3k2Xp_5.js → plastic-B3CcSpon.js} +0 -0
- /package/dist/client/assets/{plsql-CLEfFhSj.js → plsql-BgKEZSSo.js} +0 -0
- /package/dist/client/assets/{po-CaAzdrrh.js → po-C5s_CVt8.js} +0 -0
- /package/dist/client/assets/{poimandres-bPTvT4Da.js → poimandres-BsK70ma5.js} +0 -0
- /package/dist/client/assets/{polar-TG7aTGdK.js → polar-y4hX8qM0.js} +0 -0
- /package/dist/client/assets/{postcss-8kqfa9f0.js → postcss-BHCm7Qae.js} +0 -0
- /package/dist/client/assets/{powerquery-CtSu1Nfd.js → powerquery-C2vMt8aZ.js} +0 -0
- /package/dist/client/assets/{powershell-87lLBHMy.js → powershell-DEcjmg1c.js} +0 -0
- /package/dist/client/assets/{prisma-Dnf694DZ.js → prisma-Ba-Tcxy5.js} +0 -0
- /package/dist/client/assets/{prolog-C0XbHTWa.js → prolog-B4o261Jv.js} +0 -0
- /package/dist/client/assets/{proto-BZP-HLIb.js → proto-o3IZKiMR.js} +0 -0
- /package/dist/client/assets/{puppet-CJYWgYC5.js → puppet-BC0dqZ31.js} +0 -0
- /package/dist/client/assets/{purescript-B95Q6BAd.js → purescript-CLDw1y5G.js} +0 -0
- /package/dist/client/assets/{python-CqTCsi7P.js → python-D1NFioGW.js} +0 -0
- /package/dist/client/assets/{qmldir-DlIL4hls.js → qmldir-B7i9e9Vn.js} +0 -0
- /package/dist/client/assets/{qss-BW72E0q_.js → qss-DIe6oKX8.js} +0 -0
- /package/dist/client/assets/{racket-CCAimEsC.js → racket-CAOC_yyk.js} +0 -0
- /package/dist/client/assets/{raku-mSuqElkM.js → raku-Ccua3vW6.js} +0 -0
- /package/dist/client/assets/{red-C-DA4yBI.js → red-DtDH206x.js} +0 -0
- /package/dist/client/assets/{reg-CGwMBJ2c.js → reg-CAYZT9kE.js} +0 -0
- /package/dist/client/assets/{rel-JwrbYgX4.js → rel-cvB6F5nO.js} +0 -0
- /package/dist/client/assets/{riscv-CoYyE75b.js → riscv-SYGtE4EN.js} +0 -0
- /package/dist/client/assets/{ron-C5wrhnmJ.js → ron-CRt869SB.js} +0 -0
- /package/dist/client/assets/{rose-pine-DlrMPYYd.js → rose-pine-CjBfSJ5b.js} +0 -0
- /package/dist/client/assets/{rose-pine-dawn-DBHFtZD2.js → rose-pine-dawn-C0xwy7iJ.js} +0 -0
- /package/dist/client/assets/{rose-pine-moon-BBfrpe5q.js → rose-pine-moon-BSNy9Ty0.js} +0 -0
- /package/dist/client/assets/{rosmsg-DlimTR9t.js → rosmsg-BwrfJ66Z.js} +0 -0
- /package/dist/client/assets/{rust-Cxnkxx3h.js → rust-DCKTTPxN.js} +0 -0
- /package/dist/client/assets/{sass-DEyqUIpU.js → sass-CorcwySt.js} +0 -0
- /package/dist/client/assets/{scala-i3RN3yAN.js → scala-DlI-OmYj.js} +0 -0
- /package/dist/client/assets/{scheme-BcKdjYkO.js → scheme-CcNEGkZH.js} +0 -0
- /package/dist/client/assets/{sdbl-Be_XWc3n.js → sdbl-AL_m-RO_.js} +0 -0
- /package/dist/client/assets/{slack-dark-3PDtm74m.js → slack-dark-rMhrfPm6.js} +0 -0
- /package/dist/client/assets/{slack-ochin-CwiuFRJD.js → slack-ochin-9w8X74hU.js} +0 -0
- /package/dist/client/assets/{smalltalk-BdBlL6ks.js → smalltalk-Y2ogrfbk.js} +0 -0
- /package/dist/client/assets/{snazzy-light-Dyqc8Is2.js → snazzy-light-DHr9ygpP.js} +0 -0
- /package/dist/client/assets/{solarized-dark-DZiTscIX.js → solarized-dark-UPcKev9Q.js} +0 -0
- /package/dist/client/assets/{solarized-light-DBcfxrfG.js → solarized-light-DUsjROvl.js} +0 -0
- /package/dist/client/assets/{solidity-DH-yUSWc.js → solidity-Bfbm9QZQ.js} +0 -0
- /package/dist/client/assets/{splunk-CIjc4kxs.js → splunk-6DJA2XFa.js} +0 -0
- /package/dist/client/assets/{ssh-config-BKVd4drG.js → ssh-config-CbQtdF-u.js} +0 -0
- /package/dist/client/assets/{stylus-tqAsmugv.js → stylus-B_iq45Sj.js} +0 -0
- /package/dist/client/assets/{swift-CdDBQ3_Z.js → swift-C7KIgN-p.js} +0 -0
- /package/dist/client/assets/{synthwave-84-CbbRs73K.js → synthwave-84-lf_Wt0K_.js} +0 -0
- /package/dist/client/assets/{system-verilog-CBqEY-9v.js → system-verilog-C3G9wERd.js} +0 -0
- /package/dist/client/assets/{systemd-khRP5zwK.js → systemd-CwxGrojj.js} +0 -0
- /package/dist/client/assets/{talonscript-D_lneH-6.js → talonscript-DqnSo1EO.js} +0 -0
- /package/dist/client/assets/{tasl-CLymawGe.js → tasl-T8ethp86.js} +0 -0
- /package/dist/client/assets/{tcl-BRY1S87U.js → tcl-Ccl366o0.js} +0 -0
- /package/dist/client/assets/{terraform-BqohMo2f.js → terraform-BBf6ZI_0.js} +0 -0
- /package/dist/client/assets/{tokyo-night-BWUONxad.js → tokyo-night-BF5ata25.js} +0 -0
- /package/dist/client/assets/{toml-C4c85Lwg.js → toml-C5Z_BR4r.js} +0 -0
- /package/dist/client/assets/{tsv-DsZq9HBQ.js → tsv-rX8sUJs7.js} +0 -0
- /package/dist/client/assets/{turtle-Dpr8zLlw.js → turtle-BM-MG8WY.js} +0 -0
- /package/dist/client/assets/{typespec-DcqgATB-.js → typespec-C5gKydvR.js} +0 -0
- /package/dist/client/assets/{typst-CeVxmuPg.js → typst--_5VchrY.js} +0 -0
- /package/dist/client/assets/{v-C2Qsh2-1.js → v-C6PwpmTC.js} +0 -0
- /package/dist/client/assets/{vala-CvZ3yL7c.js → vala-4pTaceSj.js} +0 -0
- /package/dist/client/assets/{vb-B_p4qDw4.js → vb-DhoR5A6S.js} +0 -0
- /package/dist/client/assets/{verilog-D8MGjxD7.js → verilog-B9f_1lPn.js} +0 -0
- /package/dist/client/assets/{vesper-DossXiE1.js → vesper-CmBi_iCT.js} +0 -0
- /package/dist/client/assets/{vhdl-MLyYh_Gz.js → vhdl-Cy4RAmOe.js} +0 -0
- /package/dist/client/assets/{viml-BuYIArcz.js → viml-CFQW-CcD.js} +0 -0
- /package/dist/client/assets/{vitesse-black-C3kc1227.js → vitesse-black-CE8RoBJP.js} +0 -0
- /package/dist/client/assets/{vitesse-dark-kWOu5V36.js → vitesse-dark-BpF142p_.js} +0 -0
- /package/dist/client/assets/{vitesse-light-DMtiL8bK.js → vitesse-light-CMwxPBrg.js} +0 -0
- /package/dist/client/assets/{vyper-CNqG09-_.js → vyper-BW5zj9bE.js} +0 -0
- /package/dist/client/assets/{wasm-BsQDV7Y0.js → wasm-BigxSLnm.js} +0 -0
- /package/dist/client/assets/{wasm-DFVlQlgd.js → wasm-CSccDuAq.js} +0 -0
- /package/dist/client/assets/{wenyan-BmOQge13.js → wenyan-BZzM1SQT.js} +0 -0
- /package/dist/client/assets/{wgsl-CgWrmvIg.js → wgsl-xBPHbLlq.js} +0 -0
- /package/dist/client/assets/{wikitext-DkwckXCk.js → wikitext-BXJWUNJK.js} +0 -0
- /package/dist/client/assets/{wit-CtyVFGe7.js → wit-2GnUs67P.js} +0 -0
- /package/dist/client/assets/{wolfram-CXE4FrKz.js → wolfram-DIFDmw-g.js} +0 -0
- /package/dist/client/assets/{zenscript-DH15wJt0.js → zenscript-DQaUUjbx.js} +0 -0
- /package/dist/client/assets/{zig-CqXN9brD.js → zig-BDepRvBi.js} +0 -0
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { a as formatComments, n as readServerLock, t as isLockAlive } from "./server-lock-DIkImokU.mjs";
|
|
2
|
-
import { parseArgs } from "node:util";
|
|
3
|
-
//#region src/cli-agent.ts
|
|
4
|
-
/**
|
|
5
|
-
* Agent-facing `diffit` subcommands. These make the user→agent handoff
|
|
6
|
-
* port-agnostic: each resolves the running server via the per-repo lockfile
|
|
7
|
-
* (`server.json`) so any agent with a shell — or a human — can drive the loop
|
|
8
|
-
* without being told a port.
|
|
9
|
-
*
|
|
10
|
-
* diffit await-review block until the human clicks "Send to agent"
|
|
11
|
-
* diffit reply <id> post an agent reply to a comment
|
|
12
|
-
* diffit resolve <id> mark a comment resolved
|
|
13
|
-
* diffit comments dump the current comments (XML or JSON)
|
|
14
|
-
*/
|
|
15
|
-
const EXIT_OK = 0;
|
|
16
|
-
const EXIT_AWAIT_TIMEOUT = 2;
|
|
17
|
-
const EXIT_NO_SERVER = 3;
|
|
18
|
-
const EXIT_NOT_FOUND = 4;
|
|
19
|
-
const EXIT_USAGE = 5;
|
|
20
|
-
/** Resolve the running server's base URL from the lockfile, or exit cleanly. */
|
|
21
|
-
function baseUrl() {
|
|
22
|
-
const lock = readServerLock();
|
|
23
|
-
if (!lock || !isLockAlive(lock)) {
|
|
24
|
-
console.error("No diffit server running for this repo. Start one with `diffit`.");
|
|
25
|
-
process.exit(EXIT_NO_SERVER);
|
|
26
|
-
}
|
|
27
|
-
return `http://${lock.host === "0.0.0.0" || lock.host === "::" ? "127.0.0.1" : lock.host}:${lock.port}`;
|
|
28
|
-
}
|
|
29
|
-
async function readStdin() {
|
|
30
|
-
const chunks = [];
|
|
31
|
-
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
32
|
-
return Buffer.concat(chunks).toString("utf-8");
|
|
33
|
-
}
|
|
34
|
-
async function awaitReview(args) {
|
|
35
|
-
const { values } = parseArgs({
|
|
36
|
-
args,
|
|
37
|
-
options: {
|
|
38
|
-
timeout: {
|
|
39
|
-
type: "string",
|
|
40
|
-
short: "t"
|
|
41
|
-
},
|
|
42
|
-
since: { type: "string" }
|
|
43
|
-
},
|
|
44
|
-
allowPositionals: false
|
|
45
|
-
});
|
|
46
|
-
const totalBudgetMs = (values.timeout ? Number(values.timeout) : 570) * 1e3;
|
|
47
|
-
const base = baseUrl();
|
|
48
|
-
let sinceRound = 0;
|
|
49
|
-
try {
|
|
50
|
-
sinceRound = (await fetch(`${base}/api/review/status`).then((r) => r.json())).round ?? 0;
|
|
51
|
-
} catch {}
|
|
52
|
-
const deadline = Date.now() + totalBudgetMs;
|
|
53
|
-
while (Date.now() < deadline) {
|
|
54
|
-
let res;
|
|
55
|
-
try {
|
|
56
|
-
res = await fetch(`${base}/api/review/await?timeoutMs=25000&sinceRound=${sinceRound}`, { signal: AbortSignal.timeout(3e4) });
|
|
57
|
-
} catch (err) {
|
|
58
|
-
if (err?.name === "TimeoutError") continue;
|
|
59
|
-
console.error(`Failed to reach diffit server: ${err?.message ?? err}`);
|
|
60
|
-
return EXIT_NO_SERVER;
|
|
61
|
-
}
|
|
62
|
-
const result = await res.json();
|
|
63
|
-
if (result.status === "released") {
|
|
64
|
-
process.stdout.write(result.payload.commentXml + "\n");
|
|
65
|
-
console.error(`DIFFIT_REVIEW_ROUND=${result.payload.round}`);
|
|
66
|
-
return EXIT_OK;
|
|
67
|
-
}
|
|
68
|
-
sinceRound = result.round ?? sinceRound;
|
|
69
|
-
}
|
|
70
|
-
console.error("DIFFIT_AWAIT_TIMEOUT");
|
|
71
|
-
console.error("No review sent within the timeout. Run `diffit await-review` again to keep waiting.");
|
|
72
|
-
return EXIT_AWAIT_TIMEOUT;
|
|
73
|
-
}
|
|
74
|
-
async function reply(args) {
|
|
75
|
-
const { values, positionals } = parseArgs({
|
|
76
|
-
args,
|
|
77
|
-
options: {
|
|
78
|
-
body: {
|
|
79
|
-
type: "string",
|
|
80
|
-
short: "b"
|
|
81
|
-
},
|
|
82
|
-
model: {
|
|
83
|
-
type: "string",
|
|
84
|
-
short: "m"
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
allowPositionals: true
|
|
88
|
-
});
|
|
89
|
-
const commentId = positionals[0];
|
|
90
|
-
if (!commentId) {
|
|
91
|
-
console.error("Usage: diffit reply <commentId> --body <text> [--model <name>]");
|
|
92
|
-
return EXIT_USAGE;
|
|
93
|
-
}
|
|
94
|
-
let body = values.body;
|
|
95
|
-
if (body === "-" || body === void 0) body = (await readStdin()).trim();
|
|
96
|
-
if (!body) {
|
|
97
|
-
console.error("A reply body is required (--body <text> or pipe via stdin).");
|
|
98
|
-
return EXIT_USAGE;
|
|
99
|
-
}
|
|
100
|
-
const res = await fetch(`${baseUrl()}/api/comments/${commentId}/replies`, {
|
|
101
|
-
method: "POST",
|
|
102
|
-
headers: { "Content-Type": "application/json" },
|
|
103
|
-
body: JSON.stringify({
|
|
104
|
-
body,
|
|
105
|
-
role: "agent",
|
|
106
|
-
model: values.model
|
|
107
|
-
})
|
|
108
|
-
});
|
|
109
|
-
if (res.status === 404) {
|
|
110
|
-
console.error(`Comment ${commentId} not found.`);
|
|
111
|
-
return EXIT_NOT_FOUND;
|
|
112
|
-
}
|
|
113
|
-
if (!res.ok) {
|
|
114
|
-
console.error(`Failed to reply: HTTP ${res.status}`);
|
|
115
|
-
return 1;
|
|
116
|
-
}
|
|
117
|
-
console.error(`Replied to ${commentId}.`);
|
|
118
|
-
return EXIT_OK;
|
|
119
|
-
}
|
|
120
|
-
async function resolve(args) {
|
|
121
|
-
const { positionals } = parseArgs({
|
|
122
|
-
args,
|
|
123
|
-
allowPositionals: true,
|
|
124
|
-
options: {}
|
|
125
|
-
});
|
|
126
|
-
const commentId = positionals[0];
|
|
127
|
-
if (!commentId) {
|
|
128
|
-
console.error("Usage: diffit resolve <commentId>");
|
|
129
|
-
return EXIT_USAGE;
|
|
130
|
-
}
|
|
131
|
-
const res = await fetch(`${baseUrl()}/api/comments/${commentId}`, {
|
|
132
|
-
method: "PUT",
|
|
133
|
-
headers: { "Content-Type": "application/json" },
|
|
134
|
-
body: JSON.stringify({ status: "resolved" })
|
|
135
|
-
});
|
|
136
|
-
if (res.status === 404) {
|
|
137
|
-
console.error(`Comment ${commentId} not found.`);
|
|
138
|
-
return EXIT_NOT_FOUND;
|
|
139
|
-
}
|
|
140
|
-
if (!res.ok) {
|
|
141
|
-
console.error(`Failed to resolve: HTTP ${res.status}`);
|
|
142
|
-
return 1;
|
|
143
|
-
}
|
|
144
|
-
console.error(`Resolved ${commentId}.`);
|
|
145
|
-
return EXIT_OK;
|
|
146
|
-
}
|
|
147
|
-
async function url() {
|
|
148
|
-
process.stdout.write(baseUrl() + "\n");
|
|
149
|
-
return EXIT_OK;
|
|
150
|
-
}
|
|
151
|
-
async function comments(args) {
|
|
152
|
-
const { values } = parseArgs({
|
|
153
|
-
args,
|
|
154
|
-
options: {
|
|
155
|
-
open: { type: "boolean" },
|
|
156
|
-
json: { type: "boolean" }
|
|
157
|
-
},
|
|
158
|
-
allowPositionals: false
|
|
159
|
-
});
|
|
160
|
-
const all = await fetch(`${baseUrl()}/api/comments`).then((r) => r.json());
|
|
161
|
-
const selected = values.open ? all.filter((c) => c.status === "open") : all;
|
|
162
|
-
if (values.json) process.stdout.write(JSON.stringify(selected, null, 2) + "\n");
|
|
163
|
-
else process.stdout.write(formatComments(selected) + "\n");
|
|
164
|
-
return EXIT_OK;
|
|
165
|
-
}
|
|
166
|
-
async function runSubcommand(name, args) {
|
|
167
|
-
switch (name) {
|
|
168
|
-
case "await-review": return awaitReview(args);
|
|
169
|
-
case "reply": return reply(args);
|
|
170
|
-
case "resolve": return resolve(args);
|
|
171
|
-
case "comments": return comments(args);
|
|
172
|
-
case "url": return url();
|
|
173
|
-
default:
|
|
174
|
-
console.error(`Unknown subcommand: ${name}`);
|
|
175
|
-
return EXIT_USAGE;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
//#endregion
|
|
179
|
-
export { runSubcommand };
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { a as formatComments, n as readServerLock, t as isLockAlive } from "./server-lock-Bx9ixiF6.mjs";
|
|
2
|
-
import { parseArgs } from "node:util";
|
|
3
|
-
//#region src/cli-agent.ts
|
|
4
|
-
/**
|
|
5
|
-
* Agent-facing `diffit` subcommands. These make the user→agent handoff
|
|
6
|
-
* port-agnostic: each resolves the running server via the per-repo lockfile
|
|
7
|
-
* (`server.json`) so any agent with a shell — or a human — can drive the loop
|
|
8
|
-
* without being told a port.
|
|
9
|
-
*
|
|
10
|
-
* diffit await-review block until the human clicks "Send to agent"
|
|
11
|
-
* diffit reply <id> post an agent reply to a comment
|
|
12
|
-
* diffit resolve <id> mark a comment resolved
|
|
13
|
-
* diffit comments dump the current comments (XML or JSON)
|
|
14
|
-
*/
|
|
15
|
-
const EXIT_OK = 0;
|
|
16
|
-
const EXIT_AWAIT_TIMEOUT = 2;
|
|
17
|
-
const EXIT_NO_SERVER = 3;
|
|
18
|
-
const EXIT_NOT_FOUND = 4;
|
|
19
|
-
const EXIT_USAGE = 5;
|
|
20
|
-
/** Resolve the running server's base URL from the lockfile, or exit cleanly. */
|
|
21
|
-
function baseUrl() {
|
|
22
|
-
const lock = readServerLock();
|
|
23
|
-
if (!lock || !isLockAlive(lock)) {
|
|
24
|
-
console.error("No diffit server running for this repo. Start one with `diffit`.");
|
|
25
|
-
process.exit(EXIT_NO_SERVER);
|
|
26
|
-
}
|
|
27
|
-
return `http://${lock.host === "0.0.0.0" || lock.host === "::" ? "127.0.0.1" : lock.host}:${lock.port}`;
|
|
28
|
-
}
|
|
29
|
-
async function readStdin() {
|
|
30
|
-
const chunks = [];
|
|
31
|
-
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
32
|
-
return Buffer.concat(chunks).toString("utf-8");
|
|
33
|
-
}
|
|
34
|
-
async function awaitReview(args) {
|
|
35
|
-
const { values } = parseArgs({
|
|
36
|
-
args,
|
|
37
|
-
options: {
|
|
38
|
-
timeout: {
|
|
39
|
-
type: "string",
|
|
40
|
-
short: "t"
|
|
41
|
-
},
|
|
42
|
-
since: { type: "string" }
|
|
43
|
-
},
|
|
44
|
-
allowPositionals: false
|
|
45
|
-
});
|
|
46
|
-
const totalBudgetMs = (values.timeout ? Number(values.timeout) : 570) * 1e3;
|
|
47
|
-
const base = baseUrl();
|
|
48
|
-
let sinceRound = 0;
|
|
49
|
-
try {
|
|
50
|
-
sinceRound = (await fetch(`${base}/api/review/status`).then((r) => r.json())).round ?? 0;
|
|
51
|
-
} catch {}
|
|
52
|
-
const deadline = Date.now() + totalBudgetMs;
|
|
53
|
-
while (Date.now() < deadline) {
|
|
54
|
-
let res;
|
|
55
|
-
try {
|
|
56
|
-
res = await fetch(`${base}/api/review/await?timeoutMs=25000&sinceRound=${sinceRound}`, { signal: AbortSignal.timeout(3e4) });
|
|
57
|
-
} catch (err) {
|
|
58
|
-
if (err?.name === "TimeoutError") continue;
|
|
59
|
-
console.error(`Failed to reach diffit server: ${err?.message ?? err}`);
|
|
60
|
-
return EXIT_NO_SERVER;
|
|
61
|
-
}
|
|
62
|
-
const result = await res.json();
|
|
63
|
-
if (result.status === "released") {
|
|
64
|
-
process.stdout.write(result.payload.commentXml + "\n");
|
|
65
|
-
console.error(`DIFFIT_REVIEW_ROUND=${result.payload.round}`);
|
|
66
|
-
return EXIT_OK;
|
|
67
|
-
}
|
|
68
|
-
sinceRound = result.round ?? sinceRound;
|
|
69
|
-
}
|
|
70
|
-
console.error("DIFFIT_AWAIT_TIMEOUT");
|
|
71
|
-
console.error("No review sent within the timeout. Run `diffit await-review` again to keep waiting.");
|
|
72
|
-
return EXIT_AWAIT_TIMEOUT;
|
|
73
|
-
}
|
|
74
|
-
async function reply(args) {
|
|
75
|
-
const { values, positionals } = parseArgs({
|
|
76
|
-
args,
|
|
77
|
-
options: {
|
|
78
|
-
body: {
|
|
79
|
-
type: "string",
|
|
80
|
-
short: "b"
|
|
81
|
-
},
|
|
82
|
-
model: {
|
|
83
|
-
type: "string",
|
|
84
|
-
short: "m"
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
allowPositionals: true
|
|
88
|
-
});
|
|
89
|
-
const commentId = positionals[0];
|
|
90
|
-
if (!commentId) {
|
|
91
|
-
console.error("Usage: diffit reply <commentId> --body <text> [--model <name>]");
|
|
92
|
-
return EXIT_USAGE;
|
|
93
|
-
}
|
|
94
|
-
let body = values.body;
|
|
95
|
-
if (body === "-" || body === void 0) body = (await readStdin()).trim();
|
|
96
|
-
if (!body) {
|
|
97
|
-
console.error("A reply body is required (--body <text> or pipe via stdin).");
|
|
98
|
-
return EXIT_USAGE;
|
|
99
|
-
}
|
|
100
|
-
const res = await fetch(`${baseUrl()}/api/comments/${commentId}/replies`, {
|
|
101
|
-
method: "POST",
|
|
102
|
-
headers: { "Content-Type": "application/json" },
|
|
103
|
-
body: JSON.stringify({
|
|
104
|
-
body,
|
|
105
|
-
role: "agent",
|
|
106
|
-
model: values.model
|
|
107
|
-
})
|
|
108
|
-
});
|
|
109
|
-
if (res.status === 404) {
|
|
110
|
-
console.error(`Comment ${commentId} not found.`);
|
|
111
|
-
return EXIT_NOT_FOUND;
|
|
112
|
-
}
|
|
113
|
-
if (!res.ok) {
|
|
114
|
-
console.error(`Failed to reply: HTTP ${res.status}`);
|
|
115
|
-
return 1;
|
|
116
|
-
}
|
|
117
|
-
console.error(`Replied to ${commentId}.`);
|
|
118
|
-
return EXIT_OK;
|
|
119
|
-
}
|
|
120
|
-
async function resolve(args) {
|
|
121
|
-
const { positionals } = parseArgs({
|
|
122
|
-
args,
|
|
123
|
-
allowPositionals: true,
|
|
124
|
-
options: {}
|
|
125
|
-
});
|
|
126
|
-
const commentId = positionals[0];
|
|
127
|
-
if (!commentId) {
|
|
128
|
-
console.error("Usage: diffit resolve <commentId>");
|
|
129
|
-
return EXIT_USAGE;
|
|
130
|
-
}
|
|
131
|
-
const res = await fetch(`${baseUrl()}/api/comments/${commentId}`, {
|
|
132
|
-
method: "PUT",
|
|
133
|
-
headers: { "Content-Type": "application/json" },
|
|
134
|
-
body: JSON.stringify({ status: "resolved" })
|
|
135
|
-
});
|
|
136
|
-
if (res.status === 404) {
|
|
137
|
-
console.error(`Comment ${commentId} not found.`);
|
|
138
|
-
return EXIT_NOT_FOUND;
|
|
139
|
-
}
|
|
140
|
-
if (!res.ok) {
|
|
141
|
-
console.error(`Failed to resolve: HTTP ${res.status}`);
|
|
142
|
-
return 1;
|
|
143
|
-
}
|
|
144
|
-
console.error(`Resolved ${commentId}.`);
|
|
145
|
-
return EXIT_OK;
|
|
146
|
-
}
|
|
147
|
-
async function url() {
|
|
148
|
-
process.stdout.write(baseUrl() + "\n");
|
|
149
|
-
return EXIT_OK;
|
|
150
|
-
}
|
|
151
|
-
async function comments(args) {
|
|
152
|
-
const { values } = parseArgs({
|
|
153
|
-
args,
|
|
154
|
-
options: {
|
|
155
|
-
open: { type: "boolean" },
|
|
156
|
-
json: { type: "boolean" }
|
|
157
|
-
},
|
|
158
|
-
allowPositionals: false
|
|
159
|
-
});
|
|
160
|
-
const all = await fetch(`${baseUrl()}/api/comments`).then((r) => r.json());
|
|
161
|
-
const selected = values.open ? all.filter((c) => c.status === "open") : all;
|
|
162
|
-
if (values.json) process.stdout.write(JSON.stringify(selected, null, 2) + "\n");
|
|
163
|
-
else process.stdout.write(formatComments(selected) + "\n");
|
|
164
|
-
return EXIT_OK;
|
|
165
|
-
}
|
|
166
|
-
async function runSubcommand(name, args) {
|
|
167
|
-
switch (name) {
|
|
168
|
-
case "await-review": return awaitReview(args);
|
|
169
|
-
case "reply": return reply(args);
|
|
170
|
-
case "resolve": return resolve(args);
|
|
171
|
-
case "comments": return comments(args);
|
|
172
|
-
case "url": return url();
|
|
173
|
-
default:
|
|
174
|
-
console.error(`Unknown subcommand: ${name}`);
|
|
175
|
-
return EXIT_USAGE;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
//#endregion
|
|
179
|
-
export { runSubcommand };
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { a as formatComments, n as readServerLock, t as isLockAlive } from "./server-lock-DbxpfF3j.mjs";
|
|
2
|
-
import { parseArgs } from "node:util";
|
|
3
|
-
//#region src/cli-agent.ts
|
|
4
|
-
/**
|
|
5
|
-
* Agent-facing `diffing` subcommands. These make the user→agent handoff
|
|
6
|
-
* port-agnostic: each resolves the running server via the per-repo lockfile
|
|
7
|
-
* (`server.json`) so any agent with a shell — or a human — can drive the loop
|
|
8
|
-
* without being told a port.
|
|
9
|
-
*
|
|
10
|
-
* diffing await-review block until the human clicks "Send to agent"
|
|
11
|
-
* diffing reply <id> post an agent reply to a comment
|
|
12
|
-
* diffing resolve <id> mark a comment resolved
|
|
13
|
-
* diffing comments dump the current comments (XML or JSON)
|
|
14
|
-
*/
|
|
15
|
-
const EXIT_OK = 0;
|
|
16
|
-
const EXIT_AWAIT_TIMEOUT = 2;
|
|
17
|
-
const EXIT_NO_SERVER = 3;
|
|
18
|
-
const EXIT_NOT_FOUND = 4;
|
|
19
|
-
const EXIT_USAGE = 5;
|
|
20
|
-
/** Resolve the running server's base URL from the lockfile, or exit cleanly. */
|
|
21
|
-
function baseUrl() {
|
|
22
|
-
const lock = readServerLock();
|
|
23
|
-
if (!lock || !isLockAlive(lock)) {
|
|
24
|
-
console.error("No diffing server running for this repo. Start one with `diffing`.");
|
|
25
|
-
process.exit(EXIT_NO_SERVER);
|
|
26
|
-
}
|
|
27
|
-
return `http://${lock.host === "0.0.0.0" || lock.host === "::" ? "127.0.0.1" : lock.host}:${lock.port}`;
|
|
28
|
-
}
|
|
29
|
-
async function readStdin() {
|
|
30
|
-
const chunks = [];
|
|
31
|
-
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
32
|
-
return Buffer.concat(chunks).toString("utf-8");
|
|
33
|
-
}
|
|
34
|
-
async function awaitReview(args) {
|
|
35
|
-
const { values } = parseArgs({
|
|
36
|
-
args,
|
|
37
|
-
options: {
|
|
38
|
-
timeout: {
|
|
39
|
-
type: "string",
|
|
40
|
-
short: "t"
|
|
41
|
-
},
|
|
42
|
-
since: { type: "string" }
|
|
43
|
-
},
|
|
44
|
-
allowPositionals: false
|
|
45
|
-
});
|
|
46
|
-
const totalBudgetMs = (values.timeout ? Number(values.timeout) : 570) * 1e3;
|
|
47
|
-
const base = baseUrl();
|
|
48
|
-
let sinceRound = 0;
|
|
49
|
-
try {
|
|
50
|
-
sinceRound = (await fetch(`${base}/api/review/status`).then((r) => r.json())).round ?? 0;
|
|
51
|
-
} catch {}
|
|
52
|
-
const deadline = Date.now() + totalBudgetMs;
|
|
53
|
-
while (Date.now() < deadline) {
|
|
54
|
-
let res;
|
|
55
|
-
try {
|
|
56
|
-
res = await fetch(`${base}/api/review/await?timeoutMs=25000&sinceRound=${sinceRound}`, { signal: AbortSignal.timeout(3e4) });
|
|
57
|
-
} catch (err) {
|
|
58
|
-
if (err?.name === "TimeoutError") continue;
|
|
59
|
-
console.error(`Failed to reach diffing server: ${err?.message ?? err}`);
|
|
60
|
-
return EXIT_NO_SERVER;
|
|
61
|
-
}
|
|
62
|
-
const result = await res.json();
|
|
63
|
-
if (result.status === "released") {
|
|
64
|
-
process.stdout.write(result.payload.commentXml + "\n");
|
|
65
|
-
console.error(`DIFFING_REVIEW_ROUND=${result.payload.round}`);
|
|
66
|
-
return EXIT_OK;
|
|
67
|
-
}
|
|
68
|
-
sinceRound = result.round ?? sinceRound;
|
|
69
|
-
}
|
|
70
|
-
console.error("DIFFING_AWAIT_TIMEOUT");
|
|
71
|
-
console.error("No review sent within the timeout. Run `diffing await-review` again to keep waiting.");
|
|
72
|
-
return EXIT_AWAIT_TIMEOUT;
|
|
73
|
-
}
|
|
74
|
-
async function reply(args) {
|
|
75
|
-
const { values, positionals } = parseArgs({
|
|
76
|
-
args,
|
|
77
|
-
options: {
|
|
78
|
-
body: {
|
|
79
|
-
type: "string",
|
|
80
|
-
short: "b"
|
|
81
|
-
},
|
|
82
|
-
model: {
|
|
83
|
-
type: "string",
|
|
84
|
-
short: "m"
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
allowPositionals: true
|
|
88
|
-
});
|
|
89
|
-
const commentId = positionals[0];
|
|
90
|
-
if (!commentId) {
|
|
91
|
-
console.error("Usage: diffing reply <commentId> --body <text> [--model <name>]");
|
|
92
|
-
return EXIT_USAGE;
|
|
93
|
-
}
|
|
94
|
-
let body = values.body;
|
|
95
|
-
if (body === "-" || body === void 0) body = (await readStdin()).trim();
|
|
96
|
-
if (!body) {
|
|
97
|
-
console.error("A reply body is required (--body <text> or pipe via stdin).");
|
|
98
|
-
return EXIT_USAGE;
|
|
99
|
-
}
|
|
100
|
-
const res = await fetch(`${baseUrl()}/api/comments/${commentId}/replies`, {
|
|
101
|
-
method: "POST",
|
|
102
|
-
headers: { "Content-Type": "application/json" },
|
|
103
|
-
body: JSON.stringify({
|
|
104
|
-
body,
|
|
105
|
-
role: "agent",
|
|
106
|
-
model: values.model
|
|
107
|
-
})
|
|
108
|
-
});
|
|
109
|
-
if (res.status === 404) {
|
|
110
|
-
console.error(`Comment ${commentId} not found.`);
|
|
111
|
-
return EXIT_NOT_FOUND;
|
|
112
|
-
}
|
|
113
|
-
if (!res.ok) {
|
|
114
|
-
console.error(`Failed to reply: HTTP ${res.status}`);
|
|
115
|
-
return 1;
|
|
116
|
-
}
|
|
117
|
-
console.error(`Replied to ${commentId}.`);
|
|
118
|
-
return EXIT_OK;
|
|
119
|
-
}
|
|
120
|
-
async function resolve(args) {
|
|
121
|
-
const { positionals } = parseArgs({
|
|
122
|
-
args,
|
|
123
|
-
allowPositionals: true,
|
|
124
|
-
options: {}
|
|
125
|
-
});
|
|
126
|
-
const commentId = positionals[0];
|
|
127
|
-
if (!commentId) {
|
|
128
|
-
console.error("Usage: diffing resolve <commentId>");
|
|
129
|
-
return EXIT_USAGE;
|
|
130
|
-
}
|
|
131
|
-
const res = await fetch(`${baseUrl()}/api/comments/${commentId}`, {
|
|
132
|
-
method: "PUT",
|
|
133
|
-
headers: { "Content-Type": "application/json" },
|
|
134
|
-
body: JSON.stringify({ status: "resolved" })
|
|
135
|
-
});
|
|
136
|
-
if (res.status === 404) {
|
|
137
|
-
console.error(`Comment ${commentId} not found.`);
|
|
138
|
-
return EXIT_NOT_FOUND;
|
|
139
|
-
}
|
|
140
|
-
if (!res.ok) {
|
|
141
|
-
console.error(`Failed to resolve: HTTP ${res.status}`);
|
|
142
|
-
return 1;
|
|
143
|
-
}
|
|
144
|
-
console.error(`Resolved ${commentId}.`);
|
|
145
|
-
return EXIT_OK;
|
|
146
|
-
}
|
|
147
|
-
async function url() {
|
|
148
|
-
process.stdout.write(baseUrl() + "\n");
|
|
149
|
-
return EXIT_OK;
|
|
150
|
-
}
|
|
151
|
-
async function comments(args) {
|
|
152
|
-
const { values } = parseArgs({
|
|
153
|
-
args,
|
|
154
|
-
options: {
|
|
155
|
-
open: { type: "boolean" },
|
|
156
|
-
json: { type: "boolean" }
|
|
157
|
-
},
|
|
158
|
-
allowPositionals: false
|
|
159
|
-
});
|
|
160
|
-
const all = await fetch(`${baseUrl()}/api/comments`).then((r) => r.json());
|
|
161
|
-
const selected = values.open ? all.filter((c) => c.status === "open") : all;
|
|
162
|
-
if (values.json) process.stdout.write(JSON.stringify(selected, null, 2) + "\n");
|
|
163
|
-
else process.stdout.write(formatComments(selected) + "\n");
|
|
164
|
-
return EXIT_OK;
|
|
165
|
-
}
|
|
166
|
-
async function runSubcommand(name, args) {
|
|
167
|
-
switch (name) {
|
|
168
|
-
case "await-review": return awaitReview(args);
|
|
169
|
-
case "reply": return reply(args);
|
|
170
|
-
case "resolve": return resolve(args);
|
|
171
|
-
case "comments": return comments(args);
|
|
172
|
-
case "url": return url();
|
|
173
|
-
default:
|
|
174
|
-
console.error(`Unknown subcommand: ${name}`);
|
|
175
|
-
return EXIT_USAGE;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
//#endregion
|
|
179
|
-
export { runSubcommand };
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { a as formatComments, n as readServerLock, t as isLockAlive } from "./server-lock-DIkImokU.mjs";
|
|
2
|
-
import { parseArgs } from "node:util";
|
|
3
|
-
//#region src/cli-agent.ts
|
|
4
|
-
/**
|
|
5
|
-
* Agent-facing `diffit` subcommands. These make the user→agent handoff
|
|
6
|
-
* port-agnostic: each resolves the running server via the per-repo lockfile
|
|
7
|
-
* (`server.json`) so any agent with a shell — or a human — can drive the loop
|
|
8
|
-
* without being told a port.
|
|
9
|
-
*
|
|
10
|
-
* diffit await-review block until the human clicks "Send to agent"
|
|
11
|
-
* diffit reply <id> post an agent reply to a comment
|
|
12
|
-
* diffit resolve <id> mark a comment resolved
|
|
13
|
-
* diffit comments dump the current comments (XML or JSON)
|
|
14
|
-
*/
|
|
15
|
-
const EXIT_OK = 0;
|
|
16
|
-
const EXIT_AWAIT_TIMEOUT = 2;
|
|
17
|
-
const EXIT_NO_SERVER = 3;
|
|
18
|
-
const EXIT_NOT_FOUND = 4;
|
|
19
|
-
const EXIT_USAGE = 5;
|
|
20
|
-
/** Resolve the running server's base URL from the lockfile, or exit cleanly. */
|
|
21
|
-
function baseUrl() {
|
|
22
|
-
const lock = readServerLock();
|
|
23
|
-
if (!lock || !isLockAlive(lock)) {
|
|
24
|
-
console.error("No diffit server running for this repo. Start one with `diffit`.");
|
|
25
|
-
process.exit(EXIT_NO_SERVER);
|
|
26
|
-
}
|
|
27
|
-
return `http://${lock.host === "0.0.0.0" || lock.host === "::" ? "127.0.0.1" : lock.host}:${lock.port}`;
|
|
28
|
-
}
|
|
29
|
-
async function readStdin() {
|
|
30
|
-
const chunks = [];
|
|
31
|
-
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
32
|
-
return Buffer.concat(chunks).toString("utf-8");
|
|
33
|
-
}
|
|
34
|
-
async function awaitReview(args) {
|
|
35
|
-
const { values } = parseArgs({
|
|
36
|
-
args,
|
|
37
|
-
options: {
|
|
38
|
-
timeout: {
|
|
39
|
-
type: "string",
|
|
40
|
-
short: "t"
|
|
41
|
-
},
|
|
42
|
-
since: { type: "string" }
|
|
43
|
-
},
|
|
44
|
-
allowPositionals: false
|
|
45
|
-
});
|
|
46
|
-
const totalBudgetMs = (values.timeout ? Number(values.timeout) : 570) * 1e3;
|
|
47
|
-
const base = baseUrl();
|
|
48
|
-
let sinceRound = 0;
|
|
49
|
-
try {
|
|
50
|
-
sinceRound = (await fetch(`${base}/api/review/status`).then((r) => r.json())).round ?? 0;
|
|
51
|
-
} catch {}
|
|
52
|
-
const deadline = Date.now() + totalBudgetMs;
|
|
53
|
-
while (Date.now() < deadline) {
|
|
54
|
-
let res;
|
|
55
|
-
try {
|
|
56
|
-
res = await fetch(`${base}/api/review/await?timeoutMs=25000&sinceRound=${sinceRound}`, { signal: AbortSignal.timeout(3e4) });
|
|
57
|
-
} catch (err) {
|
|
58
|
-
if (err?.name === "TimeoutError") continue;
|
|
59
|
-
console.error(`Failed to reach diffit server: ${err?.message ?? err}`);
|
|
60
|
-
return EXIT_NO_SERVER;
|
|
61
|
-
}
|
|
62
|
-
const result = await res.json();
|
|
63
|
-
if (result.status === "released") {
|
|
64
|
-
process.stdout.write(result.payload.commentXml + "\n");
|
|
65
|
-
console.error(`DIFFIT_REVIEW_ROUND=${result.payload.round}`);
|
|
66
|
-
return EXIT_OK;
|
|
67
|
-
}
|
|
68
|
-
sinceRound = result.round ?? sinceRound;
|
|
69
|
-
}
|
|
70
|
-
console.error("DIFFIT_AWAIT_TIMEOUT");
|
|
71
|
-
console.error("No review sent within the timeout. Run `diffit await-review` again to keep waiting.");
|
|
72
|
-
return EXIT_AWAIT_TIMEOUT;
|
|
73
|
-
}
|
|
74
|
-
async function reply(args) {
|
|
75
|
-
const { values, positionals } = parseArgs({
|
|
76
|
-
args,
|
|
77
|
-
options: {
|
|
78
|
-
body: {
|
|
79
|
-
type: "string",
|
|
80
|
-
short: "b"
|
|
81
|
-
},
|
|
82
|
-
model: {
|
|
83
|
-
type: "string",
|
|
84
|
-
short: "m"
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
allowPositionals: true
|
|
88
|
-
});
|
|
89
|
-
const commentId = positionals[0];
|
|
90
|
-
if (!commentId) {
|
|
91
|
-
console.error("Usage: diffit reply <commentId> --body <text> [--model <name>]");
|
|
92
|
-
return EXIT_USAGE;
|
|
93
|
-
}
|
|
94
|
-
let body = values.body;
|
|
95
|
-
if (body === "-" || body === void 0) body = (await readStdin()).trim();
|
|
96
|
-
if (!body) {
|
|
97
|
-
console.error("A reply body is required (--body <text> or pipe via stdin).");
|
|
98
|
-
return EXIT_USAGE;
|
|
99
|
-
}
|
|
100
|
-
const res = await fetch(`${baseUrl()}/api/comments/${commentId}/replies`, {
|
|
101
|
-
method: "POST",
|
|
102
|
-
headers: { "Content-Type": "application/json" },
|
|
103
|
-
body: JSON.stringify({
|
|
104
|
-
body,
|
|
105
|
-
role: "agent",
|
|
106
|
-
model: values.model
|
|
107
|
-
})
|
|
108
|
-
});
|
|
109
|
-
if (res.status === 404) {
|
|
110
|
-
console.error(`Comment ${commentId} not found.`);
|
|
111
|
-
return EXIT_NOT_FOUND;
|
|
112
|
-
}
|
|
113
|
-
if (!res.ok) {
|
|
114
|
-
console.error(`Failed to reply: HTTP ${res.status}`);
|
|
115
|
-
return 1;
|
|
116
|
-
}
|
|
117
|
-
console.error(`Replied to ${commentId}.`);
|
|
118
|
-
return EXIT_OK;
|
|
119
|
-
}
|
|
120
|
-
async function resolve(args) {
|
|
121
|
-
const { positionals } = parseArgs({
|
|
122
|
-
args,
|
|
123
|
-
allowPositionals: true,
|
|
124
|
-
options: {}
|
|
125
|
-
});
|
|
126
|
-
const commentId = positionals[0];
|
|
127
|
-
if (!commentId) {
|
|
128
|
-
console.error("Usage: diffit resolve <commentId>");
|
|
129
|
-
return EXIT_USAGE;
|
|
130
|
-
}
|
|
131
|
-
const res = await fetch(`${baseUrl()}/api/comments/${commentId}`, {
|
|
132
|
-
method: "PUT",
|
|
133
|
-
headers: { "Content-Type": "application/json" },
|
|
134
|
-
body: JSON.stringify({ status: "resolved" })
|
|
135
|
-
});
|
|
136
|
-
if (res.status === 404) {
|
|
137
|
-
console.error(`Comment ${commentId} not found.`);
|
|
138
|
-
return EXIT_NOT_FOUND;
|
|
139
|
-
}
|
|
140
|
-
if (!res.ok) {
|
|
141
|
-
console.error(`Failed to resolve: HTTP ${res.status}`);
|
|
142
|
-
return 1;
|
|
143
|
-
}
|
|
144
|
-
console.error(`Resolved ${commentId}.`);
|
|
145
|
-
return EXIT_OK;
|
|
146
|
-
}
|
|
147
|
-
async function comments(args) {
|
|
148
|
-
const { values } = parseArgs({
|
|
149
|
-
args,
|
|
150
|
-
options: {
|
|
151
|
-
open: { type: "boolean" },
|
|
152
|
-
json: { type: "boolean" }
|
|
153
|
-
},
|
|
154
|
-
allowPositionals: false
|
|
155
|
-
});
|
|
156
|
-
const all = await fetch(`${baseUrl()}/api/comments`).then((r) => r.json());
|
|
157
|
-
const selected = values.open ? all.filter((c) => c.status === "open") : all;
|
|
158
|
-
if (values.json) process.stdout.write(JSON.stringify(selected, null, 2) + "\n");
|
|
159
|
-
else process.stdout.write(formatComments(selected) + "\n");
|
|
160
|
-
return EXIT_OK;
|
|
161
|
-
}
|
|
162
|
-
async function runSubcommand(name, args) {
|
|
163
|
-
switch (name) {
|
|
164
|
-
case "await-review": return awaitReview(args);
|
|
165
|
-
case "reply": return reply(args);
|
|
166
|
-
case "resolve": return resolve(args);
|
|
167
|
-
case "comments": return comments(args);
|
|
168
|
-
default:
|
|
169
|
-
console.error(`Unknown subcommand: ${name}`);
|
|
170
|
-
return EXIT_USAGE;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
//#endregion
|
|
174
|
-
export { runSubcommand };
|