@dylanpiercey/work 0.0.204 → 0.0.205
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/bin/work.mjs +220 -63
- package/dist/_CWyeRc54.js +2 -0
- package/dist/{_B9FeLAO5.js → _C_-lYJlp.js} +394 -114
- package/dist/index.mjs +15316 -13911
- package/dist/public/assets/_-OlchSkR.js +1 -0
- package/dist/public/assets/_2V7v-g6H.js +1 -0
- package/dist/public/assets/_5FuvVnQD.js +1 -0
- package/dist/public/assets/_5izm_sOI.js +1 -0
- package/dist/public/assets/_5izm_sOI.js.br +0 -0
- package/dist/public/assets/_6AplNi7Z.js +1 -0
- package/dist/public/assets/_6AplNi7Z.js.br +0 -0
- package/dist/public/assets/_8YGIApOo.js +1 -0
- package/dist/public/assets/{_BQ6oRmZj.js → _AHFaCvQU.js} +1 -1
- package/dist/public/assets/_AHFaCvQU.js.br +0 -0
- package/dist/public/assets/_B0mn17Dk.js +1 -0
- package/dist/public/assets/_B0roVhqi.js +1 -0
- package/dist/public/assets/{_52XwXqiy.js → _B16QFqgy.js} +1 -1
- package/dist/public/assets/_B16QFqgy.js.br +0 -0
- package/dist/public/assets/{_bX1A3m6x.js → _B2f-LxUk.js} +1 -1
- package/dist/public/assets/_B2f-LxUk.js.br +0 -0
- package/dist/public/assets/_B7rzA4Vo.js +1 -0
- package/dist/public/assets/_B7rzA4Vo.js.br +0 -0
- package/dist/public/assets/_B9EmUOCA.js +1 -0
- package/dist/public/assets/_B9EmUOCA.js.br +0 -0
- package/dist/public/assets/_BD9gP_kw.js +1 -0
- package/dist/public/assets/_BD9gP_kw.js.br +0 -0
- package/dist/public/assets/_BDHG8Nmi.js +9 -0
- package/dist/public/assets/_BDHG8Nmi.js.br +0 -0
- package/dist/public/assets/{_DNQWXflz.js → _BDWKc_9X.js} +1 -1
- package/dist/public/assets/_BDWKc_9X.js.br +0 -0
- package/dist/public/assets/{_BVT8cLW8.js → _BE8KQ5PW.js} +1 -1
- package/dist/public/assets/_BE8KQ5PW.js.br +0 -0
- package/dist/public/assets/{_BPJgPGy_.js → _BFgV8m7c.js} +1 -1
- package/dist/public/assets/_BFgV8m7c.js.br +0 -0
- package/dist/public/assets/_BHZ-Cv2U.js +1 -0
- package/dist/public/assets/{_BDX0L_3F.js → _BHcaNOzL.js} +1 -1
- package/dist/public/assets/_BHcaNOzL.js.br +0 -0
- package/dist/public/assets/_BKM2-z0e.js +1 -0
- package/dist/public/assets/_BN0AE2HC.js +1 -0
- package/dist/public/assets/_BNORURCQ.js +1 -0
- package/dist/public/assets/_BNORURCQ.js.br +0 -0
- package/dist/public/assets/_BNm4Ae9_.js +1 -0
- package/dist/public/assets/_BNm4Ae9_.js.br +0 -0
- package/dist/public/assets/_BOm1SpkD.js +1 -0
- package/dist/public/assets/{_CM90yd32.js → _BPhE-idg.js} +1 -1
- package/dist/public/assets/_BPhE-idg.js.br +0 -0
- package/dist/public/assets/{_rCrnzYGa.js → _BPtQ2PEh.js} +1 -1
- package/dist/public/assets/_BPtQ2PEh.js.br +0 -0
- package/dist/public/assets/_BRGmqkNr.js +1 -0
- package/dist/public/assets/_BRnslEKE.js +1 -0
- package/dist/public/assets/{_DZRRUShG.js → _BSSQw7B1.js} +1 -1
- package/dist/public/assets/_BSSQw7B1.js.br +0 -0
- package/dist/public/assets/{_B4mrAOJe.js → _BUfLoUyd.js} +1 -1
- package/dist/public/assets/_BUfLoUyd.js.br +0 -0
- package/dist/public/assets/{_DCjHVJN2.js → _BVLWii1t.js} +1 -1
- package/dist/public/assets/_BVLWii1t.js.br +0 -0
- package/dist/public/assets/{_DCGza5jQ.js → _BWAs5afd.js} +1 -1
- package/dist/public/assets/_BWAs5afd.js.br +0 -0
- package/dist/public/assets/_BYdCKt3O.js +1 -0
- package/dist/public/assets/_B_JOtc1M.js +1 -0
- package/dist/public/assets/_BcXiRBkz.js +1 -0
- package/dist/public/assets/_BgKdTCD6.js +1 -0
- package/dist/public/assets/{_CXecCgJ4.js → _BixjwCO8.js} +1 -1
- package/dist/public/assets/_BixjwCO8.js.br +0 -0
- package/dist/public/assets/_BkQF1UOD.js +1 -0
- package/dist/public/assets/_BkQF1UOD.js.br +0 -0
- package/dist/public/assets/_BpGTzAYy.js +1 -0
- package/dist/public/assets/{_B99eluvQ.js → _Bpf0k8uS.js} +1 -1
- package/dist/public/assets/_Bpf0k8uS.js.br +0 -0
- package/dist/public/assets/{_OqWnNRp1.js → _BqizK7cx.js} +1 -1
- package/dist/public/assets/_BqizK7cx.js.br +0 -0
- package/dist/public/assets/{_BBCoOIOP.js → _BrWsQx9M.js} +1 -1
- package/dist/public/assets/_BrWsQx9M.js.br +0 -0
- package/dist/public/assets/_BrbA4biE.js +1 -0
- package/dist/public/assets/{_BHYTDkZR.js → _Bs2HUAxm.js} +1 -1
- package/dist/public/assets/_Bs2HUAxm.js.br +0 -0
- package/dist/public/assets/_BsWogZkr.js +1 -0
- package/dist/public/assets/_BthptJ6a.js +1 -0
- package/dist/public/assets/_BthptJ6a.js.br +0 -0
- package/dist/public/assets/_BuxlUghc.js +1 -0
- package/dist/public/assets/{_4tTyBCeC.js → _Bv-wpAaO.js} +1 -1
- package/dist/public/assets/_Bv-wpAaO.js.br +0 -0
- package/dist/public/assets/_BvK6PQ1z.js +1 -0
- package/dist/public/assets/{_DKSFLcWe.js → _BytWZ6R5.js} +1 -1
- package/dist/public/assets/_BytWZ6R5.js.br +0 -0
- package/dist/public/assets/_C-OUSTHo.js +1 -0
- package/dist/public/assets/{_DwnrXrJG.js → _C0Hfu_Ho.js} +1 -1
- package/dist/public/assets/_C0Hfu_Ho.js.br +0 -0
- package/dist/public/assets/_C0ztthm_.js +1 -0
- package/dist/public/assets/{_CyG4uyH4.js → _C2DkGqn5.js} +1 -1
- package/dist/public/assets/_C2DkGqn5.js.br +0 -0
- package/dist/public/assets/{_yJwnpW5d.js → _C33cmCxX.js} +1 -1
- package/dist/public/assets/_C33cmCxX.js.br +0 -0
- package/dist/public/assets/{_BeIfsbXf.js → _C3ShTfoQ.js} +1 -1
- package/dist/public/assets/_C3ShTfoQ.js.br +0 -0
- package/dist/public/assets/_C3tVbCBH.js +1 -0
- package/dist/public/assets/_C6M1hDWV.js +1 -0
- package/dist/public/assets/_C6P-6sWK.js +1 -0
- package/dist/public/assets/_C78RESm0.js +1 -0
- package/dist/public/assets/_C7z3JBX0.js +1 -0
- package/dist/public/assets/_C8-cikmx.js +1 -0
- package/dist/public/assets/_C9thRVyr.js +1 -0
- package/dist/public/assets/{_CV-Bw8FG.js → _CBBTd56s.js} +1 -1
- package/dist/public/assets/_CBBTd56s.js.br +0 -0
- package/dist/public/assets/_CEGHO2aQ.js +1 -0
- package/dist/public/assets/{_Gm2nKIsI.js → _CFF1bIG3.js} +1 -1
- package/dist/public/assets/_CFF1bIG3.js.br +0 -0
- package/dist/public/assets/{_CT50UdvA.js → _CGmOePAM.js} +1 -1
- package/dist/public/assets/_CGmOePAM.js.br +0 -0
- package/dist/public/assets/_CHOAR75o.js +1 -0
- package/dist/public/assets/_CIK0aYGO.js +1422 -0
- package/dist/public/assets/_CIK0aYGO.js.br +0 -0
- package/dist/public/assets/_CIM_QKij.js +1 -0
- package/dist/public/assets/_CJzM23DW.js +2 -0
- package/dist/public/assets/_CJzM23DW.js.br +0 -0
- package/dist/public/assets/_CK5CtA9f.js +1 -0
- package/dist/public/assets/_CLVYQ-74.js +1 -0
- package/dist/public/assets/_CLVYQ-74.js.br +0 -0
- package/dist/public/assets/{_C-CeSamd.js → _CLeF1FF3.js} +1 -1
- package/dist/public/assets/_CPm0qMfS.js +1 -0
- package/dist/public/assets/_CQWTMS1P.js +1 -0
- package/dist/public/assets/_CQWTMS1P.js.br +0 -0
- package/dist/public/assets/_CQgVf_hl.js +1 -0
- package/dist/public/assets/_CRzep8vQ.js +1 -0
- package/dist/public/assets/_CVY_H9pO.js +1 -0
- package/dist/public/assets/_CVlglWWP.js +1 -0
- package/dist/public/assets/_CYtOhTGb.js +1 -0
- package/dist/public/assets/_CZP-vnK2.js +1 -0
- package/dist/public/assets/_CZP-vnK2.js.br +0 -0
- package/dist/public/assets/_C_aWNVgg.js +1 -0
- package/dist/public/assets/_C_fU39wg.js +1 -0
- package/dist/public/assets/{_CGAwOmU8.js → _CaWlTbQM.js} +1 -1
- package/dist/public/assets/_Ca_UkEY3.js +1 -0
- package/dist/public/assets/_Ca_UkEY3.js.br +8 -0
- package/dist/public/assets/_CbKQ4tM7.js +1 -0
- package/dist/public/assets/_CbndvCa9.js +1 -0
- package/dist/public/assets/_CdgFbcw6.js +1 -0
- package/dist/public/assets/_Cf0kh0ya.js +1 -0
- package/dist/public/assets/_Cf0kh0ya.js.br +0 -0
- package/dist/public/assets/_CffIUDL_.js +1 -0
- package/dist/public/assets/_CffIUDL_.js.br +0 -0
- package/dist/public/assets/_CfrSfMqj.js +1 -0
- package/dist/public/assets/_CfrSfMqj.js.br +0 -0
- package/dist/public/assets/_CoHLhCNH.js +1 -0
- package/dist/public/assets/{_CjCClW7n.js → _CpK94htG.js} +1 -1
- package/dist/public/assets/_CqrXDSP9.js +1 -0
- package/dist/public/assets/_Csdgg-p8.js +1 -0
- package/dist/public/assets/_Csdgg-p8.js.br +0 -0
- package/dist/public/assets/{_Cm7MwWeR.js → _Csvc0jmZ.js} +1 -1
- package/dist/public/assets/_Csvc0jmZ.js.br +0 -0
- package/dist/public/assets/_CtdLytfI.js +1 -0
- package/dist/public/assets/{_c8sEONGc.js → _CtxNwohv.js} +1 -1
- package/dist/public/assets/_CtxNwohv.js.br +0 -0
- package/dist/public/assets/_CuApWap_.js +86 -0
- package/dist/public/assets/_CuApWap_.js.br +0 -0
- package/dist/public/assets/_CvBjVI0v.js +1 -0
- package/dist/public/assets/_CwZRDJQ2.js +1 -0
- package/dist/public/assets/_CwZRDJQ2.js.br +0 -0
- package/dist/public/assets/_CxyFAuJT.js +1 -0
- package/dist/public/assets/_CxyFAuJT.js.br +0 -0
- package/dist/public/assets/_D00q6XFi.js +1 -0
- package/dist/public/assets/_D00q6XFi.js.br +0 -0
- package/dist/public/assets/{_BM0HAmYi.js → _D0rv_4FK.js} +1 -1
- package/dist/public/assets/_D0rv_4FK.js.br +0 -0
- package/dist/public/assets/{_DrwRDfxo.js → _D478nKDM.js} +1 -1
- package/dist/public/assets/_D478nKDM.js.br +0 -0
- package/dist/public/assets/{_UDwcCybR.js → _D5W5ntHo.js} +1 -1
- package/dist/public/assets/_D5W5ntHo.js.br +0 -0
- package/dist/public/assets/_D5guyfCP.js +1 -0
- package/dist/public/assets/{_C3xkTmgg.js → _D7FiuTy-.js} +1 -1
- package/dist/public/assets/_D7FiuTy-.js.br +0 -0
- package/dist/public/assets/_DA1hU7GY.js +1 -0
- package/dist/public/assets/_DAGUL1Vl.js +6 -0
- package/dist/public/assets/_DAGUL1Vl.js.br +0 -0
- package/dist/public/assets/{_bXJ6rDQv.js → _DCaVKBqt.js} +1 -1
- package/dist/public/assets/_DCaVKBqt.js.br +0 -0
- package/dist/public/assets/_DFRZGT2q.js +1 -0
- package/dist/public/assets/_DFRZGT2q.js.br +0 -0
- package/dist/public/assets/_DGDoR_gX.js +1 -0
- package/dist/public/assets/_DGDoR_gX.js.br +0 -0
- package/dist/public/assets/_DJl1sf70.js +1 -0
- package/dist/public/assets/_DMGdwfSr.js +1 -0
- package/dist/public/assets/_DMGdwfSr.js.br +0 -0
- package/dist/public/assets/{_B7jfD4o_.js → _DMdBg_GK.js} +1 -1
- package/dist/public/assets/_DMdBg_GK.js.br +0 -0
- package/dist/public/assets/{_axB73DIG.js → _DPOlYZjX.js} +1 -1
- package/dist/public/assets/_DPOlYZjX.js.br +0 -0
- package/dist/public/assets/{_DEI3Wsc1.js → _DSCUag9O.js} +1 -1
- package/dist/public/assets/_DSCUag9O.js.br +0 -0
- package/dist/public/assets/_DUzx5eZR.js +1 -0
- package/dist/public/assets/_DUzx5eZR.js.br +0 -0
- package/dist/public/assets/{_BB8hnAFC.js → _DV0W2yTo.js} +1 -1
- package/dist/public/assets/_DV0W2yTo.js.br +0 -0
- package/dist/public/assets/_DW6rnS22.js +1 -0
- package/dist/public/assets/_DW6rnS22.js.br +0 -0
- package/dist/public/assets/_DY6s_kAl.js +1 -0
- package/dist/public/assets/_Da0Zcyhl.js +1 -0
- package/dist/public/assets/_Dbyzv-e6.js +1 -0
- package/dist/public/assets/_Dbyzv-e6.js.br +0 -0
- package/dist/public/assets/{_BKraHRf9.js → _DcFRlTYB.js} +1 -1
- package/dist/public/assets/_DcFRlTYB.js.br +0 -0
- package/dist/public/assets/_DiThv-ws.js +1 -0
- package/dist/public/assets/_Djho-FAH.js +1 -0
- package/dist/public/assets/_Djho-FAH.js.br +0 -0
- package/dist/public/assets/_DkfyvJLz.js +1 -0
- package/dist/public/assets/_DmdewGjf.js +1 -0
- package/dist/public/assets/{_CoSm8rGI.js → _DnhVTHg1.js} +1 -1
- package/dist/public/assets/_DnhVTHg1.js.br +0 -0
- package/dist/public/assets/_Dq4Lv0Cs.js +1 -0
- package/dist/public/assets/_Dq4Lv0Cs.js.br +0 -0
- package/dist/public/assets/_DqxOu378.js +1 -0
- package/dist/public/assets/{_B__t-xqQ.js → _DrpXP57c.js} +1 -1
- package/dist/public/assets/_DrpXP57c.js.br +0 -0
- package/dist/public/assets/{_C3czKCoC.js → _DsAV3t8S.js} +1 -1
- package/dist/public/assets/_DsAV3t8S.js.br +0 -0
- package/dist/public/assets/{_CnOgm_8-.js → _DvNEiAgs.js} +1 -1
- package/dist/public/assets/_DvNEiAgs.js.br +0 -0
- package/dist/public/assets/{_I5E4cOIs.js → _Dvu8aO9d.js} +1 -1
- package/dist/public/assets/_Dvu8aO9d.js.br +0 -0
- package/dist/public/assets/_DyUJCQsE.js +1 -0
- package/dist/public/assets/_DyUJCQsE.js.br +0 -0
- package/dist/public/assets/_DzJPXetd.js +1 -0
- package/dist/public/assets/_DzJPXetd.js.br +0 -0
- package/dist/public/assets/{_B7ZIrFzP.js → _DzOgre70.js} +1 -1
- package/dist/public/assets/_DzOgre70.js.br +0 -0
- package/dist/public/assets/_FXPfeF9Q.js +1 -0
- package/dist/public/assets/{_8OyrAmVC.js → _G6zi9_6i.js} +1 -1
- package/dist/public/assets/_G6zi9_6i.js.br +0 -0
- package/dist/public/assets/_I2leMoLk.js +1 -0
- package/dist/public/assets/_IWsH3JbM.js +1 -0
- package/dist/public/assets/{_DN0LSN_7.js → _Jsehj7rl.js} +1 -1
- package/dist/public/assets/_Jsehj7rl.js.br +0 -0
- package/dist/public/assets/_NGMwjBBG.js +1 -0
- package/dist/public/assets/{_yX6f-Tdd.js → _QljbgS5l.js} +1 -1
- package/dist/public/assets/_QljbgS5l.js.br +0 -0
- package/dist/public/assets/{_BmJ4HL0P.js → _Z8l8zhFZ.js} +1 -1
- package/dist/public/assets/_Z8l8zhFZ.js.br +0 -0
- package/dist/public/assets/__GnUfSxE.js +1 -0
- package/dist/public/assets/__GnUfSxE.js.br +0 -0
- package/dist/public/assets/_cD7JRpZk.js +1 -0
- package/dist/public/assets/_dP2ZLG1O.js +1 -0
- package/dist/public/assets/_dP2ZLG1O.js.br +0 -0
- package/dist/public/assets/_fQTAXQ2A.js +1 -0
- package/dist/public/assets/_fQTAXQ2A.js.br +0 -0
- package/dist/public/assets/_gIJHrFck.js +1 -0
- package/dist/public/assets/_gIJHrFck.js.br +0 -0
- package/dist/public/assets/{_C46wgmL5.js → _iqlUPvpu.js} +1 -1
- package/dist/public/assets/_iqlUPvpu.js.br +0 -0
- package/dist/public/assets/_m2OvafhN.js +1 -0
- package/dist/public/assets/_mNtBBYrx.js +1 -0
- package/dist/public/assets/_o4vB6uaf.js +1 -0
- package/dist/public/assets/{_wg_bmG9z.js → _pTRVL6_Z.js} +1 -1
- package/dist/public/assets/_pTRVL6_Z.js.br +0 -0
- package/dist/public/assets/_sayhcKVq.js +1 -0
- package/dist/public/assets/_sdf2KG0s.js +1 -0
- package/dist/public/assets/_sdf2KG0s.js.br +0 -0
- package/dist/public/assets/_tsg5j2Lv.js +1 -0
- package/dist/public/assets/_uTzPJzX0.js +1 -0
- package/dist/public/assets/_vIGuFBIb.js +1 -0
- package/dist/public/assets/_vIGuFBIb.js.br +0 -0
- package/dist/public/assets/_yJE0vu9j.js +1 -0
- package/dist/public/assets/_yJE0vu9j.js.br +0 -0
- package/dist/public/assets/_z9XIIgTI.js +1 -0
- package/dist/public/assets/{app-page-DSi27TMH.css → app-shell-8Pd1rc7u.css} +1 -1
- package/dist/public/assets/app-shell-8Pd1rc7u.css.br +0 -0
- package/dist/public/assets/command-palette-B4o6jF8Z.css +1 -0
- package/dist/public/assets/command-palette-B4o6jF8Z.css.br +0 -0
- package/dist/public/assets/files-view-BnN1VOCi.css +1 -0
- package/dist/public/assets/files-view-BnN1VOCi.css.br +0 -0
- package/dist/public/assets/files-view-cAPnyoQZ.js +2 -0
- package/dist/public/assets/group.css.ts-CXNej9ok.css +1 -0
- package/dist/public/assets/group.css.ts-CXNej9ok.css.br +0 -0
- package/dist/public/assets/{icon-search-Cslr912D.css → icon-search-DcAn99Uv.css} +1 -1
- package/dist/public/assets/icon-search-DcAn99Uv.css.br +0 -0
- package/dist/public/assets/manage-workspace-BMzLgYX3.css +1 -0
- package/dist/public/assets/manage-workspace-DhLNff0-.js +2 -0
- package/dist/public/assets/{modal-view-UBeCgIX7.css → modal-view-B53laKnF.css} +1 -1
- package/dist/public/assets/modal-view-B53laKnF.css.br +0 -0
- package/dist/public/assets/new-BqXHbQlu.js +1 -0
- package/dist/public/assets/new-workspace-B3ylje_g.css +1 -0
- package/dist/public/assets/new-workspace-B3ylje_g.css.br +0 -0
- package/dist/public/assets/new-workspace-RR8h-qIh.js +2 -0
- package/dist/public/assets/port-chip-Bt0w2MzG.css +1 -0
- package/dist/public/assets/port-chip-Bt0w2MzG.css.br +0 -0
- package/dist/public/assets/prompt-dialog-B_qzbXMZ.css +1 -0
- package/dist/public/assets/prompt-dialog-B_qzbXMZ.css.br +0 -0
- package/dist/public/assets/quick-open-CXyrWkbA.css +1 -0
- package/dist/public/assets/quick-open-CXyrWkbA.css.br +0 -0
- package/dist/public/assets/repo-picker-CpKpWL1n.css +1 -0
- package/dist/public/assets/repo-picker-CpKpWL1n.css.br +0 -0
- package/dist/public/assets/review-view-CTtdvipj.js +2 -0
- package/dist/public/assets/review-view-tq2OyY98.css +1 -0
- package/dist/public/assets/review-view-tq2OyY98.css.br +0 -0
- package/dist/public/assets/section-D7RUq5Cz.css +1 -0
- package/dist/public/assets/section-D7RUq5Cz.css.br +0 -0
- package/dist/public/assets/settings-BqXHbQlu.js +1 -0
- package/dist/public/assets/settings-page-Btvx32iZ.js +2 -0
- package/dist/public/assets/settings-page-Cnmgnr_0.css +1 -0
- package/dist/public/assets/settings-page-Cnmgnr_0.css.br +0 -0
- package/dist/public/assets/skill-row-CyviHufk.css +1 -0
- package/dist/public/assets/sso-auth-BRNOE7tU.css +1 -0
- package/dist/public/assets/sso-auth-BRNOE7tU.css.br +0 -0
- package/dist/public/assets/w-BqXHbQlu.js +1 -0
- package/dist/public/assets/w._-BqXHbQlu.js +1 -0
- package/dist/public/assets/w._-Nf-ixmkH.js +1 -0
- package/dist/public/assets/w._-cjUl7ond.js +1 -0
- package/dist/public/assets/worker-hkE5tvP8.js +164 -0
- package/dist/public/assets/worker-hkE5tvP8.js.br +0 -0
- package/lib/review/markdown.mjs +23 -11
- package/lib/setup/doctor.d.mts +5 -0
- package/lib/setup/doctor.mjs +31 -1
- package/lib/setup/install.mjs +68 -9
- package/lib/setup/listen.d.mts +5 -0
- package/lib/setup/listen.mjs +23 -0
- package/lib/share/manifest.mjs +8 -3
- package/package.json +7 -7
- package/scripts/migrate.mjs +169 -89
- package/dist/_7W8iLTql.js +0 -2
- package/dist/public/assets/_-Rhp4Iam.js +0 -1
- package/dist/public/assets/_-Rhp4Iam.js.br +0 -0
- package/dist/public/assets/_2PWnr0Ep.js +0 -1
- package/dist/public/assets/_2PWnr0Ep.js.br +0 -0
- package/dist/public/assets/_4tTyBCeC.js.br +0 -0
- package/dist/public/assets/_4x24Xtz8.js +0 -1
- package/dist/public/assets/_52XwXqiy.js.br +0 -0
- package/dist/public/assets/_5z9K39Kg.js +0 -1
- package/dist/public/assets/_6RP3yOfX.js +0 -1
- package/dist/public/assets/_6c5sWg_q.js +0 -1
- package/dist/public/assets/_6c5sWg_q.js.br +0 -0
- package/dist/public/assets/_772AjyQx.js +0 -1
- package/dist/public/assets/_772AjyQx.js.br +0 -0
- package/dist/public/assets/_7udydMs9.js +0 -1
- package/dist/public/assets/_7udydMs9.js.br +0 -0
- package/dist/public/assets/_8CN3GhrA.js +0 -1
- package/dist/public/assets/_8OyrAmVC.js.br +0 -0
- package/dist/public/assets/_9rfvDt0D.js +0 -1
- package/dist/public/assets/_B-oyYxP4.js +0 -1
- package/dist/public/assets/_B23autIT.js +0 -1
- package/dist/public/assets/_B4fdS_GK.js +0 -1
- package/dist/public/assets/_B4fdS_GK.js.br +0 -0
- package/dist/public/assets/_B4mrAOJe.js.br +0 -0
- package/dist/public/assets/_B5648bFu.js +0 -1
- package/dist/public/assets/_B56KWh6H.js +0 -1
- package/dist/public/assets/_B7ZIrFzP.js.br +0 -0
- package/dist/public/assets/_B7h2Q1yF.js +0 -1
- package/dist/public/assets/_B7h2Q1yF.js.br +0 -0
- package/dist/public/assets/_B7jfD4o_.js.br +0 -0
- package/dist/public/assets/_B8-9UU0b.js +0 -1
- package/dist/public/assets/_B8-9UU0b.js.br +0 -0
- package/dist/public/assets/_B99eluvQ.js.br +0 -0
- package/dist/public/assets/_BB8hnAFC.js.br +0 -0
- package/dist/public/assets/_BBCoOIOP.js.br +0 -0
- package/dist/public/assets/_BDX0L_3F.js.br +0 -0
- package/dist/public/assets/_BE7ERBV5.js +0 -1
- package/dist/public/assets/_BHYTDkZR.js.br +0 -0
- package/dist/public/assets/_BIknkuK7.js +0 -1
- package/dist/public/assets/_BIknkuK7.js.br +0 -0
- package/dist/public/assets/_BKXpTbJa.js +0 -1
- package/dist/public/assets/_BKraHRf9.js.br +0 -0
- package/dist/public/assets/_BM0HAmYi.js.br +0 -0
- package/dist/public/assets/_BPJgPGy_.js.br +0 -0
- package/dist/public/assets/_BPTeCwVk.js +0 -1
- package/dist/public/assets/_BPTeCwVk.js.br +0 -0
- package/dist/public/assets/_BQ6oRmZj.js.br +0 -0
- package/dist/public/assets/_BSGfztFB.js +0 -1
- package/dist/public/assets/_BSGfztFB.js.br +0 -0
- package/dist/public/assets/_BT1Fg9f7.js +0 -1
- package/dist/public/assets/_BT1Fg9f7.js.br +0 -0
- package/dist/public/assets/_BUc28oLW.js +0 -1
- package/dist/public/assets/_BVT8cLW8.js.br +0 -0
- package/dist/public/assets/_B__t-xqQ.js.br +0 -0
- package/dist/public/assets/_BaxiLRDq.js +0 -1
- package/dist/public/assets/_BaxiLRDq.js.br +0 -0
- package/dist/public/assets/_BdH6o3ne.js +0 -1
- package/dist/public/assets/_Be2QJJqi.js +0 -1
- package/dist/public/assets/_BeIfsbXf.js.br +0 -0
- package/dist/public/assets/_BkmCB1B7.js +0 -1
- package/dist/public/assets/_BlaUPzz6.js +0 -1
- package/dist/public/assets/_BmJ4HL0P.js.br +0 -0
- package/dist/public/assets/_BtmrZoMX.js +0 -1
- package/dist/public/assets/_BtmrZoMX.js.br +0 -0
- package/dist/public/assets/_Bu1O62mi.js +0 -1
- package/dist/public/assets/_BwsYYj35.js +0 -1
- package/dist/public/assets/_By9P7LBz.js +0 -1
- package/dist/public/assets/_Byov8m78.js +0 -1
- package/dist/public/assets/_C-Xu6InH.js +0 -1
- package/dist/public/assets/_C-pvpSFn.js +0 -1
- package/dist/public/assets/_C-pvpSFn.js.br +0 -0
- package/dist/public/assets/_C0GWE8Ws.js +0 -1
- package/dist/public/assets/_C0MnX7gF.js +0 -1
- package/dist/public/assets/_C0Ysgu0N.js +0 -1
- package/dist/public/assets/_C0udqXoV.js +0 -1
- package/dist/public/assets/_C3czKCoC.js.br +0 -0
- package/dist/public/assets/_C3qzGqgT.js +0 -1
- package/dist/public/assets/_C3xkTmgg.js.br +0 -0
- package/dist/public/assets/_C46wgmL5.js.br +0 -0
- package/dist/public/assets/_C4zXPi6Z.js +0 -1
- package/dist/public/assets/_C6fbnMgU.js +0 -1
- package/dist/public/assets/_C7NJXs7I.js +0 -1
- package/dist/public/assets/_C7NJXs7I.js.br +0 -0
- package/dist/public/assets/_C7jdZwl-.js +0 -1
- package/dist/public/assets/_CAx9vRB3.js +0 -1
- package/dist/public/assets/_CAx9vRB3.js.br +0 -0
- package/dist/public/assets/_CBqtZgPq.js +0 -1
- package/dist/public/assets/_CBqtZgPq.js.br +0 -0
- package/dist/public/assets/_CDL5bva3.js +0 -1
- package/dist/public/assets/_CDL5bva3.js.br +0 -0
- package/dist/public/assets/_CH7NDXYO.js +0 -1
- package/dist/public/assets/_CKoo1DBI.js +0 -1
- package/dist/public/assets/_CM90yd32.js.br +0 -0
- package/dist/public/assets/_CN8qwXEP.js +0 -1
- package/dist/public/assets/_CN8qwXEP.js.br +0 -0
- package/dist/public/assets/_CNBCSwDm.js +0 -1
- package/dist/public/assets/_CNBCSwDm.js.br +0 -0
- package/dist/public/assets/_COjK9IVw.js +0 -1
- package/dist/public/assets/_COjK9IVw.js.br +0 -0
- package/dist/public/assets/_COvQSj_N.js +0 -1
- package/dist/public/assets/_CSmTRKYC.js +0 -1
- package/dist/public/assets/_CSmTRKYC.js.br +0 -0
- package/dist/public/assets/_CT4opMDH.js +0 -86
- package/dist/public/assets/_CT4opMDH.js.br +0 -0
- package/dist/public/assets/_CT50UdvA.js.br +0 -0
- package/dist/public/assets/_CV-Bw8FG.js.br +0 -0
- package/dist/public/assets/_CXecCgJ4.js.br +0 -0
- package/dist/public/assets/_C__ngYHl.js +0 -1
- package/dist/public/assets/_CdYzXVw9.js +0 -1
- package/dist/public/assets/_CdYzXVw9.js.br +0 -0
- package/dist/public/assets/_Cf7ziBW6.js +0 -1
- package/dist/public/assets/_CfZpxvbA.js +0 -1
- package/dist/public/assets/_Cm7MwWeR.js.br +0 -0
- package/dist/public/assets/_CnOgm_8-.js.br +0 -0
- package/dist/public/assets/_CoSm8rGI.js.br +0 -0
- package/dist/public/assets/_CodAPaLl.js +0 -1
- package/dist/public/assets/_CodAPaLl.js.br +0 -0
- package/dist/public/assets/_Cp7bn2n4.js +0 -1
- package/dist/public/assets/_Cr3IENiS.js +0 -1
- package/dist/public/assets/_Cr8eFog_.js +0 -9
- package/dist/public/assets/_Cr8eFog_.js.br +0 -0
- package/dist/public/assets/_CsiY7_Sq.js +0 -1
- package/dist/public/assets/_CvUTwBtz.js +0 -1
- package/dist/public/assets/_CyG4uyH4.js.br +0 -0
- package/dist/public/assets/_Czf8lSy3.js +0 -1
- package/dist/public/assets/_D0h6bM9K.js +0 -1
- package/dist/public/assets/_D1Q-u_7m.js +0 -1
- package/dist/public/assets/_D1Q-u_7m.js.br +0 -0
- package/dist/public/assets/_DCGza5jQ.js.br +0 -0
- package/dist/public/assets/_DCjHVJN2.js.br +0 -0
- package/dist/public/assets/_DDs3rbi4.js +0 -1
- package/dist/public/assets/_DEI3Wsc1.js.br +0 -0
- package/dist/public/assets/_DFUvzjSY.js +0 -1
- package/dist/public/assets/_DJ4ScClm.js +0 -1
- package/dist/public/assets/_DJ4ScClm.js.br +0 -0
- package/dist/public/assets/_DKSFLcWe.js.br +0 -0
- package/dist/public/assets/_DN0LSN_7.js.br +0 -0
- package/dist/public/assets/_DNQWXflz.js.br +0 -0
- package/dist/public/assets/_DOr-IIYd.js +0 -1
- package/dist/public/assets/_DUECTykQ.js +0 -2640
- package/dist/public/assets/_DUECTykQ.js.br +0 -0
- package/dist/public/assets/_DU_CXTYH.js +0 -1
- package/dist/public/assets/_DXLfnZgl.js +0 -1
- package/dist/public/assets/_DZ7lKWLx.js +0 -1
- package/dist/public/assets/_DZRRUShG.js.br +0 -0
- package/dist/public/assets/_Db8OySTl.js +0 -1
- package/dist/public/assets/_DbBa1NO6.js +0 -1
- package/dist/public/assets/_DeRrQBgm.js +0 -2
- package/dist/public/assets/_DeRrQBgm.js.br +0 -0
- package/dist/public/assets/_DfrEESyG.js +0 -1
- package/dist/public/assets/_DigmuRvk.js +0 -1
- package/dist/public/assets/_DjWKgUPY.js +0 -1
- package/dist/public/assets/_DjWKgUPY.js.br +0 -0
- package/dist/public/assets/_Doy075sx.js +0 -1
- package/dist/public/assets/_DpL-iy2Q.js +0 -1
- package/dist/public/assets/_DpL-iy2Q.js.br +0 -0
- package/dist/public/assets/_Dpy7Nv8Y.js +0 -1
- package/dist/public/assets/_Dpy7Nv8Y.js.br +0 -0
- package/dist/public/assets/_DqoN6Zbr.js +0 -1
- package/dist/public/assets/_DqoN6Zbr.js.br +0 -0
- package/dist/public/assets/_DrwRDfxo.js.br +0 -0
- package/dist/public/assets/_DtfClEB2.js +0 -1
- package/dist/public/assets/_DtkyFd1k.js +0 -1
- package/dist/public/assets/_DtkyFd1k.js.br +0 -0
- package/dist/public/assets/_DuraWzq8.js +0 -1
- package/dist/public/assets/_DuraWzq8.js.br +0 -0
- package/dist/public/assets/_DwOZjG25.js +0 -1
- package/dist/public/assets/_DwnrXrJG.js.br +0 -0
- package/dist/public/assets/_Gm2nKIsI.js.br +0 -0
- package/dist/public/assets/_HwNNMC_M.js +0 -1
- package/dist/public/assets/_I5E4cOIs.js.br +0 -0
- package/dist/public/assets/_OqWnNRp1.js.br +0 -0
- package/dist/public/assets/_QJRLXJCl.js +0 -1
- package/dist/public/assets/_QJRLXJCl.js.br +0 -0
- package/dist/public/assets/_TnKds2XR.js +0 -1
- package/dist/public/assets/_UDwcCybR.js.br +0 -0
- package/dist/public/assets/_Y9eVHbos.js +0 -1
- package/dist/public/assets/_awhwVzn2.js +0 -1
- package/dist/public/assets/_axB73DIG.js.br +0 -0
- package/dist/public/assets/_bX1A3m6x.js.br +0 -0
- package/dist/public/assets/_bXJ6rDQv.js.br +0 -0
- package/dist/public/assets/_c8sEONGc.js.br +0 -0
- package/dist/public/assets/_ddGgTxBq.js +0 -1
- package/dist/public/assets/_e7A8Lk3N.js +0 -1
- package/dist/public/assets/_hI9Uq04u.js +0 -1
- package/dist/public/assets/_jsYtAs8X.js +0 -1
- package/dist/public/assets/_jsYtAs8X.js.br +0 -0
- package/dist/public/assets/_ktJP056X.js +0 -1
- package/dist/public/assets/_rCrnzYGa.js.br +0 -0
- package/dist/public/assets/_seluNJrC.js +0 -1
- package/dist/public/assets/_tjp1F1WS.js +0 -1
- package/dist/public/assets/_vefbuJnt.js +0 -6
- package/dist/public/assets/_vefbuJnt.js.br +0 -0
- package/dist/public/assets/_vh9LFjDx.js +0 -1
- package/dist/public/assets/_wg_bmG9z.js.br +0 -0
- package/dist/public/assets/_xnx0Qqu_.js +0 -1
- package/dist/public/assets/_yJwnpW5d.js.br +0 -0
- package/dist/public/assets/_yX6f-Tdd.js.br +0 -0
- package/dist/public/assets/_zOxmqmej.js +0 -1
- package/dist/public/assets/_zOxmqmej.js.br +0 -0
- package/dist/public/assets/app-page-DSi27TMH.css.br +0 -0
- package/dist/public/assets/command-palette-D1FTfzRL.css +0 -1
- package/dist/public/assets/command-palette-D1FTfzRL.css.br +0 -0
- package/dist/public/assets/files-view-CUjcVonq.css +0 -1
- package/dist/public/assets/files-view-CUjcVonq.css.br +0 -0
- package/dist/public/assets/files-view-CiV1wzMY.js +0 -2
- package/dist/public/assets/group.css.ts-bSDNRl7w.css +0 -1
- package/dist/public/assets/group.css.ts-bSDNRl7w.css.br +0 -0
- package/dist/public/assets/icon-search-Cslr912D.css.br +0 -0
- package/dist/public/assets/key-bar.css.ts-Brsaaphs.css +0 -1
- package/dist/public/assets/key-bar.css.ts-Brsaaphs.css.br +0 -0
- package/dist/public/assets/manage-workspace-CBoNUXar.css +0 -1
- package/dist/public/assets/manage-workspace-Cbpb6QYD.js +0 -2
- package/dist/public/assets/modal-view-UBeCgIX7.css.br +0 -0
- package/dist/public/assets/new-I9rKXr4F.js +0 -1
- package/dist/public/assets/new-workspace-B3e9AXWd.js +0 -2
- package/dist/public/assets/new-workspace-DfEJoWx5.css +0 -1
- package/dist/public/assets/new-workspace-DfEJoWx5.css.br +0 -0
- package/dist/public/assets/port-chip-B1iVO49X.css +0 -1
- package/dist/public/assets/port-chip-B1iVO49X.css.br +0 -0
- package/dist/public/assets/prompt-dialog-TvY9iRCd.css +0 -1
- package/dist/public/assets/prompt-dialog-TvY9iRCd.css.br +0 -0
- package/dist/public/assets/quick-open-CCdyjExx.css +0 -1
- package/dist/public/assets/quick-open-CCdyjExx.css.br +0 -0
- package/dist/public/assets/repo-picker-DUC4liD4.css +0 -1
- package/dist/public/assets/repo-picker-DUC4liD4.css.br +0 -3
- package/dist/public/assets/review-view-Cbql7hRd.js +0 -2
- package/dist/public/assets/review-view-DBvRJQKT.css +0 -1
- package/dist/public/assets/review-view-DBvRJQKT.css.br +0 -0
- package/dist/public/assets/section-DF0g3UYh.css +0 -1
- package/dist/public/assets/section-DF0g3UYh.css.br +0 -0
- package/dist/public/assets/settings-I9rKXr4F.js +0 -1
- package/dist/public/assets/settings-page-DSTN6gbj.css +0 -1
- package/dist/public/assets/settings-page-DSTN6gbj.css.br +0 -0
- package/dist/public/assets/settings-page-ZPnKcjEK.js +0 -2
- package/dist/public/assets/skill-row-bJ0ycL8_.css +0 -1
- package/dist/public/assets/sso-auth-BzQg9Hau.css +0 -1
- package/dist/public/assets/sso-auth-BzQg9Hau.css.br +0 -0
- package/dist/public/assets/w-I9rKXr4F.js +0 -1
- package/dist/public/assets/w._-BZWvupro.js +0 -1
- package/dist/public/assets/w._-D4DOoZXE.js +0 -1
- package/dist/public/assets/w._-I9rKXr4F.js +0 -1
- package/dist/public/assets/worker-BK3lyuKh.js +0 -164
- package/dist/public/assets/worker-BK3lyuKh.js.br +0 -0
|
Binary file
|
package/lib/review/markdown.mjs
CHANGED
|
@@ -64,8 +64,11 @@ export function commentMarkdown(comments, repos) {
|
|
|
64
64
|
function commentBlock(c, n, repos) {
|
|
65
65
|
let head = `## ${n}. ${placeOf(c)}`;
|
|
66
66
|
if (c.side === "deletions") {
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
// The base of the section the line was removed in: a lane's or a PR's
|
|
68
|
+
// is not the checkout's.
|
|
69
|
+
const base = (
|
|
70
|
+
sectionOf(c, repos) ??
|
|
71
|
+
(repos || []).find((r) => r.worktree === folderOf(c.worktree))
|
|
69
72
|
)?.base;
|
|
70
73
|
head += base ? ` [removed from ${base}]` : " [removed]";
|
|
71
74
|
}
|
|
@@ -88,24 +91,33 @@ function folderOf(worktree) {
|
|
|
88
91
|
return worktree.split(/[@#]/)[0];
|
|
89
92
|
}
|
|
90
93
|
|
|
91
|
-
/** The
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
+
/** The section a comment was made in: an older row names it outright; a
|
|
95
|
+
* newer one by the head it was made at — the first section at that head,
|
|
96
|
+
* so a lane still level with the checkout reads as the checkout, which it
|
|
97
|
+
* is.
|
|
94
98
|
* @param {Comment} c
|
|
95
99
|
* @param {Repo[] | null | undefined} repos */
|
|
96
|
-
function
|
|
100
|
+
function sectionOf(c, repos) {
|
|
97
101
|
const folder = folderOf(c.worktree);
|
|
98
102
|
const list = repos || [];
|
|
99
|
-
|
|
100
|
-
// was made at — the first section at that head, so a lane still level
|
|
101
|
-
// with the checkout reads as the checkout, which it is.
|
|
102
|
-
const section =
|
|
103
|
+
return (
|
|
103
104
|
(c.worktree !== folder
|
|
104
105
|
? list.find((r) => r.id === c.worktree)
|
|
105
106
|
: undefined) ??
|
|
106
107
|
(c.head
|
|
107
108
|
? list.find((r) => r.worktree === folder && r.head === c.head)
|
|
108
|
-
: undefined)
|
|
109
|
+
: undefined)
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/** The branch a comment's lines are on when that is not the checkout's:
|
|
114
|
+
* the lane or PR section it was made in (`sectionOf`), or a lane's topic
|
|
115
|
+
* when no section says more.
|
|
116
|
+
* @param {Comment} c
|
|
117
|
+
* @param {Repo[] | null | undefined} repos */
|
|
118
|
+
function branchOf(c, repos) {
|
|
119
|
+
const folder = folderOf(c.worktree);
|
|
120
|
+
const section = sectionOf(c, repos);
|
|
109
121
|
if (section && section.id && section.id !== folder) {
|
|
110
122
|
const name = section.pr?.headRefName || section.headRef || section.branch;
|
|
111
123
|
const pr = section.pr ? ` #${section.pr.number}` : "";
|
package/lib/setup/doctor.d.mts
CHANGED
|
@@ -32,6 +32,9 @@ export interface GithubHostStatus {
|
|
|
32
32
|
/** Orgs whose SAML SSO this host's token still needs to authorize.
|
|
33
33
|
* Populated by the server setup wrapper, not doctor.mjs itself. */
|
|
34
34
|
sso?: { org: string; host: string; authorizeUrl: string }[];
|
|
35
|
+
/** gh itself has this host (its hosts.yml), so it is listed whatever
|
|
36
|
+
* Settings holds. Populated by the server setup wrapper. */
|
|
37
|
+
ghKnown?: boolean;
|
|
35
38
|
}
|
|
36
39
|
export interface Doctor {
|
|
37
40
|
ready: boolean;
|
|
@@ -40,6 +43,8 @@ export interface Doctor {
|
|
|
40
43
|
tools: DoctorTool[];
|
|
41
44
|
agents: DoctorAgent[];
|
|
42
45
|
github: GithubHostStatus[];
|
|
46
|
+
/** Whether the server can keep this Linux host awake; null elsewhere. */
|
|
47
|
+
awake: boolean | null;
|
|
43
48
|
}
|
|
44
49
|
export function setupPath(base?: string): string;
|
|
45
50
|
export function which(bin: string): string | null;
|
package/lib/setup/doctor.mjs
CHANGED
|
@@ -290,6 +290,27 @@ async function githubHostStatus(host) {
|
|
|
290
290
|
};
|
|
291
291
|
}
|
|
292
292
|
|
|
293
|
+
/** Whether the server can keep this Linux host awake (src/server/awake.ts
|
|
294
|
+
* holds the lock itself). Its last resort, an `idle` lock, is one polkit
|
|
295
|
+
* grants anyone, so failing that means nothing holds the host while work
|
|
296
|
+
* runs, and a suspend looks like the network dropping. Null off Linux, where
|
|
297
|
+
* caffeinate asks no one. */
|
|
298
|
+
async function canStayAwake() {
|
|
299
|
+
if (process.platform !== "linux") return null;
|
|
300
|
+
const { ok } = await run(
|
|
301
|
+
"systemd-inhibit",
|
|
302
|
+
[
|
|
303
|
+
"--what=idle",
|
|
304
|
+
"--mode=block",
|
|
305
|
+
"--who=work",
|
|
306
|
+
"--why=work doctor probe",
|
|
307
|
+
"true",
|
|
308
|
+
],
|
|
309
|
+
{ timeout: 5000 },
|
|
310
|
+
);
|
|
311
|
+
return ok;
|
|
312
|
+
}
|
|
313
|
+
|
|
293
314
|
/**
|
|
294
315
|
* Full readiness snapshot.
|
|
295
316
|
*
|
|
@@ -302,9 +323,10 @@ export async function doctor(opts = {}) {
|
|
|
302
323
|
...(opts.hosts || []),
|
|
303
324
|
...ghKnownHosts(),
|
|
304
325
|
]);
|
|
305
|
-
const [versions, github] = await Promise.all([
|
|
326
|
+
const [versions, github, awake] = await Promise.all([
|
|
306
327
|
miseVersions(),
|
|
307
328
|
Promise.all([...hostSet].map(githubHostStatus)),
|
|
329
|
+
canStayAwake(),
|
|
308
330
|
]);
|
|
309
331
|
|
|
310
332
|
const tools = TOOLS.map((t) => {
|
|
@@ -340,6 +362,7 @@ export async function doctor(opts = {}) {
|
|
|
340
362
|
tools,
|
|
341
363
|
agents,
|
|
342
364
|
github,
|
|
365
|
+
awake,
|
|
343
366
|
};
|
|
344
367
|
}
|
|
345
368
|
|
|
@@ -366,6 +389,13 @@ export function formatDoctor(d) {
|
|
|
366
389
|
`${a.label.padEnd(11)}${mark(a.installed)} ${a.installed ? a.instances.map((i) => `${i.command} (${i.path})`).join(", ") : "not installed"}`,
|
|
367
390
|
);
|
|
368
391
|
}
|
|
392
|
+
// Said only when nothing holds the host: not a readiness gate, since
|
|
393
|
+
// work runs either way, but the one place a headless host would say so.
|
|
394
|
+
if (d.awake === false) {
|
|
395
|
+
lines.push(
|
|
396
|
+
`sleep ✗ nothing keeps this host awake: systemd-inhibit is missing or could not take a lock, so the host can suspend under work. Allow org.freedesktop.login1.inhibit-block-idle (a polkit rule), or keep the host up: sudo systemctl mask sleep.target suspend.target`,
|
|
397
|
+
);
|
|
398
|
+
}
|
|
369
399
|
lines.push("");
|
|
370
400
|
lines.push(d.ready ? "ready" : `not ready, missing: ${d.missing.join(", ")}`);
|
|
371
401
|
return lines.join("\n");
|
package/lib/setup/install.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Wraps mise, gh, and the vendors' own agent installers — never reimplements
|
|
3
3
|
// them. Every command streams its output through `log` so a terminal and the
|
|
4
4
|
// Settings page see the same lines. Plain node, no dependencies.
|
|
5
|
-
import { spawn } from "node:child_process";
|
|
5
|
+
import { execFileSync, spawn } from "node:child_process";
|
|
6
6
|
import fs from "node:fs";
|
|
7
7
|
import os from "node:os";
|
|
8
8
|
import path from "node:path";
|
|
@@ -47,25 +47,84 @@ export function runStreaming(
|
|
|
47
47
|
child.stderr?.on("data", onData);
|
|
48
48
|
if (input) child.stdin.write(input);
|
|
49
49
|
child.stdin.end();
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
let timedOut = false;
|
|
51
|
+
// The whole tree, not just the child: an installer's `curl` or a tool's
|
|
52
|
+
// forked worker outlives the shell that started it.
|
|
53
|
+
const timer = setTimeout(() => {
|
|
54
|
+
timedOut = true;
|
|
55
|
+
for (const pid of [...descendants(child.pid), child.pid]) {
|
|
56
|
+
try {
|
|
57
|
+
process.kill(pid, "SIGTERM");
|
|
58
|
+
} catch {}
|
|
59
|
+
}
|
|
60
|
+
}, timeout);
|
|
61
|
+
let drain;
|
|
62
|
+
let settled = false;
|
|
63
|
+
const settle = (code) => {
|
|
64
|
+
if (settled) return;
|
|
65
|
+
settled = true;
|
|
56
66
|
clearTimeout(timer);
|
|
67
|
+
clearTimeout(drain);
|
|
68
|
+
child.stdout?.destroy();
|
|
69
|
+
child.stderr?.destroy();
|
|
57
70
|
if (buf.trim()) onData("\n");
|
|
58
|
-
if (code === 0) resolve(lines);
|
|
71
|
+
if (code === 0 && !timedOut) resolve(lines);
|
|
59
72
|
else
|
|
60
73
|
reject(
|
|
61
74
|
new Error(
|
|
62
|
-
`${cmd} ${args.join(" ")} exited ${code}${lines.length ? `: ${lines[lines.length - 1]}` : ""}`,
|
|
75
|
+
`${cmd} ${args.join(" ")} ${timedOut ? `timed out after ${Math.round(timeout / 1000)}s` : `exited ${code}`}${lines.length ? `: ${lines[lines.length - 1]}` : ""}`,
|
|
63
76
|
),
|
|
64
77
|
);
|
|
78
|
+
};
|
|
79
|
+
child.on("error", (err) => {
|
|
80
|
+
settled = true;
|
|
81
|
+
clearTimeout(timer);
|
|
82
|
+
reject(err);
|
|
83
|
+
});
|
|
84
|
+
child.on("close", settle);
|
|
85
|
+
// `close` waits for every process holding the output pipes, and one the
|
|
86
|
+
// child left behind can hold them forever: a moment after the child
|
|
87
|
+
// itself exits is as long as its output is waited for. Callers hold
|
|
88
|
+
// locks across this call (mise, skills).
|
|
89
|
+
child.on("exit", (code) => {
|
|
90
|
+
drain = setTimeout(() => settle(code), 1000);
|
|
65
91
|
});
|
|
66
92
|
});
|
|
67
93
|
}
|
|
68
94
|
|
|
95
|
+
/** Every process under `pid`, read from one `ps` listing (Linux and macOS
|
|
96
|
+
* alike), so a timeout can stop the tree without moving the child into a
|
|
97
|
+
* process group of its own — which would also take it off the terminal a
|
|
98
|
+
* `work setup` runs in, and out of reach of that terminal's Ctrl-C. */
|
|
99
|
+
function descendants(pid) {
|
|
100
|
+
if (!pid) return [];
|
|
101
|
+
let out = "";
|
|
102
|
+
try {
|
|
103
|
+
out = execFileSync("ps", ["-A", "-o", "pid=", "-o", "ppid="], {
|
|
104
|
+
encoding: "utf8",
|
|
105
|
+
timeout: 5000,
|
|
106
|
+
});
|
|
107
|
+
} catch {
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
const children = new Map();
|
|
111
|
+
for (const line of out.split("\n")) {
|
|
112
|
+
const [child, parent] = line.trim().split(/\s+/).map(Number);
|
|
113
|
+
if (!child) continue;
|
|
114
|
+
if (!children.has(parent)) children.set(parent, []);
|
|
115
|
+
children.get(parent).push(child);
|
|
116
|
+
}
|
|
117
|
+
const found = [];
|
|
118
|
+
const walk = (p) => {
|
|
119
|
+
for (const c of children.get(p) || []) {
|
|
120
|
+
found.push(c);
|
|
121
|
+
walk(c);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
walk(pid);
|
|
125
|
+
return found;
|
|
126
|
+
}
|
|
127
|
+
|
|
69
128
|
/** Fetch a vendor install script to a temp file and run it with `shell`.
|
|
70
129
|
* Same effect as the documented `curl … | bash`, without piping a network
|
|
71
130
|
* stream into a login shell: the URL is pinned in the catalog and the
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Where work listens (WORK_LISTEN) and where this machine reaches it: one
|
|
2
|
+
// rule for the CLI (the socket unit, its own requests to the server), the
|
|
3
|
+
// server (the hooks it writes for panes and bare caches) and migrate.mjs.
|
|
4
|
+
|
|
5
|
+
/** Addresses that mean every interface. */
|
|
6
|
+
const EVERY = new Set(["0.0.0.0", "::", "*"]);
|
|
7
|
+
|
|
8
|
+
/** work.socket's ListenStream for WORK_LISTEN: this machine only unless
|
|
9
|
+
* set, every interface for `0.0.0.0` / `::` / `*`, else that address. */
|
|
10
|
+
export function listenStream(listen, port) {
|
|
11
|
+
if (!listen) return `127.0.0.1:${port}`;
|
|
12
|
+
if (EVERY.has(listen)) return String(port);
|
|
13
|
+
return listen.includes(":") ? `[${listen}]:${port}` : `${listen}:${port}`;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** The host to dial the server at, for WORK_LISTEN: loopback when it
|
|
17
|
+
* listens on every interface or is unset, else the one address it listens
|
|
18
|
+
* on (a server bound to `::1` or a LAN address refuses 127.0.0.1), bracketed
|
|
19
|
+
* when IPv6 so it can go in a URL. */
|
|
20
|
+
export function dialHost(listen) {
|
|
21
|
+
if (!listen || EVERY.has(listen)) return "127.0.0.1";
|
|
22
|
+
return listen.includes(":") ? `[${listen}]` : listen;
|
|
23
|
+
}
|
package/lib/share/manifest.mjs
CHANGED
|
@@ -67,10 +67,15 @@ export function decodeRepo(entry) {
|
|
|
67
67
|
} else return null;
|
|
68
68
|
full = full.trim();
|
|
69
69
|
if (!REPO_RE.test(full)) return null;
|
|
70
|
-
// A host is case-insensitive; the configured list is lowercase.
|
|
70
|
+
// A host is case-insensitive; the configured list is lowercase. And
|
|
71
|
+
// github.com's is never written: `github.com/o/r` kept as such is a
|
|
72
|
+
// second name for `o/r`, which everything keyed by full name tells apart.
|
|
71
73
|
const parts = full.split("/");
|
|
72
|
-
if (parts.length === 3)
|
|
73
|
-
|
|
74
|
+
if (parts.length === 3) {
|
|
75
|
+
const host = parts[0].toLowerCase();
|
|
76
|
+
const name = `${parts[1]}/${parts[2]}`;
|
|
77
|
+
full = host === "github.com" ? name : `${host}/${name}`;
|
|
78
|
+
}
|
|
74
79
|
if (base !== undefined && !BRANCH_RE.test(base)) return null;
|
|
75
80
|
if (dir !== undefined && !DIR_RE.test(dir)) return null;
|
|
76
81
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dylanpiercey/work",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.205",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Web GUI for agentic dev workspaces",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"dev": "marko-run dev src/entry.ts",
|
|
29
29
|
"postinstall": "chmod +x node_modules/node-pty/prebuilds/*/spawn-helper node_modules/node-pty/build/Release/spawn-helper 2>/dev/null || true",
|
|
30
30
|
"build": "node scripts/agents-catalog.mjs && marko-run build src/entry.ts",
|
|
31
|
-
"check": "node scripts/agents-catalog.mjs && mtc",
|
|
31
|
+
"check": "node scripts/agents-catalog.mjs && rm -f tsconfig.tsbuildinfo && mtc",
|
|
32
32
|
"preview": "PORT=7171 node dist/index.mjs",
|
|
33
33
|
"format": "prettier . -w",
|
|
34
34
|
"format:check": "prettier --check ."
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@lobehub/icons-static-svg": "^1.95.1",
|
|
42
|
-
"@marko/run": "^0.11.
|
|
42
|
+
"@marko/run": "^0.11.13",
|
|
43
43
|
"@marko/run-adapter-node": "^2.0.6",
|
|
44
44
|
"@marko/type-check": "^3.2.1",
|
|
45
|
-
"@pierre/diffs": "1.
|
|
45
|
+
"@pierre/diffs": "1.5.1",
|
|
46
46
|
"@pierre/trees": "1.0.0-beta.6",
|
|
47
47
|
"@types/compression": "^1.8.1",
|
|
48
48
|
"@types/node": "^26.6.2",
|
|
@@ -58,14 +58,14 @@
|
|
|
58
58
|
"@xterm/xterm": "^6.0.0",
|
|
59
59
|
"compression": "^1.8.2",
|
|
60
60
|
"iconoir": "^7.12.1",
|
|
61
|
-
"marko": "^6.3.
|
|
61
|
+
"marko": "^6.3.56",
|
|
62
62
|
"playwright": "^1.63.0",
|
|
63
63
|
"prettier": "^3.9.9",
|
|
64
|
-
"prettier-plugin-marko": "^4.1.
|
|
64
|
+
"prettier-plugin-marko": "^4.1.3",
|
|
65
65
|
"serve-static": "^2.2.1",
|
|
66
66
|
"typescript": "^6.0.3",
|
|
67
67
|
"valibot": "^1.5.0",
|
|
68
|
-
"vite": "^8.3.
|
|
68
|
+
"vite": "^8.3.1",
|
|
69
69
|
"web-push": "^3.6.7",
|
|
70
70
|
"ws": "^8.21.3"
|
|
71
71
|
}
|