@dylanpiercey/work 0.2.40 → 0.2.42
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/cli/stack.mjs +33 -19
- package/bin/cli/topic.mjs +1 -1
- package/bin/work.mjs +199 -47
- package/dist/_BKkT73fv.js +2 -0
- package/dist/_BviTiVOB.js +2 -0
- package/dist/_BwqJGTg-.js +183 -0
- package/dist/{_DuADlWik.js → _Cv5RrCSW.js} +3 -72
- package/dist/{_D4k_lVuT.js → _DuwPQCOE.js} +1 -1
- package/dist/index.mjs +897 -848
- package/dist/public/assets/{_Cm5UUk-8.js → _0D0ldLfD.js} +1 -1
- package/dist/public/assets/_0D0ldLfD.js.br +0 -0
- package/dist/public/assets/{_6Hx8zr_s.js → _0TAu89jO.js} +1 -1
- package/dist/public/assets/_0TAu89jO.js.br +0 -0
- package/dist/public/assets/{_BiHefuKV.js → _0tpkQ33d.js} +1 -1
- package/dist/public/assets/_0tpkQ33d.js.br +0 -0
- package/dist/public/assets/_27E7x5ZR.js +1 -0
- package/dist/public/assets/{_BldFprQa.js → _2EdJdhqM.js} +1 -1
- package/dist/public/assets/_2EdJdhqM.js.br +0 -0
- package/dist/public/assets/{_Bfc9kc3-.js → _5SjlE5HS.js} +1 -1
- package/dist/public/assets/{_C-ztk4Gt.js → _6TaxzICZ.js} +1 -1
- package/dist/public/assets/_6TaxzICZ.js.br +0 -0
- package/dist/public/assets/_6VIxHDR1.js +1 -0
- package/dist/public/assets/_6d2rf6hP.js +1 -0
- package/dist/public/assets/_7KxSE1_C.js +1 -0
- package/dist/public/assets/{_Bho4pN5V.js → _7o-NFNP0.js} +1 -1
- package/dist/public/assets/_7o-NFNP0.js.br +0 -0
- package/dist/public/assets/_8nlKiGBi.js +1 -0
- package/dist/public/assets/_8nlKiGBi.js.br +0 -0
- package/dist/public/assets/_B0S0QYf0.js +1 -0
- package/dist/public/assets/{_Bt3V8dJp.js → _B4DVY_7W.js} +1 -1
- package/dist/public/assets/_B4DVY_7W.js.br +0 -0
- package/dist/public/assets/_B7JQBsSW.js +1 -0
- package/dist/public/assets/{_so3EBQ6I.js → _B8M3Ojiy.js} +1 -1
- package/dist/public/assets/_B8M3Ojiy.js.br +0 -0
- package/dist/public/assets/_B8OP1c1D.js +1 -0
- package/dist/public/assets/{_DN2bhuX5.js → _B8bacjbf.js} +1 -1
- package/dist/public/assets/_B8bacjbf.js.br +0 -0
- package/dist/public/assets/_BBkgNQeS.js +1 -0
- package/dist/public/assets/_BCswHrkD.js +1 -0
- package/dist/public/assets/_BFSINLI-.js +7 -0
- package/dist/public/assets/_BFSINLI-.js.br +0 -0
- package/dist/public/assets/{_B9t5z7OE.js → _BFTr9gZX.js} +1 -1
- package/dist/public/assets/_BFTr9gZX.js.br +0 -0
- package/dist/public/assets/{_Dtx23QI5.js → _BHiKHJoJ.js} +1 -1
- package/dist/public/assets/_BHiKHJoJ.js.br +0 -0
- package/dist/public/assets/_BIHQhOfe.js +1594 -0
- package/dist/public/assets/_BIHQhOfe.js.br +0 -0
- package/dist/public/assets/_BJfBGQ6w.js +1 -0
- package/dist/public/assets/{_Dx-9-Sy_.js → _BK0uv9MH.js} +1 -1
- package/dist/public/assets/_BK0uv9MH.js.br +0 -0
- package/dist/public/assets/_BKFPe3qb.js +1 -0
- package/dist/public/assets/{_YiTz3Wtq.js → _BL4YKfFD.js} +1 -1
- package/dist/public/assets/_BL4YKfFD.js.br +0 -0
- package/dist/public/assets/{_Cgv4Cy7Z.js → _BLRVSmeM.js} +1 -1
- package/dist/public/assets/_BLRVSmeM.js.br +0 -0
- package/dist/public/assets/_BMQ4URU4.js +1 -0
- package/dist/public/assets/{_CdixnSBK.js → _BOgpQXmJ.js} +1 -1
- package/dist/public/assets/{_CqC6oyCs.js → _BPZKx3Jk.js} +1 -1
- package/dist/public/assets/_BPZKx3Jk.js.br +0 -0
- package/dist/public/assets/_BQUa7VNX.js +1 -0
- package/dist/public/assets/_BQc8MGMv.js +1 -0
- package/dist/public/assets/{_DVBAwKVR.js → _BUPn6Mnz.js} +1 -1
- package/dist/public/assets/_BUPn6Mnz.js.br +0 -0
- package/dist/public/assets/{_BmFtbSox.js → _BWEmssXq.js} +1 -1
- package/dist/public/assets/_BWEmssXq.js.br +0 -0
- package/dist/public/assets/_BbWp0m5F.js +1 -0
- package/dist/public/assets/_BbXkdZHl.js +12 -0
- package/dist/public/assets/_BbXkdZHl.js.br +0 -0
- package/dist/public/assets/{_BtlNg4wH.js → _Bcl_UOx6.js} +1 -1
- package/dist/public/assets/_Bcl_UOx6.js.br +0 -0
- package/dist/public/assets/{_D-L-5YAM.js → _Bey11w4c.js} +1 -1
- package/dist/public/assets/_Bey11w4c.js.br +0 -0
- package/dist/public/assets/{_9UY3GGDx.js → _BfG_-1HN.js} +1 -1
- package/dist/public/assets/_BfG_-1HN.js.br +0 -0
- package/dist/public/assets/_BgfmMHXa.js +1 -0
- package/dist/public/assets/_BiRrfcmX.js +1 -0
- package/dist/public/assets/{_AXQAcwHe.js → _BjbqQ_El.js} +1 -1
- package/dist/public/assets/_BjbqQ_El.js.br +0 -0
- package/dist/public/assets/_Bq_e0MUr.js +1 -0
- package/dist/public/assets/_Br7uDnHv.js +1 -0
- package/dist/public/assets/{_Ck-NcBor.js → _Bt0eukq2.js} +1 -1
- package/dist/public/assets/_Bt0eukq2.js.br +0 -0
- package/dist/public/assets/{_Bfgao9fC.js → _Bv-IlwQT.js} +1 -1
- package/dist/public/assets/_Bv-IlwQT.js.br +0 -0
- package/dist/public/assets/{_DNy2MoKM.js → _BvgjMNxJ.js} +1 -1
- package/dist/public/assets/_BvgjMNxJ.js.br +0 -0
- package/dist/public/assets/_Bvs5mPNK.js +1 -0
- package/dist/public/assets/{_C9HotwgZ.js → _BwLovCS6.js} +1 -1
- package/dist/public/assets/_BwLovCS6.js.br +0 -0
- package/dist/public/assets/{_Bvb8k3Ut.js → _BwRBwNgB.js} +1 -1
- package/dist/public/assets/_BwRBwNgB.js.br +0 -0
- package/dist/public/assets/_ByNP19fU.js +1 -0
- package/dist/public/assets/{_Ch3oeOpY.js → _BytqxSss.js} +1 -1
- package/dist/public/assets/_BytqxSss.js.br +0 -0
- package/dist/public/assets/_C--AVrwD.js +1 -0
- package/dist/public/assets/{_Cbc0dwer.js → _C-YTNMVV.js} +1 -1
- package/dist/public/assets/_C-YTNMVV.js.br +0 -0
- package/dist/public/assets/_C04dnVHE.js +1 -0
- package/dist/public/assets/_C0OT-I8q.js +1 -0
- package/dist/public/assets/_C4KQumKg.js +1 -0
- package/dist/public/assets/_C6uxShhm.js +1 -0
- package/dist/public/assets/_C6uxShhm.js.br +0 -0
- package/dist/public/assets/{_D8trxBDF.js → _C8pKiZNP.js} +1 -1
- package/dist/public/assets/_C8pKiZNP.js.br +0 -0
- package/dist/public/assets/{_d2HSnncX.js → _C9Xj1pPE.js} +1 -1
- package/dist/public/assets/_C9puwxo3.js +1 -0
- package/dist/public/assets/_CBk6VRaa.js +1 -0
- package/dist/public/assets/_CCW3Aity.js +1 -0
- package/dist/public/assets/{_wTrAVeP2.js → _CEa34aRI.js} +1 -1
- package/dist/public/assets/_CEa34aRI.js.br +0 -0
- package/dist/public/assets/{_BfvriceI.js → _CGK3zib3.js} +1 -1
- package/dist/public/assets/_CGK3zib3.js.br +0 -0
- package/dist/public/assets/_CIL6tdUG.js +1 -0
- package/dist/public/assets/_CMONBIy5.js +1 -0
- package/dist/public/assets/_CMdmbeSE.js +1 -0
- package/dist/public/assets/{_DV2bAFNg.js → _CQwfLnMn.js} +1 -1
- package/dist/public/assets/_CQwfLnMn.js.br +0 -0
- package/dist/public/assets/{_DvArUzc0.js → _CRavszYj.js} +1 -1
- package/dist/public/assets/{_CGnaF6Sm.js → _CUIoM8X2.js} +1 -1
- package/dist/public/assets/_CUIoM8X2.js.br +0 -0
- package/dist/public/assets/{_C7raUThi.js → _CUklb1HG.js} +1 -1
- package/dist/public/assets/_CUklb1HG.js.br +0 -0
- package/dist/public/assets/_CYRqamOW.js +1 -0
- package/dist/public/assets/_C_KC4T0e.js +1 -0
- package/dist/public/assets/{_DVMQyUQJ.js → _C_XITOho.js} +1 -1
- package/dist/public/assets/_C_XITOho.js.br +0 -0
- package/dist/public/assets/_C_bUFg7j.js +1 -0
- package/dist/public/assets/_Cb9c_XDz.js +1 -0
- package/dist/public/assets/{_Lgyuucwe.js → _Cc3XRkQD.js} +1 -1
- package/dist/public/assets/_Cc3XRkQD.js.br +0 -0
- package/dist/public/assets/_CdHUzIto.js +1 -0
- package/dist/public/assets/_CdRPhWHf.js +1 -0
- package/dist/public/assets/{_B9HOtQFK.js → _Ce9LAY3j.js} +1 -1
- package/dist/public/assets/_Ce9LAY3j.js.br +0 -0
- package/dist/public/assets/{_QSufHoZj.js → _Chhk70ar.js} +1 -1
- package/dist/public/assets/_Chhk70ar.js.br +0 -0
- package/dist/public/assets/_ClN7MNw7.js +1 -0
- package/dist/public/assets/{_D3r2RL4t.js → _Cmh5vtw6.js} +1 -1
- package/dist/public/assets/_Cmh5vtw6.js.br +0 -0
- package/dist/public/assets/_CmvjAFo-.js +1 -0
- package/dist/public/assets/_CoFSog2u.js +1 -0
- package/dist/public/assets/{_DW8mxdKH.js → _CoVSfg3Z.js} +1 -1
- package/dist/public/assets/_CoVSfg3Z.js.br +0 -0
- package/dist/public/assets/_Cp1vX323.js +1 -0
- package/dist/public/assets/_CqX_aq_n.js +1 -0
- package/dist/public/assets/{_C3U16pxk.js → _CrtPk9tp.js} +1 -1
- package/dist/public/assets/_CrtPk9tp.js.br +0 -0
- package/dist/public/assets/{_ByxHsHjq.js → _Ct_ritl_.js} +1 -1
- package/dist/public/assets/_Ct_ritl_.js.br +0 -0
- package/dist/public/assets/{_AIWDaFbX.js → _CtknLycG.js} +1 -1
- package/dist/public/assets/_CtknLycG.js.br +0 -0
- package/dist/public/assets/_Ctl8GBEj.js +1 -0
- package/dist/public/assets/{_ClA7jm5y.js → _Ctyg3IJ4.js} +1 -1
- package/dist/public/assets/_Ctyg3IJ4.js.br +0 -0
- package/dist/public/assets/{_DRvfajkC.js → _Cx_DSnTG.js} +1 -1
- package/dist/public/assets/_Cx_DSnTG.js.br +0 -0
- package/dist/public/assets/{_SrvPETNL.js → _D18W27gr.js} +1 -1
- package/dist/public/assets/_D18W27gr.js.br +0 -0
- package/dist/public/assets/_D3CHmSre.js +1 -0
- package/dist/public/assets/{_CJnPM9JD.js → _D3OrVUzk.js} +10 -10
- package/dist/public/assets/_D3OrVUzk.js.br +0 -0
- package/dist/public/assets/{_DIYoftFu.js → _D3_VIrXA.js} +1 -1
- package/dist/public/assets/_D3_VIrXA.js.br +0 -0
- package/dist/public/assets/_D3l_AtBV.js +1 -0
- package/dist/public/assets/_D4c79S9H.js +1 -0
- package/dist/public/assets/{_aKw_G6JV.js → _D7G2pZM5.js} +1 -1
- package/dist/public/assets/_D7G2pZM5.js.br +0 -0
- package/dist/public/assets/_D7JNBtDF.js +1 -0
- package/dist/public/assets/{_C68OfhhO.js → _D9V-500A.js} +1 -1
- package/dist/public/assets/_D9V-500A.js.br +0 -0
- package/dist/public/assets/{_-xt24cB6.js → _DBQQMYHK.js} +1 -1
- package/dist/public/assets/_DBQQMYHK.js.br +0 -0
- package/dist/public/assets/{_BPfDSl_X.js → _DCb3fJRr.js} +1 -1
- package/dist/public/assets/_DCb3fJRr.js.br +0 -0
- package/dist/public/assets/{_DmWMoSv1.js → _DEOgcq8G.js} +1 -1
- package/dist/public/assets/_DEOgcq8G.js.br +0 -0
- package/dist/public/assets/_DFRT7udX.js +1 -0
- package/dist/public/assets/_DHJlVcJW.js +1 -0
- package/dist/public/assets/_DI1qYvDw.js +1 -0
- package/dist/public/assets/_DI1qYvDw.js.br +0 -0
- package/dist/public/assets/{_FMOctYMW.js → _DIMN13up.js} +1 -1
- package/dist/public/assets/_DIMN13up.js.br +0 -0
- package/dist/public/assets/_DJjH1Gev.js +1 -0
- package/dist/public/assets/_DKS31K16.js +1 -0
- package/dist/public/assets/{_DZyptekm.js → _DK_-UDvi.js} +1 -1
- package/dist/public/assets/{_BNvuxbm-.js → _DOA1NutW.js} +1 -1
- package/dist/public/assets/_DOA1NutW.js.br +0 -0
- package/dist/public/assets/_DPS-LYLU.js +1 -0
- package/dist/public/assets/{_DHK4J_yg.js → _DPjhX16_.js} +1 -1
- package/dist/public/assets/_DPjhX16_.js.br +0 -0
- package/dist/public/assets/{_CftTyjd8.js → _DRhFEV3p.js} +1 -1
- package/dist/public/assets/_DRhFEV3p.js.br +0 -0
- package/dist/public/assets/_DRjmSjMB.js +1 -0
- package/dist/public/assets/_DS-RCqdz.js +1 -0
- package/dist/public/assets/{_CmjRnFwT.js → _DSeY26wK.js} +1 -1
- package/dist/public/assets/_DSeY26wK.js.br +0 -0
- package/dist/public/assets/{_Cn0ezFFg.js → _DSp0n7-Z.js} +4 -4
- package/dist/public/assets/_DSp0n7-Z.js.br +0 -0
- package/dist/public/assets/{_Bko_1adv.js → _DTBHW2pT.js} +1 -1
- package/dist/public/assets/_DTBHW2pT.js.br +0 -0
- package/dist/public/assets/{_CAJCZOtv.js → _DVcj9rxV.js} +1 -1
- package/dist/public/assets/_DVcj9rxV.js.br +0 -0
- package/dist/public/assets/_DYhHoMoq.js +1 -0
- package/dist/public/assets/_D_wYBGpz.js +1 -0
- package/dist/public/assets/_D_ymN6ch.js +1 -0
- package/dist/public/assets/{__yFiQHxx.js → _Dar0Jhi9.js} +1 -1
- package/dist/public/assets/_Dar0Jhi9.js.br +0 -0
- package/dist/public/assets/_Db3vDKRm.js +1 -0
- package/dist/public/assets/_DcuoB7C5.js +1 -0
- package/dist/public/assets/_DhYe_0Ng.js +1 -0
- package/dist/public/assets/_DidgbjGx.js +1 -0
- package/dist/public/assets/_DidlTP-o.js +1 -0
- package/dist/public/assets/_DigH8KZR.js +1 -0
- package/dist/public/assets/_DmDpRqr3.js +1 -0
- package/dist/public/assets/{_ClOuduDB.js → _DoJ5e3yk.js} +1 -1
- package/dist/public/assets/_DoJ5e3yk.js.br +0 -0
- package/dist/public/assets/{_BU2KJ55d.js → _DoQbA796.js} +1 -1
- package/dist/public/assets/_DoQbA796.js.br +0 -0
- package/dist/public/assets/_DocYIBLX.js +1 -0
- package/dist/public/assets/_Doi2BKea.js +1 -0
- package/dist/public/assets/{_BOQKc7E9.js → _Dr2xSXBN.js} +1 -1
- package/dist/public/assets/_Dr2xSXBN.js.br +0 -0
- package/dist/public/assets/_DtJNC5Rn.js +1 -0
- package/dist/public/assets/_DtdwmQ4k.js +1 -0
- package/dist/public/assets/{_iYju-q2Q.js → _DtkImFGo.js} +1 -1
- package/dist/public/assets/_DucJxgyZ.js +1 -0
- package/dist/public/assets/_DucJxgyZ.js.br +0 -0
- package/dist/public/assets/{_BL2JDtIA.js → _DvOSNj0k.js} +1 -1
- package/dist/public/assets/_DvOSNj0k.js.br +0 -0
- package/dist/public/assets/{_CpVSVQZP.js → _DxmxNmie.js} +1 -1
- package/dist/public/assets/_DxmxNmie.js.br +0 -0
- package/dist/public/assets/_GJYB4WUU.js +1 -0
- package/dist/public/assets/{_DthwYqUP.js → _I64LjJr0.js} +1 -1
- package/dist/public/assets/_I64LjJr0.js.br +0 -0
- package/dist/public/assets/_IXX1CrDm.js +1 -0
- package/dist/public/assets/{_BV0bkNYW.js → _J4kJcAJg.js} +1 -1
- package/dist/public/assets/_J4kJcAJg.js.br +0 -0
- package/dist/public/assets/{_B4QEUVUx.js → _PYKRwjO-.js} +1 -1
- package/dist/public/assets/_PYKRwjO-.js.br +0 -0
- package/dist/public/assets/{_CqqBjspX.js → _ProcVwIG.js} +1 -1
- package/dist/public/assets/_ProcVwIG.js.br +0 -0
- package/dist/public/assets/{_BEH9W5rk.js → _RvJ4aN_k.js} +1 -1
- package/dist/public/assets/_RvJ4aN_k.js.br +0 -0
- package/dist/public/assets/_T4x4vstZ.js +2 -0
- package/dist/public/assets/_T4x4vstZ.js.br +0 -0
- package/dist/public/assets/{_xGyy2F1F.js → _TS3fzYUh.js} +1 -1
- package/dist/public/assets/_TS3fzYUh.js.br +0 -0
- package/dist/public/assets/_U3MwWZoy.js +1 -0
- package/dist/public/assets/{_n5A3k8ml.js → _Wml5S5pw.js} +1 -1
- package/dist/public/assets/_Wml5S5pw.js.br +0 -0
- package/dist/public/assets/{_DjX-J-5G.js → _Y1MV0Z0B.js} +1 -1
- package/dist/public/assets/_Y1MV0Z0B.js.br +0 -0
- package/dist/public/assets/{_Dcao7-GN.js → _YWJOgXKS.js} +1 -1
- package/dist/public/assets/_YWJOgXKS.js.br +0 -0
- package/dist/public/assets/{_D-D2Sca2.js → _Z_fC5zJJ.js} +1 -1
- package/dist/public/assets/_Z_fC5zJJ.js.br +0 -0
- package/dist/public/assets/{_3H-FzM6j.js → __prI0zQc.js} +1 -1
- package/dist/public/assets/__prI0zQc.js.br +0 -0
- package/dist/public/assets/__tPIKfIT.js +1 -0
- package/dist/public/assets/_bzd_k347.js +2 -0
- package/dist/public/assets/_bzd_k347.js.br +0 -0
- package/dist/public/assets/_dH7pfZBT.js +1 -0
- package/dist/public/assets/{_D0DIamBR.js → _h6bUk2pq.js} +1 -1
- package/dist/public/assets/_h6bUk2pq.js.br +0 -0
- package/dist/public/assets/{_DQRSCk2F.js → _jqoWK4Vi.js} +1 -1
- package/dist/public/assets/_jqoWK4Vi.js.br +0 -0
- package/dist/public/assets/{_C1MVprDU.js → _n9U8owrb.js} +1 -1
- package/dist/public/assets/_n9U8owrb.js.br +0 -0
- package/dist/public/assets/_nFHWz9gP.js +1 -0
- package/dist/public/assets/_nVRAt3Bi.js +1 -0
- package/dist/public/assets/_pLefNFbU.js +1 -0
- package/dist/public/assets/_qWO-JZ3E.js +1 -0
- package/dist/public/assets/{_CY_Gyv6m.js → _qrMpRa1i.js} +1 -1
- package/dist/public/assets/_qrMpRa1i.js.br +0 -0
- package/dist/public/assets/{_C7TtpzAW.js → _r5_M-uhA.js} +1 -1
- package/dist/public/assets/_r5_M-uhA.js.br +0 -0
- package/dist/public/assets/_r7eH7wR8.js +1 -0
- package/dist/public/assets/{_CnGcp5Lt.js → _r8khTeho.js} +1 -1
- package/dist/public/assets/_r8khTeho.js.br +0 -0
- package/dist/public/assets/{_Dkv0yw2w.js → _rB7YBgt1.js} +1 -1
- package/dist/public/assets/_rB7YBgt1.js.br +0 -0
- package/dist/public/assets/{_DuCqBf6Y.js → _sPlrHbtE.js} +1 -1
- package/dist/public/assets/_sPlrHbtE.js.br +0 -0
- package/dist/public/assets/_sgTYDCYT.js +1 -0
- package/dist/public/assets/_uV3lUSAl.js +1 -0
- package/dist/public/assets/app-shell-CeJ_dovX.css +1 -0
- package/dist/public/assets/app-shell-CeJ_dovX.css.br +0 -0
- package/dist/public/assets/files-view-B11HuvZO.js +2 -0
- package/dist/public/assets/manage-workspace-VbGMSi7T.js +2 -0
- package/dist/public/assets/new-Czq_4CCR.js +1 -0
- package/dist/public/assets/new-workspace-umGMDrlM.js +2 -0
- package/dist/public/assets/review-view-D2eGCwuw.js +2 -0
- package/dist/public/assets/settings-Czq_4CCR.js +1 -0
- package/dist/public/assets/settings-page-BkWN1B4s.js +2 -0
- package/dist/public/assets/styles-BJQqKk3S.css +1 -0
- package/dist/public/assets/styles-BJQqKk3S.css.br +0 -0
- package/dist/public/assets/w-Czq_4CCR.js +1 -0
- package/dist/public/assets/w._-Bk9APcPa.js +1 -0
- package/dist/public/assets/w._-Czq_4CCR.js +1 -0
- package/dist/public/assets/w._-LAc_WZW-.js +1 -0
- package/lib/setup/catalog.d.mts +2 -4
- package/lib/setup/catalog.mjs +0 -3
- package/lib/setup/doctor.mjs +1 -27
- package/lib/setup/firewall.mjs +3 -1
- package/lib/setup/install.mjs +0 -27
- package/package.json +1 -1
- package/dist/_BCA_8m9y.js +0 -182
- package/dist/_DDikKLG_.js +0 -2
- package/dist/_ENqPMLjD.js +0 -2
- package/dist/public/assets/_-xt24cB6.js.br +0 -0
- package/dist/public/assets/_2QPoK4uC.js +0 -1
- package/dist/public/assets/_3H-FzM6j.js.br +0 -0
- package/dist/public/assets/_4M7qpSou.js +0 -1
- package/dist/public/assets/_5oPLlqRj.js +0 -1591
- package/dist/public/assets/_5oPLlqRj.js.br +0 -0
- package/dist/public/assets/_65v84Eey.js +0 -1
- package/dist/public/assets/_6Hx8zr_s.js.br +0 -0
- package/dist/public/assets/_9UY3GGDx.js.br +0 -0
- package/dist/public/assets/_AIWDaFbX.js.br +0 -0
- package/dist/public/assets/_AXQAcwHe.js.br +0 -0
- package/dist/public/assets/_B10_Ccu5.js +0 -1
- package/dist/public/assets/_B3pMrdu9.js +0 -1
- package/dist/public/assets/_B4QEUVUx.js.br +0 -0
- package/dist/public/assets/_B8LaleYJ.js +0 -1
- package/dist/public/assets/_B9HOtQFK.js.br +0 -0
- package/dist/public/assets/_B9t5z7OE.js.br +0 -0
- package/dist/public/assets/_BAZd2F0T.js +0 -1
- package/dist/public/assets/_BEH9W5rk.js.br +0 -0
- package/dist/public/assets/_BL2JDtIA.js.br +0 -0
- package/dist/public/assets/_BLvWxq71.js +0 -1
- package/dist/public/assets/_BNRbbSIn.js +0 -1
- package/dist/public/assets/_BNvuxbm-.js.br +0 -0
- package/dist/public/assets/_BOQKc7E9.js.br +0 -0
- package/dist/public/assets/_BPfDSl_X.js.br +0 -0
- package/dist/public/assets/_BTRee_2x.js +0 -1
- package/dist/public/assets/_BU2KJ55d.js.br +0 -0
- package/dist/public/assets/_BV0bkNYW.js.br +0 -0
- package/dist/public/assets/_BV_3prW2.js +0 -1
- package/dist/public/assets/_BX6jp_wv.js +0 -15
- package/dist/public/assets/_BX6jp_wv.js.br +0 -0
- package/dist/public/assets/_BY83kySA.js +0 -1
- package/dist/public/assets/_B_c67c-8.js +0 -1
- package/dist/public/assets/_Bb2sDJvS.js +0 -1
- package/dist/public/assets/_BfUsF1rX.js +0 -1
- package/dist/public/assets/_Bfgao9fC.js.br +0 -0
- package/dist/public/assets/_BfvriceI.js.br +0 -0
- package/dist/public/assets/_Bg74ltIM.js +0 -1
- package/dist/public/assets/_Bho4pN5V.js.br +0 -0
- package/dist/public/assets/_BiHefuKV.js.br +0 -0
- package/dist/public/assets/_Bkj1_Dr2.js +0 -1
- package/dist/public/assets/_Bko_1adv.js.br +0 -0
- package/dist/public/assets/_BlWGIxyz.js +0 -1
- package/dist/public/assets/_BldFprQa.js.br +0 -0
- package/dist/public/assets/_BmFtbSox.js.br +0 -0
- package/dist/public/assets/_Bppa_Ryd.js +0 -1
- package/dist/public/assets/_Bt3V8dJp.js.br +0 -0
- package/dist/public/assets/_BtlNg4wH.js.br +0 -0
- package/dist/public/assets/_Bvb8k3Ut.js.br +0 -0
- package/dist/public/assets/_ByxHsHjq.js.br +0 -0
- package/dist/public/assets/_C-ztk4Gt.js.br +0 -0
- package/dist/public/assets/_C1MVprDU.js.br +0 -0
- package/dist/public/assets/_C2KbYoEP.js +0 -1
- package/dist/public/assets/_C2lbzaH3.js +0 -1
- package/dist/public/assets/_C3U16pxk.js.br +0 -0
- package/dist/public/assets/_C3uu-DK8.js +0 -1
- package/dist/public/assets/_C68OfhhO.js.br +0 -0
- package/dist/public/assets/_C7TtpzAW.js.br +0 -0
- package/dist/public/assets/_C7raUThi.js.br +0 -0
- package/dist/public/assets/_C9HotwgZ.js.br +0 -0
- package/dist/public/assets/_CAJCZOtv.js.br +0 -0
- package/dist/public/assets/_CB8zO5nz.js +0 -1
- package/dist/public/assets/_CBa8NDHo.js +0 -1
- package/dist/public/assets/_CFaOKXvN.js +0 -1
- package/dist/public/assets/_CGnaF6Sm.js.br +0 -0
- package/dist/public/assets/_CJnPM9JD.js.br +0 -0
- package/dist/public/assets/_CKBsVYsF.js +0 -1
- package/dist/public/assets/_CP72FM8v.js +0 -2
- package/dist/public/assets/_CP72FM8v.js.br +0 -0
- package/dist/public/assets/_CT-XMZP-.js +0 -1
- package/dist/public/assets/_CTJaX-zT.js +0 -1
- package/dist/public/assets/_CUJRs0zs.js +0 -1
- package/dist/public/assets/_CY4SGKEk.js +0 -1
- package/dist/public/assets/_CY4SGKEk.js.br +0 -0
- package/dist/public/assets/_CY_Gyv6m.js.br +0 -0
- package/dist/public/assets/_C_AN7JsF.js +0 -1
- package/dist/public/assets/_C_koIK_g.js +0 -1
- package/dist/public/assets/_C_koIK_g.js.br +0 -0
- package/dist/public/assets/_Cbc0dwer.js.br +0 -0
- package/dist/public/assets/_CdplgzT2.js +0 -1
- package/dist/public/assets/_CftTyjd8.js.br +0 -0
- package/dist/public/assets/_CgG2WqLI.js +0 -1
- package/dist/public/assets/_Cgv4Cy7Z.js.br +0 -0
- package/dist/public/assets/_Ch3oeOpY.js.br +0 -0
- package/dist/public/assets/_Ck-NcBor.js.br +0 -0
- package/dist/public/assets/_ClA7jm5y.js.br +0 -0
- package/dist/public/assets/_ClOuduDB.js.br +0 -0
- package/dist/public/assets/_Cm5UUk-8.js.br +0 -0
- package/dist/public/assets/_CmjRnFwT.js.br +0 -0
- package/dist/public/assets/_Cn0ezFFg.js.br +0 -0
- package/dist/public/assets/_CnGcp5Lt.js.br +0 -0
- package/dist/public/assets/_CnU_a5Pz.js +0 -1
- package/dist/public/assets/_CnVtRfoh.js +0 -1
- package/dist/public/assets/_CpTFnc4O.js +0 -1
- package/dist/public/assets/_CpVSVQZP.js.br +0 -0
- package/dist/public/assets/_CqC6oyCs.js.br +0 -0
- package/dist/public/assets/_CqqBjspX.js.br +0 -0
- package/dist/public/assets/_CsWHkvwT.js +0 -1
- package/dist/public/assets/_CsWHkvwT.js.br +0 -0
- package/dist/public/assets/_CwMrUy9h.js +0 -1
- package/dist/public/assets/_D-D2Sca2.js.br +0 -0
- package/dist/public/assets/_D-L-5YAM.js.br +0 -0
- package/dist/public/assets/_D0DIamBR.js.br +0 -0
- package/dist/public/assets/_D3r2RL4t.js.br +0 -0
- package/dist/public/assets/_D42DSreQ.js +0 -1
- package/dist/public/assets/_D7H9w6Py.js +0 -1
- package/dist/public/assets/_D8trxBDF.js.br +0 -0
- package/dist/public/assets/_DCnjcJpY.js +0 -1
- package/dist/public/assets/_DD-VwS7y.js +0 -1
- package/dist/public/assets/_DD6yw760.js +0 -1
- package/dist/public/assets/_DEHXzf1H.js +0 -1
- package/dist/public/assets/_DHK4J_yg.js.br +0 -0
- package/dist/public/assets/_DIYoftFu.js.br +0 -0
- package/dist/public/assets/_DKUf5cGa.js +0 -2
- package/dist/public/assets/_DKUf5cGa.js.br +0 -0
- package/dist/public/assets/_DN2bhuX5.js.br +0 -0
- package/dist/public/assets/_DNJUSdOk.js +0 -1
- package/dist/public/assets/_DNy2MoKM.js.br +0 -0
- package/dist/public/assets/_DQIrgN4k.js +0 -1
- package/dist/public/assets/_DQRSCk2F.js.br +0 -0
- package/dist/public/assets/_DRvfajkC.js.br +0 -0
- package/dist/public/assets/_DV2bAFNg.js.br +0 -0
- package/dist/public/assets/_DVBAwKVR.js.br +0 -0
- package/dist/public/assets/_DVMQyUQJ.js.br +0 -0
- package/dist/public/assets/_DVp1-q02.js +0 -1
- package/dist/public/assets/_DW8mxdKH.js.br +0 -0
- package/dist/public/assets/_DWRN9t29.js +0 -1
- package/dist/public/assets/_DWT2_f5R.js +0 -1
- package/dist/public/assets/_DZtGWb7t.js +0 -1
- package/dist/public/assets/_Da09wu4L.js +0 -1
- package/dist/public/assets/_Dcao7-GN.js.br +0 -0
- package/dist/public/assets/_Ddnd1yO1.js +0 -1
- package/dist/public/assets/_DgrU06P7.js +0 -1
- package/dist/public/assets/_DjX-J-5G.js.br +0 -0
- package/dist/public/assets/_DjovOG5I.js +0 -1
- package/dist/public/assets/_Dkv0yw2w.js.br +0 -0
- package/dist/public/assets/_DmWMoSv1.js.br +0 -0
- package/dist/public/assets/_Dm_3kSDD.js +0 -1
- package/dist/public/assets/_Do8dsKhP.js +0 -1
- package/dist/public/assets/_DowTc_NG.js +0 -1
- package/dist/public/assets/_DpQoMAZO.js +0 -1
- package/dist/public/assets/_DpzJFlTs.js +0 -1
- package/dist/public/assets/_Ds0FiPaF.js +0 -1
- package/dist/public/assets/_DthwYqUP.js.br +0 -0
- package/dist/public/assets/_Dtx23QI5.js.br +0 -0
- package/dist/public/assets/_DuCqBf6Y.js.br +0 -0
- package/dist/public/assets/_Dx-9-Sy_.js.br +0 -0
- package/dist/public/assets/_Dx-xUggM.js +0 -1
- package/dist/public/assets/_Dx61rucB.js +0 -1
- package/dist/public/assets/_DzeI6vGo.js +0 -1
- package/dist/public/assets/_FMOctYMW.js.br +0 -0
- package/dist/public/assets/_IMv1gu0W.js +0 -1
- package/dist/public/assets/_Lgyuucwe.js.br +0 -0
- package/dist/public/assets/_OfarPqMF.js +0 -1
- package/dist/public/assets/_PNG0OnBn.js +0 -1
- package/dist/public/assets/_Pp1od959.js +0 -1
- package/dist/public/assets/_QSufHoZj.js.br +0 -0
- package/dist/public/assets/_Srj1J866.js +0 -1
- package/dist/public/assets/_SrvPETNL.js.br +0 -0
- package/dist/public/assets/_UZz8tEtA.js +0 -1
- package/dist/public/assets/_Uv9A08DD.js +0 -1
- package/dist/public/assets/_Uv9A08DD.js.br +0 -0
- package/dist/public/assets/_VlRjk16k.js +0 -1
- package/dist/public/assets/_YiTz3Wtq.js.br +0 -0
- package/dist/public/assets/_Yk8d7pzu.js +0 -1
- package/dist/public/assets/__yFiQHxx.js.br +0 -0
- package/dist/public/assets/_aJUtKbcc.js +0 -1
- package/dist/public/assets/_aKw_G6JV.js.br +0 -0
- package/dist/public/assets/_i-8Qs6z9.js +0 -1
- package/dist/public/assets/_iPKBMcV3.js +0 -1
- package/dist/public/assets/_l2ElItM2.js +0 -1
- package/dist/public/assets/_mJQTVGZ7.js +0 -1
- package/dist/public/assets/_miY5dAU1.js +0 -1
- package/dist/public/assets/_n5A3k8ml.js.br +0 -0
- package/dist/public/assets/_o6O_aS5V.js +0 -1
- package/dist/public/assets/_pJ03YFJb.js +0 -1
- package/dist/public/assets/_so3EBQ6I.js.br +0 -0
- package/dist/public/assets/_tJJzLn1F.js +0 -1
- package/dist/public/assets/_tvMsb8o0.js +0 -1
- package/dist/public/assets/_u4tUSte0.js +0 -1
- package/dist/public/assets/_vS7eEdD2.js +0 -7
- package/dist/public/assets/_vS7eEdD2.js.br +0 -0
- package/dist/public/assets/_wTrAVeP2.js.br +0 -0
- package/dist/public/assets/_xGyy2F1F.js.br +0 -0
- package/dist/public/assets/app-shell-CVYlktwa.css +0 -1
- package/dist/public/assets/app-shell-CVYlktwa.css.br +0 -0
- package/dist/public/assets/files-view-CQ8lPxty.js +0 -2
- package/dist/public/assets/manage-workspace-BsYbS9A2.js +0 -2
- package/dist/public/assets/new-AtUYpCeI.js +0 -1
- package/dist/public/assets/new-workspace-BsRBtT71.js +0 -2
- package/dist/public/assets/review-view-BkNNP2d-.js +0 -2
- package/dist/public/assets/settings-AtUYpCeI.js +0 -1
- package/dist/public/assets/settings-page-1J8x4J9R.js +0 -2
- package/dist/public/assets/styles-BCjsk_jt.css +0 -1
- package/dist/public/assets/styles-BCjsk_jt.css.br +0 -0
- package/dist/public/assets/w-AtUYpCeI.js +0 -1
- package/dist/public/assets/w._-AtUYpCeI.js +0 -1
- package/dist/public/assets/w._-BR2iS1Cp.js +0 -1
- package/dist/public/assets/w._-Dk-zPONB.js +0 -1
package/bin/cli/stack.mjs
CHANGED
|
@@ -8,26 +8,40 @@ function recipe(branch) {
|
|
|
8
8
|
|
|
9
9
|
Stack only when the user asks, or when a change of several hundred lines
|
|
10
10
|
splits into parts each worth merging alone; never a layer per commit.
|
|
11
|
+
A stack is a convention, plain branches and PRs: each layer is cut from
|
|
12
|
+
the one below and its PR is based on it, which is how GitHub and work's
|
|
13
|
+
review both read a stack.
|
|
11
14
|
|
|
12
|
-
- The working branch (${branch}) stays the top; cut layers below it
|
|
13
|
-
first, as ${branch}-<layer
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
- The working branch (${branch}) stays the top; cut layers below it from
|
|
16
|
+
its own commits, bottom first, as ${branch}-<layer>, each with its PR's
|
|
17
|
+
base as gh reads it:
|
|
18
|
+
git branch ${branch}-<layer> <its last commit>
|
|
19
|
+
git config branch.${branch}-<layer>.gh-merge-base <layer below, else base>
|
|
20
|
+
- The user reviews it here a layer at a time, bottom first: link each as
|
|
21
|
+
[<layer>](/w/<id>/review?section=<repo>@<layer>) (\`work branches\`
|
|
22
|
+
lists them).
|
|
16
23
|
- Never check a layer out. Edit one by \`git commit --fixup <sha>\` on the
|
|
17
|
-
top, then:
|
|
24
|
+
top, then (every layer moves with the commits it holds):
|
|
18
25
|
GIT_SEQUENCE_EDITOR=: git rebase -i --autosquash --update-refs origin/<base>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
(
|
|
23
|
-
|
|
26
|
+
A base that moved is \`git rebase --update-refs origin/<base>\` alike.
|
|
27
|
+
- Nothing goes up front. Push a layer and open its PR only when the user
|
|
28
|
+
says it is ready, after reviewing it, bottom first and never past a
|
|
29
|
+
layer still local (a PR's base must be on GitHub):
|
|
30
|
+
git push origin ${branch}-<layer>
|
|
31
|
+
gh pr create --head ${branch}-<layer> --base <layer below, else base>
|
|
32
|
+
The top goes last, its PR based on the last layer (one already open:
|
|
33
|
+
\`gh pr edit --base\`). After a rebase, force-push only what is pushed:
|
|
34
|
+
git push --force-with-lease --atomic origin <pushed branches…>
|
|
35
|
+
- Land bottom first, deleting the merged branch so GitHub moves the PR
|
|
36
|
+
above onto <base> (on the web, delete it after merging):
|
|
37
|
+
cut=$(git rev-parse ${branch}-<layer>)
|
|
38
|
+
gh pr merge <pr> --squash --delete-branch
|
|
39
|
+
then, on the top, move the rest onto the squash, and force-push what of
|
|
40
|
+
it is pushed:
|
|
24
41
|
git fetch
|
|
25
|
-
git
|
|
26
|
-
git branch -
|
|
27
|
-
|
|
28
|
-
- Once the top merges: \`gh stack unstack --local\`.
|
|
29
|
-
- Link a layer for review as [<layer>](/w/<id>/review?section=<repo>@<layer>);
|
|
30
|
-
\`work branches\` lists every layer with its link.`;
|
|
42
|
+
git rebase --update-refs --onto origin/<base> $cut
|
|
43
|
+
git config branch.<layer above>.gh-merge-base <base> # not the top's
|
|
44
|
+
- A lane stacks the same way, in its worktree, its branch the top.`;
|
|
31
45
|
}
|
|
32
46
|
|
|
33
47
|
export const commands = [
|
|
@@ -35,9 +49,9 @@ export const commands = [
|
|
|
35
49
|
name: "stack",
|
|
36
50
|
summary: "how to stack branches in this workspace (prints the recipe)",
|
|
37
51
|
help: `work stack [id|name]
|
|
38
|
-
Prints how to stack branches
|
|
39
|
-
branch filled in: when to, cutting layers, editing one
|
|
40
|
-
it out, merging a layer and rebasing the rest.`,
|
|
52
|
+
Prints how to stack branches here, as plain branches and PRs, with the
|
|
53
|
+
workspace's branch filled in: when to, cutting layers, editing one
|
|
54
|
+
without checking it out, merging a layer and rebasing the rest.`,
|
|
41
55
|
async run(ctx) {
|
|
42
56
|
let branch = "<workspace-branch>";
|
|
43
57
|
try {
|
package/bin/cli/topic.mjs
CHANGED
|
@@ -84,7 +84,7 @@ function mergeBases(dir) {
|
|
|
84
84
|
* copy. This workspace's own branches (it, and the topics one stacks on)
|
|
85
85
|
* go by the local one: they may never be pushed, and here is where they
|
|
86
86
|
* move. Any other (the repo's base) goes by origin's: a bare cache's local
|
|
87
|
-
* copy of it is as old as the clone
|
|
87
|
+
* copy of it is as old as the clone. */
|
|
88
88
|
function baseRef(dir, name, ws, foreign) {
|
|
89
89
|
const local = has(dir, `refs/heads/${name}`) ? name : null;
|
|
90
90
|
const remote = has(dir, `refs/remotes/origin/${name}`)
|
package/bin/work.mjs
CHANGED
|
@@ -76,6 +76,7 @@ import {
|
|
|
76
76
|
applyPlan,
|
|
77
77
|
dropText,
|
|
78
78
|
firewallProbe,
|
|
79
|
+
programOf,
|
|
79
80
|
serviceNode,
|
|
80
81
|
} from "../lib/setup/firewall.mjs";
|
|
81
82
|
import { installTool, repairGhHelpers } from "../lib/setup/install.mjs";
|
|
@@ -958,6 +959,7 @@ function allowScriptsArgs() {
|
|
|
958
959
|
|
|
959
960
|
async function update() {
|
|
960
961
|
log("updating @dylanpiercey/work");
|
|
962
|
+
const before = serviceCli();
|
|
961
963
|
// `--prefer-online`: npm serves `latest` from a cached packument for a
|
|
962
964
|
// few minutes after a publish, so an update right behind a release
|
|
963
965
|
// reinstalled the version already running.
|
|
@@ -974,8 +976,19 @@ async function update() {
|
|
|
974
976
|
],
|
|
975
977
|
{ stdio },
|
|
976
978
|
);
|
|
977
|
-
//
|
|
978
|
-
|
|
979
|
+
// Finish with the CLI that npm just installed, found where that npm
|
|
980
|
+
// installs, never `work` by name: the npm and the `work` first on PATH
|
|
981
|
+
// can be two nodes' (a Homebrew npm ahead of mise's shims), and the
|
|
982
|
+
// other install's setup points the service back at itself, so every
|
|
983
|
+
// update left the service on the old release.
|
|
984
|
+
const root = execFileSync("npm", ["root", "-g"], {
|
|
985
|
+
encoding: "utf8",
|
|
986
|
+
stdio: ["ignore", "pipe", 2],
|
|
987
|
+
}).trim();
|
|
988
|
+
const cli = path.join(root, "@dylanpiercey", "work", "bin", "work.mjs");
|
|
989
|
+
if (!fs.existsSync(cli))
|
|
990
|
+
die(`npm installed into ${root}, but there is no ${cli}`);
|
|
991
|
+
sh(cli, [
|
|
979
992
|
"setup",
|
|
980
993
|
...(yes ? ["--yes"] : []),
|
|
981
994
|
...args.filter((a) =>
|
|
@@ -991,6 +1004,21 @@ async function update() {
|
|
|
991
1004
|
...flagValues("--allow-host").flatMap((h) => ["--allow-host", h]),
|
|
992
1005
|
...flagValues("--disallow-host").flatMap((h) => ["--disallow-host", h]),
|
|
993
1006
|
]);
|
|
1007
|
+
// The service now runs what npm updated; an install it or this shell ran
|
|
1008
|
+
// before is left behind at its old release.
|
|
1009
|
+
const now = realpathOr(cli);
|
|
1010
|
+
const left = new Map();
|
|
1011
|
+
for (const [w, was] of [
|
|
1012
|
+
[before, "the service ran"],
|
|
1013
|
+
[installAt(fileURLToPath(import.meta.url)), "`work` here ran"],
|
|
1014
|
+
]) {
|
|
1015
|
+
if (w?.prefix && w.real !== now && !left.has(w.real))
|
|
1016
|
+
left.set(
|
|
1017
|
+
w.real,
|
|
1018
|
+
`${was} ${tilde(w.path)} (${w.version}), not the install npm updated (${tilde(cli)}); remove it: ${removeHint(w)}`,
|
|
1019
|
+
);
|
|
1020
|
+
}
|
|
1021
|
+
for (const note of left.values()) warn(note);
|
|
994
1022
|
}
|
|
995
1023
|
|
|
996
1024
|
/** Machine readiness from lib/setup — the same probe the Settings page runs. */
|
|
@@ -1015,38 +1043,39 @@ async function doctorCmd() {
|
|
|
1015
1043
|
}
|
|
1016
1044
|
|
|
1017
1045
|
/**
|
|
1018
|
-
* This `work`, every other one on PATH (the first is what `work` runs)
|
|
1019
|
-
* each with its version, and the
|
|
1020
|
-
*
|
|
1021
|
-
*
|
|
1022
|
-
*
|
|
1046
|
+
* This `work`, every other one on PATH (the first is what `work` runs) or
|
|
1047
|
+
* on the service's, each with the install it runs and its version, and the
|
|
1048
|
+
* service: the CLI its definition runs and the release the running one
|
|
1049
|
+
* reports. A package manager's global left behind — a Homebrew node's
|
|
1050
|
+
* under mise's — shadows the one kept up to date, and the doctor it runs is
|
|
1051
|
+
* then old code describing a machine it no longer knows.
|
|
1023
1052
|
*/
|
|
1024
1053
|
async function workInstalls() {
|
|
1025
|
-
const self =
|
|
1054
|
+
const self = installAt(fileURLToPath(import.meta.url));
|
|
1055
|
+
const shell = (process.env.PATH || "").split(path.delimiter);
|
|
1056
|
+
const servicePath = (installedServiceEnv().PATH || "").split(path.delimiter);
|
|
1026
1057
|
const onPath = [];
|
|
1027
1058
|
const seen = new Set();
|
|
1028
|
-
for (const dir of (
|
|
1059
|
+
for (const dir of new Set([...shell, ...servicePath])) {
|
|
1029
1060
|
if (!dir) continue;
|
|
1030
|
-
const
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
if (seen.has(real)) continue;
|
|
1039
|
-
seen.add(real);
|
|
1040
|
-
onPath.push({ path: file, real, version: installVersion(real, file) });
|
|
1041
|
-
}
|
|
1042
|
-
let service = null;
|
|
1061
|
+
const w = workOnPath(path.join(dir, "work"));
|
|
1062
|
+
if (!w || seen.has(w.real)) continue;
|
|
1063
|
+
seen.add(w.real);
|
|
1064
|
+
onPath.push(shell.includes(dir) ? w : { ...w, servicePath: true });
|
|
1065
|
+
}
|
|
1066
|
+
// A service that answers without a version is from before /api/boot
|
|
1067
|
+
// carried one: older than any CLI that asks.
|
|
1068
|
+
const service = { answered: false, version: null, cli: serviceCli() };
|
|
1043
1069
|
try {
|
|
1044
1070
|
const res = await fetch(`${serverUrl()}/api/boot`, {
|
|
1045
1071
|
signal: AbortSignal.timeout(2000),
|
|
1046
1072
|
});
|
|
1047
|
-
if (res.ok)
|
|
1073
|
+
if (res.ok) {
|
|
1074
|
+
service.version = (await res.json()).version ?? null;
|
|
1075
|
+
service.answered = true;
|
|
1076
|
+
}
|
|
1048
1077
|
} catch {}
|
|
1049
|
-
return { self
|
|
1078
|
+
return { self, onPath, service };
|
|
1050
1079
|
}
|
|
1051
1080
|
|
|
1052
1081
|
function realpathOr(file) {
|
|
@@ -1057,28 +1086,118 @@ function realpathOr(file) {
|
|
|
1057
1086
|
}
|
|
1058
1087
|
}
|
|
1059
1088
|
|
|
1060
|
-
/**
|
|
1061
|
-
*
|
|
1062
|
-
|
|
1089
|
+
/** The package of work a file is part of, read from its package.json and
|
|
1090
|
+
* never by running anything: `prefix` is the npm prefix whose global it
|
|
1091
|
+
* is, null for a checkout. */
|
|
1092
|
+
function installAt(file) {
|
|
1093
|
+
const real = realpathOr(file);
|
|
1063
1094
|
let dir = path.dirname(real);
|
|
1064
1095
|
for (let i = 0; i < 3; i++) {
|
|
1065
1096
|
try {
|
|
1066
1097
|
const p = JSON.parse(fs.readFileSync(path.join(dir, "package.json")));
|
|
1067
|
-
if (p.name === "@dylanpiercey/work")
|
|
1098
|
+
if (p.name === "@dylanpiercey/work") {
|
|
1099
|
+
const prefix = /^(.*)\/lib\/node_modules\/@dylanpiercey\/work$/.exec(
|
|
1100
|
+
dir,
|
|
1101
|
+
)?.[1];
|
|
1102
|
+
return {
|
|
1103
|
+
path: file,
|
|
1104
|
+
real,
|
|
1105
|
+
version: p.version ?? null,
|
|
1106
|
+
prefix: prefix ?? null,
|
|
1107
|
+
};
|
|
1108
|
+
}
|
|
1068
1109
|
} catch {}
|
|
1069
1110
|
dir = path.dirname(dir);
|
|
1070
1111
|
}
|
|
1112
|
+
return null;
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
/** Version managers whose shims stand in for `work`. A shim is the
|
|
1116
|
+
* manager's own binary (mise links every shim to itself) or a script that
|
|
1117
|
+
* hands off to it, so neither its path nor its target is the install: the
|
|
1118
|
+
* manager's `which` names that. A global uninstalled from one of its
|
|
1119
|
+
* nodes leaves the shim until a reshim. */
|
|
1120
|
+
function versionManagers() {
|
|
1121
|
+
return [
|
|
1122
|
+
{
|
|
1123
|
+
id: "mise",
|
|
1124
|
+
shim: (file, real) => path.basename(real) === "mise",
|
|
1125
|
+
which: (real) => [real, ["which", "work"]],
|
|
1126
|
+
installs: /\/mise\/installs\/node\//,
|
|
1127
|
+
reshim: "mise reshim",
|
|
1128
|
+
},
|
|
1129
|
+
{
|
|
1130
|
+
id: "asdf",
|
|
1131
|
+
shim: (file) => /\/\.asdf\/shims$/.test(path.dirname(file)),
|
|
1132
|
+
which: () => ["asdf", ["which", "work"]],
|
|
1133
|
+
installs: /\/\.asdf\/installs\/nodejs\//,
|
|
1134
|
+
reshim: "asdf reshim nodejs",
|
|
1135
|
+
},
|
|
1136
|
+
{
|
|
1137
|
+
id: "nodenv",
|
|
1138
|
+
shim: (file) => /\/\.nodenv\/shims$/.test(path.dirname(file)),
|
|
1139
|
+
which: () => ["nodenv", ["which", "work"]],
|
|
1140
|
+
installs: /\/\.nodenv\/versions\//,
|
|
1141
|
+
reshim: "nodenv rehash",
|
|
1142
|
+
},
|
|
1143
|
+
];
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
/** The install a `work` on PATH runs: an npm global's bin links into the
|
|
1147
|
+
* package, a shim's is the one its manager names, and anything else is
|
|
1148
|
+
* asked its version. */
|
|
1149
|
+
function workOnPath(file) {
|
|
1150
|
+
try {
|
|
1151
|
+
if (!fs.statSync(file).isFile()) return null;
|
|
1152
|
+
} catch {
|
|
1153
|
+
return null;
|
|
1154
|
+
}
|
|
1155
|
+
const own = installAt(file);
|
|
1156
|
+
if (own) return own;
|
|
1157
|
+
const real = realpathOr(file);
|
|
1158
|
+
const manager = versionManagers().find((m) => m.shim(file, real));
|
|
1159
|
+
if (manager) {
|
|
1160
|
+
const [bin, argv] = manager.which(real);
|
|
1161
|
+
const out = spawnSync(bin, argv, { encoding: "utf8", timeout: 5000 });
|
|
1162
|
+
const target = out.status === 0 && out.stdout.trim();
|
|
1163
|
+
const w = target && installAt(target);
|
|
1164
|
+
if (w) return { ...w, path: file, manager: manager.id };
|
|
1165
|
+
}
|
|
1071
1166
|
const out = spawnSync(file, ["version"], { encoding: "utf8", timeout: 5000 });
|
|
1072
|
-
|
|
1167
|
+
const version = /^\d+\.\d+\.\d+\S*/.exec((out.stdout || "").trim())?.[0];
|
|
1168
|
+
return { path: file, real, version: version ?? null, prefix: null };
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
/** The work the service definition runs (`[caffeinate -s] <cli> start`,
|
|
1172
|
+
* or a checkout's run script under work-source local): the first program
|
|
1173
|
+
* in its argv that is part of a work package. */
|
|
1174
|
+
function serviceCli() {
|
|
1175
|
+
let text;
|
|
1176
|
+
try {
|
|
1177
|
+
text = fs.readFileSync(serviceFile(), "utf8");
|
|
1178
|
+
} catch {
|
|
1179
|
+
return null;
|
|
1180
|
+
}
|
|
1181
|
+
for (const arg of programOf(text)) {
|
|
1182
|
+
const w = path.isAbsolute(arg) && installAt(arg);
|
|
1183
|
+
if (w) return w;
|
|
1184
|
+
}
|
|
1185
|
+
return null;
|
|
1073
1186
|
}
|
|
1074
1187
|
|
|
1075
|
-
/** How to remove an
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1188
|
+
/** How to remove an npm global of work: npm's uninstall at the prefix it
|
|
1189
|
+
* is in (named: the npm first on PATH may be another node's, whose own
|
|
1190
|
+
* prefix holds some other install), then its version manager's reshim.
|
|
1191
|
+
* Null for anything else, which is not this CLI's to remove. */
|
|
1192
|
+
function removeHint(w) {
|
|
1193
|
+
if (!w.prefix) return null;
|
|
1194
|
+
const manager = versionManagers().find(
|
|
1195
|
+
(m) => m.id === w.manager || m.installs.test(`${w.prefix}/`),
|
|
1196
|
+
);
|
|
1197
|
+
const prefix = /^[\w@%+=:,./-]+$/.test(w.prefix)
|
|
1198
|
+
? w.prefix
|
|
1199
|
+
: `'${w.prefix.replace(/'/g, `'\\''`)}'`;
|
|
1200
|
+
return `npm uninstall -g --prefix ${prefix} @dylanpiercey/work${manager ? ` && ${manager.reshim}` : ""}`;
|
|
1082
1201
|
}
|
|
1083
1202
|
|
|
1084
1203
|
function newest(versions) {
|
|
@@ -1090,23 +1209,56 @@ function newest(versions) {
|
|
|
1090
1209
|
}, null);
|
|
1091
1210
|
}
|
|
1092
1211
|
|
|
1093
|
-
/** The doctor's warnings about which `work` this is
|
|
1212
|
+
/** The doctor's warnings about which `work` this is and which the service
|
|
1213
|
+
* runs. */
|
|
1094
1214
|
function installNotes({ self, onPath, service }) {
|
|
1095
1215
|
const notes = [];
|
|
1096
|
-
|
|
1097
|
-
|
|
1216
|
+
const runs = service.cli;
|
|
1217
|
+
// The newest install here is the one to keep: an update installs it,
|
|
1218
|
+
// and whatever else is here was left behind, the service's included.
|
|
1219
|
+
const current = newest([self.version, ...onPath.map((w) => w.version)]);
|
|
1220
|
+
const behind = (v) => v !== current && newest([v, current]) === current;
|
|
1221
|
+
const keep = [...onPath.filter((w) => !w.servicePath), self].find(
|
|
1222
|
+
(w) => w.prefix && w.version === current,
|
|
1223
|
+
);
|
|
1224
|
+
// `setup` from the install kept points the service at it, unless the
|
|
1225
|
+
// service runs a checkout (work-source local), which setup would undo.
|
|
1226
|
+
const move =
|
|
1227
|
+
keep &&
|
|
1228
|
+
runs?.prefix &&
|
|
1229
|
+
`\`${keep === onPath[0] ? "work" : keep.path} setup\``;
|
|
1230
|
+
if (service.answered && service.version !== self.version) {
|
|
1231
|
+
const theirs = runs ?? onPath.find((w) => w.version === service.version);
|
|
1232
|
+
notes.push(
|
|
1233
|
+
`this work is ${self.version} (${tilde(self.path)}), but the running service is ${service.version ?? "older (it does not report its version)"}, so what this doctor says is an older or newer release's${theirs ? `: the service's is ${tilde(theirs.path)}` : ""}${move && behind(service.version) ? `; run ${move} to move it to ${current}` : ""}`,
|
|
1234
|
+
);
|
|
1235
|
+
} else if (!service.answered && runs && runs.version !== self.version) {
|
|
1098
1236
|
notes.push(
|
|
1099
|
-
`
|
|
1237
|
+
`the service is set to run ${tilde(runs.path)} (${runs.version ?? "unknown version"}), not this work (${self.version}, ${tilde(self.path)})${move && behind(runs.version) ? `; run ${move} to move it to ${current}` : ""}`,
|
|
1100
1238
|
);
|
|
1101
1239
|
}
|
|
1102
1240
|
if (onPath.length > 1) {
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1241
|
+
const lines = onPath.map((w, i) => {
|
|
1242
|
+
const tags = [
|
|
1243
|
+
i === 0 && !w.servicePath && "what `work` runs",
|
|
1244
|
+
w.servicePath && "on the service's PATH",
|
|
1245
|
+
w.real === runs?.real && "the service's",
|
|
1246
|
+
].filter(Boolean);
|
|
1247
|
+
const hint = removeHint(w);
|
|
1248
|
+
// The service's own install goes only once the service is off it:
|
|
1249
|
+
// removed first, it would stop the service.
|
|
1250
|
+
const fix =
|
|
1251
|
+
w.version === current
|
|
1252
|
+
? ""
|
|
1253
|
+
: !hint
|
|
1254
|
+
? "not an npm global: remove it the way it was installed"
|
|
1255
|
+
: w.real !== runs?.real
|
|
1256
|
+
? `remove: ${hint}`
|
|
1257
|
+
: move
|
|
1258
|
+
? `remove, once ${move} has moved the service off it: ${hint}`
|
|
1259
|
+
: "";
|
|
1260
|
+
return ` ${tilde(w.path)} → ${w.version ?? "unknown version"}${tags.length ? ` (${tags.join(", ")})` : ""}${fix ? `\n ${fix}` : ""}`;
|
|
1261
|
+
});
|
|
1110
1262
|
notes.push(`more than one work is on PATH:\n${lines.join("\n")}`);
|
|
1111
1263
|
}
|
|
1112
1264
|
return notes;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
//#endregion
|
|
2
|
+
//#region src/styles/tokens.css.ts
|
|
3
|
+
var color = {
|
|
4
|
+
ok: "light-dark(#1a7f37, #57d364)",
|
|
5
|
+
okStrong: "light-dark(#116329, #7ee787)",
|
|
6
|
+
warn: "light-dark(#bf8700, #d4a72c)",
|
|
7
|
+
warnStrong: "light-dark(#8a5a00, #f0b84a)",
|
|
8
|
+
merged: "light-dark(#8250df, #a371f7)",
|
|
9
|
+
closed: "light-dark(#cf222e, #f85149)",
|
|
10
|
+
onAccent: "#fff",
|
|
11
|
+
onDanger: "#fff",
|
|
12
|
+
accentDefault: "light-dark(#4f5bd5, #6470e6)",
|
|
13
|
+
bg: "var(--bg)",
|
|
14
|
+
panel: "var(--panel)",
|
|
15
|
+
border: "var(--border)",
|
|
16
|
+
text: "var(--text)",
|
|
17
|
+
dim: "var(--dim)",
|
|
18
|
+
accent: "var(--accent)",
|
|
19
|
+
accentFill: "var(--accent-fill)",
|
|
20
|
+
accentText: "var(--accent-text)",
|
|
21
|
+
danger: "var(--danger)",
|
|
22
|
+
fieldBorder: "var(--field-border)",
|
|
23
|
+
raised: "color-mix(in srgb, var(--panel) 94%, var(--text))",
|
|
24
|
+
raisedHover: "color-mix(in srgb, var(--panel) 90%, var(--text))",
|
|
25
|
+
onScrim: "#fff"
|
|
26
|
+
};
|
|
27
|
+
var sans = "Inter, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif";
|
|
28
|
+
var iconSize = {
|
|
29
|
+
sm: 12,
|
|
30
|
+
md: 14,
|
|
31
|
+
lg: 16,
|
|
32
|
+
xl: 18
|
|
33
|
+
};
|
|
34
|
+
var mobile = "screen and (max-width: 899px) and (pointer: coarse), screen and (max-width: 899px) and (pointer: none)";
|
|
35
|
+
var glyphBadgeNum = "_P _O";
|
|
36
|
+
var usageInk = {
|
|
37
|
+
ok: "_Q",
|
|
38
|
+
mid: "_R",
|
|
39
|
+
warm: "_S",
|
|
40
|
+
hot: "_T"
|
|
41
|
+
};
|
|
42
|
+
var usageFill = {
|
|
43
|
+
ok: "_U",
|
|
44
|
+
mid: "_V",
|
|
45
|
+
warm: "_W",
|
|
46
|
+
hot: "_X"
|
|
47
|
+
};
|
|
48
|
+
var prTone = {
|
|
49
|
+
open: "_Y",
|
|
50
|
+
draft: "_Z",
|
|
51
|
+
merged: "_0",
|
|
52
|
+
closed: "_1"
|
|
53
|
+
};
|
|
54
|
+
var phaseIcon = {
|
|
55
|
+
working: "_bd _bc",
|
|
56
|
+
waiting: "_be _bc",
|
|
57
|
+
idle: "_bf _bc",
|
|
58
|
+
off: "_bg _bc"
|
|
59
|
+
};
|
|
60
|
+
var btnSm = "_bn _I";
|
|
61
|
+
var btnLg = "_bo _I";
|
|
62
|
+
var tone = {
|
|
63
|
+
accent: "_bs",
|
|
64
|
+
ok: "_bt",
|
|
65
|
+
warn: "_bu",
|
|
66
|
+
danger: "_bv",
|
|
67
|
+
merged: "_bw",
|
|
68
|
+
closed: "_bx"
|
|
69
|
+
};
|
|
70
|
+
var inputLg = "_bB _bA";
|
|
71
|
+
var iconBtnXs = "_bF _D";
|
|
72
|
+
var iconBtnRow = "_bG _D";
|
|
73
|
+
var iconBtnLg = "_bH _D";
|
|
74
|
+
var chipBtn = "_bI _D";
|
|
75
|
+
var toastStack = "_o _n";
|
|
76
|
+
var toastKind = {
|
|
77
|
+
error: "_s",
|
|
78
|
+
warn: "_t",
|
|
79
|
+
info: "_u"
|
|
80
|
+
};
|
|
81
|
+
var toastTitle = {
|
|
82
|
+
error: "_v",
|
|
83
|
+
warn: "_w",
|
|
84
|
+
info: "_x"
|
|
85
|
+
};
|
|
86
|
+
var tocDot = "_cS _ba";
|
|
87
|
+
//#endregion
|
|
88
|
+
//#region src/tags/settings-agents.css.ts
|
|
89
|
+
var agentRow = "_fF _em";
|
|
90
|
+
var list$3 = "_eq _dj _el _eo";
|
|
91
|
+
var metaChip = "_eE _bz _by";
|
|
92
|
+
var sectionCount = "_dg _bp _bq";
|
|
93
|
+
var usageNote = "_kb _by";
|
|
94
|
+
var pop$2 = "_gh _bN";
|
|
95
|
+
var spinner = "_gk _bD _bi";
|
|
96
|
+
var toolLead = "_f3 _ez";
|
|
97
|
+
var name$4 = "_fX _ez";
|
|
98
|
+
var desc$1 = "_fY _eA";
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region src/tags/lsp-add-dialog.css.ts
|
|
101
|
+
var addDlg = "_kR _b4";
|
|
102
|
+
var key$1 = "_mi _mg";
|
|
103
|
+
var addTile = "_mk _mg";
|
|
104
|
+
var field$2 = "_mv _bA";
|
|
105
|
+
var keyField = "_mw _mv _bA";
|
|
106
|
+
var labelField = "_mx _mv _bA";
|
|
107
|
+
var detailsToggle = "_hi _6";
|
|
108
|
+
var themeSeg = "_fj _bR";
|
|
109
|
+
var checkList = "_gK _dh";
|
|
110
|
+
//#endregion
|
|
111
|
+
//#region src/tags/prompt-dialog.css.ts
|
|
112
|
+
var promptDlg = "_b8 _b4";
|
|
113
|
+
var item$1 = "_b0 _D";
|
|
114
|
+
var glance = "_dG _D";
|
|
115
|
+
//#endregion
|
|
116
|
+
//#region src/tags/side-nav.css.ts
|
|
117
|
+
var iconBtn = "_b9 _D";
|
|
118
|
+
var settingsDot = "_b_ _bQ";
|
|
119
|
+
var notifyBtn = "_ce _D";
|
|
120
|
+
//#endregion
|
|
121
|
+
//#region src/styles/session-pop.css.ts
|
|
122
|
+
var sessionPop = "_cr _bN";
|
|
123
|
+
var sessionPopBtn = "_cs _bk";
|
|
124
|
+
var wsBtn = "_eY _bk";
|
|
125
|
+
var rowIcon = "_e0 _bF _D";
|
|
126
|
+
var prChip = "_mI _M _mC";
|
|
127
|
+
//#endregion
|
|
128
|
+
//#region src/tags/port-chip.css.ts
|
|
129
|
+
var port = "_oJ _M _mC";
|
|
130
|
+
var depth = {
|
|
131
|
+
"1": "_ky",
|
|
132
|
+
"2": "_kz",
|
|
133
|
+
"3": "_kA"
|
|
134
|
+
};
|
|
135
|
+
var open = "_kG _bk";
|
|
136
|
+
var action = "_kL _bI _D";
|
|
137
|
+
var toggle = "_eJ _6";
|
|
138
|
+
var fold = "_eK _en";
|
|
139
|
+
var statusOf = {
|
|
140
|
+
queued: "_lY",
|
|
141
|
+
starting: "_lZ",
|
|
142
|
+
working: "_l0",
|
|
143
|
+
waiting: "_l1",
|
|
144
|
+
idle: "_l2",
|
|
145
|
+
done: "_l3",
|
|
146
|
+
closed: "_l4"
|
|
147
|
+
};
|
|
148
|
+
var item = "_j2 _bk";
|
|
149
|
+
var menu = "_nH _cr _bN";
|
|
150
|
+
var menuItem = "_nJ _bk";
|
|
151
|
+
var findBtn$1 = "_ir _ic _bG _D";
|
|
152
|
+
var tool = "_ic _bG _D";
|
|
153
|
+
var heldRefresh = "_ik _M";
|
|
154
|
+
var pop$1 = "_m8 _cr _bN";
|
|
155
|
+
var fileFilter = "_oN _F";
|
|
156
|
+
var findInput = "_d6 _F";
|
|
157
|
+
var keybarIconBtn = "_ee _bI _D";
|
|
158
|
+
var input = "_du _F";
|
|
159
|
+
var group = "_dx _6";
|
|
160
|
+
var hint$1 = "_nq _bp _3";
|
|
161
|
+
var sheetDir = "_n6 _bP";
|
|
162
|
+
var upBtn = "_jh _bG _D";
|
|
163
|
+
var findBtn = "_jl _ic _bG _D";
|
|
164
|
+
var goBtn = "_jm _ic _bG _D";
|
|
165
|
+
var note = "_nl _by";
|
|
166
|
+
//#endregion
|
|
167
|
+
//#region src/tags/manage-workspace.css.ts
|
|
168
|
+
var procCmd = "_ht _ez";
|
|
169
|
+
var factCopy = "_hA _bI _D";
|
|
170
|
+
var resultRow = "_k6 _bk";
|
|
171
|
+
var resultBranch = "_k7 _eE _bz _by _bF _D";
|
|
172
|
+
var urlAction = "_k8 _eE _bz _by _eF";
|
|
173
|
+
var curRow = "_fR _et";
|
|
174
|
+
//#endregion
|
|
175
|
+
//#region src/tags/join-dialog.css.ts
|
|
176
|
+
var dlg = "_mX _b4";
|
|
177
|
+
var hint = "_mY _by";
|
|
178
|
+
var kbtn = "_cD _bH _D";
|
|
179
|
+
var repeat = "_cG _cF";
|
|
180
|
+
var dpadUser = "_cJ _cF";
|
|
181
|
+
var dpadEsc = "_cK _cF";
|
|
182
|
+
//#endregion
|
|
183
|
+
export { field$2 as $, item as A, usageInk as At, wsBtn as B, fileFilter as C, iconBtnRow as Ct, findBtn$1 as D, prTone as Dt, tool as E, phaseIcon as Et, depth as F, settingsDot as G, sessionPopBtn as H, open as I, promptDlg as J, glance as K, port as L, fold as M, iconSize as Mt, toggle as N, mobile as Nt, menu as O, tone as Ot, action as P, sans as Pt, addTile as Q, prChip as R, keybarIconBtn as S, iconBtnLg as St, heldRefresh as T, inputLg as Tt, iconBtn as U, sessionPop as V, notifyBtn as W, themeSeg as X, checkList as Y, detailsToggle as Z, sheetDir as _, toastTitle as _t, dlg as a, name$4 as at, input as b, chipBtn as bt, resultBranch as c, spinner as ct, factCopy as d, list$3 as dt, key$1 as et, procCmd as f, metaChip as ft, upBtn as g, toastStack as gt, goBtn as h, toastKind as ht, repeat as i, desc$1 as it, statusOf as j, color as jt, menuItem as k, usageFill as kt, resultRow as l, usageNote as lt, findBtn as m, tocDot as mt, dpadUser as n, labelField as nt, hint as o, toolLead as ot, note as p, agentRow as pt, item$1 as q, kbtn as r, addDlg as rt, curRow as s, pop$2 as st, dpadEsc as t, keyField as tt, urlAction as u, sectionCount as ut, hint$1 as v, btnLg as vt, pop$1 as w, iconBtnXs as wt, findInput as x, glyphBadgeNum as xt, group as y, btnSm as yt, rowIcon as z };
|