@dylanpiercey/work 0.2.3 → 0.2.4
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 +13 -0
- package/bin/work.mjs +6 -0
- package/dist/{_22ZJcGtj.js → _0aVeGp3r.js} +73 -73
- package/dist/{_KRMk2duX.js → _CBAfUPnF.js} +240 -4
- package/dist/_QKOzplQZ.js +2 -0
- package/dist/index.mjs +643 -627
- package/dist/public/assets/_-BaH35o0.js +1 -0
- package/dist/public/assets/{_Xgn2Q7QA.js → _-KMql04r.js} +1 -1
- package/dist/public/assets/_-KMql04r.js.br +0 -0
- package/dist/public/assets/{_BG2c5dsW.js → _-Zb1beo9.js} +1 -1
- package/dist/public/assets/_-Zb1beo9.js.br +0 -0
- package/dist/public/assets/_-nZsDVSE.js +1 -0
- package/dist/public/assets/_0h2wxt86.js +1 -0
- package/dist/public/assets/{_CsWgp2nb.js → _4BAUJfXY.js} +1 -1
- package/dist/public/assets/_4BAUJfXY.js.br +0 -0
- package/dist/public/assets/{_DV5FT1cq.js → _6IMubG63.js} +1 -1
- package/dist/public/assets/_6IMubG63.js.br +0 -0
- package/dist/public/assets/_7jd54Czo.js +1 -0
- package/dist/public/assets/_B05n5akk.js +1 -0
- package/dist/public/assets/{_Cexn18Gf.js → _B2YolsYI.js} +1 -1
- package/dist/public/assets/_B2YolsYI.js.br +0 -0
- package/dist/public/assets/_B2vH4V8M.js +1 -0
- package/dist/public/assets/_BAEfdCJn.js +1 -0
- package/dist/public/assets/{_40vu6pjB.js → _BCZ2fw07.js} +1 -1
- package/dist/public/assets/_BCZ2fw07.js.br +0 -0
- package/dist/public/assets/{_Cn3i_89j.js → _BFPZB_rg.js} +1 -1
- package/dist/public/assets/_BFPZB_rg.js.br +0 -0
- package/dist/public/assets/{_CO8qGhCf.js → _BGaB7eKu.js} +1 -1
- package/dist/public/assets/_BGaB7eKu.js.br +0 -0
- package/dist/public/assets/{_FqQlfvYe.js → _BMbp1xc9.js} +1 -1
- package/dist/public/assets/_BMbp1xc9.js.br +0 -0
- package/dist/public/assets/{_D-OQ6gTY.js → _BNGZ339m.js} +1 -1
- package/dist/public/assets/_BNGZ339m.js.br +0 -0
- package/dist/public/assets/_BQonrRUc.js +1 -0
- package/dist/public/assets/{_DVMHDetJ.js → _BTIqRGRl.js} +1 -1
- package/dist/public/assets/_BTIqRGRl.js.br +0 -0
- package/dist/public/assets/_BXMbcpJz.js +1 -0
- package/dist/public/assets/{_CRW_09K_.js → _BX_fF7jC.js} +1 -1
- package/dist/public/assets/_BX_fF7jC.js.br +0 -0
- package/dist/public/assets/{_CZwuw2-p.js → _B_mmH7ZV.js} +1 -1
- package/dist/public/assets/_B_mmH7ZV.js.br +0 -0
- package/dist/public/assets/_Baup71qH.js +1 -0
- package/dist/public/assets/{_BFucjEre.js → _BbqPuVYz.js} +1 -1
- package/dist/public/assets/_BbqPuVYz.js.br +0 -0
- package/dist/public/assets/_BcfexT_r.js +1 -0
- package/dist/public/assets/{_CQObK-zV.js → _BeyL0BnM.js} +1 -1
- package/dist/public/assets/_BeyL0BnM.js.br +0 -0
- package/dist/public/assets/_BhQ-9qT_.js +1 -0
- package/dist/public/assets/{_DhzN8i-8.js → _Bhf8SvI0.js} +1 -1
- package/dist/public/assets/_Bhf8SvI0.js.br +0 -0
- package/dist/public/assets/{_C2ZMn_xV.js → _BiQSC_DR.js} +1 -1
- package/dist/public/assets/_BiQSC_DR.js.br +0 -0
- package/dist/public/assets/_BjnAkYNz.js +1 -0
- package/dist/public/assets/_BkG_5XIR.js +1 -0
- package/dist/public/assets/{_BAYCi6ni.js → _BkctdlVC.js} +1 -1
- package/dist/public/assets/_BkctdlVC.js.br +0 -0
- package/dist/public/assets/{_BqP5b9Js.js → _Bo_aG2XD.js} +1 -1
- package/dist/public/assets/_Bo_aG2XD.js.br +0 -0
- package/dist/public/assets/_Bp6mBJmh.js +1 -0
- package/dist/public/assets/{_C1mJwh0u.js → _BrH2YWc0.js} +1 -1
- package/dist/public/assets/_BrH2YWc0.js.br +0 -0
- package/dist/public/assets/_BtfmM3TC.js +1 -0
- package/dist/public/assets/{_KTYnlwaC.js → _BvOaZcNk.js} +1 -1
- package/dist/public/assets/_BvOaZcNk.js.br +0 -0
- package/dist/public/assets/_BwSjfLTv.js +1 -0
- package/dist/public/assets/_Byxbc1cJ.js +1 -0
- package/dist/public/assets/{_EYDD6XdR.js → _BzPnXdVY.js} +1 -1
- package/dist/public/assets/_BzPnXdVY.js.br +0 -0
- package/dist/public/assets/{_A_E3xwTy.js → _C-QsDzQl.js} +1 -1
- package/dist/public/assets/_C-QsDzQl.js.br +0 -0
- package/dist/public/assets/{_D41QKmFC.js → _C-dW9Fv0.js} +1 -1
- package/dist/public/assets/_C-dW9Fv0.js.br +0 -0
- package/dist/public/assets/{_BNFztlGk.js → _C0_EI9br.js} +1 -1
- package/dist/public/assets/_C0_EI9br.js.br +0 -0
- package/dist/public/assets/{_sqF7P4ps.js → _C0ndFsE1.js} +1 -1
- package/dist/public/assets/_C0ndFsE1.js.br +0 -0
- package/dist/public/assets/_C62pEUwC.js +1 -0
- package/dist/public/assets/{_BrEiPK5C.js → _C7_Q2xMW.js} +1 -1
- package/dist/public/assets/_C7_Q2xMW.js.br +0 -0
- package/dist/public/assets/{_DjBgn0d9.js → _C9Xow1Ui.js} +1 -1
- package/dist/public/assets/_C9Xow1Ui.js.br +0 -0
- package/dist/public/assets/{_C-4NnUIM.js → _CArbA3_g.js} +1 -1
- package/dist/public/assets/_CArbA3_g.js.br +0 -0
- package/dist/public/assets/{_4VsToA9B.js → _CBjOFYLc.js} +1 -1
- package/dist/public/assets/_CBjOFYLc.js.br +0 -0
- package/dist/public/assets/_CCL5_9cc.js +1 -0
- package/dist/public/assets/{_DoMGm1D6.js → _CD1cgO59.js} +1 -1
- package/dist/public/assets/_CD1cgO59.js.br +0 -0
- package/dist/public/assets/_CFuYvSNf.js +1 -0
- package/dist/public/assets/{_D-tLFHYN.js → _CHSSKM1B.js} +1 -1
- package/dist/public/assets/_CHSSKM1B.js.br +0 -0
- package/dist/public/assets/_CIwnDPeW.js +1 -0
- package/dist/public/assets/{_83sVmsrE.js → _CJHtKw6_.js} +1 -1
- package/dist/public/assets/{_D8CPj1qO.js → _CKrsl3Th.js} +1 -1
- package/dist/public/assets/_CKrsl3Th.js.br +0 -0
- package/dist/public/assets/{_BNIHSGhU.js → _CKs1gTHD.js} +2 -2
- package/dist/public/assets/_CKs1gTHD.js.br +0 -0
- package/dist/public/assets/_CL7WCSGT.js +1 -0
- package/dist/public/assets/{_DazuPVkd.js → _CNJUMI-n.js} +1 -1
- package/dist/public/assets/_CNJUMI-n.js.br +0 -0
- package/dist/public/assets/{_hpcOqr0r.js → _CUv7Qzcn.js} +1 -1
- package/dist/public/assets/_CUv7Qzcn.js.br +0 -0
- package/dist/public/assets/_CVZSKSSn.js +1 -0
- package/dist/public/assets/_CYcdlgGK.js +1 -0
- package/dist/public/assets/{_BnpGH2MM.js → _C_06hwVX.js} +1 -1
- package/dist/public/assets/_C_06hwVX.js.br +0 -0
- package/dist/public/assets/{_Bpy05Rz3.js → _C_kdME78.js} +3 -3
- package/dist/public/assets/_C_kdME78.js.br +0 -0
- package/dist/public/assets/_CasoM6ZN.js +1 -0
- package/dist/public/assets/{_CxuayNVt.js → _Cd_k9q0o.js} +1 -1
- package/dist/public/assets/_Cd_k9q0o.js.br +0 -0
- package/dist/public/assets/{_C06I3LLm.js → _Cf5_6HEX.js} +1 -1
- package/dist/public/assets/_Cf5_6HEX.js.br +0 -0
- package/dist/public/assets/_Cf__yi_m.js +1 -0
- package/dist/public/assets/_Cg2UGMZI.js +1 -0
- package/dist/public/assets/_CiahxxQu.js +1 -0
- package/dist/public/assets/{_5uWjRetR.js → _CmFwG3VA.js} +1 -1
- package/dist/public/assets/_CmFwG3VA.js.br +0 -0
- package/dist/public/assets/_CmlcM6lb.js +1 -0
- package/dist/public/assets/{_XYCe5HBr.js → _CoJkWCeH.js} +1 -1
- package/dist/public/assets/_CoJkWCeH.js.br +0 -0
- package/dist/public/assets/_Cs3O6sjQ.js +1 -0
- package/dist/public/assets/{_D3lhKPvM.js → _Ct3VFQs0.js} +1 -1
- package/dist/public/assets/_Ct3VFQs0.js.br +0 -0
- package/dist/public/assets/{_ajzfUxd5.js → _CtYxrs3o.js} +1 -1
- package/dist/public/assets/_CtYxrs3o.js.br +0 -0
- package/dist/public/assets/{_C_Rq4JG1.js → _CvdLt12h.js} +1 -1
- package/dist/public/assets/_CvdLt12h.js.br +0 -0
- package/dist/public/assets/{_DHmztqRk.js → _Cw2vJLeZ.js} +1 -1
- package/dist/public/assets/_Cw2vJLeZ.js.br +0 -0
- package/dist/public/assets/_CwZ_yH15.js +1 -0
- package/dist/public/assets/{_DQ8yXlAt.js → _Cy2fsSS3.js} +1 -1
- package/dist/public/assets/_Cy2fsSS3.js.br +0 -0
- package/dist/public/assets/_CyImRGgb.js +1 -0
- package/dist/public/assets/{_C204QceO.js → _CyZq6EWU.js} +1 -1
- package/dist/public/assets/_CyZq6EWU.js.br +0 -0
- package/dist/public/assets/_D-1cPTlh.js +1 -0
- package/dist/public/assets/_D-29pP4W.js +1 -0
- package/dist/public/assets/{_CRiNy5d5.js → _D06bIb7L.js} +4 -4
- package/dist/public/assets/_D06bIb7L.js.br +0 -0
- package/dist/public/assets/{_Br3g-GrF.js → _D6cqDEC0.js} +1 -1
- package/dist/public/assets/_D6cqDEC0.js.br +0 -0
- package/dist/public/assets/{_BatLETVj.js → _D7coLdCP.js} +1 -1
- package/dist/public/assets/{_C95R9gUz.js → _D7i9j1_I.js} +1 -1
- package/dist/public/assets/_D7i9j1_I.js.br +0 -0
- package/dist/public/assets/_D7jhcKec.js +1 -0
- package/dist/public/assets/_DBwcJtep.js +1 -0
- package/dist/public/assets/{_BZpi1MW_.js → _DCaRxzju.js} +1 -1
- package/dist/public/assets/_DCaRxzju.js.br +0 -0
- package/dist/public/assets/{_CTQHm9xe.js → _DCbOQgRu.js} +1 -1
- package/dist/public/assets/_DCbOQgRu.js.br +0 -0
- package/dist/public/assets/{_COU5hB51.js → _DF5L9tC4.js} +1 -1
- package/dist/public/assets/_DF5L9tC4.js.br +0 -0
- package/dist/public/assets/{_DZUNnITm.js → _DFci_mEi.js} +1 -1
- package/dist/public/assets/_DFci_mEi.js.br +0 -0
- package/dist/public/assets/_DG2R2PjC.js +1 -0
- package/dist/public/assets/{_hnIqG5G7.js → _DG_kcl-g.js} +1 -1
- package/dist/public/assets/_DG_kcl-g.js.br +0 -0
- package/dist/public/assets/_DGepEi0T.js +1 -0
- package/dist/public/assets/_DI0Y6-PH.js +1 -0
- package/dist/public/assets/_DJb25PXu.js +1 -0
- package/dist/public/assets/_DJoc970g.js +1 -0
- package/dist/public/assets/_DKzM-bnd.js +1 -0
- package/dist/public/assets/{_DtCOQnFU.js → _DNPsNJYS.js} +1 -1
- package/dist/public/assets/_DNPsNJYS.js.br +0 -0
- package/dist/public/assets/{_C5ce7CgX.js → _DOJ6iTaS.js} +1 -1
- package/dist/public/assets/_DOJ6iTaS.js.br +0 -0
- package/dist/public/assets/_DOs8v6-O.js +1 -0
- package/dist/public/assets/{_BNMi9WuF.js → _DPIKg05L.js} +1 -1
- package/dist/public/assets/{_ME8SxhdL.js → _DT7oePYB.js} +1 -1
- package/dist/public/assets/_DT7oePYB.js.br +0 -0
- package/dist/public/assets/{_C2StVKSW.js → _DTT3M8ra.js} +1 -1
- package/dist/public/assets/_DTT3M8ra.js.br +0 -0
- package/dist/public/assets/_DWCVzfS4.js +1 -0
- package/dist/public/assets/_DWPhfHkR.js +1 -0
- package/dist/public/assets/{_CU19mo6c.js → _DZx9glDd.js} +1 -1
- package/dist/public/assets/_DZx9glDd.js.br +0 -0
- package/dist/public/assets/{_CKuJF_iH.js → _D_TLGK-3.js} +1 -1
- package/dist/public/assets/{_BAoC0qRs.js → _DcuV5C_f.js} +1 -1
- package/dist/public/assets/_DcuV5C_f.js.br +0 -0
- package/dist/public/assets/_DdOtyqvl.js +1 -0
- package/dist/public/assets/{_za7TvDJE.js → _Ddgy3xBp.js} +1 -1
- package/dist/public/assets/_Ddgy3xBp.js.br +0 -0
- package/dist/public/assets/{_C8fZdyNY.js → _DdqBWsBC.js} +1 -1
- package/dist/public/assets/_DdqBWsBC.js.br +0 -0
- package/dist/public/assets/{_Cb8MQgar.js → _DgA6xXIR.js} +1 -1
- package/dist/public/assets/_DgA6xXIR.js.br +0 -0
- package/dist/public/assets/{_c3NZ7n3v.js → _DhGdkwrP.js} +1 -1
- package/dist/public/assets/_DhGdkwrP.js.br +0 -0
- package/dist/public/assets/{_BREogqkc.js → _DktdVs5U.js} +1 -1
- package/dist/public/assets/_DktdVs5U.js.br +0 -0
- package/dist/public/assets/{_BD9G8SAI.js → _DnXMkM_E.js} +1 -1
- package/dist/public/assets/_DnXMkM_E.js.br +0 -0
- package/dist/public/assets/_DoQLW41Z.js +1 -0
- package/dist/public/assets/_Dr7t8OQU.js +1 -0
- package/dist/public/assets/_DrxSCh0X.js +1 -0
- package/dist/public/assets/{_BjOIOaiT.js → _Du47tSS5.js} +1 -1
- package/dist/public/assets/_Du47tSS5.js.br +0 -0
- package/dist/public/assets/{_BVdmkVvF.js → _Dv4WXCd3.js} +1 -1
- package/dist/public/assets/_Dv4WXCd3.js.br +0 -0
- package/dist/public/assets/{_Bi3K_PNF.js → _DvByohpe.js} +1 -1
- package/dist/public/assets/_DvByohpe.js.br +0 -0
- package/dist/public/assets/{_DmowM8Ic.js → _Dvd6D8mi.js} +1 -1
- package/dist/public/assets/_Dvd6D8mi.js.br +0 -0
- package/dist/public/assets/_DzuCz99f.js +1 -0
- package/dist/public/assets/_JE-3ASeD.js +1 -0
- package/dist/public/assets/{_DWsX_uW9.js → _JF6DEFdH.js} +7 -7
- package/dist/public/assets/_JF6DEFdH.js.br +0 -0
- package/dist/public/assets/_JRJlpL33.js +1 -0
- package/dist/public/assets/_JetsX5_0.js +1 -0
- package/dist/public/assets/{_jOw0-nfA.js → _KMZo8rXN.js} +1 -1
- package/dist/public/assets/_KMZo8rXN.js.br +0 -0
- package/dist/public/assets/_Nd10IgXX.js +1 -0
- package/dist/public/assets/_NvxrN-9c.js +1 -0
- package/dist/public/assets/_O84ZBO5i.js +1 -0
- package/dist/public/assets/_Oi3FFiM4.js +1 -0
- package/dist/public/assets/_Pn6yz8uh.js +1 -0
- package/dist/public/assets/{_y131Md6t.js → _SZzmSaBg.js} +1 -1
- package/dist/public/assets/_SZzmSaBg.js.br +0 -0
- package/dist/public/assets/_T_2ZjqbO.js +1 -0
- package/dist/public/assets/_UfEwfre0.js +1 -0
- package/dist/public/assets/{_IFkRXRzU.js → _UjkAyUgr.js} +1 -1
- package/dist/public/assets/_UjkAyUgr.js.br +0 -0
- package/dist/public/assets/{_8r9L-9VY.js → _VlgiLy2b.js} +1 -1
- package/dist/public/assets/_VlgiLy2b.js.br +0 -0
- package/dist/public/assets/{_C6N2Y-JE.js → _WVblDLD3.js} +6 -6
- package/dist/public/assets/_WVblDLD3.js.br +0 -0
- package/dist/public/assets/_WloM0CkN.js +1 -0
- package/dist/public/assets/{_qpbnZMAm.js → _Wte34w1P.js} +1 -1
- package/dist/public/assets/_Wte34w1P.js.br +0 -0
- package/dist/public/assets/{_DpT1FBQL.js → _YPYFFfaJ.js} +1 -1
- package/dist/public/assets/_YPYFFfaJ.js.br +0 -0
- package/dist/public/assets/__FuiVQAG.js +1 -0
- package/dist/public/assets/{_Dz80JlHx.js → __QNLL-6I.js} +1 -1
- package/dist/public/assets/__QNLL-6I.js.br +0 -0
- package/dist/public/assets/{_BPlFGH_o.js → _bCSH-jEg.js} +1 -1
- package/dist/public/assets/_bCSH-jEg.js.br +0 -0
- package/dist/public/assets/{_ERj57v2f.js → _eHcHhWyn.js} +1 -1
- package/dist/public/assets/_eHcHhWyn.js.br +0 -0
- package/dist/public/assets/{_DAa9TofW.js → _eivjORhH.js} +1 -1
- package/dist/public/assets/{_Bl1PK0cl.js → _er6oFZMx.js} +1 -1
- package/dist/public/assets/{_D1oVzqlA.js → _gRW8MWWg.js} +1 -1
- package/dist/public/assets/_gRW8MWWg.js.br +0 -0
- package/dist/public/assets/{_BiZJ6M6A.js → _gpX3U1vy.js} +1 -1
- package/dist/public/assets/_gpX3U1vy.js.br +0 -0
- package/dist/public/assets/{_DXTqbi8r.js → _i2IzfCgI.js} +1 -1
- package/dist/public/assets/_i2IzfCgI.js.br +0 -0
- package/dist/public/assets/_itt8jfJz.js +1 -0
- package/dist/public/assets/_j89vjWp7.js +1 -0
- package/dist/public/assets/{_DAkDausF.js → _jmLLcAls.js} +1 -1
- package/dist/public/assets/_jmLLcAls.js.br +0 -0
- package/dist/public/assets/{_DX4bSl0s.js → _jsL_oBa8.js} +1 -1
- package/dist/public/assets/_jsL_oBa8.js.br +0 -0
- package/dist/public/assets/_mKefy6mn.js +1 -0
- package/dist/public/assets/{_MDQFZ3Rt.js → _nKKOqnCC.js} +1 -1
- package/dist/public/assets/_nKKOqnCC.js.br +0 -0
- package/dist/public/assets/_o6eyMyho.js +1 -0
- package/dist/public/assets/{_CXvuWyK0.js → _oz_0ITyF.js} +1 -1
- package/dist/public/assets/_oz_0ITyF.js.br +0 -0
- package/dist/public/assets/{_BkHM28NA.js → _p-qm8ETK.js} +2 -2
- package/dist/public/assets/_p-qm8ETK.js.br +0 -0
- package/dist/public/assets/{_DzEdOagp.js → _q0a340SH.js} +1 -1
- package/dist/public/assets/_q0a340SH.js.br +0 -0
- package/dist/public/assets/_q75fYQxu.js +1 -0
- package/dist/public/assets/_sDmf2vJB.js +1 -0
- package/dist/public/assets/_v5svd5gX.js +1 -0
- package/dist/public/assets/_yVrNk3pW.js +1 -0
- package/dist/public/assets/{_fg65E76B.js → _z3xpFuyM.js} +1 -1
- package/dist/public/assets/_z3xpFuyM.js.br +0 -0
- package/dist/public/assets/{_DCpMCYiE.js → _zakrJGBE.js} +1 -1
- package/dist/public/assets/_zakrJGBE.js.br +0 -0
- package/dist/public/assets/files-view-rxokk9dM.js +2 -0
- package/dist/public/assets/manage-workspace-BQ0m7wt6.js +2 -0
- package/dist/public/assets/new-Dg28x8OY.js +1 -0
- package/dist/public/assets/new-workspace-4VjpAPmG.js +2 -0
- package/dist/public/assets/review-view-BkMWOGsX.js +2 -0
- package/dist/public/assets/settings-Dg28x8OY.js +1 -0
- package/dist/public/assets/settings-page-xLuXZ319.js +2 -0
- package/dist/public/assets/{styles-mjkw6XVV.css → styles-Cf6yv4En.css} +1 -1
- package/dist/public/assets/styles-Cf6yv4En.css.br +0 -0
- package/dist/public/assets/w-Dg28x8OY.js +1 -0
- package/dist/public/assets/w._-BzL9XmMh.js +1 -0
- package/dist/public/assets/w._-DY12219n.js +1 -0
- package/dist/public/assets/w._-Dg28x8OY.js +1 -0
- package/lib/setup/doctor.d.mts +5 -0
- package/lib/setup/doctor.mjs +6 -0
- package/lib/setup/untracked-cache.d.mts +34 -0
- package/lib/setup/untracked-cache.mjs +281 -0
- package/package.json +1 -1
- package/dist/_ZwD1NY8D.js +0 -2
- package/dist/public/assets/_40vu6pjB.js.br +0 -0
- package/dist/public/assets/_4VsToA9B.js.br +0 -0
- package/dist/public/assets/_4b6fTueA.js +0 -1
- package/dist/public/assets/_5UQYUstJ.js +0 -1
- package/dist/public/assets/_5uWjRetR.js.br +0 -0
- package/dist/public/assets/_8r9L-9VY.js.br +0 -0
- package/dist/public/assets/_A_E3xwTy.js.br +0 -0
- package/dist/public/assets/_B1nFcjBS.js +0 -1
- package/dist/public/assets/_B9crCH-D.js +0 -1
- package/dist/public/assets/_BAYCi6ni.js.br +0 -0
- package/dist/public/assets/_BAoC0qRs.js.br +0 -0
- package/dist/public/assets/_BD9G8SAI.js.br +0 -0
- package/dist/public/assets/_BFucjEre.js.br +0 -0
- package/dist/public/assets/_BG2c5dsW.js.br +0 -0
- package/dist/public/assets/_BIkBlb5V.js +0 -1
- package/dist/public/assets/_BIxxnn6B.js +0 -1
- package/dist/public/assets/_BMECr17a.js +0 -1
- package/dist/public/assets/_BNFztlGk.js.br +0 -0
- package/dist/public/assets/_BNIHSGhU.js.br +0 -0
- package/dist/public/assets/_BNztKl9G.js +0 -1
- package/dist/public/assets/_BPlFGH_o.js.br +0 -0
- package/dist/public/assets/_BQ9TQ0w9.js +0 -1
- package/dist/public/assets/_BQzlfu_A.js +0 -1
- package/dist/public/assets/_BREogqkc.js.br +0 -0
- package/dist/public/assets/_BUrIkYGg.js +0 -1
- package/dist/public/assets/_BVdmkVvF.js.br +0 -0
- package/dist/public/assets/_BZpi1MW_.js.br +0 -0
- package/dist/public/assets/_BgDbcHZ4.js +0 -1
- package/dist/public/assets/_Bi3K_PNF.js.br +0 -0
- package/dist/public/assets/_BiS6HfVD.js +0 -1
- package/dist/public/assets/_BiZJ6M6A.js.br +0 -0
- package/dist/public/assets/_BjOIOaiT.js.br +0 -0
- package/dist/public/assets/_Bjy8hUtC.js +0 -1
- package/dist/public/assets/_BkHM28NA.js.br +0 -0
- package/dist/public/assets/_Bkr5fMX1.js +0 -1
- package/dist/public/assets/_BnpGH2MM.js.br +0 -0
- package/dist/public/assets/_Bpy05Rz3.js.br +0 -0
- package/dist/public/assets/_BqP5b9Js.js.br +0 -0
- package/dist/public/assets/_Br3g-GrF.js.br +0 -0
- package/dist/public/assets/_BrEiPK5C.js.br +0 -0
- package/dist/public/assets/_BtMM1k2B.js +0 -1
- package/dist/public/assets/_C--8To02.js +0 -1
- package/dist/public/assets/_C-4NnUIM.js.br +0 -0
- package/dist/public/assets/_C06I3LLm.js.br +0 -0
- package/dist/public/assets/_C1mJwh0u.js.br +0 -0
- package/dist/public/assets/_C204QceO.js.br +0 -0
- package/dist/public/assets/_C2I5lOqp.js +0 -1
- package/dist/public/assets/_C2StVKSW.js.br +0 -0
- package/dist/public/assets/_C2ZMn_xV.js.br +0 -0
- package/dist/public/assets/_C3Dbi3Be.js +0 -1
- package/dist/public/assets/_C4NRfzG7.js +0 -1
- package/dist/public/assets/_C5ce7CgX.js.br +0 -0
- package/dist/public/assets/_C6N2Y-JE.js.br +0 -0
- package/dist/public/assets/_C6Nc97k4.js +0 -1
- package/dist/public/assets/_C8fZdyNY.js.br +0 -0
- package/dist/public/assets/_C95R9gUz.js.br +0 -0
- package/dist/public/assets/_CArLoLBv.js +0 -1
- package/dist/public/assets/_CDSiKfUM.js +0 -1
- package/dist/public/assets/_CGHQS5qu.js +0 -1
- package/dist/public/assets/_CKQ_sRVP.js +0 -1
- package/dist/public/assets/_CO8qGhCf.js.br +0 -0
- package/dist/public/assets/_COU5hB51.js.br +0 -0
- package/dist/public/assets/_CPT5gcz6.js +0 -1
- package/dist/public/assets/_CPdnD9rC.js +0 -1
- package/dist/public/assets/_CQObK-zV.js.br +0 -0
- package/dist/public/assets/_CRW_09K_.js.br +0 -0
- package/dist/public/assets/_CRiNy5d5.js.br +0 -0
- package/dist/public/assets/_CSaqUoH5.js +0 -1
- package/dist/public/assets/_CTQHm9xe.js.br +0 -0
- package/dist/public/assets/_CU19mo6c.js.br +0 -0
- package/dist/public/assets/_CWlBstvf.js +0 -1
- package/dist/public/assets/_CX-K_hge.js +0 -1
- package/dist/public/assets/_CXsIXsHf.js +0 -1
- package/dist/public/assets/_CXvuWyK0.js.br +0 -0
- package/dist/public/assets/_CYK4NYKF.js +0 -1
- package/dist/public/assets/_CZwuw2-p.js.br +0 -0
- package/dist/public/assets/_C_Rq4JG1.js.br +0 -0
- package/dist/public/assets/_Caao6gnt.js +0 -1
- package/dist/public/assets/_Cb8MQgar.js.br +0 -0
- package/dist/public/assets/_Cexn18Gf.js.br +0 -0
- package/dist/public/assets/_Cez5jeQ3.js +0 -1
- package/dist/public/assets/_CfF6EpTr.js +0 -1
- package/dist/public/assets/_Cn3i_89j.js.br +0 -0
- package/dist/public/assets/_CsWgp2nb.js.br +0 -0
- package/dist/public/assets/_CuvH34sA.js +0 -1
- package/dist/public/assets/_Cw0WiTIy.js +0 -1
- package/dist/public/assets/_CwQnPuk6.js +0 -1
- package/dist/public/assets/_CxhD0aWE.js +0 -1
- package/dist/public/assets/_CxuayNVt.js.br +0 -0
- package/dist/public/assets/_CzKTCTaq.js +0 -1
- package/dist/public/assets/_D-OQ6gTY.js.br +0 -0
- package/dist/public/assets/_D-tLFHYN.js.br +0 -0
- package/dist/public/assets/_D1oVzqlA.js.br +0 -0
- package/dist/public/assets/_D33FOujy.js +0 -1
- package/dist/public/assets/_D3lhKPvM.js.br +0 -0
- package/dist/public/assets/_D41QKmFC.js.br +0 -0
- package/dist/public/assets/_D51xAv9r.js +0 -1
- package/dist/public/assets/_D5nZD7eD.js +0 -1
- package/dist/public/assets/_D8CPj1qO.js.br +0 -0
- package/dist/public/assets/_D9vVVOIn.js +0 -1
- package/dist/public/assets/_DAkDausF.js.br +0 -0
- package/dist/public/assets/_DCpMCYiE.js.br +0 -0
- package/dist/public/assets/_DEXYHaYS.js +0 -1
- package/dist/public/assets/_DHmztqRk.js.br +0 -0
- package/dist/public/assets/_DKhOdMwP.js +0 -1
- package/dist/public/assets/_DQ8yXlAt.js.br +0 -0
- package/dist/public/assets/_DS41GJgp.js +0 -1
- package/dist/public/assets/_DV5FT1cq.js.br +0 -0
- package/dist/public/assets/_DVMHDetJ.js.br +0 -0
- package/dist/public/assets/_DVnPb5rQ.js +0 -1
- package/dist/public/assets/_DW9T2oLl.js +0 -1
- package/dist/public/assets/_DWsX_uW9.js.br +0 -0
- package/dist/public/assets/_DX4bSl0s.js.br +0 -0
- package/dist/public/assets/_DXTqbi8r.js.br +0 -0
- package/dist/public/assets/_DXx7FwDH.js +0 -1
- package/dist/public/assets/_DZUNnITm.js.br +0 -0
- package/dist/public/assets/_DaN45TKC.js +0 -1
- package/dist/public/assets/_DazuPVkd.js.br +0 -0
- package/dist/public/assets/_DbXpwzFM.js +0 -1
- package/dist/public/assets/_Dc80eYDG.js +0 -1
- package/dist/public/assets/_DcuOYNuY.js +0 -1
- package/dist/public/assets/_DgZ9ZooU.js +0 -1
- package/dist/public/assets/_DhXbhPYD.js +0 -1
- package/dist/public/assets/_DhzN8i-8.js.br +0 -0
- package/dist/public/assets/_DjBgn0d9.js.br +0 -0
- package/dist/public/assets/_DmowM8Ic.js.br +0 -0
- package/dist/public/assets/_DoMGm1D6.js.br +0 -0
- package/dist/public/assets/_DoRDdc0E.js +0 -1
- package/dist/public/assets/_DouwKMqP.js +0 -1
- package/dist/public/assets/_DpT1FBQL.js.br +0 -0
- package/dist/public/assets/_DqWo7EId.js +0 -1
- package/dist/public/assets/_DtCOQnFU.js.br +0 -0
- package/dist/public/assets/_DxCfNrwt.js +0 -1
- package/dist/public/assets/_Dz80JlHx.js.br +0 -0
- package/dist/public/assets/_DzEdOagp.js.br +0 -0
- package/dist/public/assets/_ERj57v2f.js.br +0 -0
- package/dist/public/assets/_EYDD6XdR.js.br +0 -0
- package/dist/public/assets/_FqQlfvYe.js.br +0 -0
- package/dist/public/assets/_IFkRXRzU.js.br +0 -0
- package/dist/public/assets/_JgiLBims.js +0 -1
- package/dist/public/assets/_KTYnlwaC.js.br +0 -0
- package/dist/public/assets/_L4X29MSj.js +0 -1
- package/dist/public/assets/_MDQFZ3Rt.js.br +0 -0
- package/dist/public/assets/_ME8SxhdL.js.br +0 -0
- package/dist/public/assets/_QlMykZD9.js +0 -1
- package/dist/public/assets/_T965C61_.js +0 -1
- package/dist/public/assets/_TZOS55wO.js +0 -1
- package/dist/public/assets/_VXxx_YyF.js +0 -1
- package/dist/public/assets/_XYCe5HBr.js.br +0 -0
- package/dist/public/assets/_Xgn2Q7QA.js.br +0 -0
- package/dist/public/assets/_XjXKgxUm.js +0 -1
- package/dist/public/assets/_ajzfUxd5.js.br +0 -0
- package/dist/public/assets/_c3NZ7n3v.js.br +0 -0
- package/dist/public/assets/_fg65E76B.js.br +0 -0
- package/dist/public/assets/_hnIqG5G7.js.br +0 -0
- package/dist/public/assets/_hpcOqr0r.js.br +0 -0
- package/dist/public/assets/_i9E9rfmR.js +0 -1
- package/dist/public/assets/_jOw0-nfA.js.br +0 -0
- package/dist/public/assets/_lkU1EFgO.js +0 -1
- package/dist/public/assets/_qpbnZMAm.js.br +0 -0
- package/dist/public/assets/_sqF7P4ps.js.br +0 -0
- package/dist/public/assets/_vz-DSsqW.js +0 -1
- package/dist/public/assets/_wblybLRB.js +0 -1
- package/dist/public/assets/_y131Md6t.js.br +0 -0
- package/dist/public/assets/_za7TvDJE.js.br +0 -0
- package/dist/public/assets/files-view-CcOqGI93.js +0 -2
- package/dist/public/assets/manage-workspace-DrjDbGy-.js +0 -2
- package/dist/public/assets/new-workspace-CWEOveUX.js +0 -2
- package/dist/public/assets/new-x5ut6u2L.js +0 -1
- package/dist/public/assets/review-view-BOkPXkJr.js +0 -2
- package/dist/public/assets/settings-page-HcpiFu5I.js +0 -2
- package/dist/public/assets/settings-x5ut6u2L.js +0 -1
- package/dist/public/assets/styles-mjkw6XVV.css.br +0 -0
- package/dist/public/assets/w-x5ut6u2L.js +0 -1
- package/dist/public/assets/w._-BFTFbL6S.js +0 -1
- package/dist/public/assets/w._-BwCim0jU.js +0 -1
- package/dist/public/assets/w._-x5ut6u2L.js +0 -1
package/README.md
CHANGED
|
@@ -115,6 +115,19 @@ macOS's firewall admits programs rather than ports, so there it is the
|
|
|
115
115
|
node the service runs that `work doctor` checks and `work setup` lets in. `WORK_RTC_STUN` names the STUN servers that find this machine's
|
|
116
116
|
public address (Cloudflare's by default; empty for none).
|
|
117
117
|
|
|
118
|
+
**A faster `git status`.** Listing a large repo's untracked files is most
|
|
119
|
+
of what `git status` costs, and work asks it of every checkout and topic
|
|
120
|
+
branch's worktree. So the service turns on git's untracked cache
|
|
121
|
+
(`core.untrackedCache`) in the repos work keeps (`<work root>/.cache`, whose
|
|
122
|
+
worktrees are every workspace's checkouts), after which git reads again
|
|
123
|
+
only the directories that changed; your agents' own `git status` gets
|
|
124
|
+
faster too. It relies on directory modification times, so it is only
|
|
125
|
+
turned on where the work root is a local filesystem with fine timestamps
|
|
126
|
+
(not NFS, SMB, FUSE mounts, HFS+ or FAT) and git's own check passes there.
|
|
127
|
+
A repo set `core.untrackedCache=false` is left alone, and
|
|
128
|
+
`git config --global core.untrackedCache false` keeps it off everywhere;
|
|
129
|
+
`work doctor` says which it is.
|
|
130
|
+
|
|
118
131
|
**Opening workspace ports remotely.** The port chips in the sidebar link to
|
|
119
132
|
`http://<host>:<port>`, which only works where the machine is reachable
|
|
120
133
|
directly — under a tailnet name too, since `tailscale serve` has no
|
package/bin/work.mjs
CHANGED
|
@@ -893,9 +893,15 @@ function doctorOpts() {
|
|
|
893
893
|
listen: env.WORK_LISTEN,
|
|
894
894
|
rtc: env.WORK_RTC || "",
|
|
895
895
|
firewall: serviceFirewall(),
|
|
896
|
+
workRoot: serviceWorkRoot(),
|
|
896
897
|
};
|
|
897
898
|
}
|
|
898
899
|
|
|
900
|
+
/** The work root the service uses: where its repo caches are. */
|
|
901
|
+
function serviceWorkRoot() {
|
|
902
|
+
return serviceEnv().WORK_ROOT || path.join(os.homedir(), "work");
|
|
903
|
+
}
|
|
904
|
+
|
|
899
905
|
/**
|
|
900
906
|
* The host firewall as the service meets it. macOS's admits programs, so
|
|
901
907
|
* the node that counts is the one the service runs, which need not be this
|
|
@@ -38,7 +38,7 @@ var iconBtnXs = "_bo _m";
|
|
|
38
38
|
var iconBtnRow = "_bp _m";
|
|
39
39
|
var iconBtnLg = "_bq _m";
|
|
40
40
|
var chipBtn = "_br _m";
|
|
41
|
-
var tocDot = "
|
|
41
|
+
var tocDot = "_dA _U";
|
|
42
42
|
//#endregion
|
|
43
43
|
//#region src/styles/tokens.css.ts
|
|
44
44
|
var color = {
|
|
@@ -73,97 +73,97 @@ var iconSize = {
|
|
|
73
73
|
xl: 18
|
|
74
74
|
};
|
|
75
75
|
var toastKind = {
|
|
76
|
-
error: "
|
|
77
|
-
warn: "
|
|
78
|
-
info: "
|
|
76
|
+
error: "_bP",
|
|
77
|
+
warn: "_bQ",
|
|
78
|
+
info: "_bR"
|
|
79
79
|
};
|
|
80
80
|
var toastTitle = {
|
|
81
|
-
error: "
|
|
82
|
-
warn: "
|
|
83
|
-
info: "
|
|
81
|
+
error: "_bS",
|
|
82
|
+
warn: "_bT",
|
|
83
|
+
info: "_bU"
|
|
84
84
|
};
|
|
85
85
|
//#endregion
|
|
86
86
|
//#region src/tags/settings-agents.css.ts
|
|
87
|
-
var agentRow = "_fp
|
|
88
|
-
var list$3 = "
|
|
89
|
-
var metaChip = "
|
|
90
|
-
var sectionCount = "
|
|
91
|
-
var usageNote = "
|
|
92
|
-
var pop$2 = "
|
|
93
|
-
var spinner = "
|
|
94
|
-
var toolLead = "
|
|
95
|
-
var name$4 = "
|
|
96
|
-
var desc$1 = "
|
|
87
|
+
var agentRow = "_fp _d1";
|
|
88
|
+
var list$3 = "_d5 _dl _d0 _d3";
|
|
89
|
+
var metaChip = "_ei _bi _bh";
|
|
90
|
+
var sectionCount = "_di _9 __";
|
|
91
|
+
var usageNote = "_jO _bh";
|
|
92
|
+
var pop$2 = "_hh _bw";
|
|
93
|
+
var spinner = "_hk _bm _2";
|
|
94
|
+
var toolLead = "_g3 _ed";
|
|
95
|
+
var name$4 = "_hr _ed";
|
|
96
|
+
var desc$1 = "_hs _ee";
|
|
97
97
|
//#endregion
|
|
98
98
|
//#region src/tags/lsp-add-dialog.css.ts
|
|
99
|
-
var addDlg = "
|
|
100
|
-
var key$1 = "
|
|
101
|
-
var addTile = "
|
|
102
|
-
var field$2 = "
|
|
103
|
-
var keyField = "
|
|
104
|
-
var labelField = "
|
|
105
|
-
var detailsToggle = "
|
|
106
|
-
var themeSeg = "
|
|
107
|
-
var checkList = "
|
|
99
|
+
var addDlg = "_lj _bG";
|
|
100
|
+
var key$1 = "_ly _lw";
|
|
101
|
+
var addTile = "_lA _lw";
|
|
102
|
+
var field$2 = "_lL _bj";
|
|
103
|
+
var keyField = "_lM _lL _bj";
|
|
104
|
+
var labelField = "_lN _lL _bj";
|
|
105
|
+
var detailsToggle = "_ga _P";
|
|
106
|
+
var themeSeg = "_fB _bA";
|
|
107
|
+
var checkList = "_hG _dj";
|
|
108
108
|
//#endregion
|
|
109
109
|
//#region src/tags/prompt-dialog.css.ts
|
|
110
|
-
var promptDlg = "
|
|
111
|
-
var item$1 = "
|
|
112
|
-
var glance = "
|
|
110
|
+
var promptDlg = "_bK _bG";
|
|
111
|
+
var item$1 = "_cB _m";
|
|
112
|
+
var glance = "_dX _m";
|
|
113
113
|
//#endregion
|
|
114
114
|
//#region src/tags/side-nav.css.ts
|
|
115
|
-
var iconBtn = "
|
|
116
|
-
var settingsDot = "
|
|
117
|
-
var notifyBtn = "
|
|
115
|
+
var iconBtn = "_b2 _m";
|
|
116
|
+
var settingsDot = "_b3 _bz";
|
|
117
|
+
var notifyBtn = "_b8 _m";
|
|
118
118
|
//#endregion
|
|
119
119
|
//#region src/styles/session-pop.css.ts
|
|
120
|
-
var sessionPop = "
|
|
121
|
-
var sessionPopBtn = "
|
|
122
|
-
var wsBtn = "
|
|
123
|
-
var rowIcon = "
|
|
124
|
-
var prChip = "
|
|
125
|
-
var readyChip = "
|
|
126
|
-
var prDot = "
|
|
120
|
+
var sessionPop = "_b0 _bw";
|
|
121
|
+
var sessionPopBtn = "_b1 _4";
|
|
122
|
+
var wsBtn = "_eP _4";
|
|
123
|
+
var rowIcon = "_eR _bo _m";
|
|
124
|
+
var prChip = "_ki _v _kc";
|
|
125
|
+
var readyChip = "_kj _v";
|
|
126
|
+
var prDot = "_kl _kk";
|
|
127
127
|
//#endregion
|
|
128
128
|
//#region src/tags/port-chip.css.ts
|
|
129
|
-
var port = "
|
|
130
|
-
var open = "
|
|
131
|
-
var action = "
|
|
132
|
-
var toggle = "
|
|
133
|
-
var fold = "
|
|
134
|
-
var item = "
|
|
135
|
-
var menu = "
|
|
136
|
-
var menuItem = "
|
|
137
|
-
var findBtn$1 = "
|
|
129
|
+
var port = "_nz _v _kc";
|
|
130
|
+
var open = "_j0 _4";
|
|
131
|
+
var action = "_j4 _br _m";
|
|
132
|
+
var toggle = "_en _P";
|
|
133
|
+
var fold = "_eo _d2";
|
|
134
|
+
var item = "_j_ _4";
|
|
135
|
+
var menu = "_mw _b0 _bw";
|
|
136
|
+
var menuItem = "_my _4";
|
|
137
|
+
var findBtn$1 = "_iB _im _bp _m";
|
|
138
138
|
var tool = "_im _bp _m";
|
|
139
|
-
var pop$1 = "
|
|
140
|
-
var fileFilter = "
|
|
141
|
-
var findInput = "
|
|
142
|
-
var keybarIconBtn = "
|
|
143
|
-
var repoTitle = "
|
|
144
|
-
var input = "
|
|
145
|
-
var group = "
|
|
146
|
-
var hint$1 = "
|
|
147
|
-
var sheetDir = "
|
|
148
|
-
var upBtn = "
|
|
149
|
-
var findBtn = "
|
|
150
|
-
var goBtn = "
|
|
151
|
-
var note = "
|
|
139
|
+
var pop$1 = "_lV _b0 _bw";
|
|
140
|
+
var fileFilter = "_nX _o";
|
|
141
|
+
var findInput = "_e6 _o";
|
|
142
|
+
var keybarIconBtn = "_fe _br _m";
|
|
143
|
+
var repoTitle = "_md _L";
|
|
144
|
+
var input = "_cZ _o";
|
|
145
|
+
var group = "_c2 _P";
|
|
146
|
+
var hint$1 = "_ml _9 _M";
|
|
147
|
+
var sheetDir = "_mV _by";
|
|
148
|
+
var upBtn = "_jf _bp _m";
|
|
149
|
+
var findBtn = "_jj _im _bp _m";
|
|
150
|
+
var goBtn = "_jk _im _bp _m";
|
|
151
|
+
var note = "_l5 _bh";
|
|
152
152
|
//#endregion
|
|
153
153
|
//#region src/tags/manage-workspace.css.ts
|
|
154
|
-
var procCmd = "
|
|
155
|
-
var factCopy = "
|
|
156
|
-
var resultRow = "
|
|
157
|
-
var resultBranch = "
|
|
158
|
-
var urlAction = "
|
|
159
|
-
var curRow = "
|
|
154
|
+
var procCmd = "_gy _ed";
|
|
155
|
+
var factCopy = "_gF _br _m";
|
|
156
|
+
var resultRow = "_kW _4";
|
|
157
|
+
var resultBranch = "_kX _ei _bi _bh _bo _m";
|
|
158
|
+
var urlAction = "_kY _ei _bi _bh _ej";
|
|
159
|
+
var curRow = "_gN _d8";
|
|
160
160
|
//#endregion
|
|
161
161
|
//#region src/tags/join-dialog.css.ts
|
|
162
|
-
var dlg = "
|
|
163
|
-
var hint = "
|
|
164
|
-
var kbtn = "
|
|
165
|
-
var repeat = "
|
|
166
|
-
var dpadUser = "
|
|
167
|
-
var dpadEsc = "
|
|
162
|
+
var dlg = "_la _bG";
|
|
163
|
+
var hint = "_lb _bh";
|
|
164
|
+
var kbtn = "_cP _bq _m";
|
|
165
|
+
var repeat = "_cS _cR";
|
|
166
|
+
var dpadUser = "_cV _cR";
|
|
167
|
+
var dpadEsc = "_cW _cR";
|
|
168
168
|
//#endregion
|
|
169
169
|
export { field$2 as $, item as A, tone as At, wsBtn as B, keybarIconBtn as C, glyphBadgeNum as Ct, findBtn$1 as D, inputLg as Dt, tool as E, iconBtnXs as Et, port as F, settingsDot as G, sessionPopBtn as H, prChip as I, promptDlg as J, glance as K, prDot as L, toggle as M, usageInk as Mt, action as N, menu as O, phaseIcon as Ot, open as P, addTile as Q, readyChip as R, findInput as S, chipBtn as St, pop$1 as T, iconBtnRow as Tt, iconBtn as U, sessionPop as V, notifyBtn as W, themeSeg as X, checkList as Y, detailsToggle as Z, sheetDir as _, iconSize as _t, dlg as a, name$4 as at, input as b, btnLg as bt, resultBranch as c, spinner as ct, factCopy as d, list$3 as dt, key$1 as et, procCmd as f, metaChip as ft, upBtn as g, color as gt, goBtn as h, toastTitle as ht, repeat as i, desc$1 as it, fold as j, usageFill as jt, menuItem as k, prTone as kt, resultRow as l, usageNote as lt, findBtn as m, toastKind as mt, dpadUser as n, labelField as nt, hint as o, toolLead as ot, note as p, agentRow as pt, item$1 as q, kbtn as r, addDlg as rt, curRow as s, pop$2 as st, dpadEsc as t, keyField as tt, urlAction as u, sectionCount as ut, hint$1 as v, sans as vt, fileFilter as w, iconBtnLg as wt, repoTitle as x, btnSm as xt, group as y, tocDot as yt, rowIcon as z };
|
|
@@ -4,7 +4,7 @@ import { t as require_safe_buffer } from "./_BmSjjJ2E.js";
|
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import fs from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
7
|
-
import { execFile, execFileSync, spawnSync } from "node:child_process";
|
|
7
|
+
import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
|
|
8
8
|
import fs$1 from "node:fs/promises";
|
|
9
9
|
import os from "node:os";
|
|
10
10
|
import { promisify } from "node:util";
|
|
@@ -1402,6 +1402,241 @@ function run$1(cmd, args) {
|
|
|
1402
1402
|
})));
|
|
1403
1403
|
}
|
|
1404
1404
|
//#endregion
|
|
1405
|
+
//#region lib/setup/untracked-cache.mjs
|
|
1406
|
+
/** Every repo cache under the work root. */
|
|
1407
|
+
function repoCaches(workRoot) {
|
|
1408
|
+
const root = path.join(workRoot, ".cache");
|
|
1409
|
+
const out = [];
|
|
1410
|
+
for (const host of subdirs(root)) for (const owner of subdirs(path.join(root, host))) for (const name of subdirs(path.join(root, host, owner))) if (name.endsWith(".git")) out.push(path.join(root, host, owner, name));
|
|
1411
|
+
return out;
|
|
1412
|
+
}
|
|
1413
|
+
function subdirs(dir) {
|
|
1414
|
+
try {
|
|
1415
|
+
return fs.readdirSync(dir, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => e.name);
|
|
1416
|
+
} catch {
|
|
1417
|
+
return [];
|
|
1418
|
+
}
|
|
1419
|
+
}
|
|
1420
|
+
/** A cache's `core.untrackedCache`: true, false, or undefined (unset, or
|
|
1421
|
+
* git's `keep`). Read from its config file rather than a git process per
|
|
1422
|
+
* repo: the doctor asks on every Settings load. */
|
|
1423
|
+
function untrackedCacheSetting(cache) {
|
|
1424
|
+
let text;
|
|
1425
|
+
try {
|
|
1426
|
+
text = fs.readFileSync(path.join(cache, "config"), "utf8");
|
|
1427
|
+
} catch {
|
|
1428
|
+
return;
|
|
1429
|
+
}
|
|
1430
|
+
let inCore = false;
|
|
1431
|
+
let value;
|
|
1432
|
+
for (const raw of text.split("\n")) {
|
|
1433
|
+
const line = raw.replace(/[#;].*$/, "").trim();
|
|
1434
|
+
const section = /^\[\s*([^\]\s"]+)/.exec(line);
|
|
1435
|
+
if (section) {
|
|
1436
|
+
inCore = section[1].toLowerCase() === "core";
|
|
1437
|
+
continue;
|
|
1438
|
+
}
|
|
1439
|
+
const kv = inCore && /^untrackedcache\s*=\s*(.*)$/i.exec(line);
|
|
1440
|
+
if (kv) value = kv[1].trim().toLowerCase();
|
|
1441
|
+
}
|
|
1442
|
+
if ([
|
|
1443
|
+
"true",
|
|
1444
|
+
"yes",
|
|
1445
|
+
"on",
|
|
1446
|
+
"1"
|
|
1447
|
+
].includes(value)) return true;
|
|
1448
|
+
if ([
|
|
1449
|
+
"false",
|
|
1450
|
+
"no",
|
|
1451
|
+
"off",
|
|
1452
|
+
"0"
|
|
1453
|
+
].includes(value)) return false;
|
|
1454
|
+
}
|
|
1455
|
+
/** Filesystems whose directory mtimes the cache cannot trust. Linux's
|
|
1456
|
+
* statfs magic numbers. */
|
|
1457
|
+
var LINUX_UNSAFE = /* @__PURE__ */ new Map([
|
|
1458
|
+
[26985, "NFS"],
|
|
1459
|
+
[20859, "SMB"],
|
|
1460
|
+
[4266872130, "SMB2"],
|
|
1461
|
+
[4283649346, "CIFS"],
|
|
1462
|
+
[1702057286, "FUSE"],
|
|
1463
|
+
[16914839, "9p"],
|
|
1464
|
+
[12805120, "Ceph"],
|
|
1465
|
+
[1397113167, "AFS"],
|
|
1466
|
+
[19780, "FAT"],
|
|
1467
|
+
[538032816, "exFAT"]
|
|
1468
|
+
]);
|
|
1469
|
+
/** macOS's by `mount`'s type name: network, FUSE, and those with
|
|
1470
|
+
* second-or-coarser mtimes (HFS+, FAT). */
|
|
1471
|
+
var MAC_UNSAFE = /^(nfs|smbfs|afpfs|webdav|cifs|macfuse|osxfuse|fuse.*|hfs|msdos|exfat)$/;
|
|
1472
|
+
/**
|
|
1473
|
+
* Whether the filesystem holding `dir` can keep the cache honest, from its
|
|
1474
|
+
* type alone (cheap: the doctor's). `{ ok, type }`, `type` a name where
|
|
1475
|
+
* one is known.
|
|
1476
|
+
*/
|
|
1477
|
+
function filesystemVerdict(dir, platform = process.platform) {
|
|
1478
|
+
if (platform === "linux") try {
|
|
1479
|
+
const { type } = fs.statfsSync(dir);
|
|
1480
|
+
const bad = LINUX_UNSAFE.get(type >>> 0);
|
|
1481
|
+
return bad ? {
|
|
1482
|
+
ok: false,
|
|
1483
|
+
type: bad
|
|
1484
|
+
} : { ok: true };
|
|
1485
|
+
} catch {
|
|
1486
|
+
return {
|
|
1487
|
+
ok: false,
|
|
1488
|
+
type: "unknown"
|
|
1489
|
+
};
|
|
1490
|
+
}
|
|
1491
|
+
if (platform === "darwin") {
|
|
1492
|
+
const mount = macMount(dir);
|
|
1493
|
+
if (!mount) return {
|
|
1494
|
+
ok: false,
|
|
1495
|
+
type: "unknown"
|
|
1496
|
+
};
|
|
1497
|
+
if (!mount.local) return {
|
|
1498
|
+
ok: false,
|
|
1499
|
+
type: `${mount.type} (not local)`
|
|
1500
|
+
};
|
|
1501
|
+
return MAC_UNSAFE.test(mount.type) ? {
|
|
1502
|
+
ok: false,
|
|
1503
|
+
type: mount.type
|
|
1504
|
+
} : {
|
|
1505
|
+
ok: true,
|
|
1506
|
+
type: mount.type
|
|
1507
|
+
};
|
|
1508
|
+
}
|
|
1509
|
+
return {
|
|
1510
|
+
ok: false,
|
|
1511
|
+
type: platform
|
|
1512
|
+
};
|
|
1513
|
+
}
|
|
1514
|
+
/** The mount holding `dir` on macOS. */
|
|
1515
|
+
function macMount(dir) {
|
|
1516
|
+
let out;
|
|
1517
|
+
try {
|
|
1518
|
+
out = execFileSync("/sbin/mount", { encoding: "utf8" });
|
|
1519
|
+
} catch {
|
|
1520
|
+
return null;
|
|
1521
|
+
}
|
|
1522
|
+
let at = dir;
|
|
1523
|
+
try {
|
|
1524
|
+
at = fs.realpathSync(dir);
|
|
1525
|
+
} catch {}
|
|
1526
|
+
return mountOf(at, out);
|
|
1527
|
+
}
|
|
1528
|
+
/** Of `mount`'s `<dev> on <path> (<type>, local, …)` lines, the one whose
|
|
1529
|
+
* mount point holds `at` most closely: `{ point, type, local }`. */
|
|
1530
|
+
function mountOf(at, mountOutput) {
|
|
1531
|
+
let best = null;
|
|
1532
|
+
for (const line of mountOutput.split("\n")) {
|
|
1533
|
+
const m = / on (.+) \(([^,)]+)((?:,[^)]*)?)\)$/.exec(line);
|
|
1534
|
+
if (!m) continue;
|
|
1535
|
+
const point = m[1];
|
|
1536
|
+
if ((at === point || at.startsWith(point.endsWith("/") ? point : point + "/")) && (!best || point.length > best.point.length)) best = {
|
|
1537
|
+
point,
|
|
1538
|
+
type: m[2].trim(),
|
|
1539
|
+
local: /\blocal\b/.test(m[3])
|
|
1540
|
+
};
|
|
1541
|
+
}
|
|
1542
|
+
return best;
|
|
1543
|
+
}
|
|
1544
|
+
/**
|
|
1545
|
+
* git's own check that directory mtimes behave, run in a throwaway repo
|
|
1546
|
+
* made on the same filesystem as the workspaces (inside the work root),
|
|
1547
|
+
* never in a checkout. It takes seconds, mostly waiting on the clock.
|
|
1548
|
+
*/
|
|
1549
|
+
async function gitCheckPasses(workRoot) {
|
|
1550
|
+
let dir;
|
|
1551
|
+
try {
|
|
1552
|
+
dir = fs.mkdtempSync(path.join(workRoot, ".untracked-cache-check-"));
|
|
1553
|
+
const run = (args) => new Promise((resolve) => spawn("git", args, {
|
|
1554
|
+
cwd: dir,
|
|
1555
|
+
stdio: "ignore"
|
|
1556
|
+
}).on("exit", (code) => resolve(code === 0)).on("error", () => resolve(false)));
|
|
1557
|
+
return await run(["init", "--quiet"]) && await run(["update-index", "--test-untracked-cache"]);
|
|
1558
|
+
} catch {
|
|
1559
|
+
return false;
|
|
1560
|
+
} finally {
|
|
1561
|
+
if (dir) fs.rmSync(dir, {
|
|
1562
|
+
recursive: true,
|
|
1563
|
+
force: true
|
|
1564
|
+
});
|
|
1565
|
+
}
|
|
1566
|
+
}
|
|
1567
|
+
/** The user's own `core.untrackedCache` (global or system): true, false,
|
|
1568
|
+
* or undefined. False is their answer for every repo, work's included. */
|
|
1569
|
+
function userSetting() {
|
|
1570
|
+
try {
|
|
1571
|
+
const out = execFileSync("git", [
|
|
1572
|
+
"config",
|
|
1573
|
+
"--get",
|
|
1574
|
+
"--type=bool",
|
|
1575
|
+
"core.untrackedCache"
|
|
1576
|
+
], {
|
|
1577
|
+
cwd: os.tmpdir(),
|
|
1578
|
+
encoding: "utf8",
|
|
1579
|
+
stdio: [
|
|
1580
|
+
"ignore",
|
|
1581
|
+
"pipe",
|
|
1582
|
+
"ignore"
|
|
1583
|
+
]
|
|
1584
|
+
}).trim();
|
|
1585
|
+
return out === "true" ? true : out === "false" ? false : void 0;
|
|
1586
|
+
} catch {
|
|
1587
|
+
return;
|
|
1588
|
+
}
|
|
1589
|
+
}
|
|
1590
|
+
/**
|
|
1591
|
+
* Where work's caches stand. Null with no caches yet. `off` are the caches
|
|
1592
|
+
* with it unset (a `false` set by hand is left alone and not counted).
|
|
1593
|
+
*/
|
|
1594
|
+
function untrackedCacheProbe({ workRoot } = {}) {
|
|
1595
|
+
const root = workRoot || defaultWorkRoot();
|
|
1596
|
+
const caches = repoCaches(root);
|
|
1597
|
+
if (!caches.length) return null;
|
|
1598
|
+
const off = caches.filter((c) => untrackedCacheSetting(c) === void 0);
|
|
1599
|
+
const on = caches.filter((c) => untrackedCacheSetting(c) === true).length;
|
|
1600
|
+
return {
|
|
1601
|
+
workRoot: root,
|
|
1602
|
+
caches: caches.length,
|
|
1603
|
+
on,
|
|
1604
|
+
off,
|
|
1605
|
+
filesystem: filesystemVerdict(root),
|
|
1606
|
+
declined: userSetting() === false
|
|
1607
|
+
};
|
|
1608
|
+
}
|
|
1609
|
+
/** Turn it on in each of `caches` (their worktrees share the setting).
|
|
1610
|
+
* The caches it could not set. */
|
|
1611
|
+
async function enableUntrackedCache(caches) {
|
|
1612
|
+
const failed = [];
|
|
1613
|
+
await Promise.all(caches.map((cache) => new Promise((resolve) => execFile("git", [
|
|
1614
|
+
"config",
|
|
1615
|
+
"--file",
|
|
1616
|
+
path.join(cache, "config"),
|
|
1617
|
+
"core.untrackedCache",
|
|
1618
|
+
"true"
|
|
1619
|
+
], (err) => {
|
|
1620
|
+
if (err) failed.push(cache);
|
|
1621
|
+
resolve();
|
|
1622
|
+
}))));
|
|
1623
|
+
return failed;
|
|
1624
|
+
}
|
|
1625
|
+
/** Whether work may turn it on under `workRoot`: the user has not said
|
|
1626
|
+
* no, the filesystem is one it suits, and git's own check passes there. */
|
|
1627
|
+
async function untrackedCacheAllowed(workRoot) {
|
|
1628
|
+
if (userSetting() === false) return false;
|
|
1629
|
+
if (!filesystemVerdict(workRoot).ok) return false;
|
|
1630
|
+
return gitCheckPasses(workRoot);
|
|
1631
|
+
}
|
|
1632
|
+
/** The caches with it unset (a false set by hand stays). */
|
|
1633
|
+
function unsetCaches(workRoot) {
|
|
1634
|
+
return repoCaches(workRoot).filter((c) => untrackedCacheSetting(c) === void 0);
|
|
1635
|
+
}
|
|
1636
|
+
function defaultWorkRoot() {
|
|
1637
|
+
return process.env.WORK_ROOT || path.join(os.homedir(), "work");
|
|
1638
|
+
}
|
|
1639
|
+
//#endregion
|
|
1405
1640
|
//#region lib/setup/doctor.mjs
|
|
1406
1641
|
var home = os.homedir();
|
|
1407
1642
|
/** Agent CLI install dirs from meta (`~` → home). Same list the service and
|
|
@@ -1812,7 +2047,8 @@ async function doctor(opts = {}) {
|
|
|
1812
2047
|
awake,
|
|
1813
2048
|
staleGhHelpers: helpers,
|
|
1814
2049
|
tailscale,
|
|
1815
|
-
firewall
|
|
2050
|
+
firewall,
|
|
2051
|
+
untrackedCache: untrackedCacheProbe({ workRoot: opts.workRoot })
|
|
1816
2052
|
};
|
|
1817
2053
|
}
|
|
1818
2054
|
//#endregion
|
|
@@ -8077,7 +8313,7 @@ function publishChange(sessionId) {
|
|
|
8077
8313
|
const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
|
|
8078
8314
|
if (row?.workspace_id) {
|
|
8079
8315
|
const workspaceId = row.workspace_id;
|
|
8080
|
-
import("./
|
|
8316
|
+
import("./_QKOzplQZ.js").then((m) => m.notifySessionsChanged(workspaceId));
|
|
8081
8317
|
return;
|
|
8082
8318
|
}
|
|
8083
8319
|
publish("sessions.changed");
|
|
@@ -10620,4 +10856,4 @@ function sleep(ms) {
|
|
|
10620
10856
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
10621
10857
|
}
|
|
10622
10858
|
//#endregion
|
|
10623
|
-
export { deleteSubscription as $,
|
|
10859
|
+
export { deleteSubscription as $, git as $t, blankRow as A, enableUntrackedCache as At, setSessionViewers as B, toolById as Bt, tmuxWasStarted as C, ghKnownHosts as Ct, inside as D, stableGh as Dt, reportsWorking as E, setupPath as Et, noteBackground as F, PROJECT_TOOLS as Ft, agentLabel as G, httpError as Gt, agentBadge as H, FRAME_ANCESTORS as Ht, noteUserAnswered as I, TOOLS as It, getInstance as J, db as Jt, agentMeta as K, readBody as Kt, onPhaseChange as L, agentById as Lt, clearAgentPhase as M, untrackedCacheAllowed as Mt, hookPhase as N, firewallProbe as Nt, realInside as O, tilde as Ot, hookReportedAt as P, DEFAULT_GITHUB_HOST as Pt, setInstance as Q, gh as Qt, setAgentPhase as R, agentLabel$1 as Rt, tmuxName as S, doctor as St, readHookPayload as T, miseVersions as Tt, agentFamily as U, FRAME_HEADERS as Ut, settleQuietWorking as V, applyPrefChange as Vt, agentFromCommand as W, checked as Wt, manifest as X, workspacePath as Xt, iconSvg as Y, get as Yt, normalizeAccent as Z, TMUX_SOCKET as Zt, notifySessionsChanged as _, preferredAgent as _t, creationOf as a, swr as an, publishJson as at, sendToSession as b, setSetting as bt, forgetPanes as c, PREF_MAX as ct, killWorkspaceSessions as d, allPrefs as dt, gitEnv as en, pushPublicKey as et, listPanes as f, changePref as ft, newSessionArgs as g, getSetting as gt, markTmuxStarted as h, enabledAgents as ht, createSession as i, shared as in, publish as it, agentPhase as j, unsetCaches as jt, realInsideSync as k, which as kt, getSession as l, WORKSPACE_PREFS as lt, listSessions as m, disabledAgents as mt, cleanEnv as n, tmux as nn, sendPush as nt, disposeSessions as o, withLock as on, subscribe as ot, listPanesWithin as p, deleteWorkspacePrefs as pt, ACCENT_RE as q, all as qt, clearTmuxStarted as r, config as rn, validSubscription as rt, ensureTmuxServer as s, subscriberCount as st, beginCreation as t, run$2 as tn, saveSubscription as tt, killSession as u, agentChoices as ut, panePids as v, setDisabledAgents as vt, AGENTS as w, miseInstalls as wt, sessionStates as x, discoverAgents as xt, renameSession as y, setPref as yt, setScrapedPhase as z, catalogPin as zt };
|