@dylanpiercey/work 0.2.67 → 0.2.69
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/dist/_BkRvQO5r.js +2 -0
- package/dist/_C29NgtBI.js +2 -0
- package/dist/{_gKzyEKiq.js → _CilTmd3l.js} +290 -16
- package/dist/{_CtDE8Leo.js → _DDCmzS5h.js} +113 -113
- package/dist/{_BIK4Q8Ap.js → _Da7kjbAP.js} +1 -1
- package/dist/index.mjs +884 -868
- package/dist/public/assets/_-EmIcUKk.js +1 -0
- package/dist/public/assets/_-Zp0T_lO.js +1 -0
- package/dist/public/assets/{_B70kYzED.js → _0H09AGax.js} +1 -1
- package/dist/public/assets/_0H09AGax.js.br +0 -0
- package/dist/public/assets/{_C-M_kClx.js → _3jDFL-Cg.js} +1 -1
- package/dist/public/assets/_3jDFL-Cg.js.br +0 -0
- package/dist/public/assets/_42tHqFp1.js +1 -0
- package/dist/public/assets/_43jDY_uH.js +1 -0
- package/dist/public/assets/{_DgEX6kkV.js → _5pKDjgHs.js} +1 -1
- package/dist/public/assets/_5pKDjgHs.js.br +0 -0
- package/dist/public/assets/_73JN1my-.js +1 -0
- package/dist/public/assets/_7X0H8kL8.js +1 -0
- package/dist/public/assets/{_DEdUC-99.js → _9PIiwVmz.js} +1 -1
- package/dist/public/assets/_9PIiwVmz.js.br +0 -0
- package/dist/public/assets/_Ag37ZLrV.js +1 -0
- package/dist/public/assets/{_Dr000eW7.js → _B-cgAjqV.js} +1 -1
- package/dist/public/assets/_B-cgAjqV.js.br +0 -0
- package/dist/public/assets/_B0YQ-oFW.js +1 -0
- package/dist/public/assets/{_WlELMoKQ.js → _B0tb8Vgp.js} +1 -1
- package/dist/public/assets/_B0tb8Vgp.js.br +0 -0
- package/dist/public/assets/_B1fJukJK.js +1 -0
- package/dist/public/assets/{_Qauup-ns.js → _B1rg6S37.js} +1 -1
- package/dist/public/assets/_B1rg6S37.js.br +0 -0
- package/dist/public/assets/{_B0uBThg8.js → _B40fHLkj.js} +1 -1
- package/dist/public/assets/_B40fHLkj.js.br +0 -0
- package/dist/public/assets/_B4a1Ga-C.js +1 -0
- package/dist/public/assets/{_hDmRiKUw.js → _B5QrsHwd.js} +1 -1
- package/dist/public/assets/_B5QrsHwd.js.br +0 -0
- package/dist/public/assets/_B6Gi_-aO.js +1 -0
- package/dist/public/assets/{_TlisgNCJ.js → _B6Zw_zoM.js} +1 -1
- package/dist/public/assets/_B6Zw_zoM.js.br +0 -0
- package/dist/public/assets/_B7FUbkdd.js +1 -0
- package/dist/public/assets/{_Ct2onnrq.js → _B9OVFXEI.js} +1 -1
- package/dist/public/assets/_B9OVFXEI.js.br +0 -0
- package/dist/public/assets/_BAxxcUnT.js +1 -0
- package/dist/public/assets/_BBVcNRD6.js +1 -0
- package/dist/public/assets/_BCO2lKSr.js +1 -0
- package/dist/public/assets/{_Cxf_IUf4.js → _BF2_gMS8.js} +1 -1
- package/dist/public/assets/_BF2_gMS8.js.br +0 -0
- package/dist/public/assets/{_bq3cGUln.js → _BH9u6x7L.js} +1 -1
- package/dist/public/assets/_BH9u6x7L.js.br +0 -0
- package/dist/public/assets/_BHyPBbeA.js +1 -0
- package/dist/public/assets/{_QORYcpTd.js → _BICdCzpd.js} +1 -1
- package/dist/public/assets/_BICdCzpd.js.br +0 -0
- package/dist/public/assets/{_BsZOFgem.js → _BJcqxD6V.js} +1 -1
- package/dist/public/assets/_BJcqxD6V.js.br +0 -0
- package/dist/public/assets/_BKsJcK3w.js +1 -0
- package/dist/public/assets/{_DxSjwdlY.js → _BMXY56L9.js} +1 -1
- package/dist/public/assets/_BMXY56L9.js.br +0 -0
- package/dist/public/assets/{_jHMZ7_SS.js → _BORTVznS.js} +2 -2
- package/dist/public/assets/_BORTVznS.js.br +0 -0
- package/dist/public/assets/_BOr_i2db.js +1 -0
- package/dist/public/assets/_BSCc1FVi.js +1 -0
- package/dist/public/assets/_BSEhhZ07.js +1 -0
- package/dist/public/assets/{_BP3daLRF.js → _BSyW2RLw.js} +1 -1
- package/dist/public/assets/_BSyW2RLw.js.br +0 -0
- package/dist/public/assets/{_Cvmxsqbk.js → _BUPTpTYH.js} +1 -1
- package/dist/public/assets/_BUPTpTYH.js.br +0 -0
- package/dist/public/assets/_BUqHNT5-.js +1 -0
- package/dist/public/assets/{_CH4p6ja3.js → _BWwfOfMX.js} +1 -1
- package/dist/public/assets/_BWwfOfMX.js.br +0 -0
- package/dist/public/assets/_BZXQzilG.js +1 -0
- package/dist/public/assets/{_DqtM_bbr.js → _BZhRz8TB.js} +1 -1
- package/dist/public/assets/_BZhRz8TB.js.br +0 -0
- package/dist/public/assets/_B_1_7y_i.js +1 -0
- package/dist/public/assets/{_CI503IRR.js → _B_zlRrUP.js} +1 -1
- package/dist/public/assets/_B_zlRrUP.js.br +0 -0
- package/dist/public/assets/{_BmKHBiNs.js → _BciKbAaO.js} +1 -1
- package/dist/public/assets/_BciKbAaO.js.br +0 -0
- package/dist/public/assets/_BdNI84NG.js +1 -0
- package/dist/public/assets/{_BNZgCt2D.js → _Bdq41ArX.js} +1 -1
- package/dist/public/assets/_Bdq41ArX.js.br +0 -0
- package/dist/public/assets/_BfT9QWYM.js +1 -0
- package/dist/public/assets/_BflxkINP.js +1 -0
- package/dist/public/assets/{_D7-IKBVN.js → _BiIQdsrx.js} +1 -1
- package/dist/public/assets/{_lVS7e3_v.js → _BiIrl8ml.js} +1 -1
- package/dist/public/assets/_BiIrl8ml.js.br +0 -0
- package/dist/public/assets/_Bmgmfh64.js +1 -0
- package/dist/public/assets/{_UcX6VY7d.js → _BnDvb8rh.js} +1 -1
- package/dist/public/assets/_BnDvb8rh.js.br +0 -0
- package/dist/public/assets/{_X_3OGONn.js → _BoRNFqwj.js} +1 -1
- package/dist/public/assets/_BstVSsFN.js +1 -0
- package/dist/public/assets/_Bu1DxZly.js +1 -0
- package/dist/public/assets/_By3jAAQI.js +1 -0
- package/dist/public/assets/_By3jAAQI.js.br +0 -0
- package/dist/public/assets/{_BGMYJ1-b.js → _ByZbJftZ.js} +1 -1
- package/dist/public/assets/_ByZbJftZ.js.br +0 -0
- package/dist/public/assets/_BzU0dRn3.js +1 -0
- package/dist/public/assets/_C-IpRzUC.js +1 -0
- package/dist/public/assets/{_BO-NDKjv.js → _C0W4EC0Z.js} +1 -1
- package/dist/public/assets/_C0W4EC0Z.js.br +0 -0
- package/dist/public/assets/{_BRXPkWkz.js → _C1EEKbbh.js} +1 -1
- package/dist/public/assets/_C1EEKbbh.js.br +0 -0
- package/dist/public/assets/_C1I4axdk.js +1 -0
- package/dist/public/assets/{_9VzenYwR.js → _C23aBO0p.js} +1 -1
- package/dist/public/assets/_C23aBO0p.js.br +0 -0
- package/dist/public/assets/{_Dwsl_wKj.js → _C3La6EyV.js} +1 -1
- package/dist/public/assets/_C3La6EyV.js.br +0 -0
- package/dist/public/assets/{_DrChcZDh.js → _C3k75NG8.js} +1 -1
- package/dist/public/assets/_C3k75NG8.js.br +0 -0
- package/dist/public/assets/{_D5szhG6N.js → _C4Hln-a1.js} +1 -1
- package/dist/public/assets/_C4Hln-a1.js.br +0 -0
- package/dist/public/assets/_C7nRA4nl.js +1 -0
- package/dist/public/assets/{_Dwv8BEGB.js → _CAN3Gwlo.js} +1 -1
- package/dist/public/assets/_CAN3Gwlo.js.br +0 -0
- package/dist/public/assets/_CB6bJYj7.js +1 -0
- package/dist/public/assets/{_DlrFmXHy.js → _CDG0zRut.js} +1 -1
- package/dist/public/assets/_CDG0zRut.js.br +0 -0
- package/dist/public/assets/{_CebKs3BC.js → _CDPOV9zA.js} +1 -1
- package/dist/public/assets/_CDPOV9zA.js.br +0 -0
- package/dist/public/assets/{_CUcuo0OF.js → _CEzgbnFo.js} +1 -1
- package/dist/public/assets/_CEzgbnFo.js.br +0 -0
- package/dist/public/assets/_CH7j19or.js +1 -0
- package/dist/public/assets/_CH7j19or.js.br +0 -0
- package/dist/public/assets/{_BgOKQo-U.js → _CKNilRtP.js} +1 -1
- package/dist/public/assets/_CKNilRtP.js.br +0 -0
- package/dist/public/assets/{_CEms_Z-6.js → _CKvOm2QG.js} +1 -1
- package/dist/public/assets/_CKvOm2QG.js.br +0 -0
- package/dist/public/assets/{_BIZETXBI.js → _CLpJpkGL.js} +1 -1
- package/dist/public/assets/_CLpJpkGL.js.br +0 -0
- package/dist/public/assets/_CN4xiFtS.js +1 -0
- package/dist/public/assets/{_C33Ig972.js → _CRAhvbwb.js} +1 -1
- package/dist/public/assets/_CRAhvbwb.js.br +0 -0
- package/dist/public/assets/_CRkxKTgw.js +1 -0
- package/dist/public/assets/_CS08pKi4.js +1 -0
- package/dist/public/assets/_CSE16QHd.js +1 -0
- package/dist/public/assets/_CT4ei2Jg.js +1 -0
- package/dist/public/assets/{_CxneqhA-.js → _CUPYyx5O.js} +1 -1
- package/dist/public/assets/_CW5ES2vr.js +1 -0
- package/dist/public/assets/_CWhF-4OC.js +1 -0
- package/dist/public/assets/{__GQz4qRd.js → _CXhoovwf.js} +1 -1
- package/dist/public/assets/_CXhoovwf.js.br +0 -0
- package/dist/public/assets/{_BA_k06GS.js → _CY7Wr_6h.js} +1 -1
- package/dist/public/assets/_CY7Wr_6h.js.br +0 -0
- package/dist/public/assets/_C_-mBehU.js +1 -0
- package/dist/public/assets/_CazYpkki.js +1 -0
- package/dist/public/assets/{_DMIFpGTL.js → _CbAa5uAw.js} +1 -1
- package/dist/public/assets/_CbAa5uAw.js.br +0 -0
- package/dist/public/assets/_CcbwLXni.js +1 -0
- package/dist/public/assets/{_B4eacQhm.js → _CiYp9PxT.js} +1 -1
- package/dist/public/assets/_CiYp9PxT.js.br +0 -0
- package/dist/public/assets/_CmLGUmi9.js +1 -0
- package/dist/public/assets/_CmLGUmi9.js.br +0 -0
- package/dist/public/assets/{_D-_xeCD1.js → _Coj9l4W_.js} +1 -1
- package/dist/public/assets/_Coj9l4W_.js.br +0 -0
- package/dist/public/assets/_Cp1MBi_q.js +1 -0
- package/dist/public/assets/_CpXvQ4wL.js +1 -0
- package/dist/public/assets/{_DBi6AZp1.js → _CsNZdkZU.js} +1 -1
- package/dist/public/assets/_CsNZdkZU.js.br +0 -0
- package/dist/public/assets/_Ct8a3v8n.js +1 -0
- package/dist/public/assets/{_BtZ336jh.js → _CtYn_7Ld.js} +1 -1
- package/dist/public/assets/_CtYn_7Ld.js.br +0 -0
- package/dist/public/assets/_CthHHBjW.js +2 -0
- package/dist/public/assets/_CthHHBjW.js.br +0 -0
- package/dist/public/assets/_CtliFzZo.js +1 -0
- package/dist/public/assets/{_B0WAFbs8.js → _Cw3MnPjo.js} +1 -1
- package/dist/public/assets/_Cw3MnPjo.js.br +0 -0
- package/dist/public/assets/{_DRD9BWmW.js → _Cw9GxBkQ.js} +1 -1
- package/dist/public/assets/_Cw9GxBkQ.js.br +0 -0
- package/dist/public/assets/_CwLlOfhS.js +1 -0
- package/dist/public/assets/_Cz606f5R.js +7 -0
- package/dist/public/assets/_Cz606f5R.js.br +0 -0
- package/dist/public/assets/{_Ci_ERulo.js → _D-pAxlQ-.js} +4 -4
- package/dist/public/assets/_D-pAxlQ-.js.br +0 -0
- package/dist/public/assets/_D24Cf_aJ.js +1 -0
- package/dist/public/assets/_D2Bfy3Mq.js +1 -0
- package/dist/public/assets/_D3_-HE_e.js +1 -0
- package/dist/public/assets/{_DFY87HPv.js → _D4XHSL1o.js} +1 -1
- package/dist/public/assets/_D4XHSL1o.js.br +0 -0
- package/dist/public/assets/_D8WYrmFe.js +1 -0
- package/dist/public/assets/_D8WYrmFe.js.br +0 -0
- package/dist/public/assets/{_CvE-okFl.js → _D9-mnhpM.js} +1 -1
- package/dist/public/assets/_D9-mnhpM.js.br +0 -0
- package/dist/public/assets/_DBjp4Oaj.js +1 -0
- package/dist/public/assets/_DBzqRlRQ.js +1 -0
- package/dist/public/assets/_DC6M2qH2.js +1 -0
- package/dist/public/assets/{_Bp1Rz6F-.js → _DE5SUDS8.js} +1 -1
- package/dist/public/assets/_DE5SUDS8.js.br +0 -0
- package/dist/public/assets/_DEGMhwoO.js +1 -0
- package/dist/public/assets/{_CGhrSui5.js → _DIEqAzJB.js} +1 -1
- package/dist/public/assets/_DIEqAzJB.js.br +0 -0
- package/dist/public/assets/{_DMBxaUer.js → _DJVQZQI-.js} +1 -1
- package/dist/public/assets/_DJVQZQI-.js.br +0 -0
- package/dist/public/assets/_DL8YLICC.js +1 -0
- package/dist/public/assets/{_DbUkj7Cm.js → _DLoAVrbv.js} +1 -1
- package/dist/public/assets/_DLoAVrbv.js.br +0 -0
- package/dist/public/assets/_DLpha-BN.js +1 -0
- package/dist/public/assets/{_BIIXVFJS.js → _DPKcpw43.js} +1 -1
- package/dist/public/assets/_DPKcpw43.js.br +0 -0
- package/dist/public/assets/{_CE0xb-t1.js → _DUEm1sqD.js} +1 -1
- package/dist/public/assets/_DUEm1sqD.js.br +0 -0
- package/dist/public/assets/_DX8wVfyk.js +1 -0
- package/dist/public/assets/_DXEbBRHY.js +1 -0
- package/dist/public/assets/_DX_AAVan.js +1 -0
- package/dist/public/assets/_DXhgTM12.js +1 -0
- package/dist/public/assets/{_DxpmRvl2.js → _DcCeapFB.js} +1 -1
- package/dist/public/assets/_DcCeapFB.js.br +0 -0
- package/dist/public/assets/{_CRW1wfql.js → _DdWxi_D9.js} +2 -2
- package/dist/public/assets/_DdWxi_D9.js.br +0 -0
- package/dist/public/assets/{_Bc6bSDC7.js → _DeGJuali.js} +1 -1
- package/dist/public/assets/_DeGJuali.js.br +0 -0
- package/dist/public/assets/_Dge-T7VA.js +1 -0
- package/dist/public/assets/{_D_LJ8pmO.js → _Dh_fGh7B.js} +1 -1
- package/dist/public/assets/_Dh_fGh7B.js.br +0 -0
- package/dist/public/assets/_DlKCZs5m.js +1 -0
- package/dist/public/assets/_DmAY0SHM.js +1 -0
- package/dist/public/assets/{_CBZYZvX6.js → _DmBJQY0z.js} +1 -1
- package/dist/public/assets/_DmBJQY0z.js.br +0 -0
- package/dist/public/assets/{_Bg2QU4YL.js → _DmISa8wc.js} +1 -1
- package/dist/public/assets/_DmISa8wc.js.br +0 -0
- package/dist/public/assets/_DpUeYTvU.js +1 -0
- package/dist/public/assets/_DqcTAqJs.js +1 -0
- package/dist/public/assets/_DrntETw8.js +1 -0
- package/dist/public/assets/_Dsb-mJGm.js +1 -0
- package/dist/public/assets/{_BspJ2pqw.js → _DuKrnKV2.js} +1 -1
- package/dist/public/assets/_DuKrnKV2.js.br +0 -0
- package/dist/public/assets/{_Bz-XjNLZ.js → _Dv298HDL.js} +1 -1
- package/dist/public/assets/_Dv298HDL.js.br +0 -0
- package/dist/public/assets/{_CZjD55hp.js → _DxgeJa1G.js} +1 -1
- package/dist/public/assets/_DxgeJa1G.js.br +0 -0
- package/dist/public/assets/_DxpwwPqc.js +1 -0
- package/dist/public/assets/{_B61sbHCY.js → _G0Ur49hc.js} +1 -1
- package/dist/public/assets/_G0Ur49hc.js.br +0 -0
- package/dist/public/assets/_GRlZXT_k.js +1 -0
- package/dist/public/assets/{_Df9tDuQJ.js → _HnJD2Vzo.js} +1 -1
- package/dist/public/assets/_HnJD2Vzo.js.br +0 -0
- package/dist/public/assets/{_DSR-ekR6.js → _KtT9ovgB.js} +1 -1
- package/dist/public/assets/_KtT9ovgB.js.br +0 -0
- package/dist/public/assets/{_UQ7mzph0.js → _LsFmgSj_.js} +1 -1
- package/dist/public/assets/_LsFmgSj_.js.br +0 -0
- package/dist/public/assets/_M2eABJML.js +1 -0
- package/dist/public/assets/_N7_4E3sa.js +1 -0
- package/dist/public/assets/_SCQ7gzWP.js +1 -0
- package/dist/public/assets/{_BHWL6thp.js → _SkNT3g1t.js} +1 -1
- package/dist/public/assets/_SkNT3g1t.js.br +0 -0
- package/dist/public/assets/{_D8duRYg_.js → _T32b15Ve.js} +1 -1
- package/dist/public/assets/_T32b15Ve.js.br +0 -0
- package/dist/public/assets/{_BX6cHZRC.js → _TOwFHHoM.js} +1 -1
- package/dist/public/assets/_TOwFHHoM.js.br +0 -0
- package/dist/public/assets/_UUd1gazT.js +1 -0
- package/dist/public/assets/{_Do2K8-PP.js → _YTVYw9XV.js} +1 -1
- package/dist/public/assets/_YTVYw9XV.js.br +0 -0
- package/dist/public/assets/{_CrkyDA5s.js → _ZlbOPzr7.js} +1 -1
- package/dist/public/assets/_ZlbOPzr7.js.br +0 -0
- package/dist/public/assets/{_C9bVnGYg.js → _a3BQDAxj.js} +1 -1
- package/dist/public/assets/_a3BQDAxj.js.br +0 -0
- package/dist/public/assets/{_DqMNxlrt.js → _aVJfol8S.js} +1 -1
- package/dist/public/assets/_aVJfol8S.js.br +0 -0
- package/dist/public/assets/{_DSd4RC98.js → _ee3nMJZE.js} +5 -5
- package/dist/public/assets/_ee3nMJZE.js.br +0 -0
- package/dist/public/assets/{_BrQz9_1N.js → _fBJXUlyl.js} +1 -1
- package/dist/public/assets/_fBJXUlyl.js.br +0 -0
- package/dist/public/assets/{_DuDDRKYO.js → _gy0a9Cmp.js} +1 -1
- package/dist/public/assets/_gy0a9Cmp.js.br +0 -0
- package/dist/public/assets/_iTbVHO4b.js +1 -0
- package/dist/public/assets/_k79dEMkm.js +1 -0
- package/dist/public/assets/{_BLm52mIb.js → _kHV7j6Zv.js} +1 -1
- package/dist/public/assets/_kHV7j6Zv.js.br +0 -0
- package/dist/public/assets/{_CK1km0hv.js → _l9Ig5EJO.js} +1 -1
- package/dist/public/assets/_l9Ig5EJO.js.br +0 -0
- package/dist/public/assets/{_CcdwplWu.js → _lCk1CAYf.js} +1 -1
- package/dist/public/assets/_lYxkU02J.js +1 -0
- package/dist/public/assets/{_BrwA1d2e.js → _rizgJsHK.js} +1 -1
- package/dist/public/assets/_rizgJsHK.js.br +0 -0
- package/dist/public/assets/_rmo2BlTL.js +1 -0
- package/dist/public/assets/_sEygC0rY.js +1 -0
- package/dist/public/assets/_sEygC0rY.js.br +0 -0
- package/dist/public/assets/{_Cz1WbAmd.js → _ulL_yezz.js} +1 -1
- package/dist/public/assets/_ulL_yezz.js.br +0 -0
- package/dist/public/assets/_vWNf9U23.js +1 -0
- package/dist/public/assets/_vd2rHjSk.js +1 -0
- package/dist/public/assets/{_7VrGDfKO.js → _w3JsvUod.js} +1 -1
- package/dist/public/assets/{_5qNa1gUY.js → _wC0cYIUL.js} +10 -10
- package/dist/public/assets/_wC0cYIUL.js.br +0 -0
- package/dist/public/assets/{_CAzNnO2u.js → _zGawNqPU.js} +1 -1
- package/dist/public/assets/_zGawNqPU.js.br +0 -0
- package/dist/public/assets/files-view-D9y_w_28.js +2 -0
- package/dist/public/assets/manage-workspace-BCRACsUn.js +2 -0
- package/dist/public/assets/new-BdLH98ro.js +1 -0
- package/dist/public/assets/new-workspace-TMTnjdBC.js +2 -0
- package/dist/public/assets/review-view-CvIicWqZ.js +2 -0
- package/dist/public/assets/settings-BdLH98ro.js +1 -0
- package/dist/public/assets/settings-page-I3W3CL5p.js +2 -0
- package/dist/public/assets/styles-D39vLjzP.css +1 -0
- package/dist/public/assets/styles-D39vLjzP.css.br +0 -0
- package/dist/public/assets/w-BdLH98ro.js +1 -0
- package/dist/public/assets/w._-BD4s-fU6.js +1 -0
- package/dist/public/assets/w._-BdLH98ro.js +1 -0
- package/dist/public/assets/w._-DnOj6Zzs.js +1 -0
- package/package.json +1 -1
- package/dist/_B6qckFq1.js +0 -2
- package/dist/_CBOkek-4.js +0 -2
- package/dist/public/assets/_52DoEo8V.js +0 -1
- package/dist/public/assets/_5qNa1gUY.js.br +0 -0
- package/dist/public/assets/_5vLD4tJs.js +0 -1
- package/dist/public/assets/_6Sl2jvWD.js +0 -1
- package/dist/public/assets/_7zNXz1VW.js +0 -1
- package/dist/public/assets/_9VzenYwR.js.br +0 -0
- package/dist/public/assets/_B-Gxv-J2.js +0 -1
- package/dist/public/assets/_B0WAFbs8.js.br +0 -0
- package/dist/public/assets/_B0uBThg8.js.br +0 -0
- package/dist/public/assets/_B4eacQhm.js.br +0 -0
- package/dist/public/assets/_B61sbHCY.js.br +0 -0
- package/dist/public/assets/_B70kYzED.js.br +0 -0
- package/dist/public/assets/_BA_k06GS.js.br +0 -0
- package/dist/public/assets/_BBu_e8_X.js +0 -1
- package/dist/public/assets/_BBu_e8_X.js.br +0 -0
- package/dist/public/assets/_BCifgx0o.js +0 -1
- package/dist/public/assets/_BDYmhvhb.js +0 -1
- package/dist/public/assets/_BDc6HTci.js +0 -1
- package/dist/public/assets/_BDc6HTci.js.br +0 -0
- package/dist/public/assets/_BGMYJ1-b.js.br +0 -0
- package/dist/public/assets/_BHWL6thp.js.br +0 -0
- package/dist/public/assets/_BHmNKeaW.js +0 -1
- package/dist/public/assets/_BIIXVFJS.js.br +0 -0
- package/dist/public/assets/_BIPl5Jln.js +0 -1
- package/dist/public/assets/_BIUx68NF.js +0 -1
- package/dist/public/assets/_BIZETXBI.js.br +0 -0
- package/dist/public/assets/_BJBaL1kO.js +0 -1
- package/dist/public/assets/_BLm52mIb.js.br +0 -0
- package/dist/public/assets/_BNZgCt2D.js.br +0 -0
- package/dist/public/assets/_BO-NDKjv.js.br +0 -0
- package/dist/public/assets/_BP3daLRF.js.br +0 -0
- package/dist/public/assets/_BRXPkWkz.js.br +0 -0
- package/dist/public/assets/_BSnuFn6s.js +0 -1
- package/dist/public/assets/_BV-jCckF.js +0 -1
- package/dist/public/assets/_BW5KN-7X.js +0 -1
- package/dist/public/assets/_BWiyHfcY.js +0 -1
- package/dist/public/assets/_BWrNVFBT.js +0 -1
- package/dist/public/assets/_BX6cHZRC.js.br +0 -0
- package/dist/public/assets/_Bc6bSDC7.js.br +0 -0
- package/dist/public/assets/_BcnofYSF.js +0 -1
- package/dist/public/assets/_Bd54ZeV7.js +0 -1
- package/dist/public/assets/_BfPvaVwz.js +0 -1
- package/dist/public/assets/_Bg2QU4YL.js.br +0 -0
- package/dist/public/assets/_BgOKQo-U.js.br +0 -0
- package/dist/public/assets/_BjSq4BzQ.js +0 -1
- package/dist/public/assets/_BmKHBiNs.js.br +0 -0
- package/dist/public/assets/_Bp1Rz6F-.js.br +0 -0
- package/dist/public/assets/_BpvijjYe.js +0 -1
- package/dist/public/assets/_BpvijjYe.js.br +0 -0
- package/dist/public/assets/_BrQz9_1N.js.br +0 -0
- package/dist/public/assets/_BrwA1d2e.js.br +0 -0
- package/dist/public/assets/_BsSjoVSF.js +0 -1
- package/dist/public/assets/_BsZOFgem.js.br +0 -0
- package/dist/public/assets/_BsgMUS5v.js +0 -1
- package/dist/public/assets/_BspJ2pqw.js.br +0 -0
- package/dist/public/assets/_BtZ336jh.js.br +0 -0
- package/dist/public/assets/_BvCAp6ap.js +0 -1
- package/dist/public/assets/_BvOUeUZa.js +0 -1
- package/dist/public/assets/_Bva9S0Lp.js +0 -1
- package/dist/public/assets/_By8hC_3V.js +0 -1
- package/dist/public/assets/_ByjvEM2K.js +0 -1
- package/dist/public/assets/_Bz-XjNLZ.js.br +0 -0
- package/dist/public/assets/_C-M_kClx.js.br +0 -0
- package/dist/public/assets/_C0pj3hDu.js +0 -1
- package/dist/public/assets/_C33Ig972.js.br +0 -0
- package/dist/public/assets/_C9bVnGYg.js.br +0 -0
- package/dist/public/assets/_CAzNnO2u.js.br +0 -0
- package/dist/public/assets/_CBYhG-Jk.js +0 -1
- package/dist/public/assets/_CBZYZvX6.js.br +0 -0
- package/dist/public/assets/_CC-TbOxb.js +0 -1
- package/dist/public/assets/_CDRpwb4M.js +0 -1
- package/dist/public/assets/_CE0xb-t1.js.br +0 -0
- package/dist/public/assets/_CEms_Z-6.js.br +0 -0
- package/dist/public/assets/_CGhrSui5.js.br +0 -0
- package/dist/public/assets/_CGsMyVqh.js +0 -1
- package/dist/public/assets/_CGslQHw6.js +0 -2
- package/dist/public/assets/_CGslQHw6.js.br +0 -0
- package/dist/public/assets/_CH4p6ja3.js.br +0 -0
- package/dist/public/assets/_CI503IRR.js.br +0 -0
- package/dist/public/assets/_CK1km0hv.js.br +0 -0
- package/dist/public/assets/_CNLzm8LQ.js +0 -1
- package/dist/public/assets/_CO9uHpUR.js +0 -1
- package/dist/public/assets/_CRDS_Qnj.js +0 -1
- package/dist/public/assets/_CRW1wfql.js.br +0 -0
- package/dist/public/assets/_CRm4PdBT.js +0 -1
- package/dist/public/assets/_CTb8ws2D.js +0 -1
- package/dist/public/assets/_CUcuo0OF.js.br +0 -0
- package/dist/public/assets/_CZjD55hp.js.br +0 -0
- package/dist/public/assets/_C_zHPihH.js +0 -1
- package/dist/public/assets/_Cd8cJJ5d.js +0 -1
- package/dist/public/assets/_CebKs3BC.js.br +0 -0
- package/dist/public/assets/_ChLHPeVd.js +0 -1
- package/dist/public/assets/_ChPi7Qia.js +0 -1
- package/dist/public/assets/_Ci_ERulo.js.br +0 -0
- package/dist/public/assets/_CnA75RK-.js +0 -1
- package/dist/public/assets/_CrkyDA5s.js.br +0 -0
- package/dist/public/assets/_Crlc-QAY.js +0 -1
- package/dist/public/assets/_Ct2onnrq.js.br +0 -0
- package/dist/public/assets/_CvE-okFl.js.br +0 -0
- package/dist/public/assets/_CvFxFb7b.js +0 -1
- package/dist/public/assets/_Cvmxsqbk.js.br +0 -0
- package/dist/public/assets/_Cx0XNN9g.js +0 -1
- package/dist/public/assets/_Cx3eVwn1.js +0 -1
- package/dist/public/assets/_Cxf_IUf4.js.br +0 -0
- package/dist/public/assets/_Cz1WbAmd.js.br +0 -0
- package/dist/public/assets/_D-_xeCD1.js.br +0 -0
- package/dist/public/assets/_D2AWXbDz.js +0 -1
- package/dist/public/assets/_D4R7X41o.js +0 -1
- package/dist/public/assets/_D5SMLcbR.js +0 -1
- package/dist/public/assets/_D5szhG6N.js.br +0 -0
- package/dist/public/assets/_D8duRYg_.js.br +0 -0
- package/dist/public/assets/_DBi6AZp1.js.br +0 -0
- package/dist/public/assets/_DDF_obmV.js +0 -1
- package/dist/public/assets/_DEdUC-99.js.br +0 -0
- package/dist/public/assets/_DFY87HPv.js.br +0 -0
- package/dist/public/assets/_DMBxaUer.js.br +0 -0
- package/dist/public/assets/_DMCzgljm.js +0 -1
- package/dist/public/assets/_DMIFpGTL.js.br +0 -0
- package/dist/public/assets/_DNAALd01.js +0 -1
- package/dist/public/assets/_DOvWbnNI.js +0 -1
- package/dist/public/assets/_DRD9BWmW.js.br +0 -0
- package/dist/public/assets/_DSR-ekR6.js.br +0 -0
- package/dist/public/assets/_DSd4RC98.js.br +0 -0
- package/dist/public/assets/_DVWPCuX6.js +0 -1
- package/dist/public/assets/_DXW91wcG.js +0 -1
- package/dist/public/assets/_DYKYQ8m8.js +0 -1
- package/dist/public/assets/_D_LJ8pmO.js.br +0 -0
- package/dist/public/assets/_Db-Unv14.js +0 -1
- package/dist/public/assets/_DbUkj7Cm.js.br +0 -0
- package/dist/public/assets/_Dcfan7km.js +0 -1
- package/dist/public/assets/_Dcfe_1SB.js +0 -1
- package/dist/public/assets/_Dcfe_1SB.js.br +0 -0
- package/dist/public/assets/_DdIt6KC0.js +0 -1
- package/dist/public/assets/_Df9tDuQJ.js.br +0 -0
- package/dist/public/assets/_DgEX6kkV.js.br +0 -0
- package/dist/public/assets/_DiRP-nIf.js +0 -1
- package/dist/public/assets/_DlrFmXHy.js.br +0 -0
- package/dist/public/assets/_Do2K8-PP.js.br +0 -0
- package/dist/public/assets/_Dpeqvq2b.js +0 -1
- package/dist/public/assets/_DphFWoqW.js +0 -1
- package/dist/public/assets/_DqMNxlrt.js.br +0 -0
- package/dist/public/assets/_DqtM_bbr.js.br +0 -0
- package/dist/public/assets/_Dr000eW7.js.br +0 -0
- package/dist/public/assets/_DrChcZDh.js.br +0 -0
- package/dist/public/assets/_DuDDRKYO.js.br +0 -0
- package/dist/public/assets/_Dwsl_wKj.js.br +0 -0
- package/dist/public/assets/_Dwv8BEGB.js.br +0 -0
- package/dist/public/assets/_DxSjwdlY.js.br +0 -0
- package/dist/public/assets/_DxpmRvl2.js.br +0 -0
- package/dist/public/assets/_Dz88Dpub.js +0 -1
- package/dist/public/assets/_HauWfpUn.js +0 -1
- package/dist/public/assets/_Ijrn9E9G.js +0 -1
- package/dist/public/assets/_M4FQh9bC.js +0 -1
- package/dist/public/assets/_QORYcpTd.js.br +0 -0
- package/dist/public/assets/_Qauup-ns.js.br +0 -0
- package/dist/public/assets/_TlisgNCJ.js.br +0 -0
- package/dist/public/assets/_UQ7mzph0.js.br +0 -0
- package/dist/public/assets/_UcX6VY7d.js.br +0 -0
- package/dist/public/assets/_WlELMoKQ.js.br +0 -0
- package/dist/public/assets/_XoAXFntv.js +0 -1
- package/dist/public/assets/_ZGgC0r2G.js +0 -1
- package/dist/public/assets/__DiIExtT.js +0 -1
- package/dist/public/assets/__GQz4qRd.js.br +0 -0
- package/dist/public/assets/__dK-lv2S.js +0 -1
- package/dist/public/assets/__s7yh6D2.js +0 -1
- package/dist/public/assets/_bq3cGUln.js.br +0 -0
- package/dist/public/assets/_cqJmKjxj.js +0 -1
- package/dist/public/assets/_hDmRiKUw.js.br +0 -0
- package/dist/public/assets/_jHMZ7_SS.js.br +0 -0
- package/dist/public/assets/_lUUoHbkp.js +0 -1
- package/dist/public/assets/_lVS7e3_v.js.br +0 -0
- package/dist/public/assets/_lap_hed5.js +0 -1
- package/dist/public/assets/_lap_hed5.js.br +0 -0
- package/dist/public/assets/_oAmRs9Id.js +0 -1
- package/dist/public/assets/_r3ADao7e.js +0 -7
- package/dist/public/assets/_r3ADao7e.js.br +0 -0
- package/dist/public/assets/_saecw7-8.js +0 -1
- package/dist/public/assets/_tDQjJjsw.js +0 -1
- package/dist/public/assets/_v-b8Pv1D.js +0 -1
- package/dist/public/assets/_vnY6YQ72.js +0 -1
- package/dist/public/assets/_yG7fM3OX.js +0 -1
- package/dist/public/assets/_yGoKwpSc.js +0 -1
- package/dist/public/assets/_yzVrMpiX.js +0 -1
- package/dist/public/assets/files-view-CRP8mZ8A.js +0 -2
- package/dist/public/assets/manage-workspace-g9et8r1N.js +0 -2
- package/dist/public/assets/new-COiDKbdJ.js +0 -1
- package/dist/public/assets/new-workspace-BUibVLk7.js +0 -2
- package/dist/public/assets/review-view-AmmjoEDt.js +0 -2
- package/dist/public/assets/settings-COiDKbdJ.js +0 -1
- package/dist/public/assets/settings-page-CsNPZ11b.js +0 -2
- package/dist/public/assets/styles-D4_8DmOT.css +0 -1
- package/dist/public/assets/styles-D4_8DmOT.css.br +0 -0
- package/dist/public/assets/w-COiDKbdJ.js +0 -1
- package/dist/public/assets/w._-COiDKbdJ.js +0 -1
- package/dist/public/assets/w._-Tuxo-Ck_.js +0 -1
- package/dist/public/assets/w._-slbhbJCW.js +0 -1
|
@@ -9659,7 +9659,7 @@ function publishChange(sessionId) {
|
|
|
9659
9659
|
const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
|
|
9660
9660
|
if (row?.workspace_id) {
|
|
9661
9661
|
const workspaceId = row.workspace_id;
|
|
9662
|
-
import("./
|
|
9662
|
+
import("./_C29NgtBI.js").then((m) => m.notifySessionsChanged(workspaceId));
|
|
9663
9663
|
return;
|
|
9664
9664
|
}
|
|
9665
9665
|
publish("sessions.changed");
|
|
@@ -12577,11 +12577,11 @@ async function pruneWorkspaceSnaps(ws) {
|
|
|
12577
12577
|
const live = new Set([...reviewPoints(ws.id).values()].map((p) => p.snap));
|
|
12578
12578
|
for (const repo of ws.repos) await pruneSnaps(path.join(ws.path, repo.worktree), ws.id, live).catch(() => {});
|
|
12579
12579
|
}
|
|
12580
|
-
var started = false;
|
|
12580
|
+
var started$1 = false;
|
|
12581
12581
|
/** A minute after boot and hourly after, every active workspace's sweep. */
|
|
12582
12582
|
function startSnapSweep() {
|
|
12583
|
-
if (started) return;
|
|
12584
|
-
started = true;
|
|
12583
|
+
if (started$1) return;
|
|
12584
|
+
started$1 = true;
|
|
12585
12585
|
const sweep = () => {
|
|
12586
12586
|
for (const { id } of all("SELECT id FROM workspaces WHERE status = 'active'")) {
|
|
12587
12587
|
const ws = getWorkspace(id);
|
|
@@ -16722,7 +16722,7 @@ function serverAt(key, def, root, checkout, cmd, forWarm) {
|
|
|
16722
16722
|
return srv;
|
|
16723
16723
|
}
|
|
16724
16724
|
/** When a server last mattered: asked, or warmed for a page. */
|
|
16725
|
-
var touched = (s) => Math.max(s.lastUsed, s.lastWarm);
|
|
16725
|
+
var touched$1 = (s) => Math.max(s.lastUsed, s.lastWarm);
|
|
16726
16726
|
/** Stop the least recently touched idle servers until one more fits, and
|
|
16727
16727
|
* say whether it does. A question makes room from any server not
|
|
16728
16728
|
* mid-question (a burst can overshoot); a warm only from ones unused for a
|
|
@@ -16730,7 +16730,7 @@ var touched = (s) => Math.max(s.lastUsed, s.lastWarm);
|
|
|
16730
16730
|
function makeRoom(forWarm = false) {
|
|
16731
16731
|
const live = [...servers.values()].filter((s) => !s.stopping);
|
|
16732
16732
|
const now = Date.now();
|
|
16733
|
-
const idle = live.filter((s) => !s.busy && (!forWarm || now - touched(s) > RECENT_MS)).sort((a, b) => touched(a) - touched(b));
|
|
16733
|
+
const idle = live.filter((s) => !s.busy && (!forWarm || now - touched$1(s) > RECENT_MS)).sort((a, b) => touched$1(a) - touched$1(b));
|
|
16734
16734
|
let n = live.length;
|
|
16735
16735
|
for (; n >= MAX_RUNNING && idle.length; n--) stop(idle.shift());
|
|
16736
16736
|
return n < MAX_RUNNING;
|
|
@@ -16923,7 +16923,7 @@ setInterval(() => {
|
|
|
16923
16923
|
if (!lspEnabled()) {
|
|
16924
16924
|
for (const s of servers.values()) if (!s.busy) stop(s);
|
|
16925
16925
|
}
|
|
16926
|
-
for (const s of servers.values()) if (!s.busy && now - touched(s) > (s.lastUsed ? IDLE_MS : WARM_IDLE_MS)) stop(s);
|
|
16926
|
+
for (const s of servers.values()) if (!s.busy && now - touched$1(s) > (s.lastUsed ? IDLE_MS : WARM_IDLE_MS)) stop(s);
|
|
16927
16927
|
}, 6e4).unref();
|
|
16928
16928
|
function exclusive(srv, fn) {
|
|
16929
16929
|
const run = srv.queue.then(fn, fn);
|
|
@@ -18005,7 +18005,7 @@ function notifySessionsChanged(workspaceId) {
|
|
|
18005
18005
|
async function emitSessionsChanged(workspaceId) {
|
|
18006
18006
|
try {
|
|
18007
18007
|
const states = await sessionStates();
|
|
18008
|
-
const { teamsOf } = await import("./
|
|
18008
|
+
const { teamsOf } = await import("./_BkRvQO5r.js");
|
|
18009
18009
|
publish("sessions.changed", {
|
|
18010
18010
|
workspaceId,
|
|
18011
18011
|
sessions: listSessions(workspaceId).map((s) => ({
|
|
@@ -18282,11 +18282,13 @@ async function listPanesNow() {
|
|
|
18282
18282
|
* (tmux exits when its last session closes). */
|
|
18283
18283
|
async function ensureTmuxServer() {
|
|
18284
18284
|
if (await tmux(["has-session"]).then(() => true, () => false)) return;
|
|
18285
|
-
|
|
18285
|
+
const unit = TMUX_SOCKET === "work" ? "work-tmux" : `work-tmux-${TMUX_SOCKET.replace(/[^\w.:-]/g, "_")}`;
|
|
18286
|
+
const start = (props) => run$2("systemd-run", [
|
|
18286
18287
|
"--user",
|
|
18287
|
-
`--unit=${
|
|
18288
|
+
`--unit=${unit}`,
|
|
18288
18289
|
"--service-type=forking",
|
|
18289
18290
|
"--collect",
|
|
18291
|
+
...props,
|
|
18290
18292
|
"tmux",
|
|
18291
18293
|
"-L",
|
|
18292
18294
|
TMUX_SOCKET,
|
|
@@ -18296,7 +18298,24 @@ async function ensureTmuxServer() {
|
|
|
18296
18298
|
"work-keeper",
|
|
18297
18299
|
"sleep",
|
|
18298
18300
|
"infinity"
|
|
18299
|
-
], os.homedir())
|
|
18301
|
+
], os.homedir());
|
|
18302
|
+
const files = openFileLimit();
|
|
18303
|
+
await start(files ? [`--property=LimitNOFILE=${files}`] : []).catch(() => files ? start([]) : Promise.reject()).catch(() => {});
|
|
18304
|
+
}
|
|
18305
|
+
/** This server's open-file limit, for tmux's server: it holds a socket and
|
|
18306
|
+
* a tty for every client attached and a pty for every pane, and a systemd
|
|
18307
|
+
* user unit starts at the manager's soft default (1024), past which tmux
|
|
18308
|
+
* accepts no client and every tmux command hangs. Node raised its own soft
|
|
18309
|
+
* limit to the hard one as it started; a tmux it starts itself (no
|
|
18310
|
+
* systemd) inherits that. */
|
|
18311
|
+
function openFileLimit() {
|
|
18312
|
+
try {
|
|
18313
|
+
const hard = fs.readFileSync("/proc/self/limits", "utf8").split("\n").find((l) => l.startsWith("Max open files"))?.split(/\s{2,}/)[2];
|
|
18314
|
+
if (hard === "unlimited") return "infinity";
|
|
18315
|
+
return hard && /^\d+$/.test(hard) ? hard : null;
|
|
18316
|
+
} catch {
|
|
18317
|
+
return null;
|
|
18318
|
+
}
|
|
18300
18319
|
}
|
|
18301
18320
|
/** Full tmux command (options + new-session) for creating/attaching a
|
|
18302
18321
|
* session's tmux; `mode` is "-d" (create detached) or "-A" (attach-or-create).
|
|
@@ -18570,9 +18589,10 @@ function sessionEnvArgs(session, cwd) {
|
|
|
18570
18589
|
}
|
|
18571
18590
|
/** A session's scratch (`TMPDIR`): its workspace's own `.tmp/`, on disk
|
|
18572
18591
|
* and gone with the workspace (and out of backups), where `/tmp` is a
|
|
18573
|
-
* small tmpfs every workspace shares
|
|
18574
|
-
*
|
|
18575
|
-
* `TMPDIR` that does not exist fails `mktemp`
|
|
18592
|
+
* small tmpfs every workspace shares: agents' repro servers and installs
|
|
18593
|
+
* there ran it out of inodes. It empties as `/tmp` does (tmp-sweep.ts).
|
|
18594
|
+
* Made here, since a `TMPDIR` that does not exist fails `mktemp`
|
|
18595
|
+
* outright. */
|
|
18576
18596
|
function sessionTmp(cwd) {
|
|
18577
18597
|
const dir = path.join(cwd, ".tmp");
|
|
18578
18598
|
fs.mkdirSync(dir, { recursive: true });
|
|
@@ -18666,6 +18686,258 @@ function ensureAllPushHooks() {
|
|
|
18666
18686
|
}
|
|
18667
18687
|
}
|
|
18668
18688
|
//#endregion
|
|
18689
|
+
//#region src/server/tmp-sweep.ts
|
|
18690
|
+
/**
|
|
18691
|
+
* A workspace's `.tmp/` is its sessions' `TMPDIR` (sessions.ts
|
|
18692
|
+
* `sessionTmp`), and agents fill it the way they would fill `/tmp`: clones,
|
|
18693
|
+
* installs, repro servers, logs. Nothing else ever emptied it, so it grew
|
|
18694
|
+
* to tens of gigabytes a workspace. It is emptied the way the machine
|
|
18695
|
+
* empties its own `/tmp`: what has gone untouched for as long as `/tmp`
|
|
18696
|
+
* keeps an entry goes, by the rules `systemd-tmpfiles --clean` applies, on
|
|
18697
|
+
* its schedule.
|
|
18698
|
+
*/
|
|
18699
|
+
var DAY = 864e5;
|
|
18700
|
+
/** systemd's own age for `/tmp` (its shipped `tmp.conf`), and the age where
|
|
18701
|
+
* nothing on the machine names one. */
|
|
18702
|
+
var SYSTEMD_TMP_AGE = 10 * DAY;
|
|
18703
|
+
/** macOS's `daily_clean_tmps_days` as shipped. */
|
|
18704
|
+
var MAC_TMP_DAYS = 3;
|
|
18705
|
+
/** As `systemd-tmpfiles-clean.timer`: 15 minutes after start, then daily. */
|
|
18706
|
+
var FIRST_SWEEP_MS = 9e5;
|
|
18707
|
+
var SWEEP_EVERY_MS = DAY;
|
|
18708
|
+
/** Where systemd-tmpfiles reads its config, first to last: a file in an
|
|
18709
|
+
* earlier directory hides one of the same name in a later one. */
|
|
18710
|
+
var TMPFILES_DIRS = [
|
|
18711
|
+
"/etc/tmpfiles.d",
|
|
18712
|
+
"/run/tmpfiles.d",
|
|
18713
|
+
"/usr/local/lib/tmpfiles.d",
|
|
18714
|
+
"/usr/lib/tmpfiles.d"
|
|
18715
|
+
];
|
|
18716
|
+
/** macOS periodic(8)'s config, each assignment overriding the one before. */
|
|
18717
|
+
var PERIODIC_CONFS = [
|
|
18718
|
+
"/etc/defaults/periodic.conf",
|
|
18719
|
+
"/etc/periodic.conf",
|
|
18720
|
+
"/etc/periodic.conf.local"
|
|
18721
|
+
];
|
|
18722
|
+
var UNIT_MS = {
|
|
18723
|
+
us: .001,
|
|
18724
|
+
usec: .001,
|
|
18725
|
+
ms: 1,
|
|
18726
|
+
msec: 1,
|
|
18727
|
+
s: 1e3,
|
|
18728
|
+
sec: 1e3,
|
|
18729
|
+
second: 1e3,
|
|
18730
|
+
seconds: 1e3,
|
|
18731
|
+
m: 6e4,
|
|
18732
|
+
min: 6e4,
|
|
18733
|
+
minute: 6e4,
|
|
18734
|
+
minutes: 6e4,
|
|
18735
|
+
h: 36e5,
|
|
18736
|
+
hr: 36e5,
|
|
18737
|
+
hour: 36e5,
|
|
18738
|
+
hours: 36e5,
|
|
18739
|
+
d: DAY,
|
|
18740
|
+
day: DAY,
|
|
18741
|
+
days: DAY,
|
|
18742
|
+
w: 7 * DAY,
|
|
18743
|
+
week: 7 * DAY,
|
|
18744
|
+
weeks: 7 * DAY,
|
|
18745
|
+
M: 30.44 * DAY,
|
|
18746
|
+
month: 30.44 * DAY,
|
|
18747
|
+
months: 30.44 * DAY,
|
|
18748
|
+
y: 365.25 * DAY,
|
|
18749
|
+
year: 365.25 * DAY,
|
|
18750
|
+
years: 365.25 * DAY
|
|
18751
|
+
};
|
|
18752
|
+
/** A tmpfiles.d age (`10d`, `1w 2d`, `~12h`, `ac:30d`) in ms: null for
|
|
18753
|
+
* `-` or none, which means never cleaned. */
|
|
18754
|
+
function parseAge(text) {
|
|
18755
|
+
if (!text || text === "-") return null;
|
|
18756
|
+
const span = text.replace(/^~/, "").replace(/^[aAbBcCmM]+:/, "");
|
|
18757
|
+
let ms = 0;
|
|
18758
|
+
let matched = "";
|
|
18759
|
+
for (const m of span.matchAll(/\s*(\d+(?:\.\d+)?)\s*([a-zA-Zµ]*)/g)) {
|
|
18760
|
+
const unit = m[2] === "" ? "s" : m[2] === "µs" ? "us" : m[2];
|
|
18761
|
+
if (!(unit in UNIT_MS)) return null;
|
|
18762
|
+
ms += Number(m[1]) * UNIT_MS[unit];
|
|
18763
|
+
matched += m[0];
|
|
18764
|
+
}
|
|
18765
|
+
return matched.trim() === span.trim() && matched ? ms : null;
|
|
18766
|
+
}
|
|
18767
|
+
/** `/tmp`'s age in this machine's tmpfiles.d config: undefined when no
|
|
18768
|
+
* line names `/tmp`. Of every file, the lexicographically first one with a
|
|
18769
|
+
* line for a path is the one applied, as systemd-tmpfiles does. */
|
|
18770
|
+
function tmpfilesAge(root) {
|
|
18771
|
+
const files = /* @__PURE__ */ new Map();
|
|
18772
|
+
for (const dir of TMPFILES_DIRS) {
|
|
18773
|
+
let names;
|
|
18774
|
+
try {
|
|
18775
|
+
names = fs.readdirSync(path.join(root, dir));
|
|
18776
|
+
} catch {
|
|
18777
|
+
continue;
|
|
18778
|
+
}
|
|
18779
|
+
for (const name of names) if (name.endsWith(".conf") && !files.has(name)) files.set(name, path.join(root, dir, name));
|
|
18780
|
+
}
|
|
18781
|
+
for (const name of [...files.keys()].sort()) {
|
|
18782
|
+
let text;
|
|
18783
|
+
try {
|
|
18784
|
+
text = fs.readFileSync(files.get(name), "utf8");
|
|
18785
|
+
} catch {
|
|
18786
|
+
continue;
|
|
18787
|
+
}
|
|
18788
|
+
for (const raw of text.split("\n")) {
|
|
18789
|
+
const line = raw.trim();
|
|
18790
|
+
if (!line || line.startsWith("#")) continue;
|
|
18791
|
+
const [type, where, , , , age] = line.split(/\s+/);
|
|
18792
|
+
if (where === "/tmp" && /^[dDeqQv]/.test(type)) return parseAge(age);
|
|
18793
|
+
}
|
|
18794
|
+
}
|
|
18795
|
+
}
|
|
18796
|
+
/** macOS cleans `/tmp` from periodic(8)'s daily run: what has gone
|
|
18797
|
+
* `daily_clean_tmps_days` untouched, while `daily_clean_tmps_enable`. */
|
|
18798
|
+
function periodicAge(root) {
|
|
18799
|
+
const vars = {};
|
|
18800
|
+
for (const file of PERIODIC_CONFS) {
|
|
18801
|
+
let text;
|
|
18802
|
+
try {
|
|
18803
|
+
text = fs.readFileSync(path.join(root, file), "utf8");
|
|
18804
|
+
} catch {
|
|
18805
|
+
continue;
|
|
18806
|
+
}
|
|
18807
|
+
for (const m of text.matchAll(/^\s*(daily_clean_tmps_(?:enable|days))\s*=\s*["']?([^"'\s#]*)/gm)) vars[m[1]] = m[2];
|
|
18808
|
+
}
|
|
18809
|
+
if ((vars.daily_clean_tmps_enable ?? "YES").toUpperCase() !== "YES") return null;
|
|
18810
|
+
const days = Number(vars.daily_clean_tmps_days);
|
|
18811
|
+
return (Number.isFinite(days) && days >= 0 ? days : MAC_TMP_DAYS) * DAY;
|
|
18812
|
+
}
|
|
18813
|
+
/** How long this machine's `/tmp` keeps an entry nobody touches, in ms:
|
|
18814
|
+
* null when it never ages one out. `WORK_TMP_AGE` (a tmpfiles.d age, or
|
|
18815
|
+
* `off`) overrides it. `root` and `platform` are for a test. */
|
|
18816
|
+
function tmpAge(opts = {}) {
|
|
18817
|
+
const env = opts.env ?? process.env.WORK_TMP_AGE;
|
|
18818
|
+
if (env) return /^(off|never|-)$/i.test(env) ? null : parseAge(env);
|
|
18819
|
+
const root = opts.root ?? "/";
|
|
18820
|
+
if ((opts.platform ?? process.platform) === "darwin") return periodicAge(root);
|
|
18821
|
+
const age = tmpfilesAge(root);
|
|
18822
|
+
return age === void 0 ? SYSTEMD_TMP_AGE : age;
|
|
18823
|
+
}
|
|
18824
|
+
/** When an entry was last touched, by the times systemd-tmpfiles weighs
|
|
18825
|
+
* by default (`abcmABM`): a file's access, birth, change and modification;
|
|
18826
|
+
* a directory's without its change time, which cleaning it moves. */
|
|
18827
|
+
function touched(st, dir) {
|
|
18828
|
+
return Math.max(st.atimeMs, st.mtimeMs, st.birthtimeMs || 0, dir ? 0 : st.ctimeMs);
|
|
18829
|
+
}
|
|
18830
|
+
/** Empties `dir` of what has gone `ageMs` untouched: each file past it,
|
|
18831
|
+
* then each directory past it once it is empty. `dir` itself stays, a
|
|
18832
|
+
* symlink is never followed (a `.tmp` that is one is left alone), and
|
|
18833
|
+
* another filesystem mounted inside is never entered. */
|
|
18834
|
+
async function sweepTmp(dir, ageMs, now = Date.now()) {
|
|
18835
|
+
const out = {
|
|
18836
|
+
removed: 0,
|
|
18837
|
+
bytes: 0
|
|
18838
|
+
};
|
|
18839
|
+
let top;
|
|
18840
|
+
try {
|
|
18841
|
+
top = await fs$1.lstat(dir);
|
|
18842
|
+
} catch {
|
|
18843
|
+
return out;
|
|
18844
|
+
}
|
|
18845
|
+
if (!top.isDirectory()) return out;
|
|
18846
|
+
await clean(dir, top, now - ageMs, out);
|
|
18847
|
+
return out;
|
|
18848
|
+
}
|
|
18849
|
+
/** Cleans one directory, `st` its times from before it was read; true when
|
|
18850
|
+
* nothing is left in it. */
|
|
18851
|
+
async function clean(dir, st, cutoff, out) {
|
|
18852
|
+
let handle;
|
|
18853
|
+
try {
|
|
18854
|
+
handle = await fs$1.opendir(dir);
|
|
18855
|
+
} catch {
|
|
18856
|
+
return false;
|
|
18857
|
+
}
|
|
18858
|
+
let left = 0;
|
|
18859
|
+
try {
|
|
18860
|
+
for await (const entry of handle) {
|
|
18861
|
+
const p = path.join(dir, entry.name);
|
|
18862
|
+
let s;
|
|
18863
|
+
try {
|
|
18864
|
+
s = await fs$1.lstat(p);
|
|
18865
|
+
} catch {
|
|
18866
|
+
continue;
|
|
18867
|
+
}
|
|
18868
|
+
if (s.dev !== st.dev) {
|
|
18869
|
+
left++;
|
|
18870
|
+
continue;
|
|
18871
|
+
}
|
|
18872
|
+
if (s.isDirectory()) {
|
|
18873
|
+
if (await clean(p, s, cutoff, out) && touched(s, true) < cutoff) try {
|
|
18874
|
+
await fs$1.rmdir(p);
|
|
18875
|
+
out.removed++;
|
|
18876
|
+
continue;
|
|
18877
|
+
} catch {}
|
|
18878
|
+
left++;
|
|
18879
|
+
continue;
|
|
18880
|
+
}
|
|
18881
|
+
if (touched(s, false) < cutoff) try {
|
|
18882
|
+
await fs$1.unlink(p);
|
|
18883
|
+
out.removed++;
|
|
18884
|
+
out.bytes += s.size;
|
|
18885
|
+
continue;
|
|
18886
|
+
} catch {}
|
|
18887
|
+
left++;
|
|
18888
|
+
}
|
|
18889
|
+
} catch {
|
|
18890
|
+
left++;
|
|
18891
|
+
}
|
|
18892
|
+
await fs$1.utimes(dir, st.atime, st.mtime).catch(() => {});
|
|
18893
|
+
return left === 0;
|
|
18894
|
+
}
|
|
18895
|
+
/** An age as the sweep's log and the workspace AGENTS.md say it. */
|
|
18896
|
+
function ageText(ms) {
|
|
18897
|
+
for (const [unit, per] of [
|
|
18898
|
+
["day", DAY],
|
|
18899
|
+
["hour", 36e5],
|
|
18900
|
+
["minute", 6e4]
|
|
18901
|
+
]) if (ms >= per) {
|
|
18902
|
+
const n = Math.round(ms / per);
|
|
18903
|
+
return `${n} ${unit}${n === 1 ? "" : "s"}`;
|
|
18904
|
+
}
|
|
18905
|
+
const n = Math.round(ms / 1e3);
|
|
18906
|
+
return `${n} second${n === 1 ? "" : "s"}`;
|
|
18907
|
+
}
|
|
18908
|
+
function size(bytes) {
|
|
18909
|
+
return bytes >= 1 << 30 ? `${(bytes / (1 << 30)).toFixed(1)} GiB` : `${Math.round(bytes / (1 << 20))} MiB`;
|
|
18910
|
+
}
|
|
18911
|
+
var started = false;
|
|
18912
|
+
/** Sweeps each `.tmp/` that `dirs` names, on systemd-tmpfiles-clean's
|
|
18913
|
+
* schedule, at the age `/tmp` has when each sweep starts (a machine whose
|
|
18914
|
+
* `/tmp` keeps everything keeps these too). `WORK_TMP_SWEEP_DELAY`
|
|
18915
|
+
* (seconds) moves the first sweep, for a test. */
|
|
18916
|
+
function startTmpSweep(dirs) {
|
|
18917
|
+
if (started) return;
|
|
18918
|
+
started = true;
|
|
18919
|
+
let running = false;
|
|
18920
|
+
const sweep = async () => {
|
|
18921
|
+
if (running) return;
|
|
18922
|
+
running = true;
|
|
18923
|
+
try {
|
|
18924
|
+
const age = tmpAge();
|
|
18925
|
+
if (age === null) return;
|
|
18926
|
+
for (const dir of dirs()) {
|
|
18927
|
+
const r = await sweepTmp(dir, age).catch(() => null);
|
|
18928
|
+
if (r?.removed) console.log(`[work] tmp: removed ${r.removed} entr${r.removed === 1 ? "y" : "ies"} (${size(r.bytes)}) untouched for ${ageText(age)} from ${dir}`);
|
|
18929
|
+
}
|
|
18930
|
+
} finally {
|
|
18931
|
+
running = false;
|
|
18932
|
+
}
|
|
18933
|
+
};
|
|
18934
|
+
const delay = Number(process.env.WORK_TMP_SWEEP_DELAY);
|
|
18935
|
+
setTimeout(() => {
|
|
18936
|
+
sweep();
|
|
18937
|
+
setInterval(() => void sweep(), SWEEP_EVERY_MS).unref?.();
|
|
18938
|
+
}, Number.isFinite(delay) && delay >= 0 ? delay * 1e3 : FIRST_SWEEP_MS).unref?.();
|
|
18939
|
+
}
|
|
18940
|
+
//#endregion
|
|
18669
18941
|
//#region src/server/workspaces.ts
|
|
18670
18942
|
/** Newest first, and never reordered by use: a row that moves as you
|
|
18671
18943
|
* click or type is worse than a stale order. The nav groups rows by PR
|
|
@@ -19634,6 +19906,8 @@ function syncAgentsMd() {
|
|
|
19634
19906
|
}
|
|
19635
19907
|
function agentsMd(wsId, branch, repos, origin) {
|
|
19636
19908
|
const first = repos[0]?.worktree ?? "<repo>";
|
|
19909
|
+
const tmpKept = tmpAge();
|
|
19910
|
+
const tmpLine = tmpKept === null ? "" : `\n It empties as the machine's \`/tmp\` does: whatever goes ${ageText(tmpKept)}\n untouched there is deleted.`;
|
|
19637
19911
|
const repoLines = repos.map((r) => ` - \`${r.worktree}/\`: ${r.full_name}${r.default_branch === r.base_branch ? "" : ` (base: \`${r.base_branch}\`${r.default_branch ? `, default: \`${r.default_branch}\`` : ""})`}`).join("\n");
|
|
19638
19912
|
const featureBase = !origin && repos.some((r) => r.default_branch && r.default_branch !== r.base_branch);
|
|
19639
19913
|
const backportLine = featureBase ? ` (a backport: from \`origin/<default>\`)` : "";
|
|
@@ -19700,7 +19974,7 @@ ${repoLines}
|
|
|
19700
19974
|
\`[login-after](/w/${wsId}/files?file=.share/<path>)\`, never a bare file
|
|
19701
19975
|
name, which nothing opens (\`work open <path>\` offers it in the app too).
|
|
19702
19976
|
\`.tmp/\` (your \`TMPDIR\`) is scratch the app does not list: a link to a
|
|
19703
|
-
file there opens, but what they should keep seeing belongs in \`.share
|
|
19977
|
+
file there opens, but what they should keep seeing belongs in \`.share/\`.${tmpLine}
|
|
19704
19978
|
Their pastes land in \`.share/pasted/\`.
|
|
19705
19979
|
- **Tell the user** only what the app does not already: it notifies them when
|
|
19706
19980
|
your turn ends or you are waiting on them. For news in the middle of a turn
|
|
@@ -19755,4 +20029,4 @@ ${repoLines}
|
|
|
19755
20029
|
`;
|
|
19756
20030
|
}
|
|
19757
20031
|
//#endregion
|
|
19758
|
-
export {
|
|
20032
|
+
export { paneJobs as $, turnSince as $n, TOOLS as $r, setPoints as $t, clearTmuxStarted as A, interruptedSinceReport as An, PREF_MAX as Ar, lspEnabled as At, killSession as B, onFinished as Bn, preferredAgent as Br, logoutGithub as Bt, workspaceBranches as C, tmux as Ci, inside as Cn, configuredHosts as Cr, stopServers as Ct, agentCaller as D, clearAgentPhase as Dn, normalizeHost as Dr, forgetProbes as Dt, hookToken as E, withLock as Ei, agentPhase as En, isValidHost as Er, forgetCustomServer as Et, disposeSessions as F, notePermissionMode as Fn, deleteSetting as Fr, whileInstalling as Ft, listSessions as G, setAgentPhase as Gn, doctor as Gr, fileChanges as Gt, launchDir as H, onTurnEnd as Hn, setPref as Hr, removeTool as Ht, ensureTmuxServer as I, noteTurnFailed as In, disabledAgents as Ir, authGithub as It, newSessionArgs as J, setSessionViewers as Jn, miseVersions as Jr, readFileAt as Jt, markTmuxStarted as K, setExpecting as Kn, ghKnownHosts as Kr, patchIn as Kt, forgetPanes as L, noteTyped as Ln, enabledAgents as Lr, installAgent as Lt, createSession as M, noteActivity$1 as Mn, agentChoices as Mr, serverById as Mt, creationOf as N, noteBackground as Nn, allPrefs as Nr, serverList as Nt, beginCreation as O, hookPhase as On, removeHost as Or, installKey as Ot, descendantsOf as P, noteInterrupt as Pn, changePref as Pr, sharing as Pt, ownWorkspaceOnly as Q, turnSettling as Qn, PROJECT_TOOLS as Qr, workspaceSections as Qt, getSession as R, noteUserAnswered as Rn, getSetting as Rr, installMise as Rt, withProgressOp as S, git as Si, cleanSummary as Sn, addHost as Sr, stopAllServers as St, ensureAllPushHooks as T, swr as Ti, activityOf as Tn, forgetToken as Tr, allServers as Tt, listPanes as U, onTurnFailed as Un, setSetting as Ur, runStreaming as Ut, killWorkspaceSessions as V, onPhaseChange as Vn, setDisabledAgents as Vr, refreshGithub as Vt, listPanesWithin as W, sessionWatched as Wn, discoverAgents as Wr, updateTool as Wt, notifySessionsChanged as X, summaryOf as Xn, bornOut as Xr, withinBudget as Xt, noteConversation as Y, settleQuietWorking as Yn, which as Yr, reviewWaiting as Yt, onSessionDispose as Z, turnPhase as Zn, firewallProbe as Zr, workspaceDiff as Zt, retryMaterialize as _, get as _i, steerKeys as _n, pendingSsoOrgs as _r, lspQuery as _t, ensureUntrackedCache as a, applyPrefChange as ai, dismissPr as an, ACCENT_RE as ar, restartSession as at, sweepTrash as b, ensureAllCacheConfig as bi, readCache as bn, repoDefaultBranch as br, lspWarm as bt, insertPendingWorkspace as c, checked as ci, refreshPrsBatch as cn, manifest as cr, sessionInfo as ct, progress as d, publish as di, noteActivity as dn, deleteSubscription as dr, tmuxWasStarted as dt, agentById as ei, startSnapSweep as en, agentBadge as er, panePids as et, progressSince as f, publishJson as fi, AGENTS as fn, pushPublicKey as fr, killWorkspaceProc as ft, resumePendingWorkspaces as g, db as gi, reportsWorking as gn, headOid as gr, lspDiagnostics as gt, removeRepo as h, all as hi, readHookPayload as hn, validSubscription as hr, killServers as ht, deleteWorkspace as i, toolById as ii, sectionFor as in, agentMeta as ir, reopenable as it, closedSession as j, lastTypedAt as jn, WORKSPACE_PREFS as jr, removeServer as jt, cleanEnv as k, hookReportedAt as kn, unreachableRepos as kr, installServer as kt, listWorkspaces as l, httpError as li, withoutDismissed as ln, normalizeAccent as lr, sessionStates as lt, queueMaterialize as m, subscriberCount as mi, quotesPastes as mn, sendPush as mr, workspaceProcs as mt, barePath as n, catalogPin as ni, commentFolder as nn, agentFromCommand as nr, renameSession as nt, gcBares as o, FRAME_ANCESTORS as oi, hotBatchMinMs as on, getInstance as or, retireSession as ot, pruneLaneBranch as p, subscribe as pi, interruptKeys as pn, saveSubscription as pr, portsByWorkspace as pt, moveSession as q, setScrapedPhase as qn, miseInstalls as qr, readBlobAt as qt, createWorkspace as r, parseAgentId as ri, markBranch as rn, agentLabel as rr, reopenSession as rt, getWorkspace as s, FRAME_HEADERS as si, notePushActivity as sn, iconSvg as sr, sendToSession as st, addRepo as t, agentLabel$1 as ti, diffStamp as tn, agentFamily as tr, pasteToSession as tt, otherWorkspaceBranches as u, readBody as ui, workspacePrs as un, setInstance as ur, tmuxName as ut, revParse as v, workspacePath as vi, blankRow as vn, repoBranches as vr, lspQueryOf as vt, startTmpSweep as w, config as wi, realInside as wn, ensureGitCredentials as wr, addCustomServer as wt, syncAgentsMd as x, TMUX_SOCKET as xi, writeCache as xn, DEFAULT_HOST as xr, runningServers as xt, setWorkspaceStatus as y, ownsBranchOf as yi, credentialStamp as yn, repoCatalog as yr, lspUses as yt, interruptSession as z, notifyEventOn as zn, isKnownAgent as zr, installTool as zt };
|