@dylanpiercey/work 0.0.223 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -27
- package/bin/work.mjs +51 -105
- package/dist/{_CpANOzpd.js → _Bq7to522.js} +344 -139
- package/dist/_CkwTsHKB.js +2 -0
- package/dist/index.mjs +2222 -2341
- package/dist/public/assets/_1RHVsAcK.js +1 -0
- package/dist/public/assets/_4CShjaLP.js +1 -0
- package/dist/public/assets/_68JtNDO1.js +1 -0
- package/dist/public/assets/{_DoCtdMd2.js → _8G2Mv7jG.js} +1 -1
- package/dist/public/assets/_8G2Mv7jG.js.br +0 -0
- package/dist/public/assets/{_BL9QMk_P.js → _8dvK2NDJ.js} +1 -1
- package/dist/public/assets/_8dvK2NDJ.js.br +0 -0
- package/dist/public/assets/_94L2SIJF.js +1 -0
- package/dist/public/assets/_9AnDb3YH.js +1 -0
- package/dist/public/assets/{_DlpTErRA.js → _9kX9D09B.js} +1 -1
- package/dist/public/assets/_9kX9D09B.js.br +0 -0
- package/dist/public/assets/_9lErVegn.js +1 -0
- package/dist/public/assets/{_DtOzdwHm.js → _B0oyGUU5.js} +1 -1
- package/dist/public/assets/_B0oyGUU5.js.br +0 -0
- package/dist/public/assets/_B1mPnLlp.js +1 -0
- package/dist/public/assets/_B4fi2SSA.js +1 -0
- package/dist/public/assets/{_BUH04L5e.js → _B582D2rg.js} +1 -1
- package/dist/public/assets/{_CT3clsOQ.js → _B7GwDeKK.js} +1 -1
- package/dist/public/assets/_B7Qx25UP.js +1 -0
- package/dist/public/assets/_B7b8EVjA.js +1 -0
- package/dist/public/assets/{_BVp6r0fg.js → _BBWaxDkO.js} +1 -1
- package/dist/public/assets/_BBWaxDkO.js.br +0 -0
- package/dist/public/assets/{_DeCJ44Me.js → _BDa-iwuj.js} +1 -1
- package/dist/public/assets/_BDa-iwuj.js.br +0 -0
- package/dist/public/assets/_BEKHKNmM.js +1 -0
- package/dist/public/assets/{_DJ3UAR_s.js → _BE_Jyvqd.js} +1 -1
- package/dist/public/assets/_BE_Jyvqd.js.br +0 -0
- package/dist/public/assets/_BFU-kJkk.js +1 -0
- package/dist/public/assets/_BIJ2O2oU.js +1 -0
- package/dist/public/assets/_BJ59XAZ9.js +1 -0
- package/dist/public/assets/{_BnOOD6nr.js → _BKqRYfOI.js} +4 -4
- package/dist/public/assets/_BKqRYfOI.js.br +0 -0
- package/dist/public/assets/_BKr9Dzz1.js +1 -0
- package/dist/public/assets/_BN7xvxS_.js +1 -0
- package/dist/public/assets/_BNQTVBlH.js +1 -0
- package/dist/public/assets/{_D8u1YU9b.js → _BNW5Jiec.js} +1 -1
- package/dist/public/assets/_BNW5Jiec.js.br +0 -0
- package/dist/public/assets/{_CZGS4T08.js → _BOGkzMx9.js} +1 -1
- package/dist/public/assets/_BOGkzMx9.js.br +0 -0
- package/dist/public/assets/_BUEpqQ_m.js +1 -0
- package/dist/public/assets/{_B_zyAtSJ.js → _BUvqweu0.js} +1 -1
- package/dist/public/assets/_BUvqweu0.js.br +0 -0
- package/dist/public/assets/{_BsupnkWM.js → _BZKB4fhr.js} +1 -1
- package/dist/public/assets/_BZKB4fhr.js.br +0 -0
- package/dist/public/assets/_BZo9BjDF.js +1 -0
- package/dist/public/assets/{_BeE9qDu0.js → _BbbOvNRH.js} +1 -1
- package/dist/public/assets/_BbbOvNRH.js.br +0 -0
- package/dist/public/assets/_BdUNnSlC.js +1 -0
- package/dist/public/assets/{_Cw_8WbwF.js → _Bf8WYPfh.js} +1 -1
- package/dist/public/assets/_Bf8WYPfh.js.br +0 -0
- package/dist/public/assets/{_pP1W6w5v.js → _Bhx319Hi.js} +1 -1
- package/dist/public/assets/_Bhx319Hi.js.br +0 -0
- package/dist/public/assets/{_O70J1Mfv.js → _Bm4SHrNp.js} +1 -1
- package/dist/public/assets/_Bm4SHrNp.js.br +0 -0
- package/dist/public/assets/{_--tE4Gxz.js → _Bmrqq8Ro.js} +2 -2
- package/dist/public/assets/_Bmrqq8Ro.js.br +0 -0
- package/dist/public/assets/_BnHZ6Npj.js +1 -0
- package/dist/public/assets/{_CLDmR3jR.js → _BoDxRJLS.js} +1 -1
- package/dist/public/assets/_BoDxRJLS.js.br +0 -0
- package/dist/public/assets/_Bo_Ru664.js +1 -0
- package/dist/public/assets/{_BCZpExov.js → _Bp8-V8yl.js} +1 -1
- package/dist/public/assets/_Bp8-V8yl.js.br +0 -0
- package/dist/public/assets/{_CGLpCj_I.js → _BpoeUr5j.js} +1 -1
- package/dist/public/assets/_BpoeUr5j.js.br +0 -0
- package/dist/public/assets/_Bq2G_Tid.js +1 -0
- package/dist/public/assets/_BsyoLB_D.js +1 -0
- package/dist/public/assets/{_BAHrOydH.js → _Bv3e3rg8.js} +1 -1
- package/dist/public/assets/_Bv3e3rg8.js.br +0 -0
- package/dist/public/assets/{_C6i9NP5A.js → _Bv3qNE1b.js} +1 -1
- package/dist/public/assets/{_BXT2bXMi.js → _BvXp6HpX.js} +1 -1
- package/dist/public/assets/_BvXp6HpX.js.br +0 -0
- package/dist/public/assets/{_CX1wufuh.js → _BwP07uVS.js} +1 -1
- package/dist/public/assets/_BwP07uVS.js.br +0 -0
- package/dist/public/assets/{_ifUb4WX7.js → _Bx1CW-sF.js} +1 -1
- package/dist/public/assets/_Bx1CW-sF.js.br +0 -0
- package/dist/public/assets/{_BPcswKMK.js → _BywcP-As.js} +1 -1
- package/dist/public/assets/_BywcP-As.js.br +0 -0
- package/dist/public/assets/{_Bp_WT09q.js → _Bzgtwt3G.js} +1 -1
- package/dist/public/assets/_Bzgtwt3G.js.br +0 -0
- package/dist/public/assets/{_IWMmnVCy.js → _C0_s45qg.js} +1 -1
- package/dist/public/assets/_C0_s45qg.js.br +0 -0
- package/dist/public/assets/_C0ePgF6b.js +1 -0
- package/dist/public/assets/{_Da2Dmt_d.js → _C0oVtTqO.js} +1 -1
- package/dist/public/assets/_C0oVtTqO.js.br +0 -0
- package/dist/public/assets/{_CtyJUmXC.js → _C654p96Z.js} +1 -1
- package/dist/public/assets/_C654p96Z.js.br +0 -0
- package/dist/public/assets/{_2mnAZf6B.js → _C8_1Y2-z.js} +1 -1
- package/dist/public/assets/_C8_1Y2-z.js.br +0 -0
- package/dist/public/assets/_C8v1AZFP.js +1 -0
- package/dist/public/assets/{_BO0OB-rz.js → _CAkPJLeF.js} +1 -1
- package/dist/public/assets/_CAkPJLeF.js.br +0 -0
- package/dist/public/assets/_CB0D5cRH.js +1 -0
- package/dist/public/assets/_CD05JUTh.js +1 -0
- package/dist/public/assets/{_CJ9j8N5Z.js → _CEJUcePr.js} +1 -1
- package/dist/public/assets/_CEJUcePr.js.br +0 -0
- package/dist/public/assets/{_DuarImb7.js → _CEXHZd73.js} +1 -1
- package/dist/public/assets/_CEXHZd73.js.br +0 -0
- package/dist/public/assets/_CHcUMVR7.js +1 -0
- package/dist/public/assets/{_BnyLUTdO.js → _CHuLFr1f.js} +1 -1
- package/dist/public/assets/_CHuLFr1f.js.br +0 -0
- package/dist/public/assets/{_DwcoW-IU.js → _CIb7xw_1.js} +1 -1
- package/dist/public/assets/_CIb7xw_1.js.br +0 -0
- package/dist/public/assets/{_B1RldJ0S.js → _CMSBfO6u.js} +1 -1
- package/dist/public/assets/_CMSBfO6u.js.br +0 -0
- package/dist/public/assets/_CN7GPyBo.js +1 -0
- package/dist/public/assets/{_DI0QHEXB.js → _COcePo2y.js} +1 -1
- package/dist/public/assets/_COcePo2y.js.br +0 -0
- package/dist/public/assets/{_eQK3EZCc.js → _CTINBWaG.js} +1 -1
- package/dist/public/assets/_CTINBWaG.js.br +0 -0
- package/dist/public/assets/_CTWrnAbz.js +1 -0
- package/dist/public/assets/{_CLerZOx-.js → _CUXajOKj.js} +1 -1
- package/dist/public/assets/_CUXajOKj.js.br +0 -0
- package/dist/public/assets/{_ChpYg41R.js → _CVru3vzC.js} +1 -1
- package/dist/public/assets/{_BA8HFnO3.js → _CYjE__ml.js} +1 -1
- package/dist/public/assets/_CYjE__ml.js.br +0 -0
- package/dist/public/assets/{_dr95P55a.js → _CZ_OWtIT.js} +1 -1
- package/dist/public/assets/_CZ_OWtIT.js.br +0 -0
- package/dist/public/assets/{_BLTfQLdY.js → _C_37_B6u.js} +1 -1
- package/dist/public/assets/_C_37_B6u.js.br +0 -0
- package/dist/public/assets/{_xdrkfok5.js → _C_CIQL7J.js} +1 -1
- package/dist/public/assets/_C_CIQL7J.js.br +0 -0
- package/dist/public/assets/_C_WdpYbK.js +1 -0
- package/dist/public/assets/_CaiH3VN9.js +1 -0
- package/dist/public/assets/{_CCCQMLw5.js → _CamWDaoG.js} +1 -1
- package/dist/public/assets/_CamWDaoG.js.br +0 -0
- package/dist/public/assets/_CdDElA0V.js +1 -0
- package/dist/public/assets/_CfnsClzZ.js +1 -0
- package/dist/public/assets/{_SwbsOoi9.js → _Cgo1fRhJ.js} +1 -1
- package/dist/public/assets/_Cgo1fRhJ.js.br +0 -0
- package/dist/public/assets/_CjhGrlf3.js +1 -0
- package/dist/public/assets/_CjlbL4C_.js +1 -0
- package/dist/public/assets/_CjogTUXK.js +1 -0
- package/dist/public/assets/{_mnBdD4YN.js → _ClldMY37.js} +1 -1
- package/dist/public/assets/_ClldMY37.js.br +0 -0
- package/dist/public/assets/_CmFq6Gtp.js +1 -0
- package/dist/public/assets/_CoAPOKiP.js +1 -0
- package/dist/public/assets/_CoUUgh9P.js +1 -0
- package/dist/public/assets/{_s5Jez2mu.js → _CpjSCB1I.js} +1 -1
- package/dist/public/assets/_CpjSCB1I.js.br +0 -0
- package/dist/public/assets/{_DeN4EY8L.js → _Ct3RF80L.js} +1 -1
- package/dist/public/assets/_Ct3RF80L.js.br +0 -0
- package/dist/public/assets/_CtYy5eZs.js +1 -0
- package/dist/public/assets/{_BS4crAAm.js → _CxAPL49a.js} +1 -1
- package/dist/public/assets/_CxAPL49a.js.br +0 -0
- package/dist/public/assets/{_CwmzEsB4.js → _CyBCIknf.js} +1 -1
- package/dist/public/assets/_CyBCIknf.js.br +0 -0
- package/dist/public/assets/{_unfL8mz1.js → _Cz5BPBG8.js} +1 -1
- package/dist/public/assets/_Cz5BPBG8.js.br +0 -0
- package/dist/public/assets/_D-eEFXaI.js +1 -0
- package/dist/public/assets/{_gPFPzzPF.js → _D0aoEFRx.js} +1 -1
- package/dist/public/assets/_D0aoEFRx.js.br +0 -0
- package/dist/public/assets/{_CnKYioYw.js → _D1uRW1qz.js} +1 -1
- package/dist/public/assets/_D1uRW1qz.js.br +0 -0
- package/dist/public/assets/_D2oIr2T2.js +1 -0
- package/dist/public/assets/{_BBpX-M4b.js → _D2un443j.js} +1 -1
- package/dist/public/assets/_D2un443j.js.br +0 -0
- package/dist/public/assets/_D3MPx4-f.js +1 -0
- package/dist/public/assets/{_DzrtBP-L.js → _D4dJ2qEE.js} +1 -1
- package/dist/public/assets/{_Fzbz4zvE.js → _D4q8XSMI.js} +1 -1
- package/dist/public/assets/_D4q8XSMI.js.br +0 -0
- package/dist/public/assets/{_BxAl0m64.js → _D4quFMVQ.js} +1 -1
- package/dist/public/assets/_D4quFMVQ.js.br +0 -0
- package/dist/public/assets/{_pvS44-AC.js → _D4rOX-Fa.js} +1 -1
- package/dist/public/assets/_D4rOX-Fa.js.br +0 -0
- package/dist/public/assets/_D5edrSyA.js +1 -0
- package/dist/public/assets/{_DuXOUegE.js → _D6kktUFn.js} +1 -1
- package/dist/public/assets/_D6kktUFn.js.br +0 -0
- package/dist/public/assets/_D80-qtVY.js +1 -0
- package/dist/public/assets/_D9-3EVA4.js +1 -0
- package/dist/public/assets/{_CE5MhJWL.js → _D9sS4J_w.js} +1 -1
- package/dist/public/assets/_D9sS4J_w.js.br +0 -0
- package/dist/public/assets/_DBLpxTDi.js +1 -0
- package/dist/public/assets/{_CYNAhnRH.js → _DByHQ7nW.js} +6 -6
- package/dist/public/assets/_DByHQ7nW.js.br +0 -0
- package/dist/public/assets/{_D-hK5uFn.js → _DC-78WeM.js} +1 -1
- package/dist/public/assets/_DC-78WeM.js.br +0 -0
- package/dist/public/assets/{_DmDSLxrw.js → _DDl8KSWJ.js} +1 -1
- package/dist/public/assets/_DDl8KSWJ.js.br +0 -0
- package/dist/public/assets/{_C-6dImS5.js → _DFWOMF-B.js} +1 -1
- package/dist/public/assets/_DFWOMF-B.js.br +0 -0
- package/dist/public/assets/_DKb-rt9n.js +1 -0
- package/dist/public/assets/_DMnSJCF_.js +1 -0
- package/dist/public/assets/_DOOIlrPh.js +1 -0
- package/dist/public/assets/_DPW-0yKP.js +1 -0
- package/dist/public/assets/_DR3BmvWU.js +1 -0
- package/dist/public/assets/{_C9OdJcx4.js → _DSVLaMWS.js} +1 -1
- package/dist/public/assets/_DSVLaMWS.js.br +0 -0
- package/dist/public/assets/_DYNGNKLk.js +1 -0
- package/dist/public/assets/_DZnEgCbj.js +1 -0
- package/dist/public/assets/{_zKlxcAnQ.js → _DaMVRI8f.js} +1 -1
- package/dist/public/assets/_DaMVRI8f.js.br +0 -0
- package/dist/public/assets/{_DGTQBWy0.js → _DbvaGqOl.js} +1 -1
- package/dist/public/assets/_DbvaGqOl.js.br +0 -0
- package/dist/public/assets/{_DiqV5bDH.js → _DcMIlvz-.js} +1 -1
- package/dist/public/assets/_DcMIlvz-.js.br +0 -0
- package/dist/public/assets/{__Oa255vo.js → _Dd6X3e7w.js} +1 -1
- package/dist/public/assets/_Dd6X3e7w.js.br +0 -0
- package/dist/public/assets/{_BdvO5Lqa.js → _De7P3jUH.js} +1 -1
- package/dist/public/assets/_De7P3jUH.js.br +0 -0
- package/dist/public/assets/_DeiFEAar.js +1 -0
- package/dist/public/assets/{_vKQopDwG.js → _DfI982PI.js} +1 -1
- package/dist/public/assets/_DfI982PI.js.br +0 -0
- package/dist/public/assets/_DfZ6emcw.js +1 -0
- package/dist/public/assets/{_DxVt7Zuk.js → _Dj1lZ1pa.js} +4 -4
- package/dist/public/assets/_Dj1lZ1pa.js.br +0 -0
- package/dist/public/assets/{_DhEdzMUw.js → _DkCaEf_h.js} +1 -1
- package/dist/public/assets/_DkCaEf_h.js.br +0 -0
- package/dist/public/assets/_DonAis0J.js +1 -0
- package/dist/public/assets/{_BRG_DBcC.js → _Dp3IZdH8.js} +1 -1
- package/dist/public/assets/_Dp3IZdH8.js.br +0 -0
- package/dist/public/assets/{_unwtcXFQ.js → _DqYih4xk.js} +1 -1
- package/dist/public/assets/_DqYih4xk.js.br +0 -0
- package/dist/public/assets/{_BLRpf6Uw.js → _DqhphdU4.js} +1 -1
- package/dist/public/assets/_DqhphdU4.js.br +0 -0
- package/dist/public/assets/{_C87NBm9i.js → _DrIgZJzN.js} +1 -1
- package/dist/public/assets/_DrIgZJzN.js.br +0 -0
- package/dist/public/assets/_Dt4hHR05.js +1 -0
- package/dist/public/assets/_DtTbTraA.js +1 -0
- package/dist/public/assets/_DwMxAJKP.js +1 -0
- package/dist/public/assets/{_CttJbiei.js → _DxEm-Gwj.js} +1 -1
- package/dist/public/assets/_DxEm-Gwj.js.br +0 -0
- package/dist/public/assets/{_CdgAsi3s.js → _Dytf99zx.js} +1 -1
- package/dist/public/assets/_Dytf99zx.js.br +0 -0
- package/dist/public/assets/_EAgv5jR9.js +1 -0
- package/dist/public/assets/{_C9qO_dny.js → _Iecpd0kS.js} +1 -1
- package/dist/public/assets/_Iecpd0kS.js.br +0 -0
- package/dist/public/assets/{_DuGmU4h0.js → _MCwIJAuJ.js} +1 -1
- package/dist/public/assets/_MCwIJAuJ.js.br +0 -0
- package/dist/public/assets/{_BJRSndB4.js → _NM79Lu3L.js} +1 -1
- package/dist/public/assets/_NM79Lu3L.js.br +0 -0
- package/dist/public/assets/_QpNKKuS9.js +1 -0
- package/dist/public/assets/{_BbiACo0Y.js → _SGDxiwE1.js} +1 -1
- package/dist/public/assets/_SGDxiwE1.js.br +0 -0
- package/dist/public/assets/_TA8pE7z9.js +1 -0
- package/dist/public/assets/_bE4sNDeU.js +1 -0
- package/dist/public/assets/{_pUYwxsdF.js → _bcsuBP7T.js} +1 -1
- package/dist/public/assets/_bcsuBP7T.js.br +0 -0
- package/dist/public/assets/_cdcAU4yY.js +1 -0
- package/dist/public/assets/{_DhNuRs-V.js → _ch_yXAap.js} +1 -1
- package/dist/public/assets/_ch_yXAap.js.br +0 -0
- package/dist/public/assets/{_DaqT6m41.js → _d5u7EI97.js} +1 -1
- package/dist/public/assets/_d5u7EI97.js.br +0 -0
- package/dist/public/assets/{_C2ZpyiHV.js → _eoa1EOU-.js} +1 -1
- package/dist/public/assets/_eoa1EOU-.js.br +0 -0
- package/dist/public/assets/{_C1PmcEws.js → _j2tDSMvo.js} +1 -1
- package/dist/public/assets/_j2tDSMvo.js.br +0 -0
- package/dist/public/assets/_jNhIFgbc.js +1 -0
- package/dist/public/assets/_kDYiTaag.js +1 -0
- package/dist/public/assets/_lNMVVbUx.js +1 -0
- package/dist/public/assets/_nwJ7Hu3S.js +1 -0
- package/dist/public/assets/{_qJTL2ooe.js → _tmDtUACa.js} +1 -1
- package/dist/public/assets/_tmDtUACa.js.br +0 -0
- package/dist/public/assets/{_BewXp5Y_.js → _wXDh-Z2N.js} +1 -1
- package/dist/public/assets/_wXDh-Z2N.js.br +0 -0
- package/dist/public/assets/{_CB31bp-W.js → _wcshV0sZ.js} +1 -1
- package/dist/public/assets/_wcshV0sZ.js.br +0 -0
- package/dist/public/assets/_x-NwqgCn.js +1 -0
- package/dist/public/assets/{_BsimXDnm.js → _xyw_DS5P.js} +1 -1
- package/dist/public/assets/_xyw_DS5P.js.br +0 -0
- package/dist/public/assets/{_Aq9oGnRu.js → _zSAfqXcm.js} +1 -1
- package/dist/public/assets/_zSAfqXcm.js.br +0 -0
- package/dist/public/assets/{app-shell-CpPCwWPW.css → app-shell-ChQoVC5b.css} +1 -1
- package/dist/public/assets/app-shell-ChQoVC5b.css.br +0 -0
- package/dist/public/assets/files-view-CLtLp_BW.js +2 -0
- package/dist/public/assets/{files-view-DtI7JE-f.css → files-view-CNHQapdI.css} +1 -1
- package/dist/public/assets/files-view-CNHQapdI.css.br +0 -0
- package/dist/public/assets/group.css.ts-BG82htKb.css +1 -0
- package/dist/public/assets/group.css.ts-BG82htKb.css.br +0 -0
- package/dist/public/assets/icon-folder-DJOHuEpD.css +1 -0
- package/dist/public/assets/icon-folder-DJOHuEpD.css.br +0 -0
- package/dist/public/assets/{icon-search-DAtjHWFL.css → icon-search-DsJuFXUJ.css} +1 -1
- package/dist/public/assets/icon-search-DsJuFXUJ.css.br +0 -0
- package/dist/public/assets/manage-workspace-NBcFDyrB.js +2 -0
- package/dist/public/assets/manage-workspace-f_Np32TD.css +1 -0
- package/dist/public/assets/{modal-view-D0qnmuJE.css → modal-view-KVNBpNYi.css} +1 -1
- package/dist/public/assets/modal-view-KVNBpNYi.css.br +0 -0
- package/dist/public/assets/new-DHI77GvL.js +1 -0
- package/dist/public/assets/new-workspace-BFE-HpD_.css +1 -0
- package/dist/public/assets/new-workspace-BFE-HpD_.css.br +0 -0
- package/dist/public/assets/new-workspace-BRzimdd5.js +2 -0
- package/dist/public/assets/port-chip-CUUIDOVM.css +1 -0
- package/dist/public/assets/port-chip-CUUIDOVM.css.br +0 -0
- package/dist/public/assets/prompt-dialog-BGs6RXOV.css +1 -0
- package/dist/public/assets/prompt-dialog-BGs6RXOV.css.br +0 -0
- package/dist/public/assets/{quick-open-DVqzk3-g.css → quick-open-Gx4so1bl.css} +1 -1
- package/dist/public/assets/quick-open-Gx4so1bl.css.br +0 -0
- package/dist/public/assets/repo-picker-CUhd0vJN.css +1 -0
- package/dist/public/assets/repo-picker-CUhd0vJN.css.br +4 -0
- package/dist/public/assets/review-view-DFEK9VBa.js +2 -0
- package/dist/public/assets/{review-view-DqMrB4Ny.css → review-view-deUY3OE5.css} +1 -1
- package/dist/public/assets/review-view-deUY3OE5.css.br +0 -0
- package/dist/public/assets/section-CziSOSBR.css +1 -0
- package/dist/public/assets/section-CziSOSBR.css.br +0 -0
- package/dist/public/assets/settings-DHI77GvL.js +1 -0
- package/dist/public/assets/settings-page-OOtPOzIn.js +2 -0
- package/dist/public/assets/settings-page-wZhd7FLi.css +1 -0
- package/dist/public/assets/settings-page-wZhd7FLi.css.br +0 -0
- package/dist/public/assets/skill-row-BoCyFIXg.css +1 -0
- package/dist/public/assets/sso-auth-DV76tTpE.css +1 -0
- package/dist/public/assets/sso-auth-DV76tTpE.css.br +0 -0
- package/dist/public/assets/w-DHI77GvL.js +1 -0
- package/dist/public/assets/w._-DHI77GvL.js +1 -0
- package/dist/public/assets/w._-DsTgq3-C.js +1 -0
- package/dist/public/assets/w._-igEOSPR-.js +1 -0
- package/lib/review/markdown.mjs +5 -5
- package/lib/setup/bridge.d.mts +10 -0
- package/lib/setup/bridge.mjs +84 -0
- package/lib/setup/doctor.d.mts +5 -0
- package/lib/setup/doctor.mjs +45 -1
- package/lib/setup/install.d.mts +1 -0
- package/lib/setup/install.mjs +21 -1
- package/lib/setup/listen.mjs +2 -2
- package/lib/share/manifest.mjs +2 -1
- package/package.json +2 -3
- package/dist/_LF2Fo5WE.js +0 -2
- package/dist/public/assets/_--tE4Gxz.js.br +0 -0
- package/dist/public/assets/_1OL9vXM-.js +0 -1
- package/dist/public/assets/_2mnAZf6B.js.br +0 -0
- package/dist/public/assets/_5f9fMvWJ.js +0 -1
- package/dist/public/assets/_5y69OR6M.js +0 -1
- package/dist/public/assets/_Aq9oGnRu.js.br +0 -0
- package/dist/public/assets/_B0uJCjmk.js +0 -1
- package/dist/public/assets/_B1RldJ0S.js.br +0 -0
- package/dist/public/assets/_B5TpOQCZ.js +0 -1
- package/dist/public/assets/_B6UdulKa.js +0 -1
- package/dist/public/assets/_BA8HFnO3.js.br +0 -0
- package/dist/public/assets/_BAHrOydH.js.br +0 -0
- package/dist/public/assets/_BBpX-M4b.js.br +0 -0
- package/dist/public/assets/_BCZpExov.js.br +0 -0
- package/dist/public/assets/_BFZHNauV.js +0 -1
- package/dist/public/assets/_BJRSndB4.js.br +0 -0
- package/dist/public/assets/_BL9QMk_P.js.br +0 -0
- package/dist/public/assets/_BLNEzyb5.js +0 -1
- package/dist/public/assets/_BLRpf6Uw.js.br +0 -0
- package/dist/public/assets/_BLTfQLdY.js.br +0 -0
- package/dist/public/assets/_BO0OB-rz.js.br +0 -0
- package/dist/public/assets/_BPcswKMK.js.br +0 -0
- package/dist/public/assets/_BPhXWliU.js +0 -1
- package/dist/public/assets/_BQXTv9Cr.js +0 -1
- package/dist/public/assets/_BRG_DBcC.js.br +0 -0
- package/dist/public/assets/_BS4crAAm.js.br +0 -0
- package/dist/public/assets/_BVp6r0fg.js.br +0 -0
- package/dist/public/assets/_BXT2bXMi.js.br +0 -0
- package/dist/public/assets/_B_zyAtSJ.js.br +0 -0
- package/dist/public/assets/_BaXKdIeb.js +0 -1
- package/dist/public/assets/_BbiACo0Y.js.br +0 -0
- package/dist/public/assets/_BdvO5Lqa.js.br +0 -0
- package/dist/public/assets/_BeE9qDu0.js.br +0 -0
- package/dist/public/assets/_BewXp5Y_.js.br +0 -0
- package/dist/public/assets/_BfOOLKo5.js +0 -1
- package/dist/public/assets/_BhS8bTnr.js +0 -1
- package/dist/public/assets/_BhZ3ZoG0.js +0 -1
- package/dist/public/assets/_Bi3_ZsOQ.js +0 -1
- package/dist/public/assets/_Bj_Lfa8B.js +0 -1
- package/dist/public/assets/_BlN_x04q.js +0 -1
- package/dist/public/assets/_Bn5nsnie.js +0 -1
- package/dist/public/assets/_BnOOD6nr.js.br +0 -0
- package/dist/public/assets/_BnyLUTdO.js.br +0 -0
- package/dist/public/assets/_Bp_WT09q.js.br +0 -0
- package/dist/public/assets/_BsimXDnm.js.br +0 -0
- package/dist/public/assets/_BsupnkWM.js.br +0 -0
- package/dist/public/assets/_BxAl0m64.js.br +0 -0
- package/dist/public/assets/_C-6dImS5.js.br +0 -0
- package/dist/public/assets/_C18Torhh.js +0 -1
- package/dist/public/assets/_C1PmcEws.js.br +0 -0
- package/dist/public/assets/_C2ZpyiHV.js.br +0 -0
- package/dist/public/assets/_C3P1VHUI.js +0 -1
- package/dist/public/assets/_C6xwTKke.js +0 -1
- package/dist/public/assets/_C6yqlRfl.js +0 -1
- package/dist/public/assets/_C75D8bH2.js +0 -1
- package/dist/public/assets/_C87NBm9i.js.br +0 -0
- package/dist/public/assets/_C8Vc_vBH.js +0 -1
- package/dist/public/assets/_C9OdJcx4.js.br +0 -0
- package/dist/public/assets/_C9eoo0sE.js +0 -1
- package/dist/public/assets/_C9qO_dny.js.br +0 -0
- package/dist/public/assets/_CB31bp-W.js.br +0 -0
- package/dist/public/assets/_CCCQMLw5.js.br +0 -0
- package/dist/public/assets/_CCie36pi.js +0 -1
- package/dist/public/assets/_CDD9N34p.js +0 -1
- package/dist/public/assets/_CE5MhJWL.js.br +0 -0
- package/dist/public/assets/_CGLpCj_I.js.br +0 -0
- package/dist/public/assets/_CJ9j8N5Z.js.br +0 -0
- package/dist/public/assets/_CLDmR3jR.js.br +0 -0
- package/dist/public/assets/_CLerZOx-.js.br +0 -0
- package/dist/public/assets/_CM5GtJb2.js +0 -1
- package/dist/public/assets/_COECwOVb.js +0 -1
- package/dist/public/assets/_CSQE9nMN.js +0 -1
- package/dist/public/assets/_CSXMgHLQ.js +0 -1
- package/dist/public/assets/_CVRiByCT.js +0 -1
- package/dist/public/assets/_CVSrm4Pl.js +0 -1
- package/dist/public/assets/_CX1wufuh.js.br +0 -0
- package/dist/public/assets/_CYNAhnRH.js.br +0 -0
- package/dist/public/assets/_CZGS4T08.js.br +0 -0
- package/dist/public/assets/_C_L7l9Mg.js +0 -1
- package/dist/public/assets/_CaMrYy1W.js +0 -1
- package/dist/public/assets/_CdgAsi3s.js.br +0 -0
- package/dist/public/assets/_Ce-E7sJE.js +0 -1
- package/dist/public/assets/_Cg3S760D.js +0 -1
- package/dist/public/assets/_CicyY7KP.js +0 -1
- package/dist/public/assets/_Ck0YOw_7.js +0 -1
- package/dist/public/assets/_CmHlTZSs.js +0 -1
- package/dist/public/assets/_CnECYh66.js +0 -1
- package/dist/public/assets/_CnKYioYw.js.br +0 -0
- package/dist/public/assets/_CnUVvVPd.js +0 -1
- package/dist/public/assets/_CqSgGCGC.js +0 -1
- package/dist/public/assets/_CttJbiei.js.br +0 -0
- package/dist/public/assets/_CtyJUmXC.js.br +0 -0
- package/dist/public/assets/_Cw_8WbwF.js.br +0 -0
- package/dist/public/assets/_CwmzEsB4.js.br +0 -0
- package/dist/public/assets/_CzETFsJs.js +0 -1
- package/dist/public/assets/_D-S9H-tX.js +0 -1
- package/dist/public/assets/_D-hK5uFn.js.br +0 -0
- package/dist/public/assets/_D5fTwHXK.js +0 -1
- package/dist/public/assets/_D8u1YU9b.js.br +0 -0
- package/dist/public/assets/_DAH8evhA.js +0 -1
- package/dist/public/assets/_DAemmoHI.js +0 -1
- package/dist/public/assets/_DEMYxWZf.js +0 -1
- package/dist/public/assets/_DGTQBWy0.js.br +0 -0
- package/dist/public/assets/_DHhv0pCA.js +0 -1
- package/dist/public/assets/_DI0QHEXB.js.br +0 -0
- package/dist/public/assets/_DJ3UAR_s.js.br +0 -0
- package/dist/public/assets/_DKu6UxI7.js +0 -1
- package/dist/public/assets/_DNC-9RBN.js +0 -1
- package/dist/public/assets/_DP-Bu7ET.js +0 -1
- package/dist/public/assets/_DYmmPBcq.js +0 -1
- package/dist/public/assets/_Da2Dmt_d.js.br +0 -0
- package/dist/public/assets/_DaqT6m41.js.br +0 -0
- package/dist/public/assets/_DbVyutEZ.js +0 -1
- package/dist/public/assets/_DcBvO2Si.js +0 -1
- package/dist/public/assets/_DeCJ44Me.js.br +0 -0
- package/dist/public/assets/_DeN4EY8L.js.br +0 -0
- package/dist/public/assets/_DhEdzMUw.js.br +0 -0
- package/dist/public/assets/_DhNuRs-V.js.br +0 -0
- package/dist/public/assets/_DiqV5bDH.js.br +0 -0
- package/dist/public/assets/_Diqt_yCf.js +0 -1
- package/dist/public/assets/_DlpTErRA.js.br +0 -0
- package/dist/public/assets/_DmDSLxrw.js.br +0 -0
- package/dist/public/assets/_DoC0qbSD.js +0 -1
- package/dist/public/assets/_DoCtdMd2.js.br +0 -0
- package/dist/public/assets/_DpqWFkMg.js +0 -1
- package/dist/public/assets/_Dr0Bkgso.js +0 -1
- package/dist/public/assets/_Dt-n9FaQ.js +0 -1
- package/dist/public/assets/_DtOzdwHm.js.br +0 -0
- package/dist/public/assets/_DuGmU4h0.js.br +0 -0
- package/dist/public/assets/_DuXOUegE.js.br +0 -0
- package/dist/public/assets/_DuaocJd1.js +0 -1
- package/dist/public/assets/_DuarImb7.js.br +0 -0
- package/dist/public/assets/_DwcoW-IU.js.br +0 -0
- package/dist/public/assets/_DxVt7Zuk.js.br +0 -0
- package/dist/public/assets/_Fzbz4zvE.js.br +0 -0
- package/dist/public/assets/_I5oX-lGP.js +0 -1
- package/dist/public/assets/_IWMmnVCy.js.br +0 -0
- package/dist/public/assets/_O70J1Mfv.js.br +0 -0
- package/dist/public/assets/_SwbsOoi9.js.br +0 -0
- package/dist/public/assets/_Yy39CykK.js +0 -1
- package/dist/public/assets/__Oa255vo.js.br +0 -0
- package/dist/public/assets/_bPze7k1x.js +0 -1
- package/dist/public/assets/_bU1KcT1I.js +0 -1
- package/dist/public/assets/_dr95P55a.js.br +0 -0
- package/dist/public/assets/_eQK3EZCc.js.br +0 -0
- package/dist/public/assets/_gPFPzzPF.js.br +0 -0
- package/dist/public/assets/_hzpOPZUB.js +0 -1
- package/dist/public/assets/_ifUb4WX7.js.br +0 -0
- package/dist/public/assets/_kQ7LiSim.js +0 -1
- package/dist/public/assets/_lOAW1VLM.js +0 -1
- package/dist/public/assets/_mnBdD4YN.js.br +0 -0
- package/dist/public/assets/_odBcV1kc.js +0 -1
- package/dist/public/assets/_pP1W6w5v.js.br +0 -0
- package/dist/public/assets/_pUYwxsdF.js.br +0 -0
- package/dist/public/assets/_pvS44-AC.js.br +0 -0
- package/dist/public/assets/_qJTL2ooe.js.br +0 -0
- package/dist/public/assets/_s5Jez2mu.js.br +0 -0
- package/dist/public/assets/_unfL8mz1.js.br +0 -0
- package/dist/public/assets/_unwtcXFQ.js.br +0 -0
- package/dist/public/assets/_vKQopDwG.js.br +0 -0
- package/dist/public/assets/_w1aegGdT.js +0 -1
- package/dist/public/assets/_xdrkfok5.js.br +0 -0
- package/dist/public/assets/_y-lm36fI.js +0 -1
- package/dist/public/assets/_zKlxcAnQ.js.br +0 -0
- package/dist/public/assets/app-shell-CpPCwWPW.css.br +0 -0
- package/dist/public/assets/files-view-BfCdcfXX.js +0 -2
- package/dist/public/assets/files-view-DtI7JE-f.css.br +0 -0
- package/dist/public/assets/group.css.ts-SeaNz7WZ.css +0 -1
- package/dist/public/assets/group.css.ts-SeaNz7WZ.css.br +0 -0
- package/dist/public/assets/icon-folder-DHVc-REl.css +0 -1
- package/dist/public/assets/icon-folder-DHVc-REl.css.br +0 -0
- package/dist/public/assets/icon-search-DAtjHWFL.css.br +0 -0
- package/dist/public/assets/manage-workspace-6i6Zeai7.css +0 -1
- package/dist/public/assets/manage-workspace-CixeMkdt.js +0 -2
- package/dist/public/assets/modal-view-D0qnmuJE.css.br +0 -0
- package/dist/public/assets/new-DxhaKmbF.js +0 -1
- package/dist/public/assets/new-workspace-BXjDRbqF.css +0 -1
- package/dist/public/assets/new-workspace-BXjDRbqF.css.br +0 -0
- package/dist/public/assets/new-workspace-DG693v2S.js +0 -2
- package/dist/public/assets/port-chip-Lz3mVJWb.css +0 -1
- package/dist/public/assets/port-chip-Lz3mVJWb.css.br +0 -0
- package/dist/public/assets/prompt-dialog-vhnae1-x.css +0 -1
- package/dist/public/assets/prompt-dialog-vhnae1-x.css.br +0 -0
- package/dist/public/assets/quick-open-DVqzk3-g.css.br +0 -0
- package/dist/public/assets/repo-picker-K5RYsEge.css +0 -1
- package/dist/public/assets/repo-picker-K5RYsEge.css.br +0 -0
- package/dist/public/assets/review-view-DqMrB4Ny.css.br +0 -0
- package/dist/public/assets/review-view-TdLbCgEg.js +0 -2
- package/dist/public/assets/section-2MyJSq5D.css +0 -1
- package/dist/public/assets/section-2MyJSq5D.css.br +0 -0
- package/dist/public/assets/settings-DxhaKmbF.js +0 -1
- package/dist/public/assets/settings-page-BBAG94Vh.js +0 -2
- package/dist/public/assets/settings-page-DUefc32x.css +0 -1
- package/dist/public/assets/settings-page-DUefc32x.css.br +0 -0
- package/dist/public/assets/skill-row-BeOk8NK8.css +0 -1
- package/dist/public/assets/sso-auth-CU3fGJ4U.css +0 -1
- package/dist/public/assets/sso-auth-CU3fGJ4U.css.br +0 -0
- package/dist/public/assets/w-DxhaKmbF.js +0 -1
- package/dist/public/assets/w._-C6JVdFgi.js +0 -1
- package/dist/public/assets/w._-DxhaKmbF.js +0 -1
- package/dist/public/assets/w._-rfvcDGPk.js +0 -1
- package/scripts/migrate.mjs +0 -682
package/README.md
CHANGED
|
@@ -44,12 +44,6 @@ offers the agent CLIs, and runs `pnpm install`:
|
|
|
44
44
|
|
|
45
45
|
```sh
|
|
46
46
|
pnpm dev # http://localhost:7171
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
For a production build plus a background service (systemd on Linux, launchd on macOS):
|
|
50
|
-
|
|
51
|
-
```sh
|
|
52
|
-
./scripts/setup-prod.sh # build + install + start the service
|
|
53
47
|
|
|
54
48
|
# While hacking on work itself, point the background service at a checkout
|
|
55
49
|
# (and back at the npm install when done):
|
|
@@ -58,8 +52,6 @@ work-source local # this tree (or: work-source local /path/to/work)
|
|
|
58
52
|
work-source rebuild # rebuild + restart without rewriting the unit
|
|
59
53
|
work-source prod # global @dylanpiercey/work again
|
|
60
54
|
work-source # status
|
|
61
|
-
./scripts/run-prod.sh # or: build with --no-service and run manually
|
|
62
|
-
./scripts/update.sh # later: pull latest, rebuild, restart
|
|
63
55
|
```
|
|
64
56
|
|
|
65
57
|
### Access
|
|
@@ -85,10 +77,8 @@ Access, `tailscale serve` — and tell work about it:
|
|
|
85
77
|
Set them when installing (`WORK_ALLOWED_HOSTS=… WORK_TRUSTED_PROXIES=…
|
|
86
78
|
WORK_LISTEN=0.0.0.0 work setup`); `work setup` keeps them in the service
|
|
87
79
|
from then on. A refused request gets a page saying which setting it needs.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
API, and the `/term` websockets) serves from the single app port, so route
|
|
91
|
-
the whole hostname to it.
|
|
80
|
+
Everything (pages, API, and the `/term` websockets) serves from the single
|
|
81
|
+
app port, so route the whole hostname to it.
|
|
92
82
|
|
|
93
83
|
**Opening workspace ports remotely.** The port chips in the sidebar link to
|
|
94
84
|
`http://<host>:<port>`, which only works where the machine is reachable
|
|
@@ -114,11 +104,6 @@ auth as the app. API writes and the terminal websockets refuse a foreign
|
|
|
114
104
|
`Origin`, so a page a workspace serves cannot drive work with the shared
|
|
115
105
|
login cookie.
|
|
116
106
|
|
|
117
|
-
> **Upgrading from the two-port layout:** older setups routed `/term/*` to a
|
|
118
|
-
> separate terminal port (7172). That port no longer exists — remove the
|
|
119
|
-
> `/term` rule from your tunnel/proxy config and send all traffic to the app
|
|
120
|
-
> port, or terminals will fail to connect.
|
|
121
|
-
|
|
122
107
|
## Backup, restore, join
|
|
123
108
|
|
|
124
109
|
A `work` machine holds almost nothing that lives only there: branches are
|
|
@@ -163,16 +148,6 @@ targeting that branch.
|
|
|
163
148
|
| `WORK_USER` / `WORK_HOST` | current user/host | Branch-name prefix parts |
|
|
164
149
|
| `WORK_BRANCH_PREFIX` | `<user>-<host>` | Whole branch-name prefix, overriding the parts |
|
|
165
150
|
|
|
166
|
-
Ports and paths can be exported before `scripts/setup-prod.sh` to bake them into
|
|
167
|
-
the service. For settings that should outlive an update, put them in an untracked
|
|
168
|
-
`.env.local` at the repo root instead — `scripts/run-prod.sh` reads it on every
|
|
169
|
-
start (the dev server does not), only `WORK_*` names apply, and the
|
|
170
|
-
surrounding environment still takes precedence:
|
|
171
|
-
|
|
172
|
-
```sh
|
|
173
|
-
WORK_BRANCH_PREFIX=rturnq
|
|
174
|
-
```
|
|
175
|
-
|
|
176
151
|
The usage panel (and `work usage`) reads plan/quota windows straight from each
|
|
177
152
|
agent CLI's own credentials on disk — Claude, Codex, Cursor, Grok, and Copilot
|
|
178
153
|
(via `gh`'s token). Providers you are not signed into simply say so.
|
package/bin/work.mjs
CHANGED
|
@@ -28,7 +28,8 @@ import os from "node:os";
|
|
|
28
28
|
import path from "node:path";
|
|
29
29
|
import { fileURLToPath } from "node:url";
|
|
30
30
|
import { doctor, formatDoctor, setupPath } from "../lib/setup/doctor.mjs";
|
|
31
|
-
import { installTool } from "../lib/setup/install.mjs";
|
|
31
|
+
import { installTool, repairGhHelpers } from "../lib/setup/install.mjs";
|
|
32
|
+
import { bridgeCommands, bridgeIfNeeded } from "../lib/setup/bridge.mjs";
|
|
32
33
|
import { dialHost, listenStream } from "../lib/setup/listen.mjs";
|
|
33
34
|
import { commentMarkdown } from "../lib/review/markdown.mjs";
|
|
34
35
|
import { formatInvite, parseInvite } from "../lib/share/manifest.mjs";
|
|
@@ -87,9 +88,12 @@ switch (command) {
|
|
|
87
88
|
await setup();
|
|
88
89
|
break;
|
|
89
90
|
case "install-service":
|
|
90
|
-
// Service installation only — no doctor/fix
|
|
91
|
-
// scripts/
|
|
92
|
-
// definition; WORK_SERVICE_EXEC points it at
|
|
91
|
+
// Service installation only — no doctor/fix. Used by
|
|
92
|
+
// scripts/work-source.sh so a checkout and the npm package share one
|
|
93
|
+
// definition; WORK_SERVICE_EXEC points it at the checkout's
|
|
94
|
+
// run-local.sh. The database is brought to the baseline first all the
|
|
95
|
+
// same: a server this checkout builds cannot open one from before it.
|
|
96
|
+
await bridge();
|
|
93
97
|
if (!installService()) {
|
|
94
98
|
process.exitCode = 1;
|
|
95
99
|
} else if (await waitForServer()) {
|
|
@@ -101,12 +105,6 @@ switch (command) {
|
|
|
101
105
|
process.exitCode = 1;
|
|
102
106
|
}
|
|
103
107
|
break;
|
|
104
|
-
case "migrate":
|
|
105
|
-
// The one-shot cleanups alone, against the service's settings (and the
|
|
106
|
-
// checkout's .env.local when WORK_SERVICE_EXEC names one). Used by
|
|
107
|
-
// scripts/update.sh ahead of setup-prod.sh.
|
|
108
|
-
process.exitCode = migrate();
|
|
109
|
-
break;
|
|
110
108
|
case "doctor":
|
|
111
109
|
await doctorCmd();
|
|
112
110
|
break;
|
|
@@ -151,7 +149,7 @@ switch (command) {
|
|
|
151
149
|
break;
|
|
152
150
|
default:
|
|
153
151
|
console.log(
|
|
154
|
-
`work ${pkg.version}\n\nusage: work <setup|install-service|
|
|
152
|
+
`work ${pkg.version}\n\nusage: work <setup|install-service|doctor|start|update|usage|workspaces|workspace|repos|procs|review|export|restore|share|join|version> [--json]`,
|
|
155
153
|
);
|
|
156
154
|
}
|
|
157
155
|
|
|
@@ -639,10 +637,9 @@ function until(iso) {
|
|
|
639
637
|
}
|
|
640
638
|
|
|
641
639
|
async function setup() {
|
|
640
|
+
await bridge();
|
|
642
641
|
await fix(await doctor());
|
|
643
642
|
|
|
644
|
-
migrate();
|
|
645
|
-
|
|
646
643
|
const running = installService();
|
|
647
644
|
const port = serviceEnv().PORT;
|
|
648
645
|
maybeTunnel(port);
|
|
@@ -669,19 +666,24 @@ async function setup() {
|
|
|
669
666
|
}
|
|
670
667
|
}
|
|
671
668
|
|
|
672
|
-
/**
|
|
673
|
-
*
|
|
674
|
-
*
|
|
675
|
-
*
|
|
676
|
-
*
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
669
|
+
/** Bring a database from before 0.1 to the baseline this release starts
|
|
670
|
+
* from (lib/setup/bridge.mjs), before anything touches the service: the
|
|
671
|
+
* server it would restart refuses such a database. Run with the settings
|
|
672
|
+
* the service uses (a checkout's .env.local under them, as its run script
|
|
673
|
+
* has it), so it finds the data dir the server opens rather than whatever
|
|
674
|
+
* this shell has. On failure the service is left as it was, and what to
|
|
675
|
+
* run by hand ends the output. */
|
|
676
|
+
async function bridge() {
|
|
677
|
+
const env = { ...checkoutEnvLocal(), ...process.env, ...serviceEnv() };
|
|
678
|
+
const dataDir =
|
|
679
|
+
env.WORK_DATA_DIR ||
|
|
680
|
+
path.join(
|
|
681
|
+
env.XDG_DATA_HOME || path.join(os.homedir(), ".local", "share"),
|
|
682
|
+
"work",
|
|
683
|
+
);
|
|
684
|
+
if (bridgeIfNeeded(dataDir, env, log)) return;
|
|
685
|
+
die(
|
|
686
|
+
`${path.join(dataDir, "work.db")} is still from before 0.1, so the service was left as it was. Run:\n ${bridgeCommands(dataDir).join("\n ")}`,
|
|
685
687
|
);
|
|
686
688
|
}
|
|
687
689
|
|
|
@@ -789,6 +791,13 @@ async function fix(d) {
|
|
|
789
791
|
"GitHub is not signed in. Open the app and use Settings → GitHub → Sign in",
|
|
790
792
|
);
|
|
791
793
|
}
|
|
794
|
+
if (d.staleGhHelpers.length) {
|
|
795
|
+
try {
|
|
796
|
+
repairGhHelpers(d.staleGhHelpers, { log });
|
|
797
|
+
} catch (err) {
|
|
798
|
+
warn(`could not repair git's gh credential helper: ${err.message}`);
|
|
799
|
+
}
|
|
800
|
+
}
|
|
792
801
|
// Agent CLIs are installed from the app (Settings → Agents), where each
|
|
793
802
|
// one is a click and the picker updates immediately — no prompt here.
|
|
794
803
|
if (!d.agents.some((a) => a.installed)) {
|
|
@@ -833,25 +842,6 @@ function serviceFile() {
|
|
|
833
842
|
);
|
|
834
843
|
}
|
|
835
844
|
|
|
836
|
-
/** Whether an installed service with no WORK_LISTEN line was installed
|
|
837
|
-
* before the this-machine-only default. On Linux its shape tells: under the
|
|
838
|
-
* default, work.socket binds an address (`127.0.0.1:7171`), where an older
|
|
839
|
-
* service had no socket or bound a bare port. A launchd agent has no such
|
|
840
|
-
* tell. */
|
|
841
|
-
function predatesListenDefault() {
|
|
842
|
-
if (!fs.existsSync(serviceFile())) return false;
|
|
843
|
-
if (process.platform === "darwin") return true;
|
|
844
|
-
try {
|
|
845
|
-
const socket = fs.readFileSync(
|
|
846
|
-
path.join(path.dirname(serviceFile()), "work.socket"),
|
|
847
|
-
"utf8",
|
|
848
|
-
);
|
|
849
|
-
return /^ListenStream=\d+\s*$/m.test(socket);
|
|
850
|
-
} catch {
|
|
851
|
-
return true;
|
|
852
|
-
}
|
|
853
|
-
}
|
|
854
|
-
|
|
855
845
|
/** One Environment= line systemd reads back as exactly this value. A value
|
|
856
846
|
* holding whitespace, a quote, `\` or `%` is quoted, with `\` and `"`
|
|
857
847
|
* escaped and `%` doubled, since systemd expands specifiers there: bare, a
|
|
@@ -901,8 +891,8 @@ function installedServiceEnv() {
|
|
|
901
891
|
}
|
|
902
892
|
return installed;
|
|
903
893
|
}
|
|
904
|
-
// unitEnvLine's quoted form, or
|
|
905
|
-
// which
|
|
894
|
+
// unitEnvLine's quoted form, or the bare `KEY=value` it writes for a
|
|
895
|
+
// plain value, which is not escaped either.
|
|
906
896
|
const re =
|
|
907
897
|
/^Environment=(?:"([A-Za-z_][A-Za-z0-9_]*)=((?:[^"\\]|\\.)*)"|([A-Za-z_][A-Za-z0-9_]*)=(.*))$/gm;
|
|
908
898
|
for (const [, qKey, qValue, key, value] of text.matchAll(re)) {
|
|
@@ -916,9 +906,9 @@ function installedServiceEnv() {
|
|
|
916
906
|
}
|
|
917
907
|
|
|
918
908
|
/** WORK_* from the .env.local of the checkout WORK_SERVICE_EXEC runs, read
|
|
919
|
-
* as scripts/
|
|
920
|
-
* whatever the service sets. Never written into the service, which
|
|
921
|
-
* shadow later edits of the file. */
|
|
909
|
+
* as scripts/run-local.sh reads it: that script exports them at start,
|
|
910
|
+
* under whatever the service sets. Never written into the service, which
|
|
911
|
+
* would shadow later edits of the file. */
|
|
922
912
|
function checkoutEnvLocal() {
|
|
923
913
|
const exec = process.env.WORK_SERVICE_EXEC;
|
|
924
914
|
const out = {};
|
|
@@ -972,18 +962,8 @@ function serviceEnv() {
|
|
|
972
962
|
const value = key in process.env ? process.env[key] : installed[key];
|
|
973
963
|
if (value) env[key] = value;
|
|
974
964
|
}
|
|
975
|
-
//
|
|
976
|
-
|
|
977
|
-
// Those listened on every interface, and other machines (a phone, the
|
|
978
|
-
// proxy in front of it) may be reaching it that way: keep it listening,
|
|
979
|
-
// so they get work's page naming the setting to add (server/access.ts)
|
|
980
|
-
// rather than a connection that is simply refused.
|
|
981
|
-
if (!env.WORK_LISTEN) {
|
|
982
|
-
env.WORK_LISTEN =
|
|
983
|
-
!("WORK_LISTEN" in process.env) && predatesListenDefault()
|
|
984
|
-
? "0.0.0.0"
|
|
985
|
-
: "127.0.0.1";
|
|
986
|
-
}
|
|
965
|
+
// This machine only unless set, and the service says so.
|
|
966
|
+
env.WORK_LISTEN ||= "127.0.0.1";
|
|
987
967
|
// entry.ts prefers PORT, so carrying WORK_APP_PORT forward without this
|
|
988
968
|
// would leave the service on the default port anyway. A checkout's run
|
|
989
969
|
// script serves the port its .env.local names, so the socket binds that
|
|
@@ -1022,9 +1002,7 @@ function isWorkServerCmd(cmd) {
|
|
|
1022
1002
|
if (/\bwork(\.mjs)?\s+(setup|update|version)\b/.test(cmd)) return false;
|
|
1023
1003
|
if (
|
|
1024
1004
|
/\bwork\.mjs\s+start(?:\s|$)/.test(cmd) ||
|
|
1025
|
-
/(?:^|[\s/])work\s+start(?:\s|$)/.test(cmd)
|
|
1026
|
-
/--why=work server is running/.test(cmd) ||
|
|
1027
|
-
/--why="work server is running"/.test(cmd)
|
|
1005
|
+
/(?:^|[\s/])work\s+start(?:\s|$)/.test(cmd)
|
|
1028
1006
|
)
|
|
1029
1007
|
return true;
|
|
1030
1008
|
// A built server or run script, by the absolute path an interpreter was
|
|
@@ -1035,9 +1013,7 @@ function isWorkServerCmd(cmd) {
|
|
|
1035
1013
|
const argv = cmd.split(/\s+/);
|
|
1036
1014
|
return argv.some((arg, i) => {
|
|
1037
1015
|
if (
|
|
1038
|
-
!/^\/.*\/(?:(?:dist|\.run)\/index\.mjs|scripts\/run-
|
|
1039
|
-
arg,
|
|
1040
|
-
)
|
|
1016
|
+
!/^\/.*\/(?:(?:dist|\.run)\/index\.mjs|scripts\/run-local\.sh)$/.test(arg)
|
|
1041
1017
|
)
|
|
1042
1018
|
return false;
|
|
1043
1019
|
const runner = argv
|
|
@@ -1129,10 +1105,9 @@ function killPids(pids, signal) {
|
|
|
1129
1105
|
}
|
|
1130
1106
|
}
|
|
1131
1107
|
|
|
1132
|
-
/** Stop the managed service *and* any
|
|
1133
|
-
*
|
|
1134
|
-
*
|
|
1135
|
-
* sitting in front of the new one. */
|
|
1108
|
+
/** Stop the managed service *and* any other work server still bound to
|
|
1109
|
+
* the port — a `work start` left in a terminal, a checkout's — which would
|
|
1110
|
+
* otherwise sit in front of the new one. */
|
|
1136
1111
|
function stopOldCopies(port) {
|
|
1137
1112
|
log("stopping any previous work server");
|
|
1138
1113
|
if (process.platform === "darwin") {
|
|
@@ -1140,28 +1115,6 @@ function stopOldCopies(port) {
|
|
|
1140
1115
|
spawnSync("launchctl", ["bootout", `gui/${uid}/dev.work.app`], {
|
|
1141
1116
|
stdio: "ignore",
|
|
1142
1117
|
});
|
|
1143
|
-
const agents = path.join(os.homedir(), "Library/LaunchAgents");
|
|
1144
|
-
try {
|
|
1145
|
-
for (const name of fs.readdirSync(agents)) {
|
|
1146
|
-
if (!name.endsWith(".plist")) continue;
|
|
1147
|
-
const file = path.join(agents, name);
|
|
1148
|
-
const text = fs.readFileSync(file, "utf8");
|
|
1149
|
-
if (
|
|
1150
|
-
!/dev\.work\.app|work\.mjs|run-prod\.sh|run-local\.sh|@dylanpiercey\/work/.test(
|
|
1151
|
-
text,
|
|
1152
|
-
)
|
|
1153
|
-
)
|
|
1154
|
-
continue;
|
|
1155
|
-
const label = text.match(
|
|
1156
|
-
/<key>Label<\/key>\s*<string>([^<]+)<\/string>/,
|
|
1157
|
-
)?.[1];
|
|
1158
|
-
if (label) {
|
|
1159
|
-
spawnSync("launchctl", ["bootout", `gui/${uid}/${label}`], {
|
|
1160
|
-
stdio: "ignore",
|
|
1161
|
-
});
|
|
1162
|
-
}
|
|
1163
|
-
}
|
|
1164
|
-
} catch {}
|
|
1165
1118
|
} else if (have("systemctl")) {
|
|
1166
1119
|
spawnSync("systemctl", ["--user", "stop", "work.service"], {
|
|
1167
1120
|
stdio: "ignore",
|
|
@@ -1201,8 +1154,8 @@ function installService() {
|
|
|
1201
1154
|
const port = serviceEnv().PORT;
|
|
1202
1155
|
stopOldCopies(port);
|
|
1203
1156
|
const cliPath = fileURLToPath(import.meta.url);
|
|
1204
|
-
// One service definition serves
|
|
1205
|
-
//
|
|
1157
|
+
// One service definition serves the npm package and a checkout:
|
|
1158
|
+
// scripts/work-source.sh points the unit at the checkout's run-local.sh
|
|
1206
1159
|
// instead of the CLI — that script carries its own sleep inhibitor and
|
|
1207
1160
|
// PORT handling, so no awake prefix is layered on top.
|
|
1208
1161
|
const execOverride = process.env.WORK_SERVICE_EXEC;
|
|
@@ -1250,15 +1203,8 @@ ${envXml}
|
|
|
1250
1203
|
stdio: "ignore",
|
|
1251
1204
|
}).status === 0;
|
|
1252
1205
|
if (!started) {
|
|
1253
|
-
//
|
|
1254
|
-
//
|
|
1255
|
-
started =
|
|
1256
|
-
spawnSync("launchctl", ["load", "-w", plist], { stdio: "ignore" })
|
|
1257
|
-
.status === 0;
|
|
1258
|
-
}
|
|
1259
|
-
if (!started) {
|
|
1260
|
-
// Both refused because the job is loaded already (a bootout that did
|
|
1261
|
-
// not take). Nothing spawned it with the new definition, and it is old
|
|
1206
|
+
// Refused because the job is loaded already (a bootout that did not
|
|
1207
|
+
// take). Nothing spawned it with the new definition, and it is old
|
|
1262
1208
|
// enough not to be throttled, so restart it.
|
|
1263
1209
|
started =
|
|
1264
1210
|
spawnSync("launchctl", ["kickstart", "-k", label], { stdio: "ignore" })
|