@dylanpiercey/work 0.0.116 → 0.0.118

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 (262) hide show
  1. package/bin/work.mjs +7 -29
  2. package/dist/_BIDn_RW1.js +2 -0
  3. package/dist/{_BHPrqqev.js → _CeVZfkIY.js} +95 -79
  4. package/dist/{_CmheBYWi.js → _DE2RUdbF.js} +43 -26
  5. package/dist/{_CEKO5mam.js → _EzN3zMKL.js} +39 -39
  6. package/dist/index.mjs +555 -526
  7. package/dist/public/assets/{_C5GxdpIx.js → _5MxjuuKr.js} +1 -1
  8. package/dist/public/assets/_5MxjuuKr.js.br +0 -0
  9. package/dist/public/assets/{_CmwkZmX02.js → _6hN6Ymx42.js} +1 -1
  10. package/dist/public/assets/_6hN6Ymx42.js.br +0 -0
  11. package/dist/public/assets/{_DbphB3_Y.js → _6nWMLOH4.js} +1 -1
  12. package/dist/public/assets/_6nWMLOH4.js.br +0 -0
  13. package/dist/public/assets/{_BNuVdL222.js → _A2tLqg9y2.js} +1 -1
  14. package/dist/public/assets/_A2tLqg9y2.js.br +0 -0
  15. package/dist/public/assets/{_DJfRmyos.js → _Ar4UEz40.js} +1 -1
  16. package/dist/public/assets/_Ar4UEz40.js.br +0 -0
  17. package/dist/public/assets/{_DwnEEAN3.js → _B-wISkbs.js} +1 -1
  18. package/dist/public/assets/_B-wISkbs.js.br +0 -0
  19. package/dist/public/assets/{_DvlwodnH2.js → _B0HJN5ud2.js} +1 -1
  20. package/dist/public/assets/_B0HJN5ud2.js.br +0 -0
  21. package/dist/public/assets/{_BlLpqMok.js → _B6RbG5-A.js} +1 -1
  22. package/dist/public/assets/_B6RbG5-A.js.br +0 -0
  23. package/dist/public/assets/{_Cy6vUvOf.js → _B7cCygGe.js} +1 -1
  24. package/dist/public/assets/_B7cCygGe.js.br +0 -0
  25. package/dist/public/assets/{_CXfVimxX2.js → _B7n-BASn2.js} +1 -1
  26. package/dist/public/assets/{_BFDzSRUb.js → _BBPUNQgX.js} +1 -1
  27. package/dist/public/assets/_BBPUNQgX.js.br +0 -0
  28. package/dist/public/assets/{_BbZSZ8_I2.js → _BHhGmIxX2.js} +1 -1
  29. package/dist/public/assets/_BHhGmIxX2.js.br +0 -0
  30. package/dist/public/assets/{_bNejHwcl2.js → _BJjI-m6s2.js} +1 -1
  31. package/dist/public/assets/_BJjI-m6s2.js.br +0 -0
  32. package/dist/public/assets/{_BE2qRsPs.js → _BJz-Y1HI.js} +1 -1
  33. package/dist/public/assets/_BJz-Y1HI.js.br +0 -0
  34. package/dist/public/assets/{_CSBn-Hvt2.js → _BLeHC7zC2.js} +1 -1
  35. package/dist/public/assets/_BLeHC7zC2.js.br +0 -0
  36. package/dist/public/assets/{_zGSRZWQr.js → _BO_BKeKC.js} +1 -1
  37. package/dist/public/assets/_BO_BKeKC.js.br +0 -0
  38. package/dist/public/assets/{_DM1EXBbo.js → _BVhnP3T6.js} +1 -1
  39. package/dist/public/assets/_BVhnP3T6.js.br +0 -0
  40. package/dist/public/assets/{_DB_C0F-Z2.js → _BXK6LHvo2.js} +1 -1
  41. package/dist/public/assets/_BXK6LHvo2.js.br +0 -0
  42. package/dist/public/assets/{_CfRbL_Ta2.js → _BYPDDEEO2.js} +1 -1
  43. package/dist/public/assets/_BYPDDEEO2.js.br +0 -0
  44. package/dist/public/assets/{_BZou6DQD.js → _BbB3wFGa.js} +1 -1
  45. package/dist/public/assets/_BbB3wFGa.js.br +0 -0
  46. package/dist/public/assets/{_CASdx3AE.js → _BicOIlC8.js} +1 -1
  47. package/dist/public/assets/_BicOIlC8.js.br +0 -0
  48. package/dist/public/assets/{_DzazkU0O.js → _BjVuWYXf.js} +1 -1
  49. package/dist/public/assets/_BjVuWYXf.js.br +0 -0
  50. package/dist/public/assets/{_BYis3bU3.js → _BjeXgSse.js} +1 -1
  51. package/dist/public/assets/_BjeXgSse.js.br +0 -0
  52. package/dist/public/assets/{_DmHNNuUl2.js → _Bk7GDGa82.js} +1 -1
  53. package/dist/public/assets/_Bk7GDGa82.js.br +0 -0
  54. package/dist/public/assets/{_CDwswGat.js → _BmJ9IUv4.js} +1 -1
  55. package/dist/public/assets/_BmJ9IUv4.js.br +0 -0
  56. package/dist/public/assets/{_chJ5r2KH2.js → _BtxdHY0V2.js} +1 -1
  57. package/dist/public/assets/_BtxdHY0V2.js.br +0 -0
  58. package/dist/public/assets/{_DAcB8FCB.js → _Bu7Rb2KV.js} +1 -1
  59. package/dist/public/assets/_Bu7Rb2KV.js.br +0 -0
  60. package/dist/public/assets/{_R6H7Mgwp.js → _BzIW49zC.js} +1 -1
  61. package/dist/public/assets/_BzIW49zC.js.br +0 -0
  62. package/dist/public/assets/{_p7Nk6TN_.js → _C1oox0_T.js} +1 -1
  63. package/dist/public/assets/_C1oox0_T.js.br +0 -0
  64. package/dist/public/assets/{_BzAD6TBo.js → _C45kLCWD.js} +8 -8
  65. package/dist/public/assets/_C45kLCWD.js.br +0 -0
  66. package/dist/public/assets/{_ClccdQK9.js → _C4B_GVHB.js} +1 -1
  67. package/dist/public/assets/_C4B_GVHB.js.br +0 -0
  68. package/dist/public/assets/{_BqkNbZMs.js → _C4tiWhG4.js} +1 -1
  69. package/dist/public/assets/_C4tiWhG4.js.br +0 -0
  70. package/dist/public/assets/{_C9TtAENI.js → _C7wuWtJ1.js} +1 -1
  71. package/dist/public/assets/{_DAHhUiki.js → _CE6eJWkd.js} +1 -1
  72. package/dist/public/assets/_CE6eJWkd.js.br +0 -0
  73. package/dist/public/assets/{_BY4vFN-X.js → _CHWTX_c6.js} +1 -1
  74. package/dist/public/assets/_CHWTX_c6.js.br +0 -0
  75. package/dist/public/assets/{_B0e3Ak7A.js → _CK9tV5oJ.js} +1 -1
  76. package/dist/public/assets/_CK9tV5oJ.js.br +0 -0
  77. package/dist/public/assets/{_B5uwAcaB.js → _CQRIuNJi.js} +1 -1
  78. package/dist/public/assets/_CQRIuNJi.js.br +0 -0
  79. package/dist/public/assets/{_B4Nu-wag.js → _CUgERK7S.js} +1 -1
  80. package/dist/public/assets/_CUgERK7S.js.br +0 -0
  81. package/dist/public/assets/{_B_qJHbwz.js → _CV5RGu5i.js} +1 -1
  82. package/dist/public/assets/_CV5RGu5i.js.br +0 -0
  83. package/dist/public/assets/{_JMdaap6W.js → _CVtWHYIm.js} +21 -21
  84. package/dist/public/assets/_CVtWHYIm.js.br +0 -0
  85. package/dist/public/assets/{_BB3PfRLa2.js → _CYUpTPHg2.js} +1 -1
  86. package/dist/public/assets/_CYUpTPHg2.js.br +0 -0
  87. package/dist/public/assets/{_mbrwXzyQ.js → _CYemOBLN.js} +1 -1
  88. package/dist/public/assets/_CYemOBLN.js.br +0 -0
  89. package/dist/public/assets/{_Ht8V87dw2.js → _CZ0_xhSs2.js} +1 -1
  90. package/dist/public/assets/{_CMtRRt5X2.js → _C_mUeGVh2.js} +1 -1
  91. package/dist/public/assets/_C_mUeGVh2.js.br +0 -0
  92. package/dist/public/assets/{_D5BeGelx.js → _Cb-dgrCB.js} +1 -1
  93. package/dist/public/assets/_Cb-dgrCB.js.br +0 -0
  94. package/dist/public/assets/{_C2NMRiCh.js → _CdAkLhxG.js} +1 -1
  95. package/dist/public/assets/_CdAkLhxG.js.br +0 -0
  96. package/dist/public/assets/{_Da_nvZ5y.js → _Cf4M5kpG.js} +1 -1
  97. package/dist/public/assets/_Cf4M5kpG.js.br +0 -0
  98. package/dist/public/assets/{_BaJXK68-.js → _CoGdSkvu.js} +1 -1
  99. package/dist/public/assets/_CoGdSkvu.js.br +0 -0
  100. package/dist/public/assets/{_ChrrA5fF.js → _Cpm5RoWi.js} +1 -1
  101. package/dist/public/assets/_Cpm5RoWi.js.br +0 -0
  102. package/dist/public/assets/{_CbbUwTEJ.js → _CpuBCvd6.js} +1 -1
  103. package/dist/public/assets/_CpuBCvd6.js.br +0 -0
  104. package/dist/public/assets/{_CTlZ1Lkv2.js → _CsM5ftwz2.js} +1 -1
  105. package/dist/public/assets/_CsM5ftwz2.js.br +0 -0
  106. package/dist/public/assets/{_Ddq_uzCH2.js → _CtcH3ZyQ2.js} +1 -1
  107. package/dist/public/assets/_CtcH3ZyQ2.js.br +0 -0
  108. package/dist/public/assets/{_DN-QtD1c.js → _CyDfS08K.js} +1 -1
  109. package/dist/public/assets/_CyDfS08K.js.br +0 -0
  110. package/dist/public/assets/{_BshAqMBd2.js → _D5qcTAVE2.js} +1 -1
  111. package/dist/public/assets/_D5qcTAVE2.js.br +0 -0
  112. package/dist/public/assets/{_BbXYlhz_2.js → _DAGSDF8g2.js} +1 -1
  113. package/dist/public/assets/_DAGSDF8g2.js.br +0 -0
  114. package/dist/public/assets/{_CXKoguEA.js → _DIBThzVN.js} +1 -1
  115. package/dist/public/assets/_DIBThzVN.js.br +0 -0
  116. package/dist/public/assets/{_BVkMt2PY2.js → _DJEzPcA82.js} +1 -1
  117. package/dist/public/assets/_DJEzPcA82.js.br +0 -0
  118. package/dist/public/assets/{_DCM_uGbe.js → _DLBE7zID.js} +1 -1
  119. package/dist/public/assets/_DLBE7zID.js.br +0 -0
  120. package/dist/public/assets/{_C6_jrqyQ2.js → _DP-5FfqK2.js} +1 -1
  121. package/dist/public/assets/_DP-5FfqK2.js.br +0 -0
  122. package/dist/public/assets/{_Cj0z289t.js → _DglnXAKo.js} +1 -1
  123. package/dist/public/assets/_DglnXAKo.js.br +0 -0
  124. package/dist/public/assets/{_BynYlMA5.js → _Dh3HoKhq.js} +1 -1
  125. package/dist/public/assets/_Dh3HoKhq.js.br +0 -0
  126. package/dist/public/assets/{_NlAtY9z9.js → _DkxpDwXy.js} +1 -1
  127. package/dist/public/assets/_DkxpDwXy.js.br +0 -0
  128. package/dist/public/assets/{_BomcrPR22.js → _DoWF8ByT2.js} +1 -1
  129. package/dist/public/assets/_DoWF8ByT2.js.br +0 -0
  130. package/dist/public/assets/{_Rwpt_eYd.js → _HSgzwAmZ.js} +1 -1
  131. package/dist/public/assets/_HSgzwAmZ.js.br +0 -0
  132. package/dist/public/assets/{_BoLijUVS.js → _J22ldpof.js} +1 -1
  133. package/dist/public/assets/_J22ldpof.js.br +0 -0
  134. package/dist/public/assets/{_yu6_Donv2.js → _J98Rxkdb2.js} +1 -1
  135. package/dist/public/assets/_J98Rxkdb2.js.br +0 -0
  136. package/dist/public/assets/{_DZMpOq_k2.js → _JVw8w_7p2.js} +1 -1
  137. package/dist/public/assets/_JVw8w_7p2.js.br +0 -0
  138. package/dist/public/assets/{_BSIklgtS.js → _JoWlQVpX.js} +1 -1
  139. package/dist/public/assets/_JoWlQVpX.js.br +0 -0
  140. package/dist/public/assets/{_BvXxAv4T.js → _TbUx96Br.js} +1 -1
  141. package/dist/public/assets/_TbUx96Br.js.br +0 -0
  142. package/dist/public/assets/{_Dz1I8UR4.js → _akTAmktB.js} +1 -1
  143. package/dist/public/assets/_akTAmktB.js.br +0 -0
  144. package/dist/public/assets/{_BK6OZyLT2.js → _dFDJ9A9g2.js} +1 -1
  145. package/dist/public/assets/_dFDJ9A9g2.js.br +0 -0
  146. package/dist/public/assets/{_BhTLJW2Y.js → _gHuYn_71.js} +1 -1
  147. package/dist/public/assets/_gHuYn_71.js.br +0 -0
  148. package/dist/public/assets/{_Df3c1-mC.js → _j9TQP7q5.js} +1 -1
  149. package/dist/public/assets/_j9TQP7q5.js.br +0 -0
  150. package/dist/public/assets/_sWLklcDZ.js +1 -0
  151. package/dist/public/assets/{_Bp0PawFO.js → _tshHvoEk.js} +1 -1
  152. package/dist/public/assets/_tshHvoEk.js.br +0 -0
  153. package/dist/public/assets/{_2AY1cevg.js → _xVSWwNNy.js} +1 -1
  154. package/dist/public/assets/_xVSWwNNy.js.br +0 -0
  155. package/dist/public/assets/{_-3KGdeyo.js → _x_T0NsDl.js} +1 -1
  156. package/dist/public/assets/_x_T0NsDl.js.br +0 -0
  157. package/dist/public/assets/app-page-LDZ2KXKs.css +1 -0
  158. package/dist/public/assets/app-page-LDZ2KXKs.css.br +0 -0
  159. package/dist/public/assets/diff-view-0Uofj0Dv.css +1 -0
  160. package/dist/public/assets/diff-view-0Uofj0Dv.css.br +0 -0
  161. package/dist/public/assets/new-CwlftYMt.js +1 -0
  162. package/dist/public/assets/settings-CwlftYMt.js +1 -0
  163. package/dist/public/assets/shiki-wasm-stub-sWLklcDZ.js +1 -0
  164. package/dist/public/assets/w-CwlftYMt.js +1 -0
  165. package/dist/public/assets/w._-BGFF38Oe.js +1 -0
  166. package/dist/public/assets/w._-CwlftYMt.js +1 -0
  167. package/dist/public/assets/{worker-DZo603XT.js → worker-hTZla-j_.js} +1 -1
  168. package/dist/public/assets/worker-hTZla-j_.js.br +0 -0
  169. package/lib/setup/doctor.d.mts +0 -2
  170. package/lib/setup/doctor.mjs +17 -3
  171. package/lib/usage/format.d.mts +2 -0
  172. package/lib/usage/format.mjs +22 -0
  173. package/package.json +1 -1
  174. package/scripts/migrate.mjs +25 -0
  175. package/dist/_BBEL67Rf.js +0 -2
  176. package/dist/public/assets/_-3KGdeyo.js.br +0 -0
  177. package/dist/public/assets/_2AY1cevg.js.br +0 -0
  178. package/dist/public/assets/_B0e3Ak7A.js.br +0 -0
  179. package/dist/public/assets/_B4Nu-wag.js.br +0 -0
  180. package/dist/public/assets/_B5uwAcaB.js.br +0 -0
  181. package/dist/public/assets/_BB3PfRLa2.js.br +0 -0
  182. package/dist/public/assets/_BE2qRsPs.js.br +0 -0
  183. package/dist/public/assets/_BFDzSRUb.js.br +0 -0
  184. package/dist/public/assets/_BK6OZyLT2.js.br +0 -0
  185. package/dist/public/assets/_BNuVdL222.js.br +0 -0
  186. package/dist/public/assets/_BSIklgtS.js.br +0 -0
  187. package/dist/public/assets/_BVkMt2PY2.js.br +0 -0
  188. package/dist/public/assets/_BY4vFN-X.js.br +0 -0
  189. package/dist/public/assets/_BYis3bU3.js.br +0 -0
  190. package/dist/public/assets/_BZou6DQD.js.br +0 -0
  191. package/dist/public/assets/_B_qJHbwz.js.br +0 -0
  192. package/dist/public/assets/_BaJXK68-.js.br +0 -0
  193. package/dist/public/assets/_BbXYlhz_2.js.br +0 -0
  194. package/dist/public/assets/_BbZSZ8_I2.js.br +0 -0
  195. package/dist/public/assets/_BhTLJW2Y.js.br +0 -0
  196. package/dist/public/assets/_BlLpqMok.js.br +0 -0
  197. package/dist/public/assets/_BnjxR4X6.js +0 -1
  198. package/dist/public/assets/_BnjxR4X6.js.br +0 -0
  199. package/dist/public/assets/_BoLijUVS.js.br +0 -0
  200. package/dist/public/assets/_BomcrPR22.js.br +0 -0
  201. package/dist/public/assets/_Bp0PawFO.js.br +0 -0
  202. package/dist/public/assets/_BqkNbZMs.js.br +0 -0
  203. package/dist/public/assets/_BshAqMBd2.js.br +0 -0
  204. package/dist/public/assets/_BvXxAv4T.js.br +0 -0
  205. package/dist/public/assets/_BynYlMA5.js.br +0 -0
  206. package/dist/public/assets/_BzAD6TBo.js.br +0 -0
  207. package/dist/public/assets/_C2NMRiCh.js.br +0 -0
  208. package/dist/public/assets/_C5GxdpIx.js.br +0 -0
  209. package/dist/public/assets/_C6_jrqyQ2.js.br +0 -0
  210. package/dist/public/assets/_CASdx3AE.js.br +0 -0
  211. package/dist/public/assets/_CDwswGat.js.br +0 -0
  212. package/dist/public/assets/_CMtRRt5X2.js.br +0 -0
  213. package/dist/public/assets/_CSBn-Hvt2.js.br +0 -0
  214. package/dist/public/assets/_CTlZ1Lkv2.js.br +0 -0
  215. package/dist/public/assets/_CXKoguEA.js.br +0 -0
  216. package/dist/public/assets/_CbbUwTEJ.js.br +0 -0
  217. package/dist/public/assets/_CfRbL_Ta2.js.br +0 -0
  218. package/dist/public/assets/_ChrrA5fF.js.br +0 -0
  219. package/dist/public/assets/_Cj0z289t.js.br +0 -0
  220. package/dist/public/assets/_ClccdQK9.js.br +0 -0
  221. package/dist/public/assets/_CmwkZmX02.js.br +0 -0
  222. package/dist/public/assets/_Cy6vUvOf.js.br +0 -0
  223. package/dist/public/assets/_D5BeGelx.js.br +0 -0
  224. package/dist/public/assets/_DAHhUiki.js.br +0 -0
  225. package/dist/public/assets/_DAcB8FCB.js.br +0 -0
  226. package/dist/public/assets/_DB_C0F-Z2.js.br +0 -0
  227. package/dist/public/assets/_DCM_uGbe.js.br +0 -0
  228. package/dist/public/assets/_DJfRmyos.js.br +0 -0
  229. package/dist/public/assets/_DM1EXBbo.js.br +0 -0
  230. package/dist/public/assets/_DN-QtD1c.js.br +0 -0
  231. package/dist/public/assets/_DZMpOq_k2.js.br +0 -0
  232. package/dist/public/assets/_Da_nvZ5y.js.br +0 -0
  233. package/dist/public/assets/_DbphB3_Y.js.br +0 -0
  234. package/dist/public/assets/_Ddq_uzCH2.js.br +0 -0
  235. package/dist/public/assets/_Df3c1-mC.js.br +0 -0
  236. package/dist/public/assets/_DmHNNuUl2.js.br +0 -0
  237. package/dist/public/assets/_DvlwodnH2.js.br +0 -0
  238. package/dist/public/assets/_DwnEEAN3.js.br +0 -0
  239. package/dist/public/assets/_Dz1I8UR4.js.br +0 -0
  240. package/dist/public/assets/_DzazkU0O.js.br +0 -0
  241. package/dist/public/assets/_JMdaap6W.js.br +0 -0
  242. package/dist/public/assets/_NlAtY9z9.js.br +0 -0
  243. package/dist/public/assets/_R6H7Mgwp.js.br +0 -0
  244. package/dist/public/assets/_Rwpt_eYd.js.br +0 -0
  245. package/dist/public/assets/_bNejHwcl2.js.br +0 -0
  246. package/dist/public/assets/_chJ5r2KH2.js.br +0 -0
  247. package/dist/public/assets/_mbrwXzyQ.js.br +0 -0
  248. package/dist/public/assets/_p7Nk6TN_.js.br +0 -0
  249. package/dist/public/assets/_yu6_Donv2.js.br +0 -0
  250. package/dist/public/assets/_zGSRZWQr.js.br +0 -0
  251. package/dist/public/assets/app-page-xZ7ggaFZ.css +0 -1
  252. package/dist/public/assets/app-page-xZ7ggaFZ.css.br +0 -0
  253. package/dist/public/assets/diff-view-COEkSsJh.css +0 -1
  254. package/dist/public/assets/diff-view-COEkSsJh.css.br +0 -0
  255. package/dist/public/assets/new-B4TVUCf9.js +0 -1
  256. package/dist/public/assets/settings-B4TVUCf9.js +0 -1
  257. package/dist/public/assets/w-B4TVUCf9.js +0 -1
  258. package/dist/public/assets/w._-B4TVUCf9.js +0 -1
  259. package/dist/public/assets/w._-CJLLzbFK.js +0 -1
  260. package/dist/public/assets/wasm-S0UXjx1m.js +0 -1
  261. package/dist/public/assets/wasm-S0UXjx1m.js.br +0 -0
  262. package/dist/public/assets/worker-DZo603XT.js.br +0 -0
