@dylanpiercey/work 0.0.221 → 0.0.223
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 +7 -4
- package/bin/work.mjs +70 -17
- package/dist/{_-MXZhaOD.js → _CpANOzpd.js} +313 -173
- package/dist/_LF2Fo5WE.js +2 -0
- package/dist/index.mjs +1572 -1804
- package/dist/public/assets/_--tE4Gxz.js +2 -0
- package/dist/public/assets/_--tE4Gxz.js.br +0 -0
- package/dist/public/assets/_1OL9vXM-.js +1 -0
- package/dist/public/assets/_2mnAZf6B.js +1 -0
- package/dist/public/assets/_2mnAZf6B.js.br +0 -0
- package/dist/public/assets/_5f9fMvWJ.js +1 -0
- package/dist/public/assets/_5y69OR6M.js +1 -0
- package/dist/public/assets/{_Cto7UR6x.js → _Aq9oGnRu.js} +1 -1
- package/dist/public/assets/_Aq9oGnRu.js.br +0 -0
- package/dist/public/assets/_B0uJCjmk.js +1 -0
- package/dist/public/assets/{_DzCAv2Gl.js → _B1RldJ0S.js} +1 -1
- package/dist/public/assets/_B1RldJ0S.js.br +0 -0
- package/dist/public/assets/_B5TpOQCZ.js +1 -0
- package/dist/public/assets/_B6UdulKa.js +1 -0
- package/dist/public/assets/{_Bgbe-7aj.js → _BA8HFnO3.js} +1 -1
- package/dist/public/assets/_BA8HFnO3.js.br +0 -0
- package/dist/public/assets/{_B59uDfC7.js → _BAHrOydH.js} +1 -1
- package/dist/public/assets/_BAHrOydH.js.br +0 -0
- package/dist/public/assets/{_DJa--qOX.js → _BBpX-M4b.js} +1 -1
- package/dist/public/assets/_BBpX-M4b.js.br +0 -0
- package/dist/public/assets/{_B8ypf2w7.js → _BCZpExov.js} +1 -1
- package/dist/public/assets/_BCZpExov.js.br +0 -0
- package/dist/public/assets/_BFZHNauV.js +1 -0
- package/dist/public/assets/_BGCK5I_O.js +1 -0
- package/dist/public/assets/_BGCK5I_O.js.br +0 -0
- package/dist/public/assets/_BJRSndB4.js +6 -0
- package/dist/public/assets/_BJRSndB4.js.br +0 -0
- package/dist/public/assets/{_IJOifsPN.js → _BL9QMk_P.js} +1 -1
- package/dist/public/assets/_BL9QMk_P.js.br +0 -0
- package/dist/public/assets/_BLNEzyb5.js +1 -0
- package/dist/public/assets/{_CiZ8pHbe.js → _BLRpf6Uw.js} +1 -1
- package/dist/public/assets/_BLRpf6Uw.js.br +0 -0
- package/dist/public/assets/{_CGLnSBxx.js → _BLTfQLdY.js} +1 -1
- package/dist/public/assets/_BLTfQLdY.js.br +0 -0
- package/dist/public/assets/{_ImG6Q5u4.js → _BO0OB-rz.js} +1 -1
- package/dist/public/assets/_BO0OB-rz.js.br +0 -0
- package/dist/public/assets/{_CW_p-nUL.js → _BPcswKMK.js} +1 -1
- package/dist/public/assets/_BPcswKMK.js.br +0 -0
- package/dist/public/assets/_BPhXWliU.js +1 -0
- package/dist/public/assets/_BQXTv9Cr.js +1 -0
- package/dist/public/assets/{_Cvh-VNIk.js → _BRG_DBcC.js} +1 -1
- package/dist/public/assets/_BRG_DBcC.js.br +0 -0
- package/dist/public/assets/{_DuQRbl1J.js → _BS4crAAm.js} +1 -1
- package/dist/public/assets/_BS4crAAm.js.br +0 -0
- package/dist/public/assets/{_B7FEL7wR.js → _BUH04L5e.js} +1 -1
- package/dist/public/assets/{_DXhRdKW7.js → _BVp6r0fg.js} +1 -1
- package/dist/public/assets/_BVp6r0fg.js.br +0 -0
- package/dist/public/assets/{_udAEKVMs.js → _BXT2bXMi.js} +1 -1
- package/dist/public/assets/_BXT2bXMi.js.br +0 -0
- package/dist/public/assets/{_CIs24vxl.js → _B_zyAtSJ.js} +1 -1
- package/dist/public/assets/_B_zyAtSJ.js.br +0 -0
- package/dist/public/assets/_BaXKdIeb.js +1 -0
- package/dist/public/assets/{_2L-OI8uX.js → _BbiACo0Y.js} +1 -1
- package/dist/public/assets/_BbiACo0Y.js.br +0 -0
- package/dist/public/assets/{_C86ZHeAp.js → _BdvO5Lqa.js} +1 -1
- package/dist/public/assets/_BdvO5Lqa.js.br +0 -0
- package/dist/public/assets/{_7PkH8MR2.js → _BeE9qDu0.js} +1 -1
- package/dist/public/assets/_BeE9qDu0.js.br +0 -0
- package/dist/public/assets/_BewXp5Y_.js +1 -0
- package/dist/public/assets/_BewXp5Y_.js.br +0 -0
- package/dist/public/assets/_BfOOLKo5.js +1 -0
- package/dist/public/assets/_BhS8bTnr.js +1 -0
- package/dist/public/assets/_BhZ3ZoG0.js +1 -0
- package/dist/public/assets/_Bi3_ZsOQ.js +1 -0
- package/dist/public/assets/_Bj_Lfa8B.js +1 -0
- package/dist/public/assets/_BlN_x04q.js +1 -0
- package/dist/public/assets/_Bn5nsnie.js +1 -0
- package/dist/public/assets/_BnOOD6nr.js +15 -0
- package/dist/public/assets/_BnOOD6nr.js.br +0 -0
- package/dist/public/assets/{_DccrUV-t.js → _BnyLUTdO.js} +1 -1
- package/dist/public/assets/_BnyLUTdO.js.br +0 -0
- package/dist/public/assets/_Bp_WT09q.js +1 -0
- package/dist/public/assets/_Bp_WT09q.js.br +0 -0
- package/dist/public/assets/{_CNyZnrbq.js → _BsimXDnm.js} +1 -1
- package/dist/public/assets/_BsimXDnm.js.br +0 -0
- package/dist/public/assets/_BsupnkWM.js +1 -0
- package/dist/public/assets/_BsupnkWM.js.br +0 -0
- package/dist/public/assets/{_BkmyKCts.js → _BxAl0m64.js} +1 -1
- package/dist/public/assets/_BxAl0m64.js.br +0 -0
- package/dist/public/assets/{_l5fDrx0F.js → _C-6dImS5.js} +1 -1
- package/dist/public/assets/_C-6dImS5.js.br +0 -0
- package/dist/public/assets/_C18Torhh.js +1 -0
- package/dist/public/assets/{_DNZFctlv.js → _C1PmcEws.js} +1 -1
- package/dist/public/assets/_C1PmcEws.js.br +0 -0
- package/dist/public/assets/{_C8fTPM4x.js → _C2ZpyiHV.js} +1 -1
- package/dist/public/assets/_C2ZpyiHV.js.br +0 -0
- package/dist/public/assets/_C3P1VHUI.js +1 -0
- package/dist/public/assets/{_CKiOrTnh.js → _C6i9NP5A.js} +1 -1
- package/dist/public/assets/_C6xwTKke.js +1 -0
- package/dist/public/assets/_C6yqlRfl.js +1 -0
- package/dist/public/assets/_C75D8bH2.js +1 -0
- package/dist/public/assets/{_CN5dKT5U.js → _C87NBm9i.js} +1 -1
- package/dist/public/assets/_C87NBm9i.js.br +0 -0
- package/dist/public/assets/_C8Vc_vBH.js +1 -0
- package/dist/public/assets/{_B8QLRTNE.js → _C9OdJcx4.js} +1 -1
- package/dist/public/assets/_C9OdJcx4.js.br +0 -0
- package/dist/public/assets/_C9eoo0sE.js +1 -0
- package/dist/public/assets/_C9qO_dny.js +1 -0
- package/dist/public/assets/_C9qO_dny.js.br +0 -0
- package/dist/public/assets/{_CtrIYddo.js → _CB31bp-W.js} +1 -1
- package/dist/public/assets/_CB31bp-W.js.br +0 -0
- package/dist/public/assets/{_DTRYzVXy.js → _CCCQMLw5.js} +1 -1
- package/dist/public/assets/_CCCQMLw5.js.br +0 -0
- package/dist/public/assets/_CCie36pi.js +1 -0
- package/dist/public/assets/_CDD9N34p.js +1 -0
- package/dist/public/assets/{_DlOIFmP5.js → _CE5MhJWL.js} +1 -1
- package/dist/public/assets/_CE5MhJWL.js.br +0 -0
- package/dist/public/assets/{_IYKAiNbQ.js → _CGLpCj_I.js} +1 -1
- package/dist/public/assets/_CGLpCj_I.js.br +0 -0
- package/dist/public/assets/{_4zMj-KgY.js → _CJ9j8N5Z.js} +1 -1
- package/dist/public/assets/_CJ9j8N5Z.js.br +0 -0
- package/dist/public/assets/{_B7aQVpV3.js → _CLDmR3jR.js} +1 -1
- package/dist/public/assets/_CLDmR3jR.js.br +0 -0
- package/dist/public/assets/{_DMuuYm9C.js → _CLerZOx-.js} +1 -1
- package/dist/public/assets/_CLerZOx-.js.br +0 -0
- package/dist/public/assets/_CM5GtJb2.js +1 -0
- package/dist/public/assets/_COECwOVb.js +1 -0
- package/dist/public/assets/_CSQE9nMN.js +1 -0
- package/dist/public/assets/_CSXMgHLQ.js +1 -0
- package/dist/public/assets/{_DgZrpFgz.js → _CT3clsOQ.js} +1 -1
- package/dist/public/assets/_CVRiByCT.js +1 -0
- package/dist/public/assets/_CVSrm4Pl.js +1 -0
- package/dist/public/assets/{_DLOPvUZY.js → _CX1wufuh.js} +1 -1
- package/dist/public/assets/_CX1wufuh.js.br +0 -0
- package/dist/public/assets/{_CPCx9DM-.js → _CYNAhnRH.js} +117 -117
- package/dist/public/assets/_CYNAhnRH.js.br +0 -0
- package/dist/public/assets/{_CZ62PUna.js → _CZGS4T08.js} +1 -1
- package/dist/public/assets/_CZGS4T08.js.br +0 -0
- package/dist/public/assets/_C_L7l9Mg.js +1 -0
- package/dist/public/assets/_CaMrYy1W.js +1 -0
- package/dist/public/assets/{_CA7oQPMX.js → _CdgAsi3s.js} +1 -1
- package/dist/public/assets/_CdgAsi3s.js.br +0 -0
- package/dist/public/assets/_Ce-E7sJE.js +1 -0
- package/dist/public/assets/_Cg3S760D.js +1 -0
- package/dist/public/assets/{_BDoav0oh.js → _ChpYg41R.js} +1 -1
- package/dist/public/assets/_CicyY7KP.js +1 -0
- package/dist/public/assets/_Ck0YOw_7.js +1 -0
- package/dist/public/assets/_CmHlTZSs.js +1 -0
- package/dist/public/assets/_CnECYh66.js +1 -0
- package/dist/public/assets/{_BA7jNaHU.js → _CnKYioYw.js} +1 -1
- package/dist/public/assets/_CnKYioYw.js.br +0 -0
- package/dist/public/assets/_CnUVvVPd.js +1 -0
- package/dist/public/assets/_CqSgGCGC.js +1 -0
- package/dist/public/assets/{_8jPfRR-S.js → _CttJbiei.js} +1 -1
- package/dist/public/assets/_CttJbiei.js.br +0 -0
- package/dist/public/assets/{_Cx8F-gsJ.js → _CtyJUmXC.js} +1 -1
- package/dist/public/assets/_CtyJUmXC.js.br +0 -0
- package/dist/public/assets/{_DxwuLWwv.js → _Cw_8WbwF.js} +1 -1
- package/dist/public/assets/_Cw_8WbwF.js.br +0 -0
- package/dist/public/assets/{_BZgSH_zH.js → _CwmzEsB4.js} +1 -1
- package/dist/public/assets/_CwmzEsB4.js.br +0 -0
- package/dist/public/assets/_CzETFsJs.js +1 -0
- package/dist/public/assets/_D-S9H-tX.js +1 -0
- package/dist/public/assets/{_C4dOkocS.js → _D-hK5uFn.js} +1 -1
- package/dist/public/assets/_D-hK5uFn.js.br +0 -0
- package/dist/public/assets/_D5fTwHXK.js +1 -0
- package/dist/public/assets/{_5iLDlaH-.js → _D8u1YU9b.js} +1 -1
- package/dist/public/assets/_D8u1YU9b.js.br +0 -0
- package/dist/public/assets/_DAH8evhA.js +1 -0
- package/dist/public/assets/_DAemmoHI.js +1 -0
- package/dist/public/assets/_DEMYxWZf.js +1 -0
- package/dist/public/assets/_DGTQBWy0.js +1 -0
- package/dist/public/assets/_DGTQBWy0.js.br +0 -0
- package/dist/public/assets/_DHhv0pCA.js +1 -0
- package/dist/public/assets/{_LSddbYPg.js → _DI0QHEXB.js} +1 -1
- package/dist/public/assets/_DI0QHEXB.js.br +0 -0
- package/dist/public/assets/{_B4jQnWBQ.js → _DJ3UAR_s.js} +1 -1
- package/dist/public/assets/_DJ3UAR_s.js.br +0 -0
- package/dist/public/assets/_DKu6UxI7.js +1 -0
- package/dist/public/assets/_DNC-9RBN.js +1 -0
- package/dist/public/assets/_DP-Bu7ET.js +1 -0
- package/dist/public/assets/_DYmmPBcq.js +1 -0
- package/dist/public/assets/_Da2Dmt_d.js +1 -0
- package/dist/public/assets/_Da2Dmt_d.js.br +0 -0
- package/dist/public/assets/{_D4Ta82Ad.js → _DaqT6m41.js} +1 -1
- package/dist/public/assets/_DaqT6m41.js.br +0 -0
- package/dist/public/assets/_DbVyutEZ.js +1 -0
- package/dist/public/assets/_DcBvO2Si.js +1 -0
- package/dist/public/assets/{_B0VKtqZ9.js → _DeCJ44Me.js} +1 -1
- package/dist/public/assets/_DeCJ44Me.js.br +0 -0
- package/dist/public/assets/{_CVYE0HUe.js → _DeN4EY8L.js} +1 -1
- package/dist/public/assets/_DeN4EY8L.js.br +0 -0
- package/dist/public/assets/{_DBpSHwsH.js → _DhEdzMUw.js} +1 -1
- package/dist/public/assets/_DhEdzMUw.js.br +0 -0
- package/dist/public/assets/{_DX2UfSkV.js → _DhNuRs-V.js} +1 -1
- package/dist/public/assets/_DhNuRs-V.js.br +0 -0
- package/dist/public/assets/{_BscapHlE.js → _DiqV5bDH.js} +1 -1
- package/dist/public/assets/_DiqV5bDH.js.br +0 -0
- package/dist/public/assets/_Diqt_yCf.js +1 -0
- package/dist/public/assets/{_CT-gn1Q3.js → _DlpTErRA.js} +1 -1
- package/dist/public/assets/_DlpTErRA.js.br +0 -0
- package/dist/public/assets/{_B9H0wf6g.js → _DmDSLxrw.js} +1 -1
- package/dist/public/assets/_DmDSLxrw.js.br +0 -0
- package/dist/public/assets/_DoC0qbSD.js +1 -0
- package/dist/public/assets/{_CBdbNtLm.js → _DoCtdMd2.js} +1 -1
- package/dist/public/assets/_DoCtdMd2.js.br +0 -0
- package/dist/public/assets/_DpqWFkMg.js +1 -0
- package/dist/public/assets/_Dr0Bkgso.js +1 -0
- package/dist/public/assets/_Dt-n9FaQ.js +1 -0
- package/dist/public/assets/_DtOzdwHm.js +1 -0
- package/dist/public/assets/_DtOzdwHm.js.br +0 -0
- package/dist/public/assets/{_CVimy4Le.js → _DuGmU4h0.js} +1 -1
- package/dist/public/assets/_DuGmU4h0.js.br +0 -0
- package/dist/public/assets/{_khh1x77_.js → _DuXOUegE.js} +1 -1
- package/dist/public/assets/_DuXOUegE.js.br +0 -0
- package/dist/public/assets/_DuaocJd1.js +1 -0
- package/dist/public/assets/{_Cdr1LImQ.js → _DuarImb7.js} +1 -1
- package/dist/public/assets/_DuarImb7.js.br +0 -0
- package/dist/public/assets/{_d0O4aA0L.js → _DwcoW-IU.js} +1 -1
- package/dist/public/assets/_DwcoW-IU.js.br +0 -0
- package/dist/public/assets/{_Mrawm4gM.js → _DxVt7Zuk.js} +12 -12
- package/dist/public/assets/_DxVt7Zuk.js.br +0 -0
- package/dist/public/assets/{_D7eFF5Zh.js → _DzrtBP-L.js} +1 -1
- package/dist/public/assets/{_BgvkMEDS.js → _Fzbz4zvE.js} +1 -1
- package/dist/public/assets/_Fzbz4zvE.js.br +0 -0
- package/dist/public/assets/_I5oX-lGP.js +1 -0
- package/dist/public/assets/{_DlpWFr6R.js → _IWMmnVCy.js} +1 -1
- package/dist/public/assets/_IWMmnVCy.js.br +0 -0
- package/dist/public/assets/{_DE_Y-0-h.js → _O70J1Mfv.js} +1 -1
- package/dist/public/assets/_O70J1Mfv.js.br +0 -0
- package/dist/public/assets/_SwbsOoi9.js +1 -0
- package/dist/public/assets/_SwbsOoi9.js.br +0 -0
- package/dist/public/assets/_Yy39CykK.js +1 -0
- package/dist/public/assets/{_BD5g3CBa.js → __Oa255vo.js} +1 -1
- package/dist/public/assets/__Oa255vo.js.br +0 -0
- package/dist/public/assets/_bPze7k1x.js +1 -0
- package/dist/public/assets/_bU1KcT1I.js +1 -0
- package/dist/public/assets/{_CP0AloMu.js → _dr95P55a.js} +1 -1
- package/dist/public/assets/_dr95P55a.js.br +0 -0
- package/dist/public/assets/{_vXrbhKaS.js → _eQK3EZCc.js} +1 -1
- package/dist/public/assets/_eQK3EZCc.js.br +0 -0
- package/dist/public/assets/{_BgPQq_uu.js → _gPFPzzPF.js} +1 -1
- package/dist/public/assets/_gPFPzzPF.js.br +0 -0
- package/dist/public/assets/_hzpOPZUB.js +1 -0
- package/dist/public/assets/{_C1TYaRDe.js → _ifUb4WX7.js} +1 -1
- package/dist/public/assets/_ifUb4WX7.js.br +0 -0
- package/dist/public/assets/_kQ7LiSim.js +1 -0
- package/dist/public/assets/_lOAW1VLM.js +1 -0
- package/dist/public/assets/{_DRTW5fd9.js → _mnBdD4YN.js} +1 -1
- package/dist/public/assets/_mnBdD4YN.js.br +0 -0
- package/dist/public/assets/_odBcV1kc.js +1 -0
- package/dist/public/assets/{_XFhH3dP0.js → _pP1W6w5v.js} +1 -1
- package/dist/public/assets/_pP1W6w5v.js.br +0 -0
- package/dist/public/assets/{_CzvJRV9T.js → _pUYwxsdF.js} +1 -1
- package/dist/public/assets/_pUYwxsdF.js.br +0 -0
- package/dist/public/assets/{_Hd-PFNkS.js → _pvS44-AC.js} +1 -1
- package/dist/public/assets/_pvS44-AC.js.br +0 -0
- package/dist/public/assets/_qJTL2ooe.js +1 -0
- package/dist/public/assets/_qJTL2ooe.js.br +0 -0
- package/dist/public/assets/{_8cXksh59.js → _s5Jez2mu.js} +1 -1
- package/dist/public/assets/_s5Jez2mu.js.br +0 -0
- package/dist/public/assets/{_nIuAA97l.js → _unfL8mz1.js} +1 -1
- package/dist/public/assets/_unfL8mz1.js.br +0 -0
- package/dist/public/assets/_unwtcXFQ.js +1 -0
- package/dist/public/assets/_unwtcXFQ.js.br +0 -0
- package/dist/public/assets/{_DILlGU4L.js → _vKQopDwG.js} +1 -1
- package/dist/public/assets/_vKQopDwG.js.br +0 -0
- package/dist/public/assets/_w1aegGdT.js +1 -0
- package/dist/public/assets/_xdrkfok5.js +1 -0
- package/dist/public/assets/_xdrkfok5.js.br +0 -0
- package/dist/public/assets/_y-lm36fI.js +1 -0
- package/dist/public/assets/{_Q3J62UbV.js → _zKlxcAnQ.js} +1 -1
- package/dist/public/assets/_zKlxcAnQ.js.br +0 -0
- package/dist/public/assets/app-shell-CpPCwWPW.css +1 -0
- package/dist/public/assets/app-shell-CpPCwWPW.css.br +0 -0
- package/dist/public/assets/files-view-BfCdcfXX.js +2 -0
- package/dist/public/assets/files-view-DtI7JE-f.css +1 -0
- package/dist/public/assets/files-view-DtI7JE-f.css.br +0 -0
- package/dist/public/assets/group.css.ts-SeaNz7WZ.css +1 -0
- package/dist/public/assets/group.css.ts-SeaNz7WZ.css.br +0 -0
- package/dist/public/assets/icon-folder-DHVc-REl.css +1 -0
- package/dist/public/assets/icon-folder-DHVc-REl.css.br +0 -0
- package/dist/public/assets/{icon-search-CQX_Oqgo.css → icon-search-DAtjHWFL.css} +1 -1
- package/dist/public/assets/icon-search-DAtjHWFL.css.br +0 -0
- package/dist/public/assets/manage-workspace-6i6Zeai7.css +1 -0
- package/dist/public/assets/manage-workspace-CixeMkdt.js +2 -0
- package/dist/public/assets/{modal-view-BY2E8mw2.css → modal-view-D0qnmuJE.css} +1 -1
- package/dist/public/assets/modal-view-D0qnmuJE.css.br +0 -0
- package/dist/public/assets/new-DxhaKmbF.js +1 -0
- package/dist/public/assets/new-workspace-BXjDRbqF.css +1 -0
- package/dist/public/assets/new-workspace-BXjDRbqF.css.br +0 -0
- package/dist/public/assets/new-workspace-DG693v2S.js +2 -0
- package/dist/public/assets/port-chip-Lz3mVJWb.css +1 -0
- package/dist/public/assets/{port-chip-9ONt0A-X.css.br → port-chip-Lz3mVJWb.css.br} +0 -0
- package/dist/public/assets/prompt-dialog-vhnae1-x.css +1 -0
- package/dist/public/assets/prompt-dialog-vhnae1-x.css.br +0 -0
- package/dist/public/assets/quick-open-DVqzk3-g.css +1 -0
- package/dist/public/assets/quick-open-DVqzk3-g.css.br +0 -0
- package/dist/public/assets/repo-picker-K5RYsEge.css +1 -0
- package/dist/public/assets/repo-picker-K5RYsEge.css.br +0 -0
- package/dist/public/assets/review-view-DqMrB4Ny.css +1 -0
- package/dist/public/assets/review-view-DqMrB4Ny.css.br +0 -0
- package/dist/public/assets/review-view-TdLbCgEg.js +2 -0
- package/dist/public/assets/section-2MyJSq5D.css +1 -0
- package/dist/public/assets/section-2MyJSq5D.css.br +0 -0
- package/dist/public/assets/settings-DxhaKmbF.js +1 -0
- package/dist/public/assets/settings-page-BBAG94Vh.js +2 -0
- package/dist/public/assets/settings-page-DUefc32x.css +1 -0
- package/dist/public/assets/settings-page-DUefc32x.css.br +0 -0
- package/dist/public/assets/skill-row-BeOk8NK8.css +1 -0
- package/dist/public/assets/sso-auth-CU3fGJ4U.css +1 -0
- package/dist/public/assets/sso-auth-CU3fGJ4U.css.br +0 -0
- package/dist/public/assets/w-DxhaKmbF.js +1 -0
- package/dist/public/assets/w._-C6JVdFgi.js +1 -0
- package/dist/public/assets/w._-DxhaKmbF.js +1 -0
- package/dist/public/assets/w._-rfvcDGPk.js +1 -0
- package/install.sh +1 -1
- package/lib/setup/catalog.d.mts +13 -0
- package/lib/setup/catalog.mjs +107 -14
- package/lib/setup/doctor.d.mts +1 -0
- package/lib/setup/doctor.mjs +5 -4
- package/lib/share/manifest.mjs +1 -1
- package/package.json +3 -3
- package/scripts/migrate.mjs +119 -261
- package/dist/_BkCP7ACo.js +0 -2
- package/dist/public/assets/_0EfQU-nm.js +0 -1
- package/dist/public/assets/_2L-OI8uX.js.br +0 -0
- package/dist/public/assets/_3dcgIhy4.js +0 -1
- package/dist/public/assets/_4lkLC-N6.js +0 -1
- package/dist/public/assets/_4lkLC-N6.js.br +0 -0
- package/dist/public/assets/_4zMj-KgY.js.br +0 -0
- package/dist/public/assets/_5iLDlaH-.js.br +0 -0
- package/dist/public/assets/_7PkH8MR2.js.br +0 -0
- package/dist/public/assets/_7pZFw9YH.js +0 -1
- package/dist/public/assets/_81trVXGv.js +0 -1
- package/dist/public/assets/_81trVXGv.js.br +0 -0
- package/dist/public/assets/_8cXksh59.js.br +0 -0
- package/dist/public/assets/_8jPfRR-S.js.br +0 -0
- package/dist/public/assets/_B-VEZaw2.js +0 -1
- package/dist/public/assets/_B0VKtqZ9.js.br +0 -0
- package/dist/public/assets/_B1n6UKwc.js +0 -1
- package/dist/public/assets/_B4jQnWBQ.js.br +0 -0
- package/dist/public/assets/_B59uDfC7.js.br +0 -0
- package/dist/public/assets/_B7aQVpV3.js.br +0 -0
- package/dist/public/assets/_B8QLRTNE.js.br +0 -0
- package/dist/public/assets/_B8ypf2w7.js.br +0 -0
- package/dist/public/assets/_B9H0wf6g.js.br +0 -0
- package/dist/public/assets/_BA7jNaHU.js.br +0 -0
- package/dist/public/assets/_BATBuapN.js +0 -1
- package/dist/public/assets/_BC-o0Ofo.js +0 -1
- package/dist/public/assets/_BD5g3CBa.js.br +0 -0
- package/dist/public/assets/_BGKOdZ60.js +0 -1
- package/dist/public/assets/_BGKOdZ60.js.br +0 -0
- package/dist/public/assets/_BI7rb-iV.js +0 -1
- package/dist/public/assets/_BNxiob9l.js +0 -1
- package/dist/public/assets/_BOIo-Rws.js +0 -1
- package/dist/public/assets/_BP-cH3Ls.js +0 -1
- package/dist/public/assets/_BP4aeWpk.js +0 -1
- package/dist/public/assets/_BQ_wB80D.js +0 -1
- package/dist/public/assets/_BSR1BCIl.js +0 -15
- package/dist/public/assets/_BSR1BCIl.js.br +0 -0
- package/dist/public/assets/_BUVzSij7.js +0 -1
- package/dist/public/assets/_BV5hAHrd.js +0 -1
- package/dist/public/assets/_BZgSH_zH.js.br +0 -0
- package/dist/public/assets/_BbdX33R5.js +0 -1
- package/dist/public/assets/_BbjPIfv2.js +0 -1
- package/dist/public/assets/_BebbIngd.js +0 -2
- package/dist/public/assets/_BebbIngd.js.br +0 -0
- package/dist/public/assets/_BfUMBq7F.js +0 -1
- package/dist/public/assets/_BgPQq_uu.js.br +0 -0
- package/dist/public/assets/_Bgbe-7aj.js.br +0 -0
- package/dist/public/assets/_BgvkMEDS.js.br +0 -0
- package/dist/public/assets/_BklmY-WW.js +0 -1
- package/dist/public/assets/_BkmyKCts.js.br +0 -0
- package/dist/public/assets/_BnKAavAk.js +0 -1
- package/dist/public/assets/_BotvnYbJ.js +0 -1
- package/dist/public/assets/_BotvnYbJ.js.br +0 -0
- package/dist/public/assets/_BscapHlE.js.br +0 -0
- package/dist/public/assets/_Bt4fKX2z.js +0 -1
- package/dist/public/assets/_BvcmHt9j.js +0 -1
- package/dist/public/assets/_C1TYaRDe.js.br +0 -0
- package/dist/public/assets/_C45o01H4.js +0 -1
- package/dist/public/assets/_C4dOkocS.js.br +0 -0
- package/dist/public/assets/_C7rA9hcV.js +0 -1
- package/dist/public/assets/_C86ZHeAp.js.br +0 -0
- package/dist/public/assets/_C8fTPM4x.js.br +0 -0
- package/dist/public/assets/_CA7oQPMX.js.br +0 -0
- package/dist/public/assets/_CAMTVZ5S.js +0 -1
- package/dist/public/assets/_CAMTVZ5S.js.br +0 -0
- package/dist/public/assets/_CBdbNtLm.js.br +0 -0
- package/dist/public/assets/_CENgKlig.js +0 -1
- package/dist/public/assets/_CGLnSBxx.js.br +0 -0
- package/dist/public/assets/_CIAIGE-e.js +0 -1
- package/dist/public/assets/_CIs24vxl.js.br +0 -0
- package/dist/public/assets/_CJ2EZdoV.js +0 -1
- package/dist/public/assets/_CJlqVV8j.js +0 -6
- package/dist/public/assets/_CJlqVV8j.js.br +0 -0
- package/dist/public/assets/_CKIVOffF.js +0 -1
- package/dist/public/assets/_CLdKQrZk.js +0 -1
- package/dist/public/assets/_CN5dKT5U.js.br +0 -0
- package/dist/public/assets/_CNyZnrbq.js.br +0 -0
- package/dist/public/assets/_CP0AloMu.js.br +0 -0
- package/dist/public/assets/_CPCx9DM-.js.br +0 -0
- package/dist/public/assets/_CPz2zCZW.js +0 -1
- package/dist/public/assets/_CT-gn1Q3.js.br +0 -0
- package/dist/public/assets/_CTbiX1kY.js +0 -1
- package/dist/public/assets/_CVYE0HUe.js.br +0 -0
- package/dist/public/assets/_CVimy4Le.js.br +0 -0
- package/dist/public/assets/_CW_p-nUL.js.br +0 -0
- package/dist/public/assets/_CZ62PUna.js.br +0 -0
- package/dist/public/assets/_CcCzrg9K.js +0 -1
- package/dist/public/assets/_Cdr1LImQ.js.br +0 -0
- package/dist/public/assets/_CgXIOrOV.js +0 -1
- package/dist/public/assets/_Ci01sxM0.js +0 -1
- package/dist/public/assets/_CiZ8pHbe.js.br +0 -0
- package/dist/public/assets/_CpIC1zJN.js +0 -1
- package/dist/public/assets/_CpSmZ2fW.js +0 -1
- package/dist/public/assets/_CpzhHQ3e.js +0 -1
- package/dist/public/assets/_CrThDEqs.js +0 -1
- package/dist/public/assets/_CrThDEqs.js.br +0 -0
- package/dist/public/assets/_CrzUyUH2.js +0 -1
- package/dist/public/assets/_Csdgg-p8.js +0 -1
- package/dist/public/assets/_Csdgg-p8.js.br +0 -0
- package/dist/public/assets/_CtWH28kh.js +0 -1
- package/dist/public/assets/_Cto7UR6x.js.br +0 -0
- package/dist/public/assets/_CtrIYddo.js.br +0 -0
- package/dist/public/assets/_CvDzPXmv.js +0 -1
- package/dist/public/assets/_Cvh-VNIk.js.br +0 -0
- package/dist/public/assets/_Cx8F-gsJ.js.br +0 -0
- package/dist/public/assets/_CxbcobyM.js +0 -1
- package/dist/public/assets/_Cy7hJYIs.js +0 -1
- package/dist/public/assets/_CzvJRV9T.js.br +0 -0
- package/dist/public/assets/_D-902IrK.js +0 -1
- package/dist/public/assets/_D-902IrK.js.br +0 -0
- package/dist/public/assets/_D1Bmsn3j.js +0 -1
- package/dist/public/assets/_D4Ta82Ad.js.br +0 -0
- package/dist/public/assets/_D8EMVgMd.js +0 -1
- package/dist/public/assets/_DBpSHwsH.js.br +0 -0
- package/dist/public/assets/_DDwytJDF.js +0 -1
- package/dist/public/assets/_DDwytJDF.js.br +0 -0
- package/dist/public/assets/_DE_Y-0-h.js.br +0 -0
- package/dist/public/assets/_DHw-LiNs.js +0 -1
- package/dist/public/assets/_DILlGU4L.js.br +0 -0
- package/dist/public/assets/_DJa--qOX.js.br +0 -0
- package/dist/public/assets/_DKmUkNb1.js +0 -1
- package/dist/public/assets/_DKuBKDhM.js +0 -1
- package/dist/public/assets/_DLOPvUZY.js.br +0 -0
- package/dist/public/assets/_DMBjdP4M.js +0 -1
- package/dist/public/assets/_DMgMXzil.js +0 -1
- package/dist/public/assets/_DMuuYm9C.js.br +0 -0
- package/dist/public/assets/_DNZFctlv.js.br +0 -0
- package/dist/public/assets/_DPq7Yp4u.js +0 -1
- package/dist/public/assets/_DRTW5fd9.js.br +0 -0
- package/dist/public/assets/_DRx0cYWy.js +0 -1
- package/dist/public/assets/_DSqeeGaZ.js +0 -1
- package/dist/public/assets/_DTRYzVXy.js.br +0 -0
- package/dist/public/assets/_DTebU1L2.js +0 -1
- package/dist/public/assets/_DWO9qYdD.js +0 -1
- package/dist/public/assets/_DWnXmngO.js +0 -1
- package/dist/public/assets/_DX2UfSkV.js.br +0 -0
- package/dist/public/assets/_DXhRdKW7.js.br +0 -0
- package/dist/public/assets/_D_JNOhlM.js +0 -1
- package/dist/public/assets/_Dc1Lc51O.js +0 -1
- package/dist/public/assets/_Dc1Lc51O.js.br +0 -0
- package/dist/public/assets/_DccrUV-t.js.br +0 -0
- package/dist/public/assets/_DfMtdFhk.js +0 -1
- package/dist/public/assets/_DlOIFmP5.js.br +0 -0
- package/dist/public/assets/_DlpWFr6R.js.br +0 -0
- package/dist/public/assets/_DmzK_VpH.js +0 -1
- package/dist/public/assets/_Dn-53uYD.js +0 -1
- package/dist/public/assets/_Dprfg2XO.js +0 -1
- package/dist/public/assets/_DqSs-qWW.js +0 -1
- package/dist/public/assets/_Dt47AQIi.js +0 -1
- package/dist/public/assets/_DtVh1tC2.js +0 -1
- package/dist/public/assets/_DuBYI8Df.js +0 -1
- package/dist/public/assets/_DuQRbl1J.js.br +0 -0
- package/dist/public/assets/_DxwuLWwv.js.br +0 -0
- package/dist/public/assets/_Dy4AHyMD.js +0 -1
- package/dist/public/assets/_DzCAv2Gl.js.br +0 -0
- package/dist/public/assets/_Hd-PFNkS.js.br +0 -0
- package/dist/public/assets/_IJOifsPN.js.br +0 -0
- package/dist/public/assets/_IYKAiNbQ.js.br +0 -0
- package/dist/public/assets/_ImG6Q5u4.js.br +0 -0
- package/dist/public/assets/_K_yqvP79.js +0 -1
- package/dist/public/assets/_K_yqvP79.js.br +0 -0
- package/dist/public/assets/_LSddbYPg.js.br +0 -0
- package/dist/public/assets/_Mrawm4gM.js.br +0 -0
- package/dist/public/assets/_N6UM3iEC.js +0 -1
- package/dist/public/assets/_OCdp7nNx.js +0 -1
- package/dist/public/assets/_OCdp7nNx.js.br +0 -0
- package/dist/public/assets/_P4Q76273.js +0 -1
- package/dist/public/assets/_Q3J62UbV.js.br +0 -0
- package/dist/public/assets/_V7boHS_a.js +0 -1
- package/dist/public/assets/_V7boHS_a.js.br +0 -0
- package/dist/public/assets/_VUoWEzVN.js +0 -1
- package/dist/public/assets/_XFhH3dP0.js.br +0 -0
- package/dist/public/assets/_aD-zCciQ.js +0 -1
- package/dist/public/assets/_d0O4aA0L.js.br +0 -0
- package/dist/public/assets/_dVPo9v4u.js +0 -1
- package/dist/public/assets/_egwsGA2z.js +0 -1
- package/dist/public/assets/_hIGDKE3G.js +0 -1
- package/dist/public/assets/_khh1x77_.js.br +0 -0
- package/dist/public/assets/_l5fDrx0F.js.br +0 -0
- package/dist/public/assets/_nIuAA97l.js.br +0 -0
- package/dist/public/assets/_udAEKVMs.js.br +0 -0
- package/dist/public/assets/_vXrbhKaS.js.br +0 -0
- package/dist/public/assets/app-shell-B0OO79vS.css +0 -1
- package/dist/public/assets/app-shell-B0OO79vS.css.br +0 -0
- package/dist/public/assets/files-view-8U0RvfCW.css +0 -1
- package/dist/public/assets/files-view-8U0RvfCW.css.br +0 -0
- package/dist/public/assets/files-view-Cen1Ehm2.js +0 -2
- package/dist/public/assets/group.css.ts-BXYS6DEA.css +0 -1
- package/dist/public/assets/group.css.ts-BXYS6DEA.css.br +0 -0
- package/dist/public/assets/icon-folder-BfrS749u.css +0 -1
- package/dist/public/assets/icon-folder-BfrS749u.css.br +0 -0
- package/dist/public/assets/icon-search-CQX_Oqgo.css.br +0 -0
- package/dist/public/assets/manage-workspace-CCJ4ta9y.js +0 -2
- package/dist/public/assets/manage-workspace-D_Q7iFJx.css +0 -1
- package/dist/public/assets/modal-view-BY2E8mw2.css.br +0 -0
- package/dist/public/assets/new-B_V1ilQW.js +0 -1
- package/dist/public/assets/new-workspace-DbYcKEc1.js +0 -2
- package/dist/public/assets/new-workspace-DxkmgnmD.css +0 -1
- package/dist/public/assets/new-workspace-DxkmgnmD.css.br +0 -0
- package/dist/public/assets/port-chip-9ONt0A-X.css +0 -1
- package/dist/public/assets/prompt-dialog-FlNGIEVH.css +0 -1
- package/dist/public/assets/prompt-dialog-FlNGIEVH.css.br +0 -0
- package/dist/public/assets/quick-open-DGZd2O_C.css +0 -1
- package/dist/public/assets/quick-open-DGZd2O_C.css.br +0 -0
- package/dist/public/assets/repo-picker-cm3fnbTq.css +0 -1
- package/dist/public/assets/repo-picker-cm3fnbTq.css.br +0 -3
- package/dist/public/assets/review-view-B2Nz9ybY.js +0 -2
- package/dist/public/assets/review-view-CcATNzWo.css +0 -1
- package/dist/public/assets/review-view-CcATNzWo.css.br +0 -0
- package/dist/public/assets/section-CzWFTcJC.css +0 -1
- package/dist/public/assets/section-CzWFTcJC.css.br +0 -0
- package/dist/public/assets/settings-B_V1ilQW.js +0 -1
- package/dist/public/assets/settings-page-CMLmEhnN.js +0 -2
- package/dist/public/assets/settings-page-DUX8B1oE.css +0 -1
- package/dist/public/assets/settings-page-DUX8B1oE.css.br +0 -0
- package/dist/public/assets/skill-row-DqAUuSBd.css +0 -1
- package/dist/public/assets/sso-auth-B6eZLZCG.css +0 -1
- package/dist/public/assets/sso-auth-B6eZLZCG.css.br +0 -0
- package/dist/public/assets/w-B_V1ilQW.js +0 -1
- package/dist/public/assets/w._-B0e-KW5y.js +0 -1
- package/dist/public/assets/w._-B_V1ilQW.js +0 -1
- package/dist/public/assets/w._-DQBTonBF.js +0 -1
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ re-run the installer).
|
|
|
32
32
|
|
|
33
33
|
## Develop
|
|
34
34
|
|
|
35
|
-
Requires Linux or macOS with `git`, `tmux`, `gh` (authenticated), and Node
|
|
35
|
+
Requires Linux or macOS with `git`, `tmux`, `gh` (authenticated), and Node 24+.
|
|
36
36
|
The bootstrap script installs everything via [mise](https://mise.jdx.dev),
|
|
37
37
|
offers the agent CLIs, and runs `pnpm install`:
|
|
38
38
|
|
|
@@ -94,8 +94,9 @@ the whole hostname to it.
|
|
|
94
94
|
`http://<host>:<port>`, which only works where the machine is reachable
|
|
95
95
|
directly. Through a tunnel, route a wildcard hostname to the app port as
|
|
96
96
|
well and work proxies it — HTTP and websockets, so HMR works — to
|
|
97
|
-
`localhost:<port>`.
|
|
98
|
-
|
|
97
|
+
`localhost:<port>`. `WORK_PORT_HOSTS` picks the hostname shape the chips
|
|
98
|
+
link to; `sub` is always accepted, `dash` only when picked, and only for a
|
|
99
|
+
name of three labels or more:
|
|
99
100
|
|
|
100
101
|
- `sub` (default): `https://3000.work.example.com`. Needs a wildcard
|
|
101
102
|
`*.work.example.com` route and a certificate that covers it (your own
|
|
@@ -133,7 +134,9 @@ commits, uncommitted or untracked
|
|
|
133
134
|
files, ignored files that are not build junk — and waits for a decision.
|
|
134
135
|
|
|
135
136
|
**Restore** (Settings → Backup, or `work restore <file> --yes`) installs
|
|
136
|
-
what the file names that the machine lacks
|
|
137
|
+
what the file names that the machine lacks — a tool outside work's catalog
|
|
138
|
+
or a new GitHub host only when ticked (or named with `--allow`), since it
|
|
139
|
+
installs and runs whatever the file says — and re-creates the workspaces
|
|
137
140
|
as rows; each one's repos then clone in the background, one workspace at
|
|
138
141
|
a time, on the branch the manifest recorded (from origin, or fresh from
|
|
139
142
|
the base when it was never pushed). Archived workspaces clone when they
|
package/bin/work.mjs
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
// work procs [id|name] a workspace's running processes and ports
|
|
13
13
|
// work review [id|name] pending review comments as markdown (--json for rows)
|
|
14
14
|
// work export [file] write a backup manifest (workspaces, settings, skills, tool pins)
|
|
15
|
-
// work restore <file> bring a manifest's workspaces and machine setup back (--yes to run
|
|
15
|
+
// work restore <file> bring a manifest's workspaces and machine setup back (--yes to run;
|
|
16
|
+
// --allow <spec|host>, repeated, for each tool outside work's catalog
|
|
17
|
+
// or new GitHub host it names — skipped otherwise)
|
|
16
18
|
// work share [id|name] print a workspace's invite (paste into New → Join / work join)
|
|
17
19
|
// work join [file] join a workspace from an invite (file, or stdin)
|
|
18
20
|
// work version print the installed version
|
|
@@ -25,7 +27,6 @@ import fs from "node:fs";
|
|
|
25
27
|
import os from "node:os";
|
|
26
28
|
import path from "node:path";
|
|
27
29
|
import { fileURLToPath } from "node:url";
|
|
28
|
-
import { createRequire } from "node:module";
|
|
29
30
|
import { doctor, formatDoctor, setupPath } from "../lib/setup/doctor.mjs";
|
|
30
31
|
import { installTool } from "../lib/setup/install.mjs";
|
|
31
32
|
import { dialHost, listenStream } from "../lib/setup/listen.mjs";
|
|
@@ -58,7 +59,7 @@ const yes = args.includes("--yes") || args.includes("-y");
|
|
|
58
59
|
const jsonOut = args.includes("--json");
|
|
59
60
|
/** `--name <value>` style flags take the next arg; keep it out of the
|
|
60
61
|
* positionals so `work join --name x` still reads stdin. */
|
|
61
|
-
const VALUED = new Set(["--name"]);
|
|
62
|
+
const VALUED = new Set(["--name", "--allow"]);
|
|
62
63
|
const positional = args.filter(
|
|
63
64
|
(a, i) => a === "-" || (!a.startsWith("-") && !VALUED.has(args[i - 1])),
|
|
64
65
|
);
|
|
@@ -69,6 +70,14 @@ const flagValue = (flag) => {
|
|
|
69
70
|
die(`${flag} needs a value`);
|
|
70
71
|
return args[i + 1];
|
|
71
72
|
};
|
|
73
|
+
/** Every value of a flag given more than once (`--allow a --allow b`). */
|
|
74
|
+
const flagValues = (flag) =>
|
|
75
|
+
args.flatMap((a, i) => {
|
|
76
|
+
if (a !== flag) return [];
|
|
77
|
+
if (i + 1 >= args.length || args[i + 1].startsWith("-"))
|
|
78
|
+
die(`${flag} needs a value`);
|
|
79
|
+
return [args[i + 1]];
|
|
80
|
+
});
|
|
72
81
|
|
|
73
82
|
switch (command) {
|
|
74
83
|
case "start":
|
|
@@ -473,7 +482,7 @@ async function exportCmd() {
|
|
|
473
482
|
}
|
|
474
483
|
|
|
475
484
|
function readManifest(file) {
|
|
476
|
-
if (!file) die("usage: work restore <file> [--yes]");
|
|
485
|
+
if (!file) die("usage: work restore <file> [--yes] [--allow <spec|host>]...");
|
|
477
486
|
let manifest;
|
|
478
487
|
try {
|
|
479
488
|
manifest = JSON.parse(fs.readFileSync(file, "utf8"));
|
|
@@ -483,35 +492,76 @@ function readManifest(file) {
|
|
|
483
492
|
return manifest;
|
|
484
493
|
}
|
|
485
494
|
|
|
495
|
+
/** A word as a shell reads it back: specs come from the file, so one
|
|
496
|
+
* printed in a command to copy is quoted, never pasted as shell. */
|
|
497
|
+
function shellWord(s) {
|
|
498
|
+
return /^[\w@%+=:,./-]+$/.test(s) ? s : `'${s.replaceAll("'", `'\\''`)}'`;
|
|
499
|
+
}
|
|
500
|
+
|
|
486
501
|
/** Preview, then (with --yes) restore everything the file names that this
|
|
487
|
-
* machine does not have. Workspaces already here are skipped.
|
|
502
|
+
* machine does not have. Workspaces already here are skipped. A tool
|
|
503
|
+
* outside work's catalog installs and runs whatever it names, and a new
|
|
504
|
+
* GitHub host is one work signs in to and clones from, so each is taken
|
|
505
|
+
* only when `--allow` names it exactly as listed. */
|
|
488
506
|
async function restoreCmd() {
|
|
489
507
|
const manifest = readManifest(positional[0]);
|
|
490
508
|
const preview = await apiPost("/api/backup/preview", manifest);
|
|
491
509
|
if (jsonOut && !yes) return console.log(JSON.stringify(preview, null, 2));
|
|
492
510
|
const pick = (list) => list.filter((x) => !x.installed);
|
|
493
511
|
const say = jsonOut ? () => {} : console.log;
|
|
512
|
+
const allow = new Set(flagValues("--allow"));
|
|
513
|
+
const extraTools = pick(preview.tools)
|
|
514
|
+
.filter((t) => !t.catalog)
|
|
515
|
+
.map((t) => t.spec);
|
|
516
|
+
const newHosts = preview.hosts.filter((h) => !h.known).map((h) => h.host);
|
|
517
|
+
for (const a of allow) {
|
|
518
|
+
if (!extraTools.includes(a) && !newHosts.includes(a))
|
|
519
|
+
warn(`--allow ${a} names nothing this file would add`);
|
|
520
|
+
}
|
|
494
521
|
say(`from ${preview.from.host} on ${preview.from.exportedAt.slice(0, 10)}`);
|
|
495
522
|
const workspaces = preview.workspaces.filter(
|
|
496
|
-
(w) => !w.exists && !w.unknownHost,
|
|
523
|
+
(w) => !w.exists && (!w.unknownHost || allow.has(w.unknownHost)),
|
|
497
524
|
);
|
|
498
525
|
for (const w of preview.workspaces) {
|
|
499
526
|
const note = w.exists
|
|
500
527
|
? "already here"
|
|
501
|
-
: w.unknownHost
|
|
528
|
+
: w.unknownHost && !allow.has(w.unknownHost)
|
|
502
529
|
? `unknown host ${w.unknownHost}`
|
|
503
530
|
: w.status;
|
|
504
531
|
say(` ${pad(w.name, 24)} ${pad(note, 14)} ${w.repos.join(", ")}`);
|
|
505
532
|
}
|
|
506
|
-
const tools = pick(preview.tools)
|
|
533
|
+
const tools = pick(preview.tools)
|
|
534
|
+
.filter((t) => t.catalog)
|
|
535
|
+
.map((t) => t.name);
|
|
507
536
|
const skills = pick(preview.skills).map((s) => s.id);
|
|
508
537
|
const agents = pick(preview.agents).map((a) => a.label);
|
|
509
|
-
const hosts = preview.hosts.filter((h) => !h.known).map((h) => h.host);
|
|
510
538
|
if (tools.length) say(` tools to install: ${tools.join(", ")}`);
|
|
511
539
|
if (skills.length) say(` skills to add: ${skills.join(", ")}`);
|
|
512
540
|
if (agents.length) say(` agents to install: ${agents.join(", ")}`);
|
|
513
|
-
if (hosts.length) say(` hosts to add: ${hosts.join(", ")}`);
|
|
514
541
|
if (preview.settings) say(` settings: ${preview.settings}`);
|
|
542
|
+
const extras = [
|
|
543
|
+
...extraTools.map((name) => ({ kind: "tool", name })),
|
|
544
|
+
...newHosts.map((name) => ({ kind: "host", name })),
|
|
545
|
+
];
|
|
546
|
+
if (extras.length) {
|
|
547
|
+
say(
|
|
548
|
+
" not in work's catalog — a tool installs and runs whatever it names,",
|
|
549
|
+
);
|
|
550
|
+
say(
|
|
551
|
+
" a host is one work signs in to and clones from; each only with --allow:",
|
|
552
|
+
);
|
|
553
|
+
for (const x of extras)
|
|
554
|
+
say(
|
|
555
|
+
` ${pad(x.kind, 5)} ${x.name}${allow.has(x.name) ? " (allowed)" : ""}`,
|
|
556
|
+
);
|
|
557
|
+
const missing = extras.filter((x) => !allow.has(x.name));
|
|
558
|
+
if (missing.length) {
|
|
559
|
+
say(" to take them too, if you trust this file:");
|
|
560
|
+
say(
|
|
561
|
+
` work restore ${shellWord(positional[0])} --yes ${missing.map((x) => `--allow ${shellWord(x.name)}`).join(" ")}`,
|
|
562
|
+
);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
515
565
|
if (!yes) {
|
|
516
566
|
say("");
|
|
517
567
|
log("re-run with --yes to restore");
|
|
@@ -522,6 +572,8 @@ async function restoreCmd() {
|
|
|
522
572
|
selection: {
|
|
523
573
|
workspaces: workspaces.map((w) => w.id),
|
|
524
574
|
tools: true,
|
|
575
|
+
extraTools: extraTools.filter((s) => allow.has(s)),
|
|
576
|
+
hosts: newHosts.filter((h) => allow.has(h)),
|
|
525
577
|
skills: true,
|
|
526
578
|
agents: true,
|
|
527
579
|
settings: true,
|
|
@@ -962,9 +1014,9 @@ function serviceEnv() {
|
|
|
962
1014
|
|
|
963
1015
|
/** True when `cmd` is a work *server* (not `work setup` / `work update`).
|
|
964
1016
|
* Must not match the tmux that hosts agent sessions: `tmux -L work
|
|
965
|
-
* start-server`
|
|
966
|
-
* `t`/`-` boundary in `start-server`,
|
|
967
|
-
* setup and never
|
|
1017
|
+
* start-server` hits `\bwork\s+start\b` because `\b` fires on the
|
|
1018
|
+
* `t`/`-` boundary in `start-server`, and `work update` would kill tmux
|
|
1019
|
+
* mid-setup and never reach `systemctl restart`. */
|
|
968
1020
|
function isWorkServerCmd(cmd) {
|
|
969
1021
|
if (/\btmux\b/.test(cmd)) return false;
|
|
970
1022
|
if (/\bwork(\.mjs)?\s+(setup|update|version)\b/.test(cmd)) return false;
|
|
@@ -1125,10 +1177,11 @@ function stopOldCopies(port) {
|
|
|
1125
1177
|
}
|
|
1126
1178
|
|
|
1127
1179
|
/** Wait for the service to answer before we tell anyone it is up. Both
|
|
1128
|
-
* service managers return as soon as the job is spawned, so
|
|
1129
|
-
*
|
|
1130
|
-
* an update that broke the app. Any HTTP reply
|
|
1131
|
-
* the status the route returns is not this
|
|
1180
|
+
* service managers return as soon as the job is spawned, so without this
|
|
1181
|
+
* `done — http://…` would print at a port that answers a second or two
|
|
1182
|
+
* later — which reads as an update that broke the app. Any HTTP reply
|
|
1183
|
+
* proves the server is serving; the status the route returns is not this
|
|
1184
|
+
* function's business. */
|
|
1132
1185
|
async function waitForServer(timeoutMs = 30_000) {
|
|
1133
1186
|
const deadline = Date.now() + timeoutMs;
|
|
1134
1187
|
for (;;) {
|