@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.
Files changed (467) hide show
  1. package/README.md +13 -0
  2. package/bin/work.mjs +6 -0
  3. package/dist/{_22ZJcGtj.js → _0aVeGp3r.js} +73 -73
  4. package/dist/{_KRMk2duX.js → _CBAfUPnF.js} +240 -4
  5. package/dist/_QKOzplQZ.js +2 -0
  6. package/dist/index.mjs +643 -627
  7. package/dist/public/assets/_-BaH35o0.js +1 -0
  8. package/dist/public/assets/{_Xgn2Q7QA.js → _-KMql04r.js} +1 -1
  9. package/dist/public/assets/_-KMql04r.js.br +0 -0
  10. package/dist/public/assets/{_BG2c5dsW.js → _-Zb1beo9.js} +1 -1
  11. package/dist/public/assets/_-Zb1beo9.js.br +0 -0
  12. package/dist/public/assets/_-nZsDVSE.js +1 -0
  13. package/dist/public/assets/_0h2wxt86.js +1 -0
  14. package/dist/public/assets/{_CsWgp2nb.js → _4BAUJfXY.js} +1 -1
  15. package/dist/public/assets/_4BAUJfXY.js.br +0 -0
  16. package/dist/public/assets/{_DV5FT1cq.js → _6IMubG63.js} +1 -1
  17. package/dist/public/assets/_6IMubG63.js.br +0 -0
  18. package/dist/public/assets/_7jd54Czo.js +1 -0
  19. package/dist/public/assets/_B05n5akk.js +1 -0
  20. package/dist/public/assets/{_Cexn18Gf.js → _B2YolsYI.js} +1 -1
  21. package/dist/public/assets/_B2YolsYI.js.br +0 -0
  22. package/dist/public/assets/_B2vH4V8M.js +1 -0
  23. package/dist/public/assets/_BAEfdCJn.js +1 -0
  24. package/dist/public/assets/{_40vu6pjB.js → _BCZ2fw07.js} +1 -1
  25. package/dist/public/assets/_BCZ2fw07.js.br +0 -0
  26. package/dist/public/assets/{_Cn3i_89j.js → _BFPZB_rg.js} +1 -1
  27. package/dist/public/assets/_BFPZB_rg.js.br +0 -0
  28. package/dist/public/assets/{_CO8qGhCf.js → _BGaB7eKu.js} +1 -1
  29. package/dist/public/assets/_BGaB7eKu.js.br +0 -0
  30. package/dist/public/assets/{_FqQlfvYe.js → _BMbp1xc9.js} +1 -1
  31. package/dist/public/assets/_BMbp1xc9.js.br +0 -0
  32. package/dist/public/assets/{_D-OQ6gTY.js → _BNGZ339m.js} +1 -1
  33. package/dist/public/assets/_BNGZ339m.js.br +0 -0
  34. package/dist/public/assets/_BQonrRUc.js +1 -0
  35. package/dist/public/assets/{_DVMHDetJ.js → _BTIqRGRl.js} +1 -1
  36. package/dist/public/assets/_BTIqRGRl.js.br +0 -0
  37. package/dist/public/assets/_BXMbcpJz.js +1 -0
  38. package/dist/public/assets/{_CRW_09K_.js → _BX_fF7jC.js} +1 -1
  39. package/dist/public/assets/_BX_fF7jC.js.br +0 -0
  40. package/dist/public/assets/{_CZwuw2-p.js → _B_mmH7ZV.js} +1 -1
  41. package/dist/public/assets/_B_mmH7ZV.js.br +0 -0
  42. package/dist/public/assets/_Baup71qH.js +1 -0
  43. package/dist/public/assets/{_BFucjEre.js → _BbqPuVYz.js} +1 -1
  44. package/dist/public/assets/_BbqPuVYz.js.br +0 -0
  45. package/dist/public/assets/_BcfexT_r.js +1 -0
  46. package/dist/public/assets/{_CQObK-zV.js → _BeyL0BnM.js} +1 -1
  47. package/dist/public/assets/_BeyL0BnM.js.br +0 -0
  48. package/dist/public/assets/_BhQ-9qT_.js +1 -0
  49. package/dist/public/assets/{_DhzN8i-8.js → _Bhf8SvI0.js} +1 -1
  50. package/dist/public/assets/_Bhf8SvI0.js.br +0 -0
  51. package/dist/public/assets/{_C2ZMn_xV.js → _BiQSC_DR.js} +1 -1
  52. package/dist/public/assets/_BiQSC_DR.js.br +0 -0
  53. package/dist/public/assets/_BjnAkYNz.js +1 -0
  54. package/dist/public/assets/_BkG_5XIR.js +1 -0
  55. package/dist/public/assets/{_BAYCi6ni.js → _BkctdlVC.js} +1 -1
  56. package/dist/public/assets/_BkctdlVC.js.br +0 -0
  57. package/dist/public/assets/{_BqP5b9Js.js → _Bo_aG2XD.js} +1 -1
  58. package/dist/public/assets/_Bo_aG2XD.js.br +0 -0
  59. package/dist/public/assets/_Bp6mBJmh.js +1 -0
  60. package/dist/public/assets/{_C1mJwh0u.js → _BrH2YWc0.js} +1 -1
  61. package/dist/public/assets/_BrH2YWc0.js.br +0 -0
  62. package/dist/public/assets/_BtfmM3TC.js +1 -0
  63. package/dist/public/assets/{_KTYnlwaC.js → _BvOaZcNk.js} +1 -1
  64. package/dist/public/assets/_BvOaZcNk.js.br +0 -0
  65. package/dist/public/assets/_BwSjfLTv.js +1 -0
  66. package/dist/public/assets/_Byxbc1cJ.js +1 -0
  67. package/dist/public/assets/{_EYDD6XdR.js → _BzPnXdVY.js} +1 -1
  68. package/dist/public/assets/_BzPnXdVY.js.br +0 -0
  69. package/dist/public/assets/{_A_E3xwTy.js → _C-QsDzQl.js} +1 -1
  70. package/dist/public/assets/_C-QsDzQl.js.br +0 -0
  71. package/dist/public/assets/{_D41QKmFC.js → _C-dW9Fv0.js} +1 -1
  72. package/dist/public/assets/_C-dW9Fv0.js.br +0 -0
  73. package/dist/public/assets/{_BNFztlGk.js → _C0_EI9br.js} +1 -1
  74. package/dist/public/assets/_C0_EI9br.js.br +0 -0
  75. package/dist/public/assets/{_sqF7P4ps.js → _C0ndFsE1.js} +1 -1
  76. package/dist/public/assets/_C0ndFsE1.js.br +0 -0
  77. package/dist/public/assets/_C62pEUwC.js +1 -0
  78. package/dist/public/assets/{_BrEiPK5C.js → _C7_Q2xMW.js} +1 -1
  79. package/dist/public/assets/_C7_Q2xMW.js.br +0 -0
  80. package/dist/public/assets/{_DjBgn0d9.js → _C9Xow1Ui.js} +1 -1
  81. package/dist/public/assets/_C9Xow1Ui.js.br +0 -0
  82. package/dist/public/assets/{_C-4NnUIM.js → _CArbA3_g.js} +1 -1
  83. package/dist/public/assets/_CArbA3_g.js.br +0 -0
  84. package/dist/public/assets/{_4VsToA9B.js → _CBjOFYLc.js} +1 -1
  85. package/dist/public/assets/_CBjOFYLc.js.br +0 -0
  86. package/dist/public/assets/_CCL5_9cc.js +1 -0
  87. package/dist/public/assets/{_DoMGm1D6.js → _CD1cgO59.js} +1 -1
  88. package/dist/public/assets/_CD1cgO59.js.br +0 -0
  89. package/dist/public/assets/_CFuYvSNf.js +1 -0
  90. package/dist/public/assets/{_D-tLFHYN.js → _CHSSKM1B.js} +1 -1
  91. package/dist/public/assets/_CHSSKM1B.js.br +0 -0
  92. package/dist/public/assets/_CIwnDPeW.js +1 -0
  93. package/dist/public/assets/{_83sVmsrE.js → _CJHtKw6_.js} +1 -1
  94. package/dist/public/assets/{_D8CPj1qO.js → _CKrsl3Th.js} +1 -1
  95. package/dist/public/assets/_CKrsl3Th.js.br +0 -0
  96. package/dist/public/assets/{_BNIHSGhU.js → _CKs1gTHD.js} +2 -2
  97. package/dist/public/assets/_CKs1gTHD.js.br +0 -0
  98. package/dist/public/assets/_CL7WCSGT.js +1 -0
  99. package/dist/public/assets/{_DazuPVkd.js → _CNJUMI-n.js} +1 -1
  100. package/dist/public/assets/_CNJUMI-n.js.br +0 -0
  101. package/dist/public/assets/{_hpcOqr0r.js → _CUv7Qzcn.js} +1 -1
  102. package/dist/public/assets/_CUv7Qzcn.js.br +0 -0
  103. package/dist/public/assets/_CVZSKSSn.js +1 -0
  104. package/dist/public/assets/_CYcdlgGK.js +1 -0
  105. package/dist/public/assets/{_BnpGH2MM.js → _C_06hwVX.js} +1 -1
  106. package/dist/public/assets/_C_06hwVX.js.br +0 -0
  107. package/dist/public/assets/{_Bpy05Rz3.js → _C_kdME78.js} +3 -3
  108. package/dist/public/assets/_C_kdME78.js.br +0 -0
  109. package/dist/public/assets/_CasoM6ZN.js +1 -0
  110. package/dist/public/assets/{_CxuayNVt.js → _Cd_k9q0o.js} +1 -1
  111. package/dist/public/assets/_Cd_k9q0o.js.br +0 -0
  112. package/dist/public/assets/{_C06I3LLm.js → _Cf5_6HEX.js} +1 -1
  113. package/dist/public/assets/_Cf5_6HEX.js.br +0 -0
  114. package/dist/public/assets/_Cf__yi_m.js +1 -0
  115. package/dist/public/assets/_Cg2UGMZI.js +1 -0
  116. package/dist/public/assets/_CiahxxQu.js +1 -0
  117. package/dist/public/assets/{_5uWjRetR.js → _CmFwG3VA.js} +1 -1
  118. package/dist/public/assets/_CmFwG3VA.js.br +0 -0
  119. package/dist/public/assets/_CmlcM6lb.js +1 -0
  120. package/dist/public/assets/{_XYCe5HBr.js → _CoJkWCeH.js} +1 -1
  121. package/dist/public/assets/_CoJkWCeH.js.br +0 -0
  122. package/dist/public/assets/_Cs3O6sjQ.js +1 -0
  123. package/dist/public/assets/{_D3lhKPvM.js → _Ct3VFQs0.js} +1 -1
  124. package/dist/public/assets/_Ct3VFQs0.js.br +0 -0
  125. package/dist/public/assets/{_ajzfUxd5.js → _CtYxrs3o.js} +1 -1
  126. package/dist/public/assets/_CtYxrs3o.js.br +0 -0
  127. package/dist/public/assets/{_C_Rq4JG1.js → _CvdLt12h.js} +1 -1
  128. package/dist/public/assets/_CvdLt12h.js.br +0 -0
  129. package/dist/public/assets/{_DHmztqRk.js → _Cw2vJLeZ.js} +1 -1
  130. package/dist/public/assets/_Cw2vJLeZ.js.br +0 -0
  131. package/dist/public/assets/_CwZ_yH15.js +1 -0
  132. package/dist/public/assets/{_DQ8yXlAt.js → _Cy2fsSS3.js} +1 -1
  133. package/dist/public/assets/_Cy2fsSS3.js.br +0 -0
  134. package/dist/public/assets/_CyImRGgb.js +1 -0
  135. package/dist/public/assets/{_C204QceO.js → _CyZq6EWU.js} +1 -1
  136. package/dist/public/assets/_CyZq6EWU.js.br +0 -0
  137. package/dist/public/assets/_D-1cPTlh.js +1 -0
  138. package/dist/public/assets/_D-29pP4W.js +1 -0
  139. package/dist/public/assets/{_CRiNy5d5.js → _D06bIb7L.js} +4 -4
  140. package/dist/public/assets/_D06bIb7L.js.br +0 -0
  141. package/dist/public/assets/{_Br3g-GrF.js → _D6cqDEC0.js} +1 -1
  142. package/dist/public/assets/_D6cqDEC0.js.br +0 -0
  143. package/dist/public/assets/{_BatLETVj.js → _D7coLdCP.js} +1 -1
  144. package/dist/public/assets/{_C95R9gUz.js → _D7i9j1_I.js} +1 -1
  145. package/dist/public/assets/_D7i9j1_I.js.br +0 -0
  146. package/dist/public/assets/_D7jhcKec.js +1 -0
  147. package/dist/public/assets/_DBwcJtep.js +1 -0
  148. package/dist/public/assets/{_BZpi1MW_.js → _DCaRxzju.js} +1 -1
  149. package/dist/public/assets/_DCaRxzju.js.br +0 -0
  150. package/dist/public/assets/{_CTQHm9xe.js → _DCbOQgRu.js} +1 -1
  151. package/dist/public/assets/_DCbOQgRu.js.br +0 -0
  152. package/dist/public/assets/{_COU5hB51.js → _DF5L9tC4.js} +1 -1
  153. package/dist/public/assets/_DF5L9tC4.js.br +0 -0
  154. package/dist/public/assets/{_DZUNnITm.js → _DFci_mEi.js} +1 -1
  155. package/dist/public/assets/_DFci_mEi.js.br +0 -0
  156. package/dist/public/assets/_DG2R2PjC.js +1 -0
  157. package/dist/public/assets/{_hnIqG5G7.js → _DG_kcl-g.js} +1 -1
  158. package/dist/public/assets/_DG_kcl-g.js.br +0 -0
  159. package/dist/public/assets/_DGepEi0T.js +1 -0
  160. package/dist/public/assets/_DI0Y6-PH.js +1 -0
  161. package/dist/public/assets/_DJb25PXu.js +1 -0
  162. package/dist/public/assets/_DJoc970g.js +1 -0
  163. package/dist/public/assets/_DKzM-bnd.js +1 -0
  164. package/dist/public/assets/{_DtCOQnFU.js → _DNPsNJYS.js} +1 -1
  165. package/dist/public/assets/_DNPsNJYS.js.br +0 -0
  166. package/dist/public/assets/{_C5ce7CgX.js → _DOJ6iTaS.js} +1 -1
  167. package/dist/public/assets/_DOJ6iTaS.js.br +0 -0
  168. package/dist/public/assets/_DOs8v6-O.js +1 -0
  169. package/dist/public/assets/{_BNMi9WuF.js → _DPIKg05L.js} +1 -1
  170. package/dist/public/assets/{_ME8SxhdL.js → _DT7oePYB.js} +1 -1
  171. package/dist/public/assets/_DT7oePYB.js.br +0 -0
  172. package/dist/public/assets/{_C2StVKSW.js → _DTT3M8ra.js} +1 -1
  173. package/dist/public/assets/_DTT3M8ra.js.br +0 -0
  174. package/dist/public/assets/_DWCVzfS4.js +1 -0
  175. package/dist/public/assets/_DWPhfHkR.js +1 -0
  176. package/dist/public/assets/{_CU19mo6c.js → _DZx9glDd.js} +1 -1
  177. package/dist/public/assets/_DZx9glDd.js.br +0 -0
  178. package/dist/public/assets/{_CKuJF_iH.js → _D_TLGK-3.js} +1 -1
  179. package/dist/public/assets/{_BAoC0qRs.js → _DcuV5C_f.js} +1 -1
  180. package/dist/public/assets/_DcuV5C_f.js.br +0 -0
  181. package/dist/public/assets/_DdOtyqvl.js +1 -0
  182. package/dist/public/assets/{_za7TvDJE.js → _Ddgy3xBp.js} +1 -1
  183. package/dist/public/assets/_Ddgy3xBp.js.br +0 -0
  184. package/dist/public/assets/{_C8fZdyNY.js → _DdqBWsBC.js} +1 -1
  185. package/dist/public/assets/_DdqBWsBC.js.br +0 -0
  186. package/dist/public/assets/{_Cb8MQgar.js → _DgA6xXIR.js} +1 -1
  187. package/dist/public/assets/_DgA6xXIR.js.br +0 -0
  188. package/dist/public/assets/{_c3NZ7n3v.js → _DhGdkwrP.js} +1 -1
  189. package/dist/public/assets/_DhGdkwrP.js.br +0 -0
  190. package/dist/public/assets/{_BREogqkc.js → _DktdVs5U.js} +1 -1
  191. package/dist/public/assets/_DktdVs5U.js.br +0 -0
  192. package/dist/public/assets/{_BD9G8SAI.js → _DnXMkM_E.js} +1 -1
  193. package/dist/public/assets/_DnXMkM_E.js.br +0 -0
  194. package/dist/public/assets/_DoQLW41Z.js +1 -0
  195. package/dist/public/assets/_Dr7t8OQU.js +1 -0
  196. package/dist/public/assets/_DrxSCh0X.js +1 -0
  197. package/dist/public/assets/{_BjOIOaiT.js → _Du47tSS5.js} +1 -1
  198. package/dist/public/assets/_Du47tSS5.js.br +0 -0
  199. package/dist/public/assets/{_BVdmkVvF.js → _Dv4WXCd3.js} +1 -1
  200. package/dist/public/assets/_Dv4WXCd3.js.br +0 -0
  201. package/dist/public/assets/{_Bi3K_PNF.js → _DvByohpe.js} +1 -1
  202. package/dist/public/assets/_DvByohpe.js.br +0 -0
  203. package/dist/public/assets/{_DmowM8Ic.js → _Dvd6D8mi.js} +1 -1
  204. package/dist/public/assets/_Dvd6D8mi.js.br +0 -0
  205. package/dist/public/assets/_DzuCz99f.js +1 -0
  206. package/dist/public/assets/_JE-3ASeD.js +1 -0
  207. package/dist/public/assets/{_DWsX_uW9.js → _JF6DEFdH.js} +7 -7
  208. package/dist/public/assets/_JF6DEFdH.js.br +0 -0
  209. package/dist/public/assets/_JRJlpL33.js +1 -0
  210. package/dist/public/assets/_JetsX5_0.js +1 -0
  211. package/dist/public/assets/{_jOw0-nfA.js → _KMZo8rXN.js} +1 -1
  212. package/dist/public/assets/_KMZo8rXN.js.br +0 -0
  213. package/dist/public/assets/_Nd10IgXX.js +1 -0
  214. package/dist/public/assets/_NvxrN-9c.js +1 -0
  215. package/dist/public/assets/_O84ZBO5i.js +1 -0
  216. package/dist/public/assets/_Oi3FFiM4.js +1 -0
  217. package/dist/public/assets/_Pn6yz8uh.js +1 -0
  218. package/dist/public/assets/{_y131Md6t.js → _SZzmSaBg.js} +1 -1
  219. package/dist/public/assets/_SZzmSaBg.js.br +0 -0
  220. package/dist/public/assets/_T_2ZjqbO.js +1 -0
  221. package/dist/public/assets/_UfEwfre0.js +1 -0
  222. package/dist/public/assets/{_IFkRXRzU.js → _UjkAyUgr.js} +1 -1
  223. package/dist/public/assets/_UjkAyUgr.js.br +0 -0
  224. package/dist/public/assets/{_8r9L-9VY.js → _VlgiLy2b.js} +1 -1
  225. package/dist/public/assets/_VlgiLy2b.js.br +0 -0
  226. package/dist/public/assets/{_C6N2Y-JE.js → _WVblDLD3.js} +6 -6
  227. package/dist/public/assets/_WVblDLD3.js.br +0 -0
  228. package/dist/public/assets/_WloM0CkN.js +1 -0
  229. package/dist/public/assets/{_qpbnZMAm.js → _Wte34w1P.js} +1 -1
  230. package/dist/public/assets/_Wte34w1P.js.br +0 -0
  231. package/dist/public/assets/{_DpT1FBQL.js → _YPYFFfaJ.js} +1 -1
  232. package/dist/public/assets/_YPYFFfaJ.js.br +0 -0
  233. package/dist/public/assets/__FuiVQAG.js +1 -0
  234. package/dist/public/assets/{_Dz80JlHx.js → __QNLL-6I.js} +1 -1
  235. package/dist/public/assets/__QNLL-6I.js.br +0 -0
  236. package/dist/public/assets/{_BPlFGH_o.js → _bCSH-jEg.js} +1 -1
  237. package/dist/public/assets/_bCSH-jEg.js.br +0 -0
  238. package/dist/public/assets/{_ERj57v2f.js → _eHcHhWyn.js} +1 -1
  239. package/dist/public/assets/_eHcHhWyn.js.br +0 -0
  240. package/dist/public/assets/{_DAa9TofW.js → _eivjORhH.js} +1 -1
  241. package/dist/public/assets/{_Bl1PK0cl.js → _er6oFZMx.js} +1 -1
  242. package/dist/public/assets/{_D1oVzqlA.js → _gRW8MWWg.js} +1 -1
  243. package/dist/public/assets/_gRW8MWWg.js.br +0 -0
  244. package/dist/public/assets/{_BiZJ6M6A.js → _gpX3U1vy.js} +1 -1
  245. package/dist/public/assets/_gpX3U1vy.js.br +0 -0
  246. package/dist/public/assets/{_DXTqbi8r.js → _i2IzfCgI.js} +1 -1
  247. package/dist/public/assets/_i2IzfCgI.js.br +0 -0
  248. package/dist/public/assets/_itt8jfJz.js +1 -0
  249. package/dist/public/assets/_j89vjWp7.js +1 -0
  250. package/dist/public/assets/{_DAkDausF.js → _jmLLcAls.js} +1 -1
  251. package/dist/public/assets/_jmLLcAls.js.br +0 -0
  252. package/dist/public/assets/{_DX4bSl0s.js → _jsL_oBa8.js} +1 -1
  253. package/dist/public/assets/_jsL_oBa8.js.br +0 -0
  254. package/dist/public/assets/_mKefy6mn.js +1 -0
  255. package/dist/public/assets/{_MDQFZ3Rt.js → _nKKOqnCC.js} +1 -1
  256. package/dist/public/assets/_nKKOqnCC.js.br +0 -0
  257. package/dist/public/assets/_o6eyMyho.js +1 -0
  258. package/dist/public/assets/{_CXvuWyK0.js → _oz_0ITyF.js} +1 -1
  259. package/dist/public/assets/_oz_0ITyF.js.br +0 -0
  260. package/dist/public/assets/{_BkHM28NA.js → _p-qm8ETK.js} +2 -2
  261. package/dist/public/assets/_p-qm8ETK.js.br +0 -0
  262. package/dist/public/assets/{_DzEdOagp.js → _q0a340SH.js} +1 -1
  263. package/dist/public/assets/_q0a340SH.js.br +0 -0
  264. package/dist/public/assets/_q75fYQxu.js +1 -0
  265. package/dist/public/assets/_sDmf2vJB.js +1 -0
  266. package/dist/public/assets/_v5svd5gX.js +1 -0
  267. package/dist/public/assets/_yVrNk3pW.js +1 -0
  268. package/dist/public/assets/{_fg65E76B.js → _z3xpFuyM.js} +1 -1
  269. package/dist/public/assets/_z3xpFuyM.js.br +0 -0
  270. package/dist/public/assets/{_DCpMCYiE.js → _zakrJGBE.js} +1 -1
  271. package/dist/public/assets/_zakrJGBE.js.br +0 -0
  272. package/dist/public/assets/files-view-rxokk9dM.js +2 -0
  273. package/dist/public/assets/manage-workspace-BQ0m7wt6.js +2 -0
  274. package/dist/public/assets/new-Dg28x8OY.js +1 -0
  275. package/dist/public/assets/new-workspace-4VjpAPmG.js +2 -0
  276. package/dist/public/assets/review-view-BkMWOGsX.js +2 -0
  277. package/dist/public/assets/settings-Dg28x8OY.js +1 -0
  278. package/dist/public/assets/settings-page-xLuXZ319.js +2 -0
  279. package/dist/public/assets/{styles-mjkw6XVV.css → styles-Cf6yv4En.css} +1 -1
  280. package/dist/public/assets/styles-Cf6yv4En.css.br +0 -0
  281. package/dist/public/assets/w-Dg28x8OY.js +1 -0
  282. package/dist/public/assets/w._-BzL9XmMh.js +1 -0
  283. package/dist/public/assets/w._-DY12219n.js +1 -0
  284. package/dist/public/assets/w._-Dg28x8OY.js +1 -0
  285. package/lib/setup/doctor.d.mts +5 -0
  286. package/lib/setup/doctor.mjs +6 -0
  287. package/lib/setup/untracked-cache.d.mts +34 -0
  288. package/lib/setup/untracked-cache.mjs +281 -0
  289. package/package.json +1 -1
  290. package/dist/_ZwD1NY8D.js +0 -2
  291. package/dist/public/assets/_40vu6pjB.js.br +0 -0
  292. package/dist/public/assets/_4VsToA9B.js.br +0 -0
  293. package/dist/public/assets/_4b6fTueA.js +0 -1
  294. package/dist/public/assets/_5UQYUstJ.js +0 -1
  295. package/dist/public/assets/_5uWjRetR.js.br +0 -0
  296. package/dist/public/assets/_8r9L-9VY.js.br +0 -0
  297. package/dist/public/assets/_A_E3xwTy.js.br +0 -0
  298. package/dist/public/assets/_B1nFcjBS.js +0 -1
  299. package/dist/public/assets/_B9crCH-D.js +0 -1
  300. package/dist/public/assets/_BAYCi6ni.js.br +0 -0
  301. package/dist/public/assets/_BAoC0qRs.js.br +0 -0
  302. package/dist/public/assets/_BD9G8SAI.js.br +0 -0
  303. package/dist/public/assets/_BFucjEre.js.br +0 -0
  304. package/dist/public/assets/_BG2c5dsW.js.br +0 -0
  305. package/dist/public/assets/_BIkBlb5V.js +0 -1
  306. package/dist/public/assets/_BIxxnn6B.js +0 -1
  307. package/dist/public/assets/_BMECr17a.js +0 -1
  308. package/dist/public/assets/_BNFztlGk.js.br +0 -0
  309. package/dist/public/assets/_BNIHSGhU.js.br +0 -0
  310. package/dist/public/assets/_BNztKl9G.js +0 -1
  311. package/dist/public/assets/_BPlFGH_o.js.br +0 -0
  312. package/dist/public/assets/_BQ9TQ0w9.js +0 -1
  313. package/dist/public/assets/_BQzlfu_A.js +0 -1
  314. package/dist/public/assets/_BREogqkc.js.br +0 -0
  315. package/dist/public/assets/_BUrIkYGg.js +0 -1
  316. package/dist/public/assets/_BVdmkVvF.js.br +0 -0
  317. package/dist/public/assets/_BZpi1MW_.js.br +0 -0
  318. package/dist/public/assets/_BgDbcHZ4.js +0 -1
  319. package/dist/public/assets/_Bi3K_PNF.js.br +0 -0
  320. package/dist/public/assets/_BiS6HfVD.js +0 -1
  321. package/dist/public/assets/_BiZJ6M6A.js.br +0 -0
  322. package/dist/public/assets/_BjOIOaiT.js.br +0 -0
  323. package/dist/public/assets/_Bjy8hUtC.js +0 -1
  324. package/dist/public/assets/_BkHM28NA.js.br +0 -0
  325. package/dist/public/assets/_Bkr5fMX1.js +0 -1
  326. package/dist/public/assets/_BnpGH2MM.js.br +0 -0
  327. package/dist/public/assets/_Bpy05Rz3.js.br +0 -0
  328. package/dist/public/assets/_BqP5b9Js.js.br +0 -0
  329. package/dist/public/assets/_Br3g-GrF.js.br +0 -0
  330. package/dist/public/assets/_BrEiPK5C.js.br +0 -0
  331. package/dist/public/assets/_BtMM1k2B.js +0 -1
  332. package/dist/public/assets/_C--8To02.js +0 -1
  333. package/dist/public/assets/_C-4NnUIM.js.br +0 -0
  334. package/dist/public/assets/_C06I3LLm.js.br +0 -0
  335. package/dist/public/assets/_C1mJwh0u.js.br +0 -0
  336. package/dist/public/assets/_C204QceO.js.br +0 -0
  337. package/dist/public/assets/_C2I5lOqp.js +0 -1
  338. package/dist/public/assets/_C2StVKSW.js.br +0 -0
  339. package/dist/public/assets/_C2ZMn_xV.js.br +0 -0
  340. package/dist/public/assets/_C3Dbi3Be.js +0 -1
  341. package/dist/public/assets/_C4NRfzG7.js +0 -1
  342. package/dist/public/assets/_C5ce7CgX.js.br +0 -0
  343. package/dist/public/assets/_C6N2Y-JE.js.br +0 -0
  344. package/dist/public/assets/_C6Nc97k4.js +0 -1
  345. package/dist/public/assets/_C8fZdyNY.js.br +0 -0
  346. package/dist/public/assets/_C95R9gUz.js.br +0 -0
  347. package/dist/public/assets/_CArLoLBv.js +0 -1
  348. package/dist/public/assets/_CDSiKfUM.js +0 -1
  349. package/dist/public/assets/_CGHQS5qu.js +0 -1
  350. package/dist/public/assets/_CKQ_sRVP.js +0 -1
  351. package/dist/public/assets/_CO8qGhCf.js.br +0 -0
  352. package/dist/public/assets/_COU5hB51.js.br +0 -0
  353. package/dist/public/assets/_CPT5gcz6.js +0 -1
  354. package/dist/public/assets/_CPdnD9rC.js +0 -1
  355. package/dist/public/assets/_CQObK-zV.js.br +0 -0
  356. package/dist/public/assets/_CRW_09K_.js.br +0 -0
  357. package/dist/public/assets/_CRiNy5d5.js.br +0 -0
  358. package/dist/public/assets/_CSaqUoH5.js +0 -1
  359. package/dist/public/assets/_CTQHm9xe.js.br +0 -0
  360. package/dist/public/assets/_CU19mo6c.js.br +0 -0
  361. package/dist/public/assets/_CWlBstvf.js +0 -1
  362. package/dist/public/assets/_CX-K_hge.js +0 -1
  363. package/dist/public/assets/_CXsIXsHf.js +0 -1
  364. package/dist/public/assets/_CXvuWyK0.js.br +0 -0
  365. package/dist/public/assets/_CYK4NYKF.js +0 -1
  366. package/dist/public/assets/_CZwuw2-p.js.br +0 -0
  367. package/dist/public/assets/_C_Rq4JG1.js.br +0 -0
  368. package/dist/public/assets/_Caao6gnt.js +0 -1
  369. package/dist/public/assets/_Cb8MQgar.js.br +0 -0
  370. package/dist/public/assets/_Cexn18Gf.js.br +0 -0
  371. package/dist/public/assets/_Cez5jeQ3.js +0 -1
  372. package/dist/public/assets/_CfF6EpTr.js +0 -1
  373. package/dist/public/assets/_Cn3i_89j.js.br +0 -0
  374. package/dist/public/assets/_CsWgp2nb.js.br +0 -0
  375. package/dist/public/assets/_CuvH34sA.js +0 -1
  376. package/dist/public/assets/_Cw0WiTIy.js +0 -1
  377. package/dist/public/assets/_CwQnPuk6.js +0 -1
  378. package/dist/public/assets/_CxhD0aWE.js +0 -1
  379. package/dist/public/assets/_CxuayNVt.js.br +0 -0
  380. package/dist/public/assets/_CzKTCTaq.js +0 -1
  381. package/dist/public/assets/_D-OQ6gTY.js.br +0 -0
  382. package/dist/public/assets/_D-tLFHYN.js.br +0 -0
  383. package/dist/public/assets/_D1oVzqlA.js.br +0 -0
  384. package/dist/public/assets/_D33FOujy.js +0 -1
  385. package/dist/public/assets/_D3lhKPvM.js.br +0 -0
  386. package/dist/public/assets/_D41QKmFC.js.br +0 -0
  387. package/dist/public/assets/_D51xAv9r.js +0 -1
  388. package/dist/public/assets/_D5nZD7eD.js +0 -1
  389. package/dist/public/assets/_D8CPj1qO.js.br +0 -0
  390. package/dist/public/assets/_D9vVVOIn.js +0 -1
  391. package/dist/public/assets/_DAkDausF.js.br +0 -0
  392. package/dist/public/assets/_DCpMCYiE.js.br +0 -0
  393. package/dist/public/assets/_DEXYHaYS.js +0 -1
  394. package/dist/public/assets/_DHmztqRk.js.br +0 -0
  395. package/dist/public/assets/_DKhOdMwP.js +0 -1
  396. package/dist/public/assets/_DQ8yXlAt.js.br +0 -0
  397. package/dist/public/assets/_DS41GJgp.js +0 -1
  398. package/dist/public/assets/_DV5FT1cq.js.br +0 -0
  399. package/dist/public/assets/_DVMHDetJ.js.br +0 -0
  400. package/dist/public/assets/_DVnPb5rQ.js +0 -1
  401. package/dist/public/assets/_DW9T2oLl.js +0 -1
  402. package/dist/public/assets/_DWsX_uW9.js.br +0 -0
  403. package/dist/public/assets/_DX4bSl0s.js.br +0 -0
  404. package/dist/public/assets/_DXTqbi8r.js.br +0 -0
  405. package/dist/public/assets/_DXx7FwDH.js +0 -1
  406. package/dist/public/assets/_DZUNnITm.js.br +0 -0
  407. package/dist/public/assets/_DaN45TKC.js +0 -1
  408. package/dist/public/assets/_DazuPVkd.js.br +0 -0
  409. package/dist/public/assets/_DbXpwzFM.js +0 -1
  410. package/dist/public/assets/_Dc80eYDG.js +0 -1
  411. package/dist/public/assets/_DcuOYNuY.js +0 -1
  412. package/dist/public/assets/_DgZ9ZooU.js +0 -1
  413. package/dist/public/assets/_DhXbhPYD.js +0 -1
  414. package/dist/public/assets/_DhzN8i-8.js.br +0 -0
  415. package/dist/public/assets/_DjBgn0d9.js.br +0 -0
  416. package/dist/public/assets/_DmowM8Ic.js.br +0 -0
  417. package/dist/public/assets/_DoMGm1D6.js.br +0 -0
  418. package/dist/public/assets/_DoRDdc0E.js +0 -1
  419. package/dist/public/assets/_DouwKMqP.js +0 -1
  420. package/dist/public/assets/_DpT1FBQL.js.br +0 -0
  421. package/dist/public/assets/_DqWo7EId.js +0 -1
  422. package/dist/public/assets/_DtCOQnFU.js.br +0 -0
  423. package/dist/public/assets/_DxCfNrwt.js +0 -1
  424. package/dist/public/assets/_Dz80JlHx.js.br +0 -0
  425. package/dist/public/assets/_DzEdOagp.js.br +0 -0
  426. package/dist/public/assets/_ERj57v2f.js.br +0 -0
  427. package/dist/public/assets/_EYDD6XdR.js.br +0 -0
  428. package/dist/public/assets/_FqQlfvYe.js.br +0 -0
  429. package/dist/public/assets/_IFkRXRzU.js.br +0 -0
  430. package/dist/public/assets/_JgiLBims.js +0 -1
  431. package/dist/public/assets/_KTYnlwaC.js.br +0 -0
  432. package/dist/public/assets/_L4X29MSj.js +0 -1
  433. package/dist/public/assets/_MDQFZ3Rt.js.br +0 -0
  434. package/dist/public/assets/_ME8SxhdL.js.br +0 -0
  435. package/dist/public/assets/_QlMykZD9.js +0 -1
  436. package/dist/public/assets/_T965C61_.js +0 -1
  437. package/dist/public/assets/_TZOS55wO.js +0 -1
  438. package/dist/public/assets/_VXxx_YyF.js +0 -1
  439. package/dist/public/assets/_XYCe5HBr.js.br +0 -0
  440. package/dist/public/assets/_Xgn2Q7QA.js.br +0 -0
  441. package/dist/public/assets/_XjXKgxUm.js +0 -1
  442. package/dist/public/assets/_ajzfUxd5.js.br +0 -0
  443. package/dist/public/assets/_c3NZ7n3v.js.br +0 -0
  444. package/dist/public/assets/_fg65E76B.js.br +0 -0
  445. package/dist/public/assets/_hnIqG5G7.js.br +0 -0
  446. package/dist/public/assets/_hpcOqr0r.js.br +0 -0
  447. package/dist/public/assets/_i9E9rfmR.js +0 -1
  448. package/dist/public/assets/_jOw0-nfA.js.br +0 -0
  449. package/dist/public/assets/_lkU1EFgO.js +0 -1
  450. package/dist/public/assets/_qpbnZMAm.js.br +0 -0
  451. package/dist/public/assets/_sqF7P4ps.js.br +0 -0
  452. package/dist/public/assets/_vz-DSsqW.js +0 -1
  453. package/dist/public/assets/_wblybLRB.js +0 -1
  454. package/dist/public/assets/_y131Md6t.js.br +0 -0
  455. package/dist/public/assets/_za7TvDJE.js.br +0 -0
  456. package/dist/public/assets/files-view-CcOqGI93.js +0 -2
  457. package/dist/public/assets/manage-workspace-DrjDbGy-.js +0 -2
  458. package/dist/public/assets/new-workspace-CWEOveUX.js +0 -2
  459. package/dist/public/assets/new-x5ut6u2L.js +0 -1
  460. package/dist/public/assets/review-view-BOkPXkJr.js +0 -2
  461. package/dist/public/assets/settings-page-HcpiFu5I.js +0 -2
  462. package/dist/public/assets/settings-x5ut6u2L.js +0 -1
  463. package/dist/public/assets/styles-mjkw6XVV.css.br +0 -0
  464. package/dist/public/assets/w-x5ut6u2L.js +0 -1
  465. package/dist/public/assets/w._-BFTFbL6S.js +0 -1
  466. package/dist/public/assets/w._-BwCim0jU.js +0 -1
  467. package/dist/public/assets/w._-x5ut6u2L.js +0 -1
@@ -0,0 +1,34 @@
1
+ export interface UntrackedCacheProbe {
2
+ workRoot: string;
3
+ /** How many repo caches work keeps. */
4
+ caches: number;
5
+ /** How many have `core.untrackedCache` on. */
6
+ on: number;
7
+ /** The caches with it unset. */
8
+ off: string[];
9
+ /** Whether the work root's filesystem can keep the cache honest. */
10
+ filesystem: { ok: boolean; type?: string };
11
+ /** The user's own git config says false. */
12
+ declined: boolean;
13
+ }
14
+ export function repoCaches(workRoot: string): string[];
15
+ export function untrackedCacheSetting(cache: string): boolean | undefined;
16
+ export function filesystemVerdict(
17
+ dir: string,
18
+ platform?: NodeJS.Platform,
19
+ ): { ok: boolean; type?: string };
20
+ export function mountOf(
21
+ at: string,
22
+ mountOutput: string,
23
+ ): { point: string; type: string; local: boolean } | null;
24
+ export function gitCheckPasses(workRoot: string): Promise<boolean>;
25
+ export function userSetting(): boolean | undefined;
26
+ export function untrackedCacheProbe(opts?: {
27
+ workRoot?: string;
28
+ }): UntrackedCacheProbe | null;
29
+ export function enableUntrackedCache(caches: string[]): Promise<string[]>;
30
+ export function untrackedCacheAllowed(workRoot: string): Promise<boolean>;
31
+ export function unsetCaches(workRoot: string): string[];
32
+ export function untrackedCacheLine(
33
+ p: UntrackedCacheProbe | null,
34
+ ): string | null;
@@ -0,0 +1,281 @@
1
+ // git's untracked cache for the repos work keeps (`<work root>/.cache/
2
+ // <host>/<owner>/<name>.git`, whose worktrees are every workspace's
3
+ // checkouts and topic branches). `git status` lists untracked files by
4
+ // reading every directory of the worktree; with `core.untrackedCache` on,
5
+ // git keeps each directory's listing in the index with its mtime and reads
6
+ // again only the directories whose mtime moved, which in a large repo is
7
+ // most of a status's time. The listing is written by any git command that
8
+ // writes the index (an agent's add, commit or status); work's own reads,
9
+ // which never take the index lock, only use it.
10
+ //
11
+ // It is only as good as the filesystem's directory mtimes: one that does
12
+ // not move a directory's mtime when an entry is added or removed (a
13
+ // network or FUSE filesystem), or moves it only to the second, would leave
14
+ // `git status` — the user's and agents' too, since the setting is the
15
+ // repo's — missing a new file. So the server turns it on (as it starts, and
16
+ // in each repo it adds) only where the filesystem is a local one with fine
17
+ // mtimes and git's own check (`--test-untracked-cache`) passes there, and
18
+ // never where the user said otherwise: a repo set false, or their global
19
+ // git config.
20
+ import { execFile, execFileSync, spawn } from "node:child_process";
21
+ import fs from "node:fs";
22
+ import os from "node:os";
23
+ import path from "node:path";
24
+
25
+ /** Every repo cache under the work root. */
26
+ export function repoCaches(workRoot) {
27
+ const root = path.join(workRoot, ".cache");
28
+ const out = [];
29
+ for (const host of subdirs(root))
30
+ for (const owner of subdirs(path.join(root, host)))
31
+ for (const name of subdirs(path.join(root, host, owner)))
32
+ if (name.endsWith(".git")) out.push(path.join(root, host, owner, name));
33
+ return out;
34
+ }
35
+
36
+ function subdirs(dir) {
37
+ try {
38
+ return fs
39
+ .readdirSync(dir, { withFileTypes: true })
40
+ .filter((e) => e.isDirectory())
41
+ .map((e) => e.name);
42
+ } catch {
43
+ return [];
44
+ }
45
+ }
46
+
47
+ /** A cache's `core.untrackedCache`: true, false, or undefined (unset, or
48
+ * git's `keep`). Read from its config file rather than a git process per
49
+ * repo: the doctor asks on every Settings load. */
50
+ export function untrackedCacheSetting(cache) {
51
+ let text;
52
+ try {
53
+ text = fs.readFileSync(path.join(cache, "config"), "utf8");
54
+ } catch {
55
+ return undefined;
56
+ }
57
+ let inCore = false;
58
+ let value;
59
+ for (const raw of text.split("\n")) {
60
+ const line = raw.replace(/[#;].*$/, "").trim();
61
+ const section = /^\[\s*([^\]\s"]+)/.exec(line);
62
+ if (section) {
63
+ inCore = section[1].toLowerCase() === "core";
64
+ continue;
65
+ }
66
+ const kv = inCore && /^untrackedcache\s*=\s*(.*)$/i.exec(line);
67
+ if (kv) value = kv[1].trim().toLowerCase();
68
+ }
69
+ if (["true", "yes", "on", "1"].includes(value)) return true;
70
+ if (["false", "no", "off", "0"].includes(value)) return false;
71
+ return undefined;
72
+ }
73
+
74
+ /** Filesystems whose directory mtimes the cache cannot trust. Linux's
75
+ * statfs magic numbers. */
76
+ const LINUX_UNSAFE = new Map([
77
+ [0x6969, "NFS"],
78
+ [0x517b, "SMB"],
79
+ [0xfe534d42, "SMB2"],
80
+ [0xff534d42, "CIFS"],
81
+ [0x65735546, "FUSE"],
82
+ [0x01021997, "9p"],
83
+ [0x00c36400, "Ceph"],
84
+ [0x5346414f, "AFS"],
85
+ [0x4d44, "FAT"],
86
+ [0x2011bab0, "exFAT"],
87
+ ]);
88
+ /** macOS's by `mount`'s type name: network, FUSE, and those with
89
+ * second-or-coarser mtimes (HFS+, FAT). */
90
+ const MAC_UNSAFE =
91
+ /^(nfs|smbfs|afpfs|webdav|cifs|macfuse|osxfuse|fuse.*|hfs|msdos|exfat)$/;
92
+
93
+ /**
94
+ * Whether the filesystem holding `dir` can keep the cache honest, from its
95
+ * type alone (cheap: the doctor's). `{ ok, type }`, `type` a name where
96
+ * one is known.
97
+ */
98
+ export function filesystemVerdict(dir, platform = process.platform) {
99
+ if (platform === "linux") {
100
+ try {
101
+ const { type } = fs.statfsSync(dir);
102
+ const bad = LINUX_UNSAFE.get(type >>> 0);
103
+ return bad ? { ok: false, type: bad } : { ok: true };
104
+ } catch {
105
+ return { ok: false, type: "unknown" };
106
+ }
107
+ }
108
+ if (platform === "darwin") {
109
+ const mount = macMount(dir);
110
+ if (!mount) return { ok: false, type: "unknown" };
111
+ if (!mount.local) return { ok: false, type: `${mount.type} (not local)` };
112
+ return MAC_UNSAFE.test(mount.type)
113
+ ? { ok: false, type: mount.type }
114
+ : { ok: true, type: mount.type };
115
+ }
116
+ return { ok: false, type: platform };
117
+ }
118
+
119
+ /** The mount holding `dir` on macOS. */
120
+ function macMount(dir) {
121
+ let out;
122
+ try {
123
+ out = execFileSync("/sbin/mount", { encoding: "utf8" });
124
+ } catch {
125
+ return null;
126
+ }
127
+ let at = dir;
128
+ try {
129
+ at = fs.realpathSync(dir);
130
+ } catch {}
131
+ return mountOf(at, out);
132
+ }
133
+
134
+ /** Of `mount`'s `<dev> on <path> (<type>, local, …)` lines, the one whose
135
+ * mount point holds `at` most closely: `{ point, type, local }`. */
136
+ export function mountOf(at, mountOutput) {
137
+ let best = null;
138
+ for (const line of mountOutput.split("\n")) {
139
+ const m = / on (.+) \(([^,)]+)((?:,[^)]*)?)\)$/.exec(line);
140
+ if (!m) continue;
141
+ const point = m[1];
142
+ const inside =
143
+ at === point || at.startsWith(point.endsWith("/") ? point : point + "/");
144
+ if (inside && (!best || point.length > best.point.length))
145
+ best = { point, type: m[2].trim(), local: /\blocal\b/.test(m[3]) };
146
+ }
147
+ return best;
148
+ }
149
+
150
+ /**
151
+ * git's own check that directory mtimes behave, run in a throwaway repo
152
+ * made on the same filesystem as the workspaces (inside the work root),
153
+ * never in a checkout. It takes seconds, mostly waiting on the clock.
154
+ */
155
+ export async function gitCheckPasses(workRoot) {
156
+ let dir;
157
+ try {
158
+ dir = fs.mkdtempSync(path.join(workRoot, ".untracked-cache-check-"));
159
+ const run = (args) =>
160
+ new Promise((resolve) =>
161
+ spawn("git", args, { cwd: dir, stdio: "ignore" })
162
+ .on("exit", (code) => resolve(code === 0))
163
+ .on("error", () => resolve(false)),
164
+ );
165
+ return (
166
+ (await run(["init", "--quiet"])) &&
167
+ (await run(["update-index", "--test-untracked-cache"]))
168
+ );
169
+ } catch {
170
+ return false;
171
+ } finally {
172
+ if (dir) fs.rmSync(dir, { recursive: true, force: true });
173
+ }
174
+ }
175
+
176
+ /** The user's own `core.untrackedCache` (global or system): true, false,
177
+ * or undefined. False is their answer for every repo, work's included. */
178
+ export function userSetting() {
179
+ try {
180
+ const out = execFileSync(
181
+ "git",
182
+ ["config", "--get", "--type=bool", "core.untrackedCache"],
183
+ {
184
+ cwd: os.tmpdir(),
185
+ encoding: "utf8",
186
+ stdio: ["ignore", "pipe", "ignore"],
187
+ },
188
+ ).trim();
189
+ return out === "true" ? true : out === "false" ? false : undefined;
190
+ } catch {
191
+ return undefined;
192
+ }
193
+ }
194
+
195
+ /**
196
+ * Where work's caches stand. Null with no caches yet. `off` are the caches
197
+ * with it unset (a `false` set by hand is left alone and not counted).
198
+ */
199
+ export function untrackedCacheProbe({ workRoot } = {}) {
200
+ const root = workRoot || defaultWorkRoot();
201
+ const caches = repoCaches(root);
202
+ if (!caches.length) return null;
203
+ const off = caches.filter((c) => untrackedCacheSetting(c) === undefined);
204
+ const on = caches.filter((c) => untrackedCacheSetting(c) === true).length;
205
+ return {
206
+ workRoot: root,
207
+ caches: caches.length,
208
+ on,
209
+ off,
210
+ filesystem: filesystemVerdict(root),
211
+ declined: userSetting() === false,
212
+ };
213
+ }
214
+
215
+ /** Turn it on in each of `caches` (their worktrees share the setting).
216
+ * The caches it could not set. */
217
+ export async function enableUntrackedCache(caches) {
218
+ const failed = [];
219
+ await Promise.all(
220
+ caches.map(
221
+ (cache) =>
222
+ new Promise((resolve) =>
223
+ execFile(
224
+ "git",
225
+ [
226
+ "config",
227
+ "--file",
228
+ path.join(cache, "config"),
229
+ "core.untrackedCache",
230
+ "true",
231
+ ],
232
+ (err) => {
233
+ if (err) failed.push(cache);
234
+ resolve();
235
+ },
236
+ ),
237
+ ),
238
+ ),
239
+ );
240
+ return failed;
241
+ }
242
+
243
+ /** Whether work may turn it on under `workRoot`: the user has not said
244
+ * no, the filesystem is one it suits, and git's own check passes there. */
245
+ export async function untrackedCacheAllowed(workRoot) {
246
+ if (userSetting() === false) return false;
247
+ if (!filesystemVerdict(workRoot).ok) return false;
248
+ return gitCheckPasses(workRoot);
249
+ }
250
+
251
+ /** The caches with it unset (a false set by hand stays). */
252
+ export function unsetCaches(workRoot) {
253
+ return repoCaches(workRoot).filter(
254
+ (c) => untrackedCacheSetting(c) === undefined,
255
+ );
256
+ }
257
+
258
+ /** `work doctor`'s line; null with no caches yet. */
259
+ export function untrackedCacheLine(p) {
260
+ if (!p) return null;
261
+ const head = "git status".padEnd(11);
262
+ if (p.declined)
263
+ return `${head}– git's untracked cache is off by your git config (core.untrackedCache=false)`;
264
+ if (!p.filesystem.ok)
265
+ return `${head}– git's untracked cache is off: ${p.workRoot} is on ${p.filesystem.type || "a filesystem"}, whose directory times it cannot trust`;
266
+ if (!p.off.length)
267
+ return `${head}✓ git's untracked cache is on in ${onText(p)}`;
268
+ return `${head}– git's untracked cache is off in ${p.off.length} of work's ${p.caches} repos: the service turns it on as it starts, where git's check of this disk passes`;
269
+ }
270
+
271
+ /** "work's 3 repos", or "2 of work's 3 repos (1 set off by hand)". */
272
+ function onText(p) {
273
+ const byHand = p.caches - p.on - p.off.length;
274
+ return byHand
275
+ ? `${p.on} of work's ${p.caches} repos (${byHand} set off by hand)`
276
+ : `work's ${p.caches} ${p.caches === 1 ? "repo" : "repos"}`;
277
+ }
278
+
279
+ function defaultWorkRoot() {
280
+ return process.env.WORK_ROOT || path.join(os.homedir(), "work");
281
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dylanpiercey/work",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "type": "module",
5
5
  "description": "Web GUI for agentic dev workspaces",
6
6
  "license": "MIT",
package/dist/_ZwD1NY8D.js DELETED
@@ -1,2 +0,0 @@
1
- import { _ as notifySessionsChanged } from "./_KRMk2duX.js";
2
- export { notifySessionsChanged };
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_findOpen as e}from"./_CRiNy5d5.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_active as e}from"./_C6N2Y-JE.js";export{e as _};
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_status as e}from"./_8r9L-9VY.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_goNonce as e}from"./_CRiNy5d5.js";export{e as _};
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_fileChange as e}from"./_C6N2Y-JE.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_workspace as e}from"./_8r9L-9VY.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_sectionChange as e}from"./_C204QceO.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_active as e}from"./_8r9L-9VY.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_file as e}from"./_C6N2Y-JE.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_rev as e}from"./_C6N2Y-JE.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_filesHref as e}from"./_C6N2Y-JE.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_agentsChange as e}from"./_C204QceO.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_file as e}from"./_CRiNy5d5.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_revealNonce as e}from"./_CRiNy5d5.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_onOpenDiff as e}from"./_CRiNy5d5.js";export{e as _};
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_onSent as e}from"./_C6N2Y-JE.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_focusFile as e}from"./_C6N2Y-JE.js";export{e as _};
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_onScopeChange as e}from"./_C6N2Y-JE.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_sessions as e}from"./_C6N2Y-JE.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_setupChange as e}from"./_C204QceO.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_scope as e}from"./_C6N2Y-JE.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_treeOpen as e}from"./_CRiNy5d5.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_workspaceBranch as e}from"./_C6N2Y-JE.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_focusFileNonce as e}from"./_C6N2Y-JE.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_workspaceBranch as e}from"./_CRiNy5d5.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_changesHref as e}from"./_CRiNy5d5.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_focusLine as e}from"./_C6N2Y-JE.js";export{e as _};
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$setup as e,$template as t,$walks as n}from"./_8r9L-9VY.js";var r=[t,n,e];export{r as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_findTick as e}from"./_C6N2Y-JE.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_findableChange as e}from"./_CRiNy5d5.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_pageActive as e}from"./_C6N2Y-JE.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_preferred as e}from"./_C204QceO.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_workspaceId as e}from"./_CRiNy5d5.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_preferredChange as e}from"./_C204QceO.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_filesHref as e}from"./_CRiNy5d5.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{C as e,E as t,F as n,S as r,T as i,w as a}from"./_BkHM28NA.js";var o=i,s=(e=>`/${e}&`)(t);function c(t){e(t.a,n)}var l=(e,t)=>a(e.a,t),u=(e,t)=>r(e.a,t);export{s as a,o as i,l as n,c as r,u as t};
@@ -1 +0,0 @@
1
- import{$input_onCreate as e}from"./_DZUNnITm.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_lineChange as e}from"./_CRiNy5d5.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_findable as e}from"./_CRiNy5d5.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$setup as e,$template as t,$walks as n}from"./_CRiNy5d5.js";var r=[t,n,e];export{r as _};
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_changesHref as e}from"./_C6N2Y-JE.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_workspaceChange as e}from"./_8r9L-9VY.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_onOpenFile as e}from"./_C6N2Y-JE.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_onRevChange as e}from"./_C6N2Y-JE.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_workspaceName as e}from"./_CRiNy5d5.js";export{e as _};