@@ -65,16 +65,19 @@ var tmux = (args, env) => run$1("tmux", [
65
65
  /** launchd starts the service with no locale at all, and under a non-UTF-8
66
66
  * locale tmux replaces characters it deems unprintable in format output —
67
67
  * including the \t separators sessionStates and the scraper split on, which
68
- * came back as `_` and made every session read dead on macOS. Panes get a
69
- * UTF-8 locale from cleanEnv; our own tmux clients need the same guarantee. */
68
+ * came back as `_` and made every session read dead on macOS. Our own tmux
69
+ * clients need this, and so do the panes we spawn (sessions.ts cleanEnv). */
70
+ function forceUtf8Locale(env) {
71
+ if (!/utf-?8/i.test(env.LC_ALL || env.LC_CTYPE || env.LANG || "")) {
72
+ delete env.LC_ALL;
73
+ env.LC_CTYPE = process.platform === "darwin" ? "UTF-8" : "C.UTF-8";
74
+ }
75
+ return env;
76
+ }
70
77
  function utf8Locale(env) {
71
78
  const out = {};
72
79
  for (const [key, value] of Object.entries(env)) if (value !== void 0) out[key] = value;
73
- if (!/utf-?8/i.test(out.LC_ALL || out.LC_CTYPE || out.LANG || "")) {
74
- delete out.LC_ALL;
75
- out.LC_CTYPE = process.platform === "darwin" ? "UTF-8" : "C.UTF-8";
76
- }
77
- return out;
80
+ return forceUtf8Locale(out);
78
81
  }
79
82
  //#endregion
80
83
  //#region src/server/db.ts
@@ -464,11 +467,20 @@ function ghKnownHosts() {
464
467
  */
465
468
  function discoverAgents() {
466
469
  const dirs = setupPath().split(path.delimiter);
470
+ const seenDirs = /* @__PURE__ */ new Set();
467
471
  const seen = /* @__PURE__ */ new Map();
468
472
  for (const dir of dirs) {
473
+ let real;
474
+ try {
475
+ real = fs.realpathSync(dir);
476
+ } catch {
477
+ continue;
478
+ }
479
+ if (seenDirs.has(real)) continue;
480
+ seenDirs.add(real);
469
481
  let names;
470
482
  try {
471
- names = fs.readdirSync(dir);
483
+ names = fs.readdirSync(real);
472
484
  } catch {
473
485
  continue;
474
486
  }
@@ -643,10 +655,11 @@ function isKnownAgent(id) {
643
655
  }
644
656
  /** Default agent for empty-session Start / auto-create. Falls back to the
645
657
  * first enabled instance, and to the shell when nothing is installed —
646
- * never to a binary that is not there. */
647
- function preferredAgent() {
658
+ * never to a binary that is not there. Pass `enabled` when the caller
659
+ * already has the list (middleware / settings snapshot) so PATH is not
660
+ * scanned twice. */
661
+ function preferredAgent(enabled = enabledAgents()) {
648
662
  const stored = getSetting("preferredAgent");
649
- const enabled = enabledAgents();
650
663
  if (stored && enabled.includes(stored)) return stored;
651
664
  return enabled[0] || "shell";
652
665
  }
@@ -6538,7 +6551,7 @@ function publishChange(sessionId) {
6538
6551
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
6539
6552
  if (row?.workspace_id) {
6540
6553
  const workspaceId = row.workspace_id;
6541
- import("./_BBEL67Rf.js").then((m) => m.notifySessionsChanged(workspaceId));
6554
+ import("./_BIDn_RW1.js").then((m) => m.notifySessionsChanged(workspaceId));
6542
6555
  return;
6543
6556
  }
6544
6557
  publish("sessions.changed");
@@ -6870,12 +6883,12 @@ async function loadPayload(key, live) {
6870
6883
  }
6871
6884
  /** How to get a fresh token back, per provider (meta.json `reauth`). */
6872
6885
  var reauthHint = (key) => agentMeta(key)?.reauth;
6873
- /** Never signed in (or the CLI's credentials went missing) — not an outage.
6874
- * Distinct from a failed request: nothing was ever sent, so blaming the
6875
- * network would send you debugging the wrong thing. */
6876
6886
  /** Row note for a CLI signed in with an API key: metered by the bill, not
6877
6887
  * by plan windows, so the empty meters are the whole story. */
6878
6888
  var API_KEY_NOTE = "API key — pay per use, no plan limits";
6889
+ /** Never signed in (or the CLI's credentials went missing) — not an outage.
6890
+ * Distinct from a failed request: nothing was ever sent, so blaming the
6891
+ * network would send you debugging the wrong thing. */
6879
6892
  function noAuthReason(key) {
6880
6893
  const hint = reauthHint(key);
6881
6894
  return hint ? `not signed in (run \`${hint}\`)` : "no credentials on disk";
@@ -7992,20 +8005,28 @@ async function panePids() {
7992
8005
  ]).catch(() => "");
7993
8006
  return new Set(out.split("\n").filter(Boolean).map(Number));
7994
8007
  }
8008
+ /** Cleared once per process — boot already runs this, and a server we
8009
+ * create below never has PORT set, so re-running on every attach only
8010
+ * unsets something already unset. */
8011
+ var portCleared = false;
7995
8012
  /** Start the tmux server in its own systemd user unit so it escapes this
7996
8013
  * service's cgroup — otherwise `systemctl restart work` kills every
7997
8014
  * session with it. A hidden "work-keeper" session pins the server alive
7998
8015
  * (tmux exits when its last session closes). */
7999
8016
  async function ensureTmuxServer() {
8000
8017
  if (await tmux(["has-session"]).then(() => true, () => false)) {
8001
- await tmux([
8002
- "set-environment",
8003
- "-g",
8004
- "-u",
8005
- "PORT"
8006
- ]).catch(() => {});
8018
+ if (!portCleared) {
8019
+ await tmux([
8020
+ "set-environment",
8021
+ "-g",
8022
+ "-u",
8023
+ "PORT"
8024
+ ]).catch(() => {});
8025
+ portCleared = true;
8026
+ }
8007
8027
  return;
8008
8028
  }
8029
+ portCleared = true;
8009
8030
  await run$1("systemd-run", [
8010
8031
  "--user",
8011
8032
  "--unit=work-tmux",
@@ -8162,11 +8183,7 @@ function cleanEnv() {
8162
8183
  const bins = [`${home}/.local/bin`, ...agentPathDirs(home)];
8163
8184
  const parts = (env.PATH || "").split(":");
8164
8185
  env.PATH = [...parts, ...bins.filter((bin) => !parts.includes(bin))].join(":");
8165
- if (!/utf-?8/i.test(env.LC_ALL || env.LC_CTYPE || env.LANG || "")) {
8166
- delete env.LC_ALL;
8167
- env.LC_CTYPE = process.platform === "darwin" ? "UTF-8" : "C.UTF-8";
8168
- }
8169
- return env;
8186
+ return forceUtf8Locale(env);
8170
8187
  }
8171
8188
  var AGENT_BOOT_MS = 1500;
8172
8189
  var PASTE_SETTLE_MS = 150;
@@ -1906,26 +1906,26 @@ function toObjectExpression(options) {
1906
1906
  return result + "}";
1907
1907
  }
1908
1908
  var phase = {
1909
- working: "_A",
1910
- waiting: "_B",
1911
- idle: "_C",
1912
- off: "_D"
1909
+ working: "_z",
1910
+ waiting: "_A",
1911
+ idle: "_B",
1912
+ off: "_C"
1913
1913
  };
1914
- var btnSm = "_G _o";
1915
- var btnLg = "_H _o";
1914
+ var btnSm = "_F _o";
1915
+ var btnLg = "_G _o";
1916
1916
  var tone = {
1917
- accent: "_L",
1918
- ok: "_M",
1919
- warn: "_N",
1920
- danger: "_O",
1921
- merged: "_P",
1922
- closed: "_Q"
1917
+ accent: "_K",
1918
+ ok: "_L",
1919
+ warn: "_M",
1920
+ danger: "_N",
1921
+ merged: "_O",
1922
+ closed: "_P"
1923
1923
  };
1924
- var metaTrunc = "_T _S";
1925
- var inputLg = "_V _U";
1926
- var iconBtnXs = "_Z _j";
1927
- var iconBtnRow = "_0 _j";
1928
- var iconBtnLg = "_1 _j";
1924
+ var metaTrunc = "_S _R";
1925
+ var inputLg = "_U _T";
1926
+ var iconBtnXs = "_Y _j";
1927
+ var iconBtnRow = "_Z _j";
1928
+ var iconBtnLg = "_0 _j";
1929
1929
  //#endregion
1930
1930
  //#region src/client/github.ts
1931
1931
  /** A repo's full name is `[host/]owner/name`; the host segment is present
@@ -1964,14 +1964,14 @@ function repoLabel(fullName) {
1964
1964
  return fullName;
1965
1965
  }
1966
1966
  var toastKind = {
1967
- error: "_bd",
1968
- warn: "_be",
1969
- info: "_bf"
1967
+ error: "_bc",
1968
+ warn: "_bd",
1969
+ info: "_be"
1970
1970
  };
1971
1971
  var toastTitle = {
1972
- error: "_bg",
1973
- warn: "_bh",
1974
- info: "_bi"
1972
+ error: "_bf",
1973
+ warn: "_bg",
1974
+ info: "_bh"
1975
1975
  };
1976
1976
  //#endregion
1977
1977
  //#region src/tags/icons/icon-base.marko
@@ -1984,7 +1984,7 @@ var icon_base_default = _template("M", (input) => {
1984
1984
  });
1985
1985
  //#endregion
1986
1986
  //#region src/tags/icons/icon-xmark.marko
1987
- var icon_xmark_default = _template("mb", (input) => {
1987
+ var icon_xmark_default = _template("lb", (input) => {
1988
1988
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
1989
1989
  const $scope0_id = _scope_id();
1990
1990
  _set_serialize_reason({
@@ -2009,18 +2009,18 @@ var toast_default = _template("C", (input) => {
2009
2009
  const kind = inputKind || "error";
2010
2010
  const placement = inputPlacement || "float";
2011
2011
  const placementClass = {
2012
- float: "_bb",
2013
- inline: "_bc"
2012
+ float: "_ba",
2013
+ inline: "_bb"
2014
2014
  }[placement];
2015
2015
  _html(`<div${_attr_class([
2016
- "_ba",
2016
+ "__",
2017
2017
  toastKind[kind],
2018
2018
  placementClass,
2019
2019
  inputClass
2020
2020
  ])} role=${kind === "error" ? "alert" : "status"}${_attrs_partial(htmlInput, {
2021
2021
  class: 1,
2022
2022
  role: 1
2023
- }, "a", $scope0_id, "div")}><div${_attr_class("_bj")}>`);
2023
+ }, "a", $scope0_id, "div")}><div${_attr_class("_bi")}>`);
2024
2024
  _if(() => {
2025
2025
  if (title) {
2026
2026
  const $scope1_id = _scope_id();
@@ -2032,7 +2032,7 @@ var toast_default = _template("C", (input) => {
2032
2032
  _if(() => {
2033
2033
  if (content) {
2034
2034
  const $scope2_id = _scope_id();
2035
- _html(`<div${_attr_class("_bk")}>`);
2035
+ _html(`<div${_attr_class("_bj")}>`);
2036
2036
  _dynamic_tag($scope2_id, "b", content, {}, 0, 0, $sg__input_content);
2037
2037
  _html("</div>");
2038
2038
  $si__input_content && writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
@@ -2043,7 +2043,7 @@ var toast_default = _template("C", (input) => {
2043
2043
  _if(() => {
2044
2044
  if (action || onDismiss) {
2045
2045
  const $scope3_id = _scope_id();
2046
- _html(`<div${_attr_class("_bl")}>`);
2046
+ _html(`<div${_attr_class("_bk")}>`);
2047
2047
  _if(() => {
2048
2048
  if (action) {
2049
2049
  const $scope4_id = _scope_id();
@@ -2055,7 +2055,7 @@ var toast_default = _template("C", (input) => {
2055
2055
  _if(() => {
2056
2056
  if (onDismiss) {
2057
2057
  const $scope5_id = _scope_id();
2058
- _html(`<button${_attr_class([iconBtnRow, "_bm"])} type=button title=Dismiss aria-label=Dismiss>`);
2058
+ _html(`<button${_attr_class([iconBtnRow, "_bl"])} type=button title=Dismiss aria-label=Dismiss>`);
2059
2059
  icon_xmark_default({ size: 14 });
2060
2060
  _html(`</button>${_el_resume($scope5_id, "a")}`);
2061
2061
  _script($scope5_id, "C0");
@@ -2171,12 +2171,12 @@ function theme() {
2171
2171
  function setTheme(mode) {
2172
2172
  set("theme", mode === "system" ? null : mode);
2173
2173
  }
2174
- var sectionCount = "_bz _I _J";
2175
- var row = "_bK _bC";
2176
- var iconBtn = "_0 _j";
2174
+ var sectionCount = "_bp _H _I";
2175
+ var row = "_bA _bs";
2176
+ var iconBtn = "_Z _j";
2177
2177
  //#endregion
2178
2178
  //#region src/tags/icons/icon-refresh.marko
2179
- var icon_refresh_default = _template("eb", (input) => {
2179
+ var icon_refresh_default = _template("db", (input) => {
2180
2180
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
2181
2181
  const $scope0_id = _scope_id();
2182
2182
  _set_serialize_reason({
@@ -2227,7 +2227,7 @@ var icon_arrow_up_default = _template("K", (input) => {
2227
2227
  });
2228
2228
  //#endregion
2229
2229
  //#region src/tags/icons/icon-search.marko
2230
- var icon_search_default = _template("fb", (input) => {
2230
+ var icon_search_default = _template("eb", (input) => {
2231
2231
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
2232
2232
  const $scope0_id = _scope_id();
2233
2233
  _set_serialize_reason({
@@ -2286,7 +2286,7 @@ function fuzzy(query, text) {
2286
2286
  }
2287
2287
  //#endregion
2288
2288
  //#region src/tags/icons/icon-sidebar.marko
2289
- var icon_sidebar_default = _template("ib", (input) => {
2289
+ var icon_sidebar_default = _template("hb", (input) => {
2290
2290
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
2291
2291
  const $scope0_id = _scope_id();
2292
2292
  _set_serialize_reason({
@@ -2301,8 +2301,8 @@ var icon_sidebar_default = _template("ib", (input) => {
2301
2301
  });
2302
2302
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
2303
2303
  });
2304
- var findInput = "_fD _l";
2305
- var findIconBtn = "_fG _j";
2304
+ var findInput = "_fT _l";
2305
+ var findIconBtn = "_fW _j";
2306
2306
  //#endregion
2307
2307
  //#region src/tags/icons/icon-arrow-down.marko
2308
2308
  var icon_arrow_down_default = _template("H", (input) => {