@dylanpiercey/work 0.0.223 → 0.1.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 +2 -27
- package/bin/work.mjs +51 -105
- package/dist/{_CpANOzpd.js → _Bq7to522.js} +344 -139
- package/dist/_CkwTsHKB.js +2 -0
- package/dist/index.mjs +2222 -2341
- package/dist/public/assets/_1RHVsAcK.js +1 -0
- package/dist/public/assets/_4CShjaLP.js +1 -0
- package/dist/public/assets/_68JtNDO1.js +1 -0
- package/dist/public/assets/{_DoCtdMd2.js → _8G2Mv7jG.js} +1 -1
- package/dist/public/assets/_8G2Mv7jG.js.br +0 -0
- package/dist/public/assets/{_BL9QMk_P.js → _8dvK2NDJ.js} +1 -1
- package/dist/public/assets/_8dvK2NDJ.js.br +0 -0
- package/dist/public/assets/_94L2SIJF.js +1 -0
- package/dist/public/assets/_9AnDb3YH.js +1 -0
- package/dist/public/assets/{_DlpTErRA.js → _9kX9D09B.js} +1 -1
- package/dist/public/assets/_9kX9D09B.js.br +0 -0
- package/dist/public/assets/_9lErVegn.js +1 -0
- package/dist/public/assets/{_DtOzdwHm.js → _B0oyGUU5.js} +1 -1
- package/dist/public/assets/_B0oyGUU5.js.br +0 -0
- package/dist/public/assets/_B1mPnLlp.js +1 -0
- package/dist/public/assets/_B4fi2SSA.js +1 -0
- package/dist/public/assets/{_BUH04L5e.js → _B582D2rg.js} +1 -1
- package/dist/public/assets/{_CT3clsOQ.js → _B7GwDeKK.js} +1 -1
- package/dist/public/assets/_B7Qx25UP.js +1 -0
- package/dist/public/assets/_B7b8EVjA.js +1 -0
- package/dist/public/assets/{_BVp6r0fg.js → _BBWaxDkO.js} +1 -1
- package/dist/public/assets/_BBWaxDkO.js.br +0 -0
- package/dist/public/assets/{_DeCJ44Me.js → _BDa-iwuj.js} +1 -1
- package/dist/public/assets/_BDa-iwuj.js.br +0 -0
- package/dist/public/assets/_BEKHKNmM.js +1 -0
- package/dist/public/assets/{_DJ3UAR_s.js → _BE_Jyvqd.js} +1 -1
- package/dist/public/assets/_BE_Jyvqd.js.br +0 -0
- package/dist/public/assets/_BFU-kJkk.js +1 -0
- package/dist/public/assets/_BIJ2O2oU.js +1 -0
- package/dist/public/assets/_BJ59XAZ9.js +1 -0
- package/dist/public/assets/{_BnOOD6nr.js → _BKqRYfOI.js} +4 -4
- package/dist/public/assets/_BKqRYfOI.js.br +0 -0
- package/dist/public/assets/_BKr9Dzz1.js +1 -0
- package/dist/public/assets/_BN7xvxS_.js +1 -0
- package/dist/public/assets/_BNQTVBlH.js +1 -0
- package/dist/public/assets/{_D8u1YU9b.js → _BNW5Jiec.js} +1 -1
- package/dist/public/assets/_BNW5Jiec.js.br +0 -0
- package/dist/public/assets/{_CZGS4T08.js → _BOGkzMx9.js} +1 -1
- package/dist/public/assets/_BOGkzMx9.js.br +0 -0
- package/dist/public/assets/_BUEpqQ_m.js +1 -0
- package/dist/public/assets/{_B_zyAtSJ.js → _BUvqweu0.js} +1 -1
- package/dist/public/assets/_BUvqweu0.js.br +0 -0
- package/dist/public/assets/{_BsupnkWM.js → _BZKB4fhr.js} +1 -1
- package/dist/public/assets/_BZKB4fhr.js.br +0 -0
- package/dist/public/assets/_BZo9BjDF.js +1 -0
- package/dist/public/assets/{_BeE9qDu0.js → _BbbOvNRH.js} +1 -1
- package/dist/public/assets/_BbbOvNRH.js.br +0 -0
- package/dist/public/assets/_BdUNnSlC.js +1 -0
- package/dist/public/assets/{_Cw_8WbwF.js → _Bf8WYPfh.js} +1 -1
- package/dist/public/assets/_Bf8WYPfh.js.br +0 -0
- package/dist/public/assets/{_pP1W6w5v.js → _Bhx319Hi.js} +1 -1
- package/dist/public/assets/_Bhx319Hi.js.br +0 -0
- package/dist/public/assets/{_O70J1Mfv.js → _Bm4SHrNp.js} +1 -1
- package/dist/public/assets/_Bm4SHrNp.js.br +0 -0
- package/dist/public/assets/{_--tE4Gxz.js → _Bmrqq8Ro.js} +2 -2
- package/dist/public/assets/_Bmrqq8Ro.js.br +0 -0
- package/dist/public/assets/_BnHZ6Npj.js +1 -0
- package/dist/public/assets/{_CLDmR3jR.js → _BoDxRJLS.js} +1 -1
- package/dist/public/assets/_BoDxRJLS.js.br +0 -0
- package/dist/public/assets/_Bo_Ru664.js +1 -0
- package/dist/public/assets/{_BCZpExov.js → _Bp8-V8yl.js} +1 -1
- package/dist/public/assets/_Bp8-V8yl.js.br +0 -0
- package/dist/public/assets/{_CGLpCj_I.js → _BpoeUr5j.js} +1 -1
- package/dist/public/assets/_BpoeUr5j.js.br +0 -0
- package/dist/public/assets/_Bq2G_Tid.js +1 -0
- package/dist/public/assets/_BsyoLB_D.js +1 -0
- package/dist/public/assets/{_BAHrOydH.js → _Bv3e3rg8.js} +1 -1
- package/dist/public/assets/_Bv3e3rg8.js.br +0 -0
- package/dist/public/assets/{_C6i9NP5A.js → _Bv3qNE1b.js} +1 -1
- package/dist/public/assets/{_BXT2bXMi.js → _BvXp6HpX.js} +1 -1
- package/dist/public/assets/_BvXp6HpX.js.br +0 -0
- package/dist/public/assets/{_CX1wufuh.js → _BwP07uVS.js} +1 -1
- package/dist/public/assets/_BwP07uVS.js.br +0 -0
- package/dist/public/assets/{_ifUb4WX7.js → _Bx1CW-sF.js} +1 -1
- package/dist/public/assets/_Bx1CW-sF.js.br +0 -0
- package/dist/public/assets/{_BPcswKMK.js → _BywcP-As.js} +1 -1
- package/dist/public/assets/_BywcP-As.js.br +0 -0
- package/dist/public/assets/{_Bp_WT09q.js → _Bzgtwt3G.js} +1 -1
- package/dist/public/assets/_Bzgtwt3G.js.br +0 -0
- package/dist/public/assets/{_IWMmnVCy.js → _C0_s45qg.js} +1 -1
- package/dist/public/assets/_C0_s45qg.js.br +0 -0
- package/dist/public/assets/_C0ePgF6b.js +1 -0
- package/dist/public/assets/{_Da2Dmt_d.js → _C0oVtTqO.js} +1 -1
- package/dist/public/assets/_C0oVtTqO.js.br +0 -0
- package/dist/public/assets/{_CtyJUmXC.js → _C654p96Z.js} +1 -1
- package/dist/public/assets/_C654p96Z.js.br +0 -0
- package/dist/public/assets/{_2mnAZf6B.js → _C8_1Y2-z.js} +1 -1
- package/dist/public/assets/_C8_1Y2-z.js.br +0 -0
- package/dist/public/assets/_C8v1AZFP.js +1 -0
- package/dist/public/assets/{_BO0OB-rz.js → _CAkPJLeF.js} +1 -1
- package/dist/public/assets/_CAkPJLeF.js.br +0 -0
- package/dist/public/assets/_CB0D5cRH.js +1 -0
- package/dist/public/assets/_CD05JUTh.js +1 -0
- package/dist/public/assets/{_CJ9j8N5Z.js → _CEJUcePr.js} +1 -1
- package/dist/public/assets/_CEJUcePr.js.br +0 -0
- package/dist/public/assets/{_DuarImb7.js → _CEXHZd73.js} +1 -1
- package/dist/public/assets/_CEXHZd73.js.br +0 -0
- package/dist/public/assets/_CHcUMVR7.js +1 -0
- package/dist/public/assets/{_BnyLUTdO.js → _CHuLFr1f.js} +1 -1
- package/dist/public/assets/_CHuLFr1f.js.br +0 -0
- package/dist/public/assets/{_DwcoW-IU.js → _CIb7xw_1.js} +1 -1
- package/dist/public/assets/_CIb7xw_1.js.br +0 -0
- package/dist/public/assets/{_B1RldJ0S.js → _CMSBfO6u.js} +1 -1
- package/dist/public/assets/_CMSBfO6u.js.br +0 -0
- package/dist/public/assets/_CN7GPyBo.js +1 -0
- package/dist/public/assets/{_DI0QHEXB.js → _COcePo2y.js} +1 -1
- package/dist/public/assets/_COcePo2y.js.br +0 -0
- package/dist/public/assets/{_eQK3EZCc.js → _CTINBWaG.js} +1 -1
- package/dist/public/assets/_CTINBWaG.js.br +0 -0
- package/dist/public/assets/_CTWrnAbz.js +1 -0
- package/dist/public/assets/{_CLerZOx-.js → _CUXajOKj.js} +1 -1
- package/dist/public/assets/_CUXajOKj.js.br +0 -0
- package/dist/public/assets/{_ChpYg41R.js → _CVru3vzC.js} +1 -1
- package/dist/public/assets/{_BA8HFnO3.js → _CYjE__ml.js} +1 -1
- package/dist/public/assets/_CYjE__ml.js.br +0 -0
- package/dist/public/assets/{_dr95P55a.js → _CZ_OWtIT.js} +1 -1
- package/dist/public/assets/_CZ_OWtIT.js.br +0 -0
- package/dist/public/assets/{_BLTfQLdY.js → _C_37_B6u.js} +1 -1
- package/dist/public/assets/_C_37_B6u.js.br +0 -0
- package/dist/public/assets/{_xdrkfok5.js → _C_CIQL7J.js} +1 -1
- package/dist/public/assets/_C_CIQL7J.js.br +0 -0
- package/dist/public/assets/_C_WdpYbK.js +1 -0
- package/dist/public/assets/_CaiH3VN9.js +1 -0
- package/dist/public/assets/{_CCCQMLw5.js → _CamWDaoG.js} +1 -1
- package/dist/public/assets/_CamWDaoG.js.br +0 -0
- package/dist/public/assets/_CdDElA0V.js +1 -0
- package/dist/public/assets/_CfnsClzZ.js +1 -0
- package/dist/public/assets/{_SwbsOoi9.js → _Cgo1fRhJ.js} +1 -1
- package/dist/public/assets/_Cgo1fRhJ.js.br +0 -0
- package/dist/public/assets/_CjhGrlf3.js +1 -0
- package/dist/public/assets/_CjlbL4C_.js +1 -0
- package/dist/public/assets/_CjogTUXK.js +1 -0
- package/dist/public/assets/{_mnBdD4YN.js → _ClldMY37.js} +1 -1
- package/dist/public/assets/_ClldMY37.js.br +0 -0
- package/dist/public/assets/_CmFq6Gtp.js +1 -0
- package/dist/public/assets/_CoAPOKiP.js +1 -0
- package/dist/public/assets/_CoUUgh9P.js +1 -0
- package/dist/public/assets/{_s5Jez2mu.js → _CpjSCB1I.js} +1 -1
- package/dist/public/assets/_CpjSCB1I.js.br +0 -0
- package/dist/public/assets/{_DeN4EY8L.js → _Ct3RF80L.js} +1 -1
- package/dist/public/assets/_Ct3RF80L.js.br +0 -0
- package/dist/public/assets/_CtYy5eZs.js +1 -0
- package/dist/public/assets/{_BS4crAAm.js → _CxAPL49a.js} +1 -1
- package/dist/public/assets/_CxAPL49a.js.br +0 -0
- package/dist/public/assets/{_CwmzEsB4.js → _CyBCIknf.js} +1 -1
- package/dist/public/assets/_CyBCIknf.js.br +0 -0
- package/dist/public/assets/{_unfL8mz1.js → _Cz5BPBG8.js} +1 -1
- package/dist/public/assets/_Cz5BPBG8.js.br +0 -0
- package/dist/public/assets/_D-eEFXaI.js +1 -0
- package/dist/public/assets/{_gPFPzzPF.js → _D0aoEFRx.js} +1 -1
- package/dist/public/assets/_D0aoEFRx.js.br +0 -0
- package/dist/public/assets/{_CnKYioYw.js → _D1uRW1qz.js} +1 -1
- package/dist/public/assets/_D1uRW1qz.js.br +0 -0
- package/dist/public/assets/_D2oIr2T2.js +1 -0
- package/dist/public/assets/{_BBpX-M4b.js → _D2un443j.js} +1 -1
- package/dist/public/assets/_D2un443j.js.br +0 -0
- package/dist/public/assets/_D3MPx4-f.js +1 -0
- package/dist/public/assets/{_DzrtBP-L.js → _D4dJ2qEE.js} +1 -1
- package/dist/public/assets/{_Fzbz4zvE.js → _D4q8XSMI.js} +1 -1
- package/dist/public/assets/_D4q8XSMI.js.br +0 -0
- package/dist/public/assets/{_BxAl0m64.js → _D4quFMVQ.js} +1 -1
- package/dist/public/assets/_D4quFMVQ.js.br +0 -0
- package/dist/public/assets/{_pvS44-AC.js → _D4rOX-Fa.js} +1 -1
- package/dist/public/assets/_D4rOX-Fa.js.br +0 -0
- package/dist/public/assets/_D5edrSyA.js +1 -0
- package/dist/public/assets/{_DuXOUegE.js → _D6kktUFn.js} +1 -1
- package/dist/public/assets/_D6kktUFn.js.br +0 -0
- package/dist/public/assets/_D80-qtVY.js +1 -0
- package/dist/public/assets/_D9-3EVA4.js +1 -0
- package/dist/public/assets/{_CE5MhJWL.js → _D9sS4J_w.js} +1 -1
- package/dist/public/assets/_D9sS4J_w.js.br +0 -0
- package/dist/public/assets/_DBLpxTDi.js +1 -0
- package/dist/public/assets/{_CYNAhnRH.js → _DByHQ7nW.js} +6 -6
- package/dist/public/assets/_DByHQ7nW.js.br +0 -0
- package/dist/public/assets/{_D-hK5uFn.js → _DC-78WeM.js} +1 -1
- package/dist/public/assets/_DC-78WeM.js.br +0 -0
- package/dist/public/assets/{_DmDSLxrw.js → _DDl8KSWJ.js} +1 -1
- package/dist/public/assets/_DDl8KSWJ.js.br +0 -0
- package/dist/public/assets/{_C-6dImS5.js → _DFWOMF-B.js} +1 -1
- package/dist/public/assets/_DFWOMF-B.js.br +0 -0
- package/dist/public/assets/_DKb-rt9n.js +1 -0
- package/dist/public/assets/_DMnSJCF_.js +1 -0
- package/dist/public/assets/_DOOIlrPh.js +1 -0
- package/dist/public/assets/_DPW-0yKP.js +1 -0
- package/dist/public/assets/_DR3BmvWU.js +1 -0
- package/dist/public/assets/{_C9OdJcx4.js → _DSVLaMWS.js} +1 -1
- package/dist/public/assets/_DSVLaMWS.js.br +0 -0
- package/dist/public/assets/_DYNGNKLk.js +1 -0
- package/dist/public/assets/_DZnEgCbj.js +1 -0
- package/dist/public/assets/{_zKlxcAnQ.js → _DaMVRI8f.js} +1 -1
- package/dist/public/assets/_DaMVRI8f.js.br +0 -0
- package/dist/public/assets/{_DGTQBWy0.js → _DbvaGqOl.js} +1 -1
- package/dist/public/assets/_DbvaGqOl.js.br +0 -0
- package/dist/public/assets/{_DiqV5bDH.js → _DcMIlvz-.js} +1 -1
- package/dist/public/assets/_DcMIlvz-.js.br +0 -0
- package/dist/public/assets/{__Oa255vo.js → _Dd6X3e7w.js} +1 -1
- package/dist/public/assets/_Dd6X3e7w.js.br +0 -0
- package/dist/public/assets/{_BdvO5Lqa.js → _De7P3jUH.js} +1 -1
- package/dist/public/assets/_De7P3jUH.js.br +0 -0
- package/dist/public/assets/_DeiFEAar.js +1 -0
- package/dist/public/assets/{_vKQopDwG.js → _DfI982PI.js} +1 -1
- package/dist/public/assets/_DfI982PI.js.br +0 -0
- package/dist/public/assets/_DfZ6emcw.js +1 -0
- package/dist/public/assets/{_DxVt7Zuk.js → _Dj1lZ1pa.js} +4 -4
- package/dist/public/assets/_Dj1lZ1pa.js.br +0 -0
- package/dist/public/assets/{_DhEdzMUw.js → _DkCaEf_h.js} +1 -1
- package/dist/public/assets/_DkCaEf_h.js.br +0 -0
- package/dist/public/assets/_DonAis0J.js +1 -0
- package/dist/public/assets/{_BRG_DBcC.js → _Dp3IZdH8.js} +1 -1
- package/dist/public/assets/_Dp3IZdH8.js.br +0 -0
- package/dist/public/assets/{_unwtcXFQ.js → _DqYih4xk.js} +1 -1
- package/dist/public/assets/_DqYih4xk.js.br +0 -0
- package/dist/public/assets/{_BLRpf6Uw.js → _DqhphdU4.js} +1 -1
- package/dist/public/assets/_DqhphdU4.js.br +0 -0
- package/dist/public/assets/{_C87NBm9i.js → _DrIgZJzN.js} +1 -1
- package/dist/public/assets/_DrIgZJzN.js.br +0 -0
- package/dist/public/assets/_Dt4hHR05.js +1 -0
- package/dist/public/assets/_DtTbTraA.js +1 -0
- package/dist/public/assets/_DwMxAJKP.js +1 -0
- package/dist/public/assets/{_CttJbiei.js → _DxEm-Gwj.js} +1 -1
- package/dist/public/assets/_DxEm-Gwj.js.br +0 -0
- package/dist/public/assets/{_CdgAsi3s.js → _Dytf99zx.js} +1 -1
- package/dist/public/assets/_Dytf99zx.js.br +0 -0
- package/dist/public/assets/_EAgv5jR9.js +1 -0
- package/dist/public/assets/{_C9qO_dny.js → _Iecpd0kS.js} +1 -1
- package/dist/public/assets/_Iecpd0kS.js.br +0 -0
- package/dist/public/assets/{_DuGmU4h0.js → _MCwIJAuJ.js} +1 -1
- package/dist/public/assets/_MCwIJAuJ.js.br +0 -0
- package/dist/public/assets/{_BJRSndB4.js → _NM79Lu3L.js} +1 -1
- package/dist/public/assets/_NM79Lu3L.js.br +0 -0
- package/dist/public/assets/_QpNKKuS9.js +1 -0
- package/dist/public/assets/{_BbiACo0Y.js → _SGDxiwE1.js} +1 -1
- package/dist/public/assets/_SGDxiwE1.js.br +0 -0
- package/dist/public/assets/_TA8pE7z9.js +1 -0
- package/dist/public/assets/_bE4sNDeU.js +1 -0
- package/dist/public/assets/{_pUYwxsdF.js → _bcsuBP7T.js} +1 -1
- package/dist/public/assets/_bcsuBP7T.js.br +0 -0
- package/dist/public/assets/_cdcAU4yY.js +1 -0
- package/dist/public/assets/{_DhNuRs-V.js → _ch_yXAap.js} +1 -1
- package/dist/public/assets/_ch_yXAap.js.br +0 -0
- package/dist/public/assets/{_DaqT6m41.js → _d5u7EI97.js} +1 -1
- package/dist/public/assets/_d5u7EI97.js.br +0 -0
- package/dist/public/assets/{_C2ZpyiHV.js → _eoa1EOU-.js} +1 -1
- package/dist/public/assets/_eoa1EOU-.js.br +0 -0
- package/dist/public/assets/{_C1PmcEws.js → _j2tDSMvo.js} +1 -1
- package/dist/public/assets/_j2tDSMvo.js.br +0 -0
- package/dist/public/assets/_jNhIFgbc.js +1 -0
- package/dist/public/assets/_kDYiTaag.js +1 -0
- package/dist/public/assets/_lNMVVbUx.js +1 -0
- package/dist/public/assets/_nwJ7Hu3S.js +1 -0
- package/dist/public/assets/{_qJTL2ooe.js → _tmDtUACa.js} +1 -1
- package/dist/public/assets/_tmDtUACa.js.br +0 -0
- package/dist/public/assets/{_BewXp5Y_.js → _wXDh-Z2N.js} +1 -1
- package/dist/public/assets/_wXDh-Z2N.js.br +0 -0
- package/dist/public/assets/{_CB31bp-W.js → _wcshV0sZ.js} +1 -1
- package/dist/public/assets/_wcshV0sZ.js.br +0 -0
- package/dist/public/assets/_x-NwqgCn.js +1 -0
- package/dist/public/assets/{_BsimXDnm.js → _xyw_DS5P.js} +1 -1
- package/dist/public/assets/_xyw_DS5P.js.br +0 -0
- package/dist/public/assets/{_Aq9oGnRu.js → _zSAfqXcm.js} +1 -1
- package/dist/public/assets/_zSAfqXcm.js.br +0 -0
- package/dist/public/assets/{app-shell-CpPCwWPW.css → app-shell-ChQoVC5b.css} +1 -1
- package/dist/public/assets/app-shell-ChQoVC5b.css.br +0 -0
- package/dist/public/assets/files-view-CLtLp_BW.js +2 -0
- package/dist/public/assets/{files-view-DtI7JE-f.css → files-view-CNHQapdI.css} +1 -1
- package/dist/public/assets/files-view-CNHQapdI.css.br +0 -0
- package/dist/public/assets/group.css.ts-BG82htKb.css +1 -0
- package/dist/public/assets/group.css.ts-BG82htKb.css.br +0 -0
- package/dist/public/assets/icon-folder-DJOHuEpD.css +1 -0
- package/dist/public/assets/icon-folder-DJOHuEpD.css.br +0 -0
- package/dist/public/assets/{icon-search-DAtjHWFL.css → icon-search-DsJuFXUJ.css} +1 -1
- package/dist/public/assets/icon-search-DsJuFXUJ.css.br +0 -0
- package/dist/public/assets/manage-workspace-NBcFDyrB.js +2 -0
- package/dist/public/assets/manage-workspace-f_Np32TD.css +1 -0
- package/dist/public/assets/{modal-view-D0qnmuJE.css → modal-view-KVNBpNYi.css} +1 -1
- package/dist/public/assets/modal-view-KVNBpNYi.css.br +0 -0
- package/dist/public/assets/new-DHI77GvL.js +1 -0
- package/dist/public/assets/new-workspace-BFE-HpD_.css +1 -0
- package/dist/public/assets/new-workspace-BFE-HpD_.css.br +0 -0
- package/dist/public/assets/new-workspace-BRzimdd5.js +2 -0
- package/dist/public/assets/port-chip-CUUIDOVM.css +1 -0
- package/dist/public/assets/port-chip-CUUIDOVM.css.br +0 -0
- package/dist/public/assets/prompt-dialog-BGs6RXOV.css +1 -0
- package/dist/public/assets/prompt-dialog-BGs6RXOV.css.br +0 -0
- package/dist/public/assets/{quick-open-DVqzk3-g.css → quick-open-Gx4so1bl.css} +1 -1
- package/dist/public/assets/quick-open-Gx4so1bl.css.br +0 -0
- package/dist/public/assets/repo-picker-CUhd0vJN.css +1 -0
- package/dist/public/assets/repo-picker-CUhd0vJN.css.br +4 -0
- package/dist/public/assets/review-view-DFEK9VBa.js +2 -0
- package/dist/public/assets/{review-view-DqMrB4Ny.css → review-view-deUY3OE5.css} +1 -1
- package/dist/public/assets/review-view-deUY3OE5.css.br +0 -0
- package/dist/public/assets/section-CziSOSBR.css +1 -0
- package/dist/public/assets/section-CziSOSBR.css.br +0 -0
- package/dist/public/assets/settings-DHI77GvL.js +1 -0
- package/dist/public/assets/settings-page-OOtPOzIn.js +2 -0
- package/dist/public/assets/settings-page-wZhd7FLi.css +1 -0
- package/dist/public/assets/settings-page-wZhd7FLi.css.br +0 -0
- package/dist/public/assets/skill-row-BoCyFIXg.css +1 -0
- package/dist/public/assets/sso-auth-DV76tTpE.css +1 -0
- package/dist/public/assets/sso-auth-DV76tTpE.css.br +0 -0
- package/dist/public/assets/w-DHI77GvL.js +1 -0
- package/dist/public/assets/w._-DHI77GvL.js +1 -0
- package/dist/public/assets/w._-DsTgq3-C.js +1 -0
- package/dist/public/assets/w._-igEOSPR-.js +1 -0
- package/lib/review/markdown.mjs +5 -5
- package/lib/setup/bridge.d.mts +10 -0
- package/lib/setup/bridge.mjs +84 -0
- package/lib/setup/doctor.d.mts +5 -0
- package/lib/setup/doctor.mjs +45 -1
- package/lib/setup/install.d.mts +1 -0
- package/lib/setup/install.mjs +21 -1
- package/lib/setup/listen.mjs +2 -2
- package/lib/share/manifest.mjs +2 -1
- package/package.json +2 -3
- package/dist/_LF2Fo5WE.js +0 -2
- package/dist/public/assets/_--tE4Gxz.js.br +0 -0
- package/dist/public/assets/_1OL9vXM-.js +0 -1
- package/dist/public/assets/_2mnAZf6B.js.br +0 -0
- package/dist/public/assets/_5f9fMvWJ.js +0 -1
- package/dist/public/assets/_5y69OR6M.js +0 -1
- package/dist/public/assets/_Aq9oGnRu.js.br +0 -0
- package/dist/public/assets/_B0uJCjmk.js +0 -1
- package/dist/public/assets/_B1RldJ0S.js.br +0 -0
- package/dist/public/assets/_B5TpOQCZ.js +0 -1
- package/dist/public/assets/_B6UdulKa.js +0 -1
- package/dist/public/assets/_BA8HFnO3.js.br +0 -0
- package/dist/public/assets/_BAHrOydH.js.br +0 -0
- package/dist/public/assets/_BBpX-M4b.js.br +0 -0
- package/dist/public/assets/_BCZpExov.js.br +0 -0
- package/dist/public/assets/_BFZHNauV.js +0 -1
- package/dist/public/assets/_BJRSndB4.js.br +0 -0
- package/dist/public/assets/_BL9QMk_P.js.br +0 -0
- package/dist/public/assets/_BLNEzyb5.js +0 -1
- package/dist/public/assets/_BLRpf6Uw.js.br +0 -0
- package/dist/public/assets/_BLTfQLdY.js.br +0 -0
- package/dist/public/assets/_BO0OB-rz.js.br +0 -0
- package/dist/public/assets/_BPcswKMK.js.br +0 -0
- package/dist/public/assets/_BPhXWliU.js +0 -1
- package/dist/public/assets/_BQXTv9Cr.js +0 -1
- package/dist/public/assets/_BRG_DBcC.js.br +0 -0
- package/dist/public/assets/_BS4crAAm.js.br +0 -0
- package/dist/public/assets/_BVp6r0fg.js.br +0 -0
- package/dist/public/assets/_BXT2bXMi.js.br +0 -0
- package/dist/public/assets/_B_zyAtSJ.js.br +0 -0
- package/dist/public/assets/_BaXKdIeb.js +0 -1
- package/dist/public/assets/_BbiACo0Y.js.br +0 -0
- package/dist/public/assets/_BdvO5Lqa.js.br +0 -0
- package/dist/public/assets/_BeE9qDu0.js.br +0 -0
- package/dist/public/assets/_BewXp5Y_.js.br +0 -0
- package/dist/public/assets/_BfOOLKo5.js +0 -1
- package/dist/public/assets/_BhS8bTnr.js +0 -1
- package/dist/public/assets/_BhZ3ZoG0.js +0 -1
- package/dist/public/assets/_Bi3_ZsOQ.js +0 -1
- package/dist/public/assets/_Bj_Lfa8B.js +0 -1
- package/dist/public/assets/_BlN_x04q.js +0 -1
- package/dist/public/assets/_Bn5nsnie.js +0 -1
- package/dist/public/assets/_BnOOD6nr.js.br +0 -0
- package/dist/public/assets/_BnyLUTdO.js.br +0 -0
- package/dist/public/assets/_Bp_WT09q.js.br +0 -0
- package/dist/public/assets/_BsimXDnm.js.br +0 -0
- package/dist/public/assets/_BsupnkWM.js.br +0 -0
- package/dist/public/assets/_BxAl0m64.js.br +0 -0
- package/dist/public/assets/_C-6dImS5.js.br +0 -0
- package/dist/public/assets/_C18Torhh.js +0 -1
- package/dist/public/assets/_C1PmcEws.js.br +0 -0
- package/dist/public/assets/_C2ZpyiHV.js.br +0 -0
- package/dist/public/assets/_C3P1VHUI.js +0 -1
- package/dist/public/assets/_C6xwTKke.js +0 -1
- package/dist/public/assets/_C6yqlRfl.js +0 -1
- package/dist/public/assets/_C75D8bH2.js +0 -1
- package/dist/public/assets/_C87NBm9i.js.br +0 -0
- package/dist/public/assets/_C8Vc_vBH.js +0 -1
- package/dist/public/assets/_C9OdJcx4.js.br +0 -0
- package/dist/public/assets/_C9eoo0sE.js +0 -1
- package/dist/public/assets/_C9qO_dny.js.br +0 -0
- package/dist/public/assets/_CB31bp-W.js.br +0 -0
- package/dist/public/assets/_CCCQMLw5.js.br +0 -0
- package/dist/public/assets/_CCie36pi.js +0 -1
- package/dist/public/assets/_CDD9N34p.js +0 -1
- package/dist/public/assets/_CE5MhJWL.js.br +0 -0
- package/dist/public/assets/_CGLpCj_I.js.br +0 -0
- package/dist/public/assets/_CJ9j8N5Z.js.br +0 -0
- package/dist/public/assets/_CLDmR3jR.js.br +0 -0
- package/dist/public/assets/_CLerZOx-.js.br +0 -0
- package/dist/public/assets/_CM5GtJb2.js +0 -1
- package/dist/public/assets/_COECwOVb.js +0 -1
- package/dist/public/assets/_CSQE9nMN.js +0 -1
- package/dist/public/assets/_CSXMgHLQ.js +0 -1
- package/dist/public/assets/_CVRiByCT.js +0 -1
- package/dist/public/assets/_CVSrm4Pl.js +0 -1
- package/dist/public/assets/_CX1wufuh.js.br +0 -0
- package/dist/public/assets/_CYNAhnRH.js.br +0 -0
- package/dist/public/assets/_CZGS4T08.js.br +0 -0
- package/dist/public/assets/_C_L7l9Mg.js +0 -1
- package/dist/public/assets/_CaMrYy1W.js +0 -1
- package/dist/public/assets/_CdgAsi3s.js.br +0 -0
- package/dist/public/assets/_Ce-E7sJE.js +0 -1
- package/dist/public/assets/_Cg3S760D.js +0 -1
- package/dist/public/assets/_CicyY7KP.js +0 -1
- package/dist/public/assets/_Ck0YOw_7.js +0 -1
- package/dist/public/assets/_CmHlTZSs.js +0 -1
- package/dist/public/assets/_CnECYh66.js +0 -1
- package/dist/public/assets/_CnKYioYw.js.br +0 -0
- package/dist/public/assets/_CnUVvVPd.js +0 -1
- package/dist/public/assets/_CqSgGCGC.js +0 -1
- package/dist/public/assets/_CttJbiei.js.br +0 -0
- package/dist/public/assets/_CtyJUmXC.js.br +0 -0
- package/dist/public/assets/_Cw_8WbwF.js.br +0 -0
- package/dist/public/assets/_CwmzEsB4.js.br +0 -0
- package/dist/public/assets/_CzETFsJs.js +0 -1
- package/dist/public/assets/_D-S9H-tX.js +0 -1
- package/dist/public/assets/_D-hK5uFn.js.br +0 -0
- package/dist/public/assets/_D5fTwHXK.js +0 -1
- package/dist/public/assets/_D8u1YU9b.js.br +0 -0
- package/dist/public/assets/_DAH8evhA.js +0 -1
- package/dist/public/assets/_DAemmoHI.js +0 -1
- package/dist/public/assets/_DEMYxWZf.js +0 -1
- package/dist/public/assets/_DGTQBWy0.js.br +0 -0
- package/dist/public/assets/_DHhv0pCA.js +0 -1
- package/dist/public/assets/_DI0QHEXB.js.br +0 -0
- package/dist/public/assets/_DJ3UAR_s.js.br +0 -0
- package/dist/public/assets/_DKu6UxI7.js +0 -1
- package/dist/public/assets/_DNC-9RBN.js +0 -1
- package/dist/public/assets/_DP-Bu7ET.js +0 -1
- package/dist/public/assets/_DYmmPBcq.js +0 -1
- package/dist/public/assets/_Da2Dmt_d.js.br +0 -0
- package/dist/public/assets/_DaqT6m41.js.br +0 -0
- package/dist/public/assets/_DbVyutEZ.js +0 -1
- package/dist/public/assets/_DcBvO2Si.js +0 -1
- package/dist/public/assets/_DeCJ44Me.js.br +0 -0
- package/dist/public/assets/_DeN4EY8L.js.br +0 -0
- package/dist/public/assets/_DhEdzMUw.js.br +0 -0
- package/dist/public/assets/_DhNuRs-V.js.br +0 -0
- package/dist/public/assets/_DiqV5bDH.js.br +0 -0
- package/dist/public/assets/_Diqt_yCf.js +0 -1
- package/dist/public/assets/_DlpTErRA.js.br +0 -0
- package/dist/public/assets/_DmDSLxrw.js.br +0 -0
- package/dist/public/assets/_DoC0qbSD.js +0 -1
- package/dist/public/assets/_DoCtdMd2.js.br +0 -0
- package/dist/public/assets/_DpqWFkMg.js +0 -1
- package/dist/public/assets/_Dr0Bkgso.js +0 -1
- package/dist/public/assets/_Dt-n9FaQ.js +0 -1
- package/dist/public/assets/_DtOzdwHm.js.br +0 -0
- package/dist/public/assets/_DuGmU4h0.js.br +0 -0
- package/dist/public/assets/_DuXOUegE.js.br +0 -0
- package/dist/public/assets/_DuaocJd1.js +0 -1
- package/dist/public/assets/_DuarImb7.js.br +0 -0
- package/dist/public/assets/_DwcoW-IU.js.br +0 -0
- package/dist/public/assets/_DxVt7Zuk.js.br +0 -0
- package/dist/public/assets/_Fzbz4zvE.js.br +0 -0
- package/dist/public/assets/_I5oX-lGP.js +0 -1
- package/dist/public/assets/_IWMmnVCy.js.br +0 -0
- package/dist/public/assets/_O70J1Mfv.js.br +0 -0
- package/dist/public/assets/_SwbsOoi9.js.br +0 -0
- package/dist/public/assets/_Yy39CykK.js +0 -1
- package/dist/public/assets/__Oa255vo.js.br +0 -0
- package/dist/public/assets/_bPze7k1x.js +0 -1
- package/dist/public/assets/_bU1KcT1I.js +0 -1
- package/dist/public/assets/_dr95P55a.js.br +0 -0
- package/dist/public/assets/_eQK3EZCc.js.br +0 -0
- package/dist/public/assets/_gPFPzzPF.js.br +0 -0
- package/dist/public/assets/_hzpOPZUB.js +0 -1
- package/dist/public/assets/_ifUb4WX7.js.br +0 -0
- package/dist/public/assets/_kQ7LiSim.js +0 -1
- package/dist/public/assets/_lOAW1VLM.js +0 -1
- package/dist/public/assets/_mnBdD4YN.js.br +0 -0
- package/dist/public/assets/_odBcV1kc.js +0 -1
- package/dist/public/assets/_pP1W6w5v.js.br +0 -0
- package/dist/public/assets/_pUYwxsdF.js.br +0 -0
- package/dist/public/assets/_pvS44-AC.js.br +0 -0
- package/dist/public/assets/_qJTL2ooe.js.br +0 -0
- package/dist/public/assets/_s5Jez2mu.js.br +0 -0
- package/dist/public/assets/_unfL8mz1.js.br +0 -0
- package/dist/public/assets/_unwtcXFQ.js.br +0 -0
- package/dist/public/assets/_vKQopDwG.js.br +0 -0
- package/dist/public/assets/_w1aegGdT.js +0 -1
- package/dist/public/assets/_xdrkfok5.js.br +0 -0
- package/dist/public/assets/_y-lm36fI.js +0 -1
- package/dist/public/assets/_zKlxcAnQ.js.br +0 -0
- package/dist/public/assets/app-shell-CpPCwWPW.css.br +0 -0
- package/dist/public/assets/files-view-BfCdcfXX.js +0 -2
- package/dist/public/assets/files-view-DtI7JE-f.css.br +0 -0
- package/dist/public/assets/group.css.ts-SeaNz7WZ.css +0 -1
- package/dist/public/assets/group.css.ts-SeaNz7WZ.css.br +0 -0
- package/dist/public/assets/icon-folder-DHVc-REl.css +0 -1
- package/dist/public/assets/icon-folder-DHVc-REl.css.br +0 -0
- package/dist/public/assets/icon-search-DAtjHWFL.css.br +0 -0
- package/dist/public/assets/manage-workspace-6i6Zeai7.css +0 -1
- package/dist/public/assets/manage-workspace-CixeMkdt.js +0 -2
- package/dist/public/assets/modal-view-D0qnmuJE.css.br +0 -0
- package/dist/public/assets/new-DxhaKmbF.js +0 -1
- package/dist/public/assets/new-workspace-BXjDRbqF.css +0 -1
- package/dist/public/assets/new-workspace-BXjDRbqF.css.br +0 -0
- package/dist/public/assets/new-workspace-DG693v2S.js +0 -2
- package/dist/public/assets/port-chip-Lz3mVJWb.css +0 -1
- package/dist/public/assets/port-chip-Lz3mVJWb.css.br +0 -0
- package/dist/public/assets/prompt-dialog-vhnae1-x.css +0 -1
- package/dist/public/assets/prompt-dialog-vhnae1-x.css.br +0 -0
- package/dist/public/assets/quick-open-DVqzk3-g.css.br +0 -0
- package/dist/public/assets/repo-picker-K5RYsEge.css +0 -1
- package/dist/public/assets/repo-picker-K5RYsEge.css.br +0 -0
- package/dist/public/assets/review-view-DqMrB4Ny.css.br +0 -0
- package/dist/public/assets/review-view-TdLbCgEg.js +0 -2
- package/dist/public/assets/section-2MyJSq5D.css +0 -1
- package/dist/public/assets/section-2MyJSq5D.css.br +0 -0
- package/dist/public/assets/settings-DxhaKmbF.js +0 -1
- package/dist/public/assets/settings-page-BBAG94Vh.js +0 -2
- package/dist/public/assets/settings-page-DUefc32x.css +0 -1
- package/dist/public/assets/settings-page-DUefc32x.css.br +0 -0
- package/dist/public/assets/skill-row-BeOk8NK8.css +0 -1
- package/dist/public/assets/sso-auth-CU3fGJ4U.css +0 -1
- package/dist/public/assets/sso-auth-CU3fGJ4U.css.br +0 -0
- package/dist/public/assets/w-DxhaKmbF.js +0 -1
- package/dist/public/assets/w._-C6JVdFgi.js +0 -1
- package/dist/public/assets/w._-DxhaKmbF.js +0 -1
- package/dist/public/assets/w._-rfvcDGPk.js +0 -1
- package/scripts/migrate.mjs +0 -682
package/lib/review/markdown.mjs
CHANGED
|
@@ -85,16 +85,16 @@ function commentBlock(c, n, repos) {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
/** The folder a comment's `worktree` names: a section id (`repo@topic`,
|
|
88
|
-
* `repo#12`) is a view of the folder, and
|
|
88
|
+
* `repo#12`) is a view of the folder, and a row may hold the id.
|
|
89
89
|
* @param {string} worktree */
|
|
90
90
|
function folderOf(worktree) {
|
|
91
91
|
return worktree.split(/[@#]/)[0];
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
/** The section a comment was made in:
|
|
95
|
-
*
|
|
96
|
-
* so a lane still level with the checkout reads as
|
|
97
|
-
* is.
|
|
94
|
+
/** The section a comment was made in: a row holding a section id names it
|
|
95
|
+
* outright; one holding the folder, by the head it was made at — the first
|
|
96
|
+
* section at that head, so a lane still level with the checkout reads as
|
|
97
|
+
* the checkout, which it is.
|
|
98
98
|
* @param {Comment} c
|
|
99
99
|
* @param {Repo[] | null | undefined} repos */
|
|
100
100
|
function sectionOf(c, repos) {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const BASELINE: number;
|
|
2
|
+
export function bridgeSpec(): string;
|
|
3
|
+
export function bridgeCommands(dataDir: string): string[];
|
|
4
|
+
export function needsBridge(file: string): boolean;
|
|
5
|
+
export function bridgeIfNeeded(
|
|
6
|
+
dataDir: string,
|
|
7
|
+
env: Record<string, string | undefined>,
|
|
8
|
+
log?: (line: string) => void,
|
|
9
|
+
): boolean;
|
|
10
|
+
export function bridgeForServer(dataDir: string): boolean;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// The one step between a 0.0.x database and this release: 0.0.223's
|
|
2
|
+
// `work migrate` runs the sweeps that 0.0.x kept for its own upgrades and
|
|
3
|
+
// stamps schema version 1, the baseline src/server/migrations.ts starts
|
|
4
|
+
// from. `work setup` runs it before touching the service, and the server
|
|
5
|
+
// runs it itself when it opens a database that has not had it (installed
|
|
6
|
+
// without setup, or restarted before setup ran), naming the same commands
|
|
7
|
+
// only if it fails. Everything about crossing into 0.1 is here, so it goes
|
|
8
|
+
// whole once no install is left on 0.0.x. Plain node, no dependencies.
|
|
9
|
+
import { spawnSync } from "node:child_process";
|
|
10
|
+
import fs from "node:fs";
|
|
11
|
+
import { createRequire } from "node:module";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
|
|
14
|
+
/** The schema version 0.0.223 stamps: step 1 in src/server/migrations.ts. */
|
|
15
|
+
export const BASELINE = 1;
|
|
16
|
+
|
|
17
|
+
/** The release that brings a database to the baseline. WORK_BRIDGE_SPEC
|
|
18
|
+
* names another (an `npm pack` tarball of it) to try the bridge before it
|
|
19
|
+
* is published. */
|
|
20
|
+
export function bridgeSpec() {
|
|
21
|
+
return process.env.WORK_BRIDGE_SPEC || "@dylanpiercey/work@0.0.223";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** What to run by hand for the database in `dataDir`: its data dir named
|
|
25
|
+
* outright, since the shell running it may not have the service's. */
|
|
26
|
+
export function bridgeCommands(dataDir) {
|
|
27
|
+
const quoted = /^[\w@%+=:,./-]+$/.test(dataDir)
|
|
28
|
+
? dataDir
|
|
29
|
+
: `'${dataDir.replace(/'/g, `'\\''`)}'`;
|
|
30
|
+
return [
|
|
31
|
+
`WORK_DATA_DIR=${quoted} npx -y -p ${bridgeSpec()} work migrate`,
|
|
32
|
+
"work setup",
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Whether the database at `file` predates the baseline: it has tables and
|
|
37
|
+
* no version. A missing or empty one is simply new. node:sqlite is loaded
|
|
38
|
+
* here, not at the top: it warns on load under older node, and every other
|
|
39
|
+
* CLI command would say so. */
|
|
40
|
+
export function needsBridge(file) {
|
|
41
|
+
if (!fs.existsSync(file)) return false;
|
|
42
|
+
const { DatabaseSync } = createRequire(import.meta.url)("node:sqlite");
|
|
43
|
+
const db = new DatabaseSync(file, { readOnly: true });
|
|
44
|
+
try {
|
|
45
|
+
const { user_version } = db.prepare("PRAGMA user_version").get();
|
|
46
|
+
const tables = db
|
|
47
|
+
.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table'")
|
|
48
|
+
.get();
|
|
49
|
+
return user_version < BASELINE && !!tables;
|
|
50
|
+
} finally {
|
|
51
|
+
db.close();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Bring the database in `dataDir` to the baseline when it predates it,
|
|
56
|
+
* with `env` (the service's) so the sweeps see the same data dir and
|
|
57
|
+
* workspaces root the server does. True when it is there (or never needed
|
|
58
|
+
* to be). The package's install scripts are skipped: `migrate` needs none,
|
|
59
|
+
* and a native build that fails would fail the bridge with it. */
|
|
60
|
+
export function bridgeIfNeeded(dataDir, env, log = () => {}) {
|
|
61
|
+
const file = path.join(dataDir, "work.db");
|
|
62
|
+
if (!needsBridge(file)) return true;
|
|
63
|
+
log(
|
|
64
|
+
`${file} predates 0.1: bringing it forward once with ${bridgeSpec()} (a one-time download)`,
|
|
65
|
+
);
|
|
66
|
+
// The npx beside this node, whatever PATH the service carries.
|
|
67
|
+
const sibling = path.join(path.dirname(process.execPath), "npx");
|
|
68
|
+
const npx = fs.existsSync(sibling) ? sibling : "npx";
|
|
69
|
+
// The package named, then its command: npx runs a spec that is a path
|
|
70
|
+
// (a tarball) as a program otherwise.
|
|
71
|
+
spawnSync(npx, ["-y", "-p", bridgeSpec(), "work", "migrate"], {
|
|
72
|
+
stdio: "inherit",
|
|
73
|
+
env: { ...env, WORK_DATA_DIR: dataDir, npm_config_ignore_scripts: "true" },
|
|
74
|
+
});
|
|
75
|
+
return !needsBridge(file);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** The server's bridge, for db.ts to hand the migrations: with the server's
|
|
79
|
+
* own environment, before the database is opened, once per start. */
|
|
80
|
+
export function bridgeForServer(dataDir) {
|
|
81
|
+
return bridgeIfNeeded(dataDir, process.env, (line) =>
|
|
82
|
+
console.log(`[work] ${line}`),
|
|
83
|
+
);
|
|
84
|
+
}
|
package/lib/setup/doctor.d.mts
CHANGED
|
@@ -45,6 +45,8 @@ export interface Doctor {
|
|
|
45
45
|
github: GithubHostStatus[];
|
|
46
46
|
/** Whether the server can keep this Linux host awake; null elsewhere. */
|
|
47
47
|
awake: boolean | null;
|
|
48
|
+
/** git credential helpers that run a gh which is gone (config keys). */
|
|
49
|
+
staleGhHelpers: string[];
|
|
48
50
|
}
|
|
49
51
|
export function setupPath(base?: string): string;
|
|
50
52
|
export function which(bin: string): string | null;
|
|
@@ -55,6 +57,9 @@ export function miseInstalls(): Promise<Record<
|
|
|
55
57
|
{ version: string; pin?: string }
|
|
56
58
|
> | null>;
|
|
57
59
|
export function ghKnownHosts(): string[];
|
|
60
|
+
export const VERSIONED_PATH: RegExp;
|
|
61
|
+
export function stableGh(): string | null;
|
|
62
|
+
export function staleGhHelpers(): Promise<string[]>;
|
|
58
63
|
export function discoverAgents(fresh?: boolean): DoctorAgent[];
|
|
59
64
|
export function doctor(opts?: { hosts?: string[] }): Promise<Doctor>;
|
|
60
65
|
export function formatDoctor(d: Doctor): string;
|
package/lib/setup/doctor.mjs
CHANGED
|
@@ -135,6 +135,43 @@ async function readMiseInstalls() {
|
|
|
135
135
|
return out;
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
+
/** A path owned by one release of a version manager — mise/asdf
|
|
139
|
+
* `installs`, homebrew's `Cellar`, nvm's `versions` — which that tool
|
|
140
|
+
* deletes on its next update. */
|
|
141
|
+
export const VERSIONED_PATH = /\/(installs|Cellar|versions|toolchains)\//;
|
|
142
|
+
|
|
143
|
+
/** The gh for git to run as a credential helper: the launcher on PATH
|
|
144
|
+
* (mise's shim, /usr/bin/gh), when it is not itself one release's. Still an
|
|
145
|
+
* absolute path, so it works for GUI clients and cron jobs that never
|
|
146
|
+
* sourced a shell profile, but one that follows upgrades. */
|
|
147
|
+
export function stableGh() {
|
|
148
|
+
const gh = which("gh");
|
|
149
|
+
return gh && !VERSIONED_PATH.test(gh) ? gh : null;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/** Credential helpers in ~/.gitconfig that run a gh which is gone, by
|
|
153
|
+
* config key. `gh auth setup-git` writes the absolute path of the gh that
|
|
154
|
+
* ran it, and git runs that string literally: once a version manager's
|
|
155
|
+
* upgrade deletes it, every https push fails with "could not read
|
|
156
|
+
* Username" while `gh` itself still works. Listed only when there is a
|
|
157
|
+
* stable gh to point them at, which `work setup` does. */
|
|
158
|
+
export async function staleGhHelpers() {
|
|
159
|
+
if (!stableGh()) return [];
|
|
160
|
+
const { stdout } = await run("git", [
|
|
161
|
+
"config",
|
|
162
|
+
"--global",
|
|
163
|
+
"--get-regexp",
|
|
164
|
+
String.raw`^credential\..*\.helper$`,
|
|
165
|
+
]);
|
|
166
|
+
const keys = new Set();
|
|
167
|
+
for (const line of stdout.split("\n")) {
|
|
168
|
+
const sp = line.indexOf(" ");
|
|
169
|
+
const bin = /^!(\S+) auth git-credential$/.exec(line.slice(sp + 1))?.[1];
|
|
170
|
+
if (sp > 0 && bin && !fs.existsSync(bin)) keys.add(line.slice(0, sp));
|
|
171
|
+
}
|
|
172
|
+
return [...keys];
|
|
173
|
+
}
|
|
174
|
+
|
|
138
175
|
/** Hosts `gh` knows about (~/.config/gh/hosts.yml top-level keys) — the
|
|
139
176
|
* source of truth for "which GitHub hosts has this machine signed in to",
|
|
140
177
|
* merged with whatever the caller has configured. */
|
|
@@ -338,11 +375,12 @@ export async function doctor(opts = {}) {
|
|
|
338
375
|
...(opts.hosts || []),
|
|
339
376
|
...ghKnownHosts(),
|
|
340
377
|
]);
|
|
341
|
-
const [versions, github, awake, extensions] = await Promise.all([
|
|
378
|
+
const [versions, github, awake, extensions, helpers] = await Promise.all([
|
|
342
379
|
miseVersions(),
|
|
343
380
|
Promise.all([...hostSet].map(githubHostStatus)),
|
|
344
381
|
canStayAwake(),
|
|
345
382
|
ghExtensions(),
|
|
383
|
+
staleGhHelpers(),
|
|
346
384
|
]);
|
|
347
385
|
|
|
348
386
|
const tools = TOOLS.map((t) => {
|
|
@@ -390,6 +428,7 @@ export async function doctor(opts = {}) {
|
|
|
390
428
|
agents,
|
|
391
429
|
github,
|
|
392
430
|
awake,
|
|
431
|
+
staleGhHelpers: helpers,
|
|
393
432
|
};
|
|
394
433
|
}
|
|
395
434
|
|
|
@@ -423,6 +462,11 @@ export function formatDoctor(d) {
|
|
|
423
462
|
`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`,
|
|
424
463
|
);
|
|
425
464
|
}
|
|
465
|
+
for (const key of d.staleGhHelpers) {
|
|
466
|
+
lines.push(
|
|
467
|
+
`git ✗ ${key} runs a gh that is gone, so https pushes fail: \`work setup\` points it at the gh on PATH`,
|
|
468
|
+
);
|
|
469
|
+
}
|
|
426
470
|
lines.push("");
|
|
427
471
|
lines.push(d.ready ? "ready" : `not ready, missing: ${d.missing.join(", ")}`);
|
|
428
472
|
return lines.join("\n");
|
package/lib/setup/install.d.mts
CHANGED
|
@@ -21,3 +21,4 @@ export function installAgent(id: string, opts?: RunOpts): Promise<void>;
|
|
|
21
21
|
export function authGithub(host: string, opts?: RunOpts): Promise<string[]>;
|
|
22
22
|
export function refreshGithub(host: string, opts?: RunOpts): Promise<string[]>;
|
|
23
23
|
export function logoutGithub(host: string, opts?: RunOpts): Promise<string[]>;
|
|
24
|
+
export function repairGhHelpers(keys: string[], opts?: RunOpts): void;
|
package/lib/setup/install.mjs
CHANGED
|
@@ -7,7 +7,7 @@ import fs from "node:fs";
|
|
|
7
7
|
import os from "node:os";
|
|
8
8
|
import path from "node:path";
|
|
9
9
|
import { agentById, toolById } from "./catalog.mjs";
|
|
10
|
-
import { setupPath, which } from "./doctor.mjs";
|
|
10
|
+
import { setupPath, stableGh, which } from "./doctor.mjs";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Run a command, streaming each output line to `log`. stdout/err are
|
|
@@ -270,3 +270,23 @@ export async function logoutGithub(host, opts = {}) {
|
|
|
270
270
|
env: { GH_PROMPT_DISABLED: "1" },
|
|
271
271
|
});
|
|
272
272
|
}
|
|
273
|
+
|
|
274
|
+
/** Point credential helpers that run a gh which is gone (`keys`, from
|
|
275
|
+
* doctor's staleGhHelpers) at the stable one. The value pattern edits only
|
|
276
|
+
* gh's own entry: `gh auth setup-git` writes an empty helper above it to
|
|
277
|
+
* reset any inherited ones, and that must survive. */
|
|
278
|
+
export function repairGhHelpers(keys, { log = () => {} } = {}) {
|
|
279
|
+
const gh = stableGh();
|
|
280
|
+
if (!gh || !keys.length) return;
|
|
281
|
+
for (const key of keys) {
|
|
282
|
+
execFileSync("git", [
|
|
283
|
+
"config",
|
|
284
|
+
"--global",
|
|
285
|
+
"--replace-all",
|
|
286
|
+
key,
|
|
287
|
+
`!${gh} auth git-credential`,
|
|
288
|
+
"auth git-credential",
|
|
289
|
+
]);
|
|
290
|
+
}
|
|
291
|
+
log(`pointed ${keys.length} git credential helper(s) at ${gh}`);
|
|
292
|
+
}
|
package/lib/setup/listen.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
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)
|
|
3
|
-
// server (the hooks it writes for panes and bare caches)
|
|
2
|
+
// rule for the CLI (the socket unit, its own requests to the server) and
|
|
3
|
+
// the server (the hooks it writes for panes and bare caches).
|
|
4
4
|
|
|
5
5
|
/** Addresses that mean every interface. */
|
|
6
6
|
const EVERY = new Set(["0.0.0.0", "::", "*"]);
|
package/lib/share/manifest.mjs
CHANGED
|
@@ -58,7 +58,8 @@ export function decodeRepo(entry) {
|
|
|
58
58
|
base = at > 0 ? entry.slice(at + 1) : undefined;
|
|
59
59
|
} else if (entry && typeof entry === "object") {
|
|
60
60
|
const o = /** @type {Record<string, unknown>} */ (entry);
|
|
61
|
-
//
|
|
61
|
+
// A workspace's repo rows (`work workspace --json`, pasted as an
|
|
62
|
+
// invite) and the API's own bodies spell the name differently.
|
|
62
63
|
full = String(o.repo ?? o.full_name ?? o.fullName ?? "");
|
|
63
64
|
dir = typeof o.dir === "string" ? o.dir : undefined;
|
|
64
65
|
if (typeof o.worktree === "string") dir = o.worktree;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dylanpiercey/work",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Web GUI for agentic dev workspaces",
|
|
6
6
|
"license": "MIT",
|
|
@@ -15,8 +15,7 @@
|
|
|
15
15
|
"dist",
|
|
16
16
|
"bin",
|
|
17
17
|
"lib",
|
|
18
|
-
"install.sh"
|
|
19
|
-
"scripts/migrate.mjs"
|
|
18
|
+
"install.sh"
|
|
20
19
|
],
|
|
21
20
|
"publishConfig": {
|
|
22
21
|
"access": "public"
|
package/dist/_LF2Fo5WE.js
DELETED
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_workspaceChange as e}from"./_unwtcXFQ.js";export{e as _};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./_xdrkfok5.js";import{C as e,F as t,G as n,I as r,a as i,b as a,i as o}from"./_BGCK5I_O.js";import"./_C9qO_dny.js";import"./_COECwOVb.js";import"./_qJTL2ooe.js";var s=`_gW _d5`,c=`_gX _d6`,l=`<li><span> </span><!><span><!><!></span></li>`,u=` D D l%b D%b%m`,d=e(0),f=r(6,0,e=>d(e,e._.o)),p=f,m=e(0),h=r(5,0,e=>m(e,e._.n)),g=h,_=r(3,1,e=>{o(e.a,`title`,e._.m||void 0),n(e.b,e._.m||``)}),v=e=>{_._(e),i(e.a,c)},y=r(3,0,e=>n(e.c,e._.l||`Starting…`)),b=e=>{y._(e),i(e.a,[`_cc`,c]),i(e.b,`_2`)},x=(e,t)=>i(e.a,[`_dZ`,`_gU`,t&&`_gV`]);function S(e){i(e.b,[`_M`,s]),i(e.e,`_d7`)}var C=(e,t)=>{o(e.b,`title`,t),n(e.c,t)},w=t(3,`<span><span></span> </span>`,` D b `,b,`<span> </span>`,` D `,v),T=a(11,e=>{w(e,+(e.l==null)),y(e)}),E=t(5,`<!><!><!>`,`b%`,g),D=a(13,e=>{E(e,+!e.n),h(e)}),O=t(6,`<!><!><!>`,`b%`,p),k=a(14,e=>{O(e,+!e.o),f(e)}),A=a(12,_);export{D as a,l as c,x as i,u as l,T as n,C as o,A as r,S as s,k as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_instanceChange as e}from"./_Da2Dmt_d.js";export{e as _};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_onScopeChange as e}from"./_BnOOD6nr.js";export{e as _};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_filesHref as e}from"./_BJRSndB4.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_agentsChange as e}from"./_Da2Dmt_d.js";export{e as _};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_findOpen as e}from"./_BJRSndB4.js";export{e as _};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_status as e}from"./_unwtcXFQ.js";export{e as _};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_onSent as e}from"./_BJRSndB4.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_findOpenChange as e}from"./_BJRSndB4.js";export{e as _};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_filesHref as e}from"./_BnOOD6nr.js";export{e as _};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_file as e}from"./_BJRSndB4.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,E as t,S as n,T as r,Y as i,w as a}from"./_xdrkfok5.js";var o=r,s=(e=>`/${e}&`)(t);function c(t){e(t.a,i)}var l=(e,t)=>a(e.a,t),u=(e,t)=>n(e.a,t);export{s as a,o as i,l as n,c as r,u as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_lineChange as e}from"./_BJRSndB4.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_workspaceName as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_onLoaded as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_findOpenChange as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_rev as e}from"./_BnOOD6nr.js";export{e as _};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_setup as e}from"./_Da2Dmt_d.js";export{e as _};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_treeOpen as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_active as e}from"./_BJRSndB4.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_findableChange as e}from"./_BJRSndB4.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$setup as e,$template as t,$walks as n}from"./_BJRSndB4.js";var r=[t,n,e];export{r as _};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_agents as e}from"./_Da2Dmt_d.js";export{e as _};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_fileChange as e}from"./_BJRSndB4.js";export{e as _};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_pageActive as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_workspaceId as e}from"./_BnOOD6nr.js";export{e as _};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_preferredChange as e}from"./_Da2Dmt_d.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,E as t,S as n,T as r,dt as i,w as a}from"./_xdrkfok5.js";var o=r,s=(e=>`/${e}&`)(t);function c(t){e(t.a,i)}var l=(e,t)=>a(e.a,t),u=(e,t)=>n(e.a,t),d=`_cf _9 __`;export{o as a,c as i,u as n,s as o,l as r,d as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_findTick as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_findable as e}from"./_BJRSndB4.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_fileChange as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_findOpen as e}from"./_BnOOD6nr.js";export{e as _};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_preferred as e}from"./_Da2Dmt_d.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_changesHref as e}from"./_BnOOD6nr.js";export{e as _};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_revealNonce as e}from"./_BJRSndB4.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_focusNonce as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_focusFile as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_findTickChange as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_onRevChange as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_workspaceId as e}from"./_BJRSndB4.js";export{e as _};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_sessions as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_changesHref as e}from"./_BJRSndB4.js";export{e as _};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$setup as e,$template as t,$walks as n}from"./_BnOOD6nr.js";var r=[t,n,e];export{r as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,E as t,S as n,T as r,w as i,z as a}from"./_xdrkfok5.js";var o=r,s=(e=>`/${e}&`)(t);function c(t){e(t.a,a)}var l=(e,t)=>i(e.a,t),u=(e,t)=>n(e.a,t);export{s as a,o as i,l as n,c as r,u as t};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_sectionChange as e}from"./_Da2Dmt_d.js";export{e as _};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_line as e}from"./_BJRSndB4.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_workspaceBranch as e}from"./_BnOOD6nr.js";export{e as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_onOpenFile as e}from"./_BnOOD6nr.js";export{e as _};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$input_onOpenDiff as e}from"./_BJRSndB4.js";export{e as _};
|