@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
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 = "_df _U";
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: "_bX",
77
- warn: "_bY",
78
- info: "_bZ"
76
+ error: "_bP",
77
+ warn: "_bQ",
78
+ info: "_bR"
79
79
  };
80
80
  var toastTitle = {
81
- error: "_b0",
82
- warn: "_b1",
83
- info: "_b2"
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 _eN";
88
- var list$3 = "_eR _dH _eM _eP";
89
- var metaChip = "_e5 _bi _bh";
90
- var sectionCount = "_dE _9 __";
91
- var usageNote = "_jZ _bh";
92
- var pop$2 = "_gT _bw";
93
- var spinner = "_gW _bm _2";
94
- var toolLead = "_fH _e0";
95
- var name$4 = "_fB _e0";
96
- var desc$1 = "_fC _e1";
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 = "_ko _bE";
100
- var key$1 = "_kP _kN";
101
- var addTile = "_kR _kN";
102
- var field$2 = "_k2 _bj";
103
- var keyField = "_k3 _k2 _bj";
104
- var labelField = "_k4 _k2 _bj";
105
- var detailsToggle = "_hD _P";
106
- var themeSeg = "_fT _bA";
107
- var checkList = "_hh _dF";
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 = "_bI _bE";
111
- var item$1 = "_cz _m";
112
- var glance = "_eg _m";
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 = "_bL _m";
116
- var settingsDot = "_bM _bz";
117
- var notifyBtn = "_bR _m";
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 = "_cC _bw";
121
- var sessionPopBtn = "_cD _4";
122
- var wsBtn = "_gd _4";
123
- var rowIcon = "_gf _bo _m";
124
- var prChip = "_lB _v _lv";
125
- var readyChip = "_lC _v";
126
- var prDot = "_lE _lD";
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 = "_nD _v _lv";
130
- var open = "_kE _4";
131
- var action = "_kI _br _m";
132
- var toggle = "_e_ _P";
133
- var fold = "_fa _eO";
134
- var item = "_jK _4";
135
- var menu = "_mq _cC _bw";
136
- var menuItem = "_ms _4";
137
- var findBtn$1 = "_i_ _im _bp _m";
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 = "_lu _cC _bw";
140
- var fileFilter = "_nH _o";
141
- var findInput = "_d6 _o";
142
- var keybarIconBtn = "_ee _br _m";
143
- var repoTitle = "_l8 _L";
144
- var input = "_cG _o";
145
- var group = "_cJ _P";
146
- var hint$1 = "_mf _9 _M";
147
- var sheetDir = "_ns _by";
148
- var upBtn = "_iE _bp _m";
149
- var findBtn = "_iI _im _bp _m";
150
- var goBtn = "_iJ _im _bp _m";
151
- var note = "_lS _bh";
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 = "_gr _e0";
155
- var factCopy = "_gy _br _m";
156
- var resultRow = "_lc _4";
157
- var resultBranch = "_ld _e5 _bi _bh _bo _m";
158
- var urlAction = "_le _e5 _bi _bh _e6";
159
- var curRow = "_g5 _eU";
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 = "_kt _bE";
163
- var hint = "_ku _bh";
164
- var kbtn = "_c2 _bq _m";
165
- var repeat = "_c5 _c4";
166
- var dpadUser = "_c8 _c4";
167
- var dpadEsc = "_c9 _c4";
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("./_ZwD1NY8D.js").then((m) => m.notifySessionsChanged(workspaceId));
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 $, tmux as $t, blankRow as A, firewallProbe as At, setSessionViewers as B, FRAME_HEADERS as Bt, tmuxWasStarted as C, ghKnownHosts as Ct, inside as D, stableGh as Dt, reportsWorking as E, setupPath as Et, noteBackground as F, agentLabel$1 as Ft, agentLabel as G, db as Gt, agentBadge as H, httpError as Ht, noteUserAnswered as I, catalogPin as It, getInstance as J, TMUX_SOCKET as Jt, agentMeta as K, get as Kt, onPhaseChange as L, toolById as Lt, clearAgentPhase as M, PROJECT_TOOLS as Mt, hookPhase as N, TOOLS as Nt, realInside as O, tilde as Ot, hookReportedAt as P, agentById as Pt, setInstance as Q, run$2 as Qt, setAgentPhase as R, applyPrefChange as Rt, tmuxName as S, doctor as St, readHookPayload as T, miseVersions as Tt, agentFamily as U, readBody as Ut, settleQuietWorking as V, checked as Vt, agentFromCommand as W, all as Wt, manifest as X, git as Xt, iconSvg as Y, gh as Yt, normalizeAccent as Z, gitEnv as Zt, notifySessionsChanged as _, preferredAgent as _t, creationOf as a, publishJson as at, sendToSession as b, setSetting as bt, forgetPanes as c, PREF_MAX as ct, killWorkspaceSessions as d, allPrefs as dt, config 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, publish as it, agentPhase as j, DEFAULT_GITHUB_HOST as jt, realInsideSync as k, which as kt, getSession as l, WORKSPACE_PREFS as lt, listSessions as m, disabledAgents as mt, cleanEnv as n, swr as nn, sendPush as nt, disposeSessions as o, subscribe as ot, listPanesWithin as p, deleteWorkspacePrefs as pt, ACCENT_RE as q, workspacePath as qt, clearTmuxStarted as r, withLock as rn, validSubscription as rt, ensureTmuxServer as s, subscriberCount as st, beginCreation as t, shared 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, FRAME_ANCESTORS as zt };
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 };
@@ -0,0 +1,2 @@
1
+ import { _ as notifySessionsChanged } from "./_CBAfUPnF.js";
2
+ export { notifySessionsChanged };