@dylanpiercey/work 0.0.46 → 0.0.48

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 (265) hide show
  1. package/bin/work.mjs +84 -49
  2. package/dist/{_P9IsUQm2.js → _CO83dVER.js} +472 -35
  3. package/dist/_DjrRGy4k.js +2 -0
  4. package/dist/{_BlRAjywT.js → _Hz_qlZE1.js} +67 -67
  5. package/dist/{_CWl3Ch5X.js → _m3ryV1w6.js} +47 -46
  6. package/dist/index.mjs +2304 -1174
  7. package/dist/public/assets/{_qriUiiqP.js → _1cz-l3Ka.js} +1 -1
  8. package/dist/public/assets/_1cz-l3Ka.js.br +0 -0
  9. package/dist/public/assets/{_BXfL26ye2.js → _1oYv4fmY2.js} +1 -1
  10. package/dist/public/assets/_1oYv4fmY2.js.br +0 -0
  11. package/dist/public/assets/{_DCm-_PJn2.js → _3i592Qvz2.js} +1 -1
  12. package/dist/public/assets/_3i592Qvz2.js.br +0 -0
  13. package/dist/public/assets/{_cEH-PUtq2.js → _8nx9Raqx2.js} +1 -1
  14. package/dist/public/assets/_8nx9Raqx2.js.br +0 -0
  15. package/dist/public/assets/{_iIzVA4u72.js → _9yP8iK4t2.js} +1 -1
  16. package/dist/public/assets/_9yP8iK4t2.js.br +0 -0
  17. package/dist/public/assets/{_C8Et1SyI2.js → _B-MMW3nb2.js} +1 -1
  18. package/dist/public/assets/_B-MMW3nb2.js.br +0 -0
  19. package/dist/public/assets/{_Buzw695T2.js → _B2fn4I8S2.js} +1 -1
  20. package/dist/public/assets/_B2fn4I8S2.js.br +0 -0
  21. package/dist/public/assets/{_DbNaSvXF.js → _B49r6O_E.js} +1 -1
  22. package/dist/public/assets/_B49r6O_E.js.br +0 -0
  23. package/dist/public/assets/{_EuJYsBIp.js → _BBW7mJhZ.js} +1 -1
  24. package/dist/public/assets/_BBW7mJhZ.js.br +0 -0
  25. package/dist/public/assets/{_3Ix19RVv.js → _BC2FBUbj.js} +1 -1
  26. package/dist/public/assets/_BC2FBUbj.js.br +0 -0
  27. package/dist/public/assets/{_CNkHd20B.js → _BFt-jSq-.js} +1 -1
  28. package/dist/public/assets/_BFt-jSq-.js.br +0 -0
  29. package/dist/public/assets/{_2M21bg3q2.js → _BGyMoPGj2.js} +1 -1
  30. package/dist/public/assets/_BGyMoPGj2.js.br +0 -0
  31. package/dist/public/assets/{_BKoNtf_F.js → _BLjOZLxk.js} +1 -1
  32. package/dist/public/assets/_BLjOZLxk.js.br +0 -0
  33. package/dist/public/assets/{_BjNNABN4.js → _BPFJiBiE.js} +1 -1
  34. package/dist/public/assets/_BPFJiBiE.js.br +0 -0
  35. package/dist/public/assets/{_nYIFwHU2.js → _BPLnh5S4.js} +1 -1
  36. package/dist/public/assets/_BPLnh5S4.js.br +0 -0
  37. package/dist/public/assets/{_BIoq-ERW.js → _BRzL7uNP.js} +1 -1
  38. package/dist/public/assets/_BRzL7uNP.js.br +0 -0
  39. package/dist/public/assets/{_qsL2FxXl.js → _BV-nVD9L2.js} +1 -1
  40. package/dist/public/assets/_BV-nVD9L2.js.br +0 -0
  41. package/dist/public/assets/{_AnY5lXmz2.js → _BbMkV19p2.js} +1 -1
  42. package/dist/public/assets/_BbMkV19p2.js.br +0 -0
  43. package/dist/public/assets/{_BEK6FWxR.js → _BbW3-3ve.js} +1 -1
  44. package/dist/public/assets/_BbW3-3ve.js.br +0 -0
  45. package/dist/public/assets/{_DfrjsE1y2.js → _BdbnwCKs2.js} +1 -1
  46. package/dist/public/assets/_BdbnwCKs2.js.br +0 -0
  47. package/dist/public/assets/_BeSgyXoy2.js +1 -0
  48. package/dist/public/assets/_BeSgyXoy2.js.br +0 -0
  49. package/dist/public/assets/{_D6gJIVAe.js → _Bg9mkw0u.js} +1 -1
  50. package/dist/public/assets/_Bg9mkw0u.js.br +0 -0
  51. package/dist/public/assets/{_DXyHmj0W.js → _BhUM9ZCP.js} +1 -1
  52. package/dist/public/assets/_BhUM9ZCP.js.br +0 -0
  53. package/dist/public/assets/{_CIWR8COm.js → _Bhnzfac_.js} +1 -1
  54. package/dist/public/assets/_Bhnzfac_.js.br +0 -0
  55. package/dist/public/assets/{_iTZwOiw8.js → _BiEWaww7.js} +1 -1
  56. package/dist/public/assets/_BiEWaww7.js.br +0 -0
  57. package/dist/public/assets/{_CPintIPn.js → _Bm-lmvlM.js} +1 -1
  58. package/dist/public/assets/_Bm-lmvlM.js.br +0 -0
  59. package/dist/public/assets/{_BAm2L16s2.js → _Bpdzs0h4.js} +1 -1
  60. package/dist/public/assets/_Bpdzs0h4.js.br +0 -0
  61. package/dist/public/assets/{_XYmpEKpu.js → _BqeAAcor.js} +1 -1
  62. package/dist/public/assets/_BqeAAcor.js.br +0 -0
  63. package/dist/public/assets/{_Cjul82Zq.js → _Bvwr3uff.js} +1 -1
  64. package/dist/public/assets/_Bvwr3uff.js.br +0 -0
  65. package/dist/public/assets/{_BxoEzgEZ.js → _ByiODT9w.js} +1 -1
  66. package/dist/public/assets/_ByiODT9w.js.br +0 -0
  67. package/dist/public/assets/{_DGWBK-es.js → _C4NK2Cq5.js} +1 -1
  68. package/dist/public/assets/_C4NK2Cq5.js.br +0 -0
  69. package/dist/public/assets/{_C7ePJdWG.js → _CASsRCtt.js} +1 -1
  70. package/dist/public/assets/_CASsRCtt.js.br +0 -0
  71. package/dist/public/assets/{_DCWsqkZv2.js → _CH4P29Yf2.js} +1 -1
  72. package/dist/public/assets/_CH4P29Yf2.js.br +0 -0
  73. package/dist/public/assets/{_BwiRBnwa2.js → _CHqTBuzz2.js} +1 -1
  74. package/dist/public/assets/_CHqTBuzz2.js.br +0 -0
  75. package/dist/public/assets/{_DXcwnV6_2.js → _CIeZtXbg2.js} +1 -1
  76. package/dist/public/assets/_CIeZtXbg2.js.br +0 -0
  77. package/dist/public/assets/{_BRlDlrsI.js → _CObQoJCq.js} +1 -1
  78. package/dist/public/assets/_CObQoJCq.js.br +0 -0
  79. package/dist/public/assets/{_Bl1lbp_w.js → _CQDBqJkT.js} +1 -1
  80. package/dist/public/assets/_CQDBqJkT.js.br +0 -0
  81. package/dist/public/assets/{_CF8Ye5Pr.js → _CUqlR7rP.js} +1 -1
  82. package/dist/public/assets/_CUqlR7rP.js.br +0 -0
  83. package/dist/public/assets/{_Bwvf5O5m.js → _CUwAZxRw.js} +1 -1
  84. package/dist/public/assets/_CUwAZxRw.js.br +0 -0
  85. package/dist/public/assets/{_bnyHmBSB.js → _CbMNS899.js} +1 -1
  86. package/dist/public/assets/_CbMNS899.js.br +0 -0
  87. package/dist/public/assets/{_DHGqWb3U2.js → _Ced5468N2.js} +1 -1
  88. package/dist/public/assets/{_B_q23_II.js → _Cf0wSsqE.js} +1 -1
  89. package/dist/public/assets/_Cf0wSsqE.js.br +0 -0
  90. package/dist/public/assets/{_BYauXu-72.js → _ClEKr0Tm2.js} +1 -1
  91. package/dist/public/assets/_ClEKr0Tm2.js.br +0 -0
  92. package/dist/public/assets/{_DNzVvAp22.js → _CsNJf4g52.js} +1 -1
  93. package/dist/public/assets/_CsNJf4g52.js.br +0 -0
  94. package/dist/public/assets/{_D1PGPveJ2.js → _CtErcdf92.js} +1 -1
  95. package/dist/public/assets/_CtErcdf92.js.br +0 -0
  96. package/dist/public/assets/{_eKiwGFGI.js → _DAfu0wMa.js} +1 -1
  97. package/dist/public/assets/_DAfu0wMa.js.br +0 -0
  98. package/dist/public/assets/{_KWAohXQr.js → _DBN8F3s1.js} +1 -1
  99. package/dist/public/assets/_DBN8F3s1.js.br +0 -0
  100. package/dist/public/assets/{_CHF-A3pQ2.js → _DBn74psf2.js} +1 -1
  101. package/dist/public/assets/{_BpdQAAz52.js → _DFOnuGNp.js} +1 -1
  102. package/dist/public/assets/_DFOnuGNp.js.br +0 -0
  103. package/dist/public/assets/{_CCEQHCkw2.js → _DHvVwuPu2.js} +1 -1
  104. package/dist/public/assets/_DHvVwuPu2.js.br +0 -0
  105. package/dist/public/assets/{_C2_FIDzy.js → _DKnLFVdw.js} +1 -1
  106. package/dist/public/assets/_DKnLFVdw.js.br +0 -0
  107. package/dist/public/assets/{_DqtgQ2KQ2.js → _DLFnXIrG2.js} +1 -1
  108. package/dist/public/assets/_DLFnXIrG2.js.br +0 -0
  109. package/dist/public/assets/{_dqrrRyjM.js → _DLK0WouR.js} +1 -1
  110. package/dist/public/assets/_DLK0WouR.js.br +0 -0
  111. package/dist/public/assets/_DLLEkkcM.js +1531 -0
  112. package/dist/public/assets/_DLLEkkcM.js.br +0 -0
  113. package/dist/public/assets/{_apOz5w70.js → _DOpT45mO.js} +1 -1
  114. package/dist/public/assets/_DOpT45mO.js.br +0 -0
  115. package/dist/public/assets/{_CovynO6D.js → _DT9Qs1il.js} +1 -1
  116. package/dist/public/assets/_DT9Qs1il.js.br +0 -0
  117. package/dist/public/assets/{_DEwU7Qht2.js → _DVPPxo4e2.js} +1 -1
  118. package/dist/public/assets/_DVPPxo4e2.js.br +0 -0
  119. package/dist/public/assets/{_CJb-25b5.js → _De7fhQUT.js} +1 -1
  120. package/dist/public/assets/_De7fhQUT.js.br +0 -0
  121. package/dist/public/assets/{_7QGssl5Y2.js → _DgmBuYFG2.js} +1 -1
  122. package/dist/public/assets/_DgmBuYFG2.js.br +0 -0
  123. package/dist/public/assets/{_CV-6NFPr.js → _DjLQQUoq.js} +1 -1
  124. package/dist/public/assets/_DjLQQUoq.js.br +0 -0
  125. package/dist/public/assets/{_CcKgVKPB.js → _Dn4wMX5v.js} +1 -1
  126. package/dist/public/assets/_Dn4wMX5v.js.br +0 -0
  127. package/dist/public/assets/{_C8ZyCmzP2.js → _DsJkMBKU2.js} +1 -1
  128. package/dist/public/assets/_DsJkMBKU2.js.br +0 -0
  129. package/dist/public/assets/{_CG1U-TrX.js → _Ez06j6Qv.js} +1 -1
  130. package/dist/public/assets/_Ez06j6Qv.js.br +0 -0
  131. package/dist/public/assets/{_BfHpfaZ_.js → _FCV34uHN.js} +1 -1
  132. package/dist/public/assets/_FCV34uHN.js.br +0 -0
  133. package/dist/public/assets/{_BgEZ4VVT.js → _I6H6F0ME.js} +1 -1
  134. package/dist/public/assets/_I6H6F0ME.js.br +0 -0
  135. package/dist/public/assets/{_DXwZkY0g.js → _K6PNL3j4.js} +1 -1
  136. package/dist/public/assets/_K6PNL3j4.js.br +0 -0
  137. package/dist/public/assets/{_Da05VMNb.js → _KVpYyL9A.js} +1 -1
  138. package/dist/public/assets/_KVpYyL9A.js.br +0 -0
  139. package/dist/public/assets/{_BBEhnK4G.js → _KjztUkjx.js} +1 -1
  140. package/dist/public/assets/_KjztUkjx.js.br +0 -0
  141. package/dist/public/assets/{_352AdLA5.js → _Q6y5EfU1.js} +1 -1
  142. package/dist/public/assets/_Q6y5EfU1.js.br +0 -0
  143. package/dist/public/assets/{_B0-W17hf.js → _cRLLpjIg.js} +1 -1
  144. package/dist/public/assets/_cRLLpjIg.js.br +0 -0
  145. package/dist/public/assets/{_wqvH6a9w.js → _h8qSl3Me.js} +1 -1
  146. package/dist/public/assets/{_CulCcVql.js → _kv39JOeM.js} +1 -1
  147. package/dist/public/assets/_kv39JOeM.js.br +0 -0
  148. package/dist/public/assets/{_DTpbGvLK.js → _o1of2_lP.js} +1 -1
  149. package/dist/public/assets/_o1of2_lP.js.br +0 -0
  150. package/dist/public/assets/{_7EJ8kgH9.js → _qoSWRJiT.js} +1 -1
  151. package/dist/public/assets/_qoSWRJiT.js.br +0 -0
  152. package/dist/public/assets/{_B5-VBCs9.js → _yQJK428k.js} +1 -1
  153. package/dist/public/assets/_yQJK428k.js.br +0 -0
  154. package/dist/public/assets/diff-view-CQX-Ovnt.css +1 -0
  155. package/dist/public/assets/diff-view-CQX-Ovnt.css.br +0 -0
  156. package/dist/public/assets/index-DR0Bvd6u.css +1 -0
  157. package/dist/public/assets/index-DR0Bvd6u.css.br +0 -0
  158. package/dist/public/assets/index-fCEONff1.js +85 -0
  159. package/dist/public/assets/index-fCEONff1.js.br +0 -0
  160. package/lib/setup/catalog.d.mts +22 -0
  161. package/lib/setup/catalog.mjs +72 -0
  162. package/lib/setup/doctor.d.mts +49 -0
  163. package/lib/setup/doctor.mjs +203 -0
  164. package/lib/setup/install.d.mts +14 -0
  165. package/lib/setup/install.mjs +135 -0
  166. package/package.json +2 -1
  167. package/dist/_kABYZA6_.js +0 -2
  168. package/dist/public/assets/_2M21bg3q2.js.br +0 -0
  169. package/dist/public/assets/_352AdLA5.js.br +0 -0
  170. package/dist/public/assets/_3Ix19RVv.js.br +0 -0
  171. package/dist/public/assets/_7EJ8kgH9.js.br +0 -0
  172. package/dist/public/assets/_7QGssl5Y2.js.br +0 -0
  173. package/dist/public/assets/_AnY5lXmz2.js.br +0 -0
  174. package/dist/public/assets/_B0-W17hf.js.br +0 -0
  175. package/dist/public/assets/_B5-VBCs9.js.br +0 -0
  176. package/dist/public/assets/_BAm2L16s2.js.br +0 -0
  177. package/dist/public/assets/_BBEhnK4G.js.br +0 -0
  178. package/dist/public/assets/_BEK6FWxR.js.br +0 -0
  179. package/dist/public/assets/_BIoq-ERW.js.br +0 -0
  180. package/dist/public/assets/_BKoNtf_F.js.br +0 -0
  181. package/dist/public/assets/_BRlDlrsI.js.br +0 -0
  182. package/dist/public/assets/_BXfL26ye2.js.br +0 -0
  183. package/dist/public/assets/_BYauXu-72.js.br +0 -0
  184. package/dist/public/assets/_B_q23_II.js.br +0 -0
  185. package/dist/public/assets/_BfHpfaZ_.js.br +0 -0
  186. package/dist/public/assets/_BgEZ4VVT.js.br +0 -0
  187. package/dist/public/assets/_BjNNABN4.js.br +0 -0
  188. package/dist/public/assets/_Bl1lbp_w.js.br +0 -0
  189. package/dist/public/assets/_BpdQAAz52.js.br +0 -0
  190. package/dist/public/assets/_Buzw695T2.js.br +0 -0
  191. package/dist/public/assets/_BwiRBnwa2.js.br +0 -0
  192. package/dist/public/assets/_Bwvf5O5m.js.br +0 -0
  193. package/dist/public/assets/_BxoEzgEZ.js.br +0 -0
  194. package/dist/public/assets/_C2_FIDzy.js.br +0 -0
  195. package/dist/public/assets/_C7ePJdWG.js.br +0 -0
  196. package/dist/public/assets/_C8Et1SyI2.js.br +0 -0
  197. package/dist/public/assets/_C8ZyCmzP2.js.br +0 -0
  198. package/dist/public/assets/_CCEQHCkw2.js.br +0 -0
  199. package/dist/public/assets/_CF8Ye5Pr.js.br +0 -0
  200. package/dist/public/assets/_CG1U-TrX.js.br +0 -0
  201. package/dist/public/assets/_CIWR8COm.js.br +0 -0
  202. package/dist/public/assets/_CJb-25b5.js.br +0 -0
  203. package/dist/public/assets/_CNkHd20B.js.br +0 -0
  204. package/dist/public/assets/_CPintIPn.js.br +0 -0
  205. package/dist/public/assets/_CV-6NFPr.js.br +0 -0
  206. package/dist/public/assets/_CcKgVKPB.js.br +0 -0
  207. package/dist/public/assets/_Cjul82Zq.js.br +0 -0
  208. package/dist/public/assets/_ClIws-96.js +0 -1531
  209. package/dist/public/assets/_ClIws-96.js.br +0 -0
  210. package/dist/public/assets/_CovynO6D.js.br +0 -0
  211. package/dist/public/assets/_CulCcVql.js.br +0 -0
  212. package/dist/public/assets/_D1PGPveJ2.js.br +0 -0
  213. package/dist/public/assets/_D6gJIVAe.js.br +0 -0
  214. package/dist/public/assets/_DCWsqkZv2.js.br +0 -0
  215. package/dist/public/assets/_DCm-_PJn2.js.br +0 -0
  216. package/dist/public/assets/_DEwU7Qht2.js.br +0 -0
  217. package/dist/public/assets/_DGWBK-es.js.br +0 -0
  218. package/dist/public/assets/_DNzVvAp22.js.br +0 -0
  219. package/dist/public/assets/_DTpbGvLK.js.br +0 -0
  220. package/dist/public/assets/_DXcwnV6_2.js.br +0 -0
  221. package/dist/public/assets/_DXwZkY0g.js.br +0 -0
  222. package/dist/public/assets/_DXyHmj0W.js.br +0 -0
  223. package/dist/public/assets/_Da-7IlQ12.js +0 -1
  224. package/dist/public/assets/_Da-7IlQ12.js.br +0 -0
  225. package/dist/public/assets/_Da05VMNb.js.br +0 -0
  226. package/dist/public/assets/_DbNaSvXF.js.br +0 -0
  227. package/dist/public/assets/_DfrjsE1y2.js.br +0 -0
  228. package/dist/public/assets/_DqtgQ2KQ2.js.br +0 -0
  229. package/dist/public/assets/_EuJYsBIp.js.br +0 -0
  230. package/dist/public/assets/_KWAohXQr.js.br +0 -0
  231. package/dist/public/assets/_XYmpEKpu.js.br +0 -0
  232. package/dist/public/assets/_YewM841C.js +0 -1
  233. package/dist/public/assets/_YewM841C.js.br +0 -0
  234. package/dist/public/assets/_apOz5w70.js.br +0 -0
  235. package/dist/public/assets/_bnyHmBSB.js.br +0 -0
  236. package/dist/public/assets/_cEH-PUtq2.js.br +0 -0
  237. package/dist/public/assets/_dqrrRyjM.js.br +0 -0
  238. package/dist/public/assets/_eKiwGFGI.js.br +0 -0
  239. package/dist/public/assets/_iIzVA4u72.js.br +0 -0
  240. package/dist/public/assets/_iTZwOiw8.js.br +0 -0
  241. package/dist/public/assets/_nYIFwHU2.js.br +0 -0
  242. package/dist/public/assets/_qriUiiqP.js.br +0 -0
  243. package/dist/public/assets/_qsL2FxXl.js.br +0 -0
  244. package/dist/public/assets/diff-view-C8mNAKSm.css +0 -1
  245. package/dist/public/assets/diff-view-C8mNAKSm.css.br +0 -0
  246. package/dist/public/assets/index-7WlgwCwh.css +0 -1
  247. package/dist/public/assets/index-7WlgwCwh.css.br +0 -0
  248. package/dist/public/assets/index-BffJzCDz.js +0 -86
  249. package/dist/public/assets/index-BffJzCDz.js.br +0 -0
  250. package/dist/public/assets/preload-helper-EAZGOO6u.css +0 -1
  251. package/dist/public/assets/preload-helper-EAZGOO6u.css.br +0 -0
  252. /package/dist/public/assets/{_B5W6OYN72.js → _B5W6OYN7.js} +0 -0
  253. /package/dist/public/assets/{_B5W6OYN72.js.br → _B5W6OYN7.js.br} +0 -0
  254. /package/dist/public/assets/{_DMoTqEGO2.js → _DMoTqEGO.js} +0 -0
  255. /package/dist/public/assets/{_DMoTqEGO2.js.br → _DMoTqEGO.js.br} +0 -0
  256. /package/dist/public/assets/{_DmIc4jLQ2.js → _DmIc4jLQ.js} +0 -0
  257. /package/dist/public/assets/{_DmIc4jLQ2.js.br → _DmIc4jLQ.js.br} +0 -0
  258. /package/dist/public/assets/{_DsUTQ-LC.js → _DsUTQ-LC2.js} +0 -0
  259. /package/dist/public/assets/{_DsUTQ-LC.js.br → _DsUTQ-LC2.js.br} +0 -0
  260. /package/dist/public/assets/{_VbXTXTou.js → _VbXTXTou2.js} +0 -0
  261. /package/dist/public/assets/{_VbXTXTou.js.br → _VbXTXTou2.js.br} +0 -0
  262. /package/dist/public/assets/{_iXnhIJG7.js → _iXnhIJG72.js} +0 -0
  263. /package/dist/public/assets/{_iXnhIJG7.js.br → _iXnhIJG72.js.br} +0 -0
  264. /package/dist/public/assets/{_vGVdxbeo.js → _vGVdxbeo2.js} +0 -0
  265. /package/dist/public/assets/{_vGVdxbeo.js.br → _vGVdxbeo2.js.br} +0 -0
@@ -8,16 +8,16 @@ import { DatabaseSync } from "node:sqlite";
8
8
  import { execFile } from "node:child_process";
9
9
  import { promisify } from "node:util";
10
10
  //#region src/server/config.ts
11
- var home = os.homedir();
11
+ var home$1 = os.homedir();
12
12
  var config = {
13
13
  /** Root directory containing all workspaces. */
14
- workRoot: process.env.WORK_ROOT || path.join(home, "work"),
14
+ workRoot: process.env.WORK_ROOT || path.join(home$1, "work"),
15
15
  /** Shared bare-repo cache, kept inside the work root. */
16
16
  get cacheDir() {
17
17
  return path.join(this.workRoot, ".cache");
18
18
  },
19
19
  /** Data directory for the sqlite db and other server state. */
20
- dataDir: process.env.WORK_DATA_DIR || path.join(process.env.XDG_DATA_HOME || path.join(home, ".local", "share"), "work"),
20
+ dataDir: process.env.WORK_DATA_DIR || path.join(process.env.XDG_DATA_HOME || path.join(home$1, ".local", "share"), "work"),
21
21
  gitHost: "github.com",
22
22
  user: process.env.WORK_USER || os.userInfo().username,
23
23
  host: process.env.WORK_HOST || os.hostname().split(".")[0],
@@ -148,7 +148,7 @@ function subscriberCount() {
148
148
  * user's default tmux. */
149
149
  var TMUX_SOCKET = "work";
150
150
  var execFileAsync = promisify(execFile);
151
- async function run(cmd, args, cwd, env) {
151
+ async function run$1(cmd, args, cwd, env) {
152
152
  const { stdout } = await execFileAsync(cmd, args, {
153
153
  cwd,
154
154
  env,
@@ -156,22 +156,386 @@ async function run(cmd, args, cwd, env) {
156
156
  });
157
157
  return stdout.trim();
158
158
  }
159
- var git = (args, cwd) => run("git", args, cwd);
160
- var gh = (args) => run("gh", args);
161
- var tmux = (args, env) => run("tmux", [
159
+ var git = (args, cwd) => run$1("git", args, cwd);
160
+ var gh = (args) => run$1("gh", args);
161
+ var tmux = (args, env) => run$1("tmux", [
162
162
  "-L",
163
163
  TMUX_SOCKET,
164
164
  ...args
165
165
  ], void 0, env);
166
166
  //#endregion
167
- //#region src/server/settings.ts
167
+ //#region lib/setup/catalog.mjs
168
+ /** Machine tools. `required` ones gate readiness; the rest are the utilities
169
+ * agents reach for constantly (mirrors DylanPiercey/start). Static binaries via
170
+ * mise, except the system packages the installer provides (git, tmux). */
171
+ var TOOLS = [
172
+ {
173
+ id: "git",
174
+ label: "git",
175
+ bin: "git",
176
+ required: true,
177
+ system: true
178
+ },
179
+ {
180
+ id: "tmux",
181
+ label: "tmux",
182
+ bin: "tmux",
183
+ required: true,
184
+ system: true,
185
+ mise: "tmux"
186
+ },
187
+ {
188
+ id: "node",
189
+ label: "Node.js",
190
+ bin: "node",
191
+ mise: "node",
192
+ required: true
193
+ },
194
+ {
195
+ id: "gh",
196
+ label: "GitHub CLI",
197
+ bin: "gh",
198
+ mise: "gh",
199
+ required: true
200
+ },
201
+ {
202
+ id: "ripgrep",
203
+ label: "ripgrep",
204
+ bin: "rg",
205
+ mise: "ripgrep"
206
+ },
207
+ {
208
+ id: "fd",
209
+ label: "fd",
210
+ bin: "fd",
211
+ mise: "fd"
212
+ },
213
+ {
214
+ id: "jq",
215
+ label: "jq",
216
+ bin: "jq",
217
+ mise: "jq"
218
+ },
219
+ {
220
+ id: "delta",
221
+ label: "delta",
222
+ bin: "delta",
223
+ mise: "delta"
224
+ },
225
+ {
226
+ id: "ast-grep",
227
+ label: "ast-grep",
228
+ bin: "ast-grep",
229
+ mise: "ast-grep"
230
+ },
231
+ {
232
+ id: "hyperfine",
233
+ label: "hyperfine",
234
+ bin: "hyperfine",
235
+ mise: "hyperfine"
236
+ },
237
+ {
238
+ id: "fzf",
239
+ label: "fzf",
240
+ bin: "fzf",
241
+ mise: "fzf"
242
+ },
243
+ {
244
+ id: "bottom",
245
+ label: "bottom",
246
+ bin: "btm",
247
+ mise: "bottom"
248
+ },
249
+ {
250
+ id: "pnpm",
251
+ label: "pnpm",
252
+ bin: "pnpm",
253
+ mise: "pnpm"
254
+ }
255
+ ];
256
+ /** Coding agent CLIs. Installed via each vendor's own installer (not npm) so
257
+ * self-update works. `bins` lists the executable names a family answers to;
258
+ * numeric suffixes (`claude1`) are discovered on top of these. */
168
259
  var AGENTS = [
169
- "claude",
170
- "codex",
171
- "grok",
172
- "copilot",
173
- "cursor"
260
+ {
261
+ id: "claude",
262
+ label: "Claude",
263
+ bins: ["claude"],
264
+ install: {
265
+ url: "https://claude.ai/install.sh",
266
+ shell: "bash"
267
+ }
268
+ },
269
+ {
270
+ id: "codex",
271
+ label: "Codex",
272
+ bins: ["codex"],
273
+ install: {
274
+ url: "https://chatgpt.com/codex/install.sh",
275
+ shell: "sh"
276
+ }
277
+ },
278
+ {
279
+ id: "copilot",
280
+ label: "Copilot",
281
+ bins: ["copilot"],
282
+ install: {
283
+ url: "https://gh.io/copilot-install",
284
+ shell: "bash"
285
+ }
286
+ },
287
+ {
288
+ id: "cursor",
289
+ label: "Cursor",
290
+ bins: ["cursor-agent"],
291
+ install: {
292
+ url: "https://cursor.com/install",
293
+ shell: "bash"
294
+ }
295
+ },
296
+ {
297
+ id: "grok",
298
+ label: "Grok",
299
+ bins: ["grok"],
300
+ install: {
301
+ url: "https://x.ai/cli/install.sh",
302
+ shell: "bash"
303
+ }
304
+ }
174
305
  ];
306
+ var DEFAULT_GITHUB_HOST = "github.com";
307
+ function toolById(id) {
308
+ return TOOLS.find((t) => t.id === id) || null;
309
+ }
310
+ function agentById(id) {
311
+ return AGENTS.find((a) => a.id === id) || null;
312
+ }
313
+ /**
314
+ * Agent *instances* are the family id plus an optional numeric suffix —
315
+ * `claude`, `claude1`, `claude2` — one per binary on PATH (`claude1`,
316
+ * `cursor-agent2`, …). This is the canonical id everywhere: sessions,
317
+ * settings, usage rows (`~/.claude-2` reports as `claude2`), icons.
318
+ */
319
+ function parseAgentId(id) {
320
+ const m = /^([a-z]+?)(\d*)$/.exec(id || "");
321
+ const family = m && agentById(m[1]);
322
+ return family ? {
323
+ family,
324
+ suffix: m[2]
325
+ } : null;
326
+ }
327
+ /** argv0 an instance id launches — the family's binary plus the suffix. */
328
+ function agentCommand(id) {
329
+ const parsed = parseAgentId(id);
330
+ return parsed ? `${parsed.family.bins[0]}${parsed.suffix}` : null;
331
+ }
332
+ /** "Claude" / "Claude 2". */
333
+ function agentLabel(id) {
334
+ const parsed = parseAgentId(id);
335
+ return parsed ? `${parsed.family.label}${parsed.suffix ? ` ${parsed.suffix}` : ""}` : id;
336
+ }
337
+ //#endregion
338
+ //#region lib/setup/doctor.mjs
339
+ var home = os.homedir();
340
+ /** PATH the service runs with (no login shell) plus the current one, so a
341
+ * probe from the server sees the same binaries a probe from a terminal does. */
342
+ function setupPath(base = process.env.PATH || "") {
343
+ const extra = [
344
+ `${home}/.local/share/mise/shims`,
345
+ `${home}/.local/bin`,
346
+ "/opt/homebrew/bin",
347
+ "/usr/local/bin",
348
+ "/usr/bin",
349
+ "/bin"
350
+ ];
351
+ const seen = /* @__PURE__ */ new Set();
352
+ return [...base.split(path.delimiter), ...extra].filter((p) => p && !seen.has(p) && seen.add(p)).join(path.delimiter);
353
+ }
354
+ /** `~/…` for anything under the home directory — every path here is for
355
+ * display (Settings rows, `work doctor`), never re-used to exec. */
356
+ function tilde(p) {
357
+ if (!p) return p;
358
+ return p === home ? "~" : p.startsWith(home + path.sep) ? "~" + p.slice(home.length) : p;
359
+ }
360
+ /** Absolute path of `bin` on setupPath(), or null. */
361
+ function which(bin) {
362
+ for (const dir of setupPath().split(path.delimiter)) {
363
+ const full = path.join(dir, bin);
364
+ try {
365
+ if (fs.statSync(full).isFile()) return full;
366
+ } catch {}
367
+ }
368
+ return null;
369
+ }
370
+ function run(cmd, args, { timeout = 15e3 } = {}) {
371
+ return new Promise((resolve) => {
372
+ execFile(cmd, args, {
373
+ env: {
374
+ ...process.env,
375
+ PATH: setupPath()
376
+ },
377
+ timeout,
378
+ maxBuffer: 8 << 20
379
+ }, (err, stdout, stderr) => resolve({
380
+ ok: !err,
381
+ stdout: String(stdout || ""),
382
+ stderr: String(stderr || "")
383
+ }));
384
+ });
385
+ }
386
+ /** Versions of every mise-managed tool (global + any active config), keyed
387
+ * by short name. Local and fast; `mise outdated` (network) is a separate,
388
+ * on-demand call in the server. */
389
+ async function miseVersions() {
390
+ if (!which("mise")) return null;
391
+ const { ok, stdout } = await run("mise", ["ls", "--json"]);
392
+ if (!ok) return {};
393
+ const out = {};
394
+ try {
395
+ for (const [name, list] of Object.entries(JSON.parse(stdout))) {
396
+ const active = list.find((v) => v.installed && v.active) || list.find((v) => v.installed);
397
+ if (active) out[name] = active.version;
398
+ }
399
+ } catch {}
400
+ return out;
401
+ }
402
+ /** Hosts `gh` knows about (~/.config/gh/hosts.yml top-level keys) — the
403
+ * source of truth for "which GitHub hosts has this machine signed in to",
404
+ * merged with whatever the caller has configured. */
405
+ function ghKnownHosts() {
406
+ const file = path.join(process.env.GH_CONFIG_DIR || path.join(home, ".config", "gh"), "hosts.yml");
407
+ let text = "";
408
+ try {
409
+ text = fs.readFileSync(file, "utf8");
410
+ } catch {
411
+ return [];
412
+ }
413
+ return [...text.matchAll(/^([A-Za-z0-9.-]+):\s*$/gm)].map((m) => m[1]);
414
+ }
415
+ /**
416
+ * Every agent CLI instance on PATH, per family: the plain binary and any
417
+ * numeric-suffixed siblings (`claude1`, `cursor-agent2`). Sync — a PATH
418
+ * scan is cheap and the boot handler needs it without awaiting. First hit
419
+ * on PATH wins per name, like the shell.
420
+ */
421
+ function discoverAgents() {
422
+ const dirs = setupPath().split(path.delimiter);
423
+ const seen = /* @__PURE__ */ new Map();
424
+ for (const dir of dirs) {
425
+ let names;
426
+ try {
427
+ names = fs.readdirSync(dir);
428
+ } catch {
429
+ continue;
430
+ }
431
+ for (const name of names) {
432
+ const hit = AGENTS.find((a) => a.bins.some((b) => name === b || name.startsWith(b) && /^\d+$/.test(name.slice(b.length))));
433
+ if (!hit || seen.has(name)) continue;
434
+ const full = path.join(dir, name);
435
+ try {
436
+ if (!fs.statSync(full).isFile()) continue;
437
+ } catch {
438
+ continue;
439
+ }
440
+ const bin = hit.bins.find((b) => name.startsWith(b));
441
+ seen.set(name, {
442
+ family: hit,
443
+ id: `${hit.id}${name.slice(bin.length)}`,
444
+ command: name,
445
+ path: tilde(full)
446
+ });
447
+ }
448
+ }
449
+ return AGENTS.map((a) => {
450
+ const instances = [...seen.values()].filter((i) => i.family === a).map(({ id, command, path: p }) => ({
451
+ id,
452
+ command,
453
+ path: p,
454
+ suffix: id.slice(a.id.length)
455
+ })).sort((x, y) => x.suffix === "" ? -1 : y.suffix === "" ? 1 : Number(x.suffix) - Number(y.suffix));
456
+ return {
457
+ id: a.id,
458
+ label: a.label,
459
+ installed: instances.length > 0,
460
+ installable: true,
461
+ instances
462
+ };
463
+ });
464
+ }
465
+ /** Auth status for one host via gh (which owns the tokens). */
466
+ async function githubHostStatus(host) {
467
+ const isEnterprise = host !== DEFAULT_GITHUB_HOST;
468
+ if (!which("gh")) return {
469
+ host,
470
+ isEnterprise,
471
+ authed: false,
472
+ error: "gh not installed"
473
+ };
474
+ const { ok, stdout, stderr } = await run("gh", [
475
+ "auth",
476
+ "status",
477
+ "--hostname",
478
+ host
479
+ ]);
480
+ const text = stdout + stderr;
481
+ const user = text.match(/account (\S+)/)?.[1] || text.match(/Logged in to \S+ as (\S+)/)?.[1];
482
+ return ok ? {
483
+ host,
484
+ isEnterprise,
485
+ authed: true,
486
+ user
487
+ } : {
488
+ host,
489
+ isEnterprise,
490
+ authed: false,
491
+ error: /not logged in/i.test(text) ? void 0 : text.trim().split("\n").pop()
492
+ };
493
+ }
494
+ /**
495
+ * Full readiness snapshot.
496
+ *
497
+ * @param {{ hosts?: string[] }} [opts] configured GitHub hosts (settings);
498
+ * github.com and any host gh is already signed in to are always included.
499
+ */
500
+ async function doctor(opts = {}) {
501
+ const hostSet = /* @__PURE__ */ new Set([
502
+ DEFAULT_GITHUB_HOST,
503
+ ...opts.hosts || [],
504
+ ...ghKnownHosts()
505
+ ]);
506
+ const [versions, github] = await Promise.all([miseVersions(), Promise.all([...hostSet].map(githubHostStatus))]);
507
+ const tools = TOOLS.map((t) => {
508
+ const found = which(t.bin);
509
+ return {
510
+ id: t.id,
511
+ label: t.label,
512
+ required: !!t.required,
513
+ installed: !!found,
514
+ path: tilde(found) || void 0,
515
+ version: t.mise && versions && versions[t.mise] || void 0,
516
+ installable: !!(t.mise && versions !== null),
517
+ mise: t.mise
518
+ };
519
+ });
520
+ const agents = discoverAgents();
521
+ const missing = [];
522
+ for (const t of tools) if (t.required && !t.installed) missing.push(t.id);
523
+ if (!github.some((h) => h.authed)) missing.push("github-auth");
524
+ if (!agents.some((a) => a.installed)) missing.push("agent");
525
+ return {
526
+ ready: missing.length === 0,
527
+ missing,
528
+ mise: {
529
+ installed: versions !== null,
530
+ path: tilde(which("mise")) || void 0
531
+ },
532
+ tools,
533
+ agents,
534
+ github
535
+ };
536
+ }
537
+ //#endregion
538
+ //#region src/server/settings.ts
175
539
  function getSetting(key) {
176
540
  return get("SELECT value FROM settings WHERE key = ?", key)?.value;
177
541
  }
@@ -189,9 +553,57 @@ function setPref(key, value) {
189
553
  if (value === null) db.prepare("DELETE FROM settings WHERE key = ?").run(`ui.${key}`);
190
554
  else setSetting(`ui.${key}`, value);
191
555
  }
556
+ /** Instance ids the user switched off in Settings (still installed). */
557
+ function disabledAgents() {
558
+ try {
559
+ return new Set(JSON.parse(getSetting("disabledAgents") || "[]"));
560
+ } catch {
561
+ return /* @__PURE__ */ new Set();
562
+ }
563
+ }
564
+ function setDisabledAgents(ids) {
565
+ setSetting("disabledAgents", JSON.stringify([...new Set(ids)]));
566
+ }
567
+ /** Every agent CLI instance installed on this machine (PATH scan) plus the
568
+ * built-in shell, with the user's enable/disable applied. Cheap and sync so
569
+ * the boot handler and session create can call it directly. */
570
+ function agentChoices() {
571
+ const off = disabledAgents();
572
+ const out = [];
573
+ for (const family of discoverAgents()) for (const inst of family.instances) out.push({
574
+ id: inst.id,
575
+ label: agentLabel(inst.id),
576
+ family: family.id,
577
+ command: inst.command,
578
+ enabled: !off.has(inst.id)
579
+ });
580
+ out.push({
581
+ id: "shell",
582
+ label: "Shell",
583
+ family: "shell",
584
+ command: "",
585
+ enabled: true
586
+ });
587
+ return out;
588
+ }
589
+ /** Ids the pickers offer: installed ∧ enabled. `shell` is not listed —
590
+ * every picker appends it itself as the always-there fallback. */
591
+ function enabledAgents() {
592
+ return agentChoices().filter((a) => a.enabled && a.id !== "shell").map((a) => a.id);
593
+ }
594
+ /** True for any id a session may be created with: a discovered instance,
595
+ * the shell, or a plausible instance id whose binary a login shell can find
596
+ * (PATH here and in the pane can differ). */
597
+ function isKnownAgent(id) {
598
+ return id === "shell" || !!parseAgentId(id);
599
+ }
600
+ /** Default agent for empty-session Start / auto-create. Falls back to the
601
+ * first enabled non-shell instance when the stored choice is gone. */
192
602
  function preferredAgent() {
193
- const value = getSetting("preferredAgent");
194
- return AGENTS.includes(value) ? value : "claude";
603
+ const stored = getSetting("preferredAgent");
604
+ const enabled = enabledAgents();
605
+ if (stored && enabled.includes(stored)) return stored;
606
+ return enabled.find((id) => id !== "shell") || stored || "claude";
195
607
  }
196
608
  //#endregion
197
609
  //#region node_modules/.pnpm/bn.js@4.12.5/node_modules/bn.js/lib/bn.js
@@ -6013,7 +6425,7 @@ function publishChange(sessionId) {
6013
6425
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
6014
6426
  if (row?.workspace_id) {
6015
6427
  const workspaceId = row.workspace_id;
6016
- import("./_kABYZA6_.js").then((m) => m.notifySessionsChanged(workspaceId));
6428
+ import("./_DjrRGy4k.js").then((m) => m.notifySessionsChanged(workspaceId));
6017
6429
  return;
6018
6430
  }
6019
6431
  publish("sessions.changed");
@@ -6037,11 +6449,17 @@ function stateCurl(state, reason) {
6037
6449
  * believing the screen over that costs it the state its own hook just
6038
6450
  * reported. */
6039
6451
  function reportsWorking(agent) {
6040
- return agent === "claude";
6452
+ return agentFamily(agent) === "claude";
6453
+ }
6454
+ /** Family of an instance id (`claude2` → `claude`); flags and hooks are
6455
+ * per family, every numbered copy behaves the same. */
6456
+ function agentFamily(agent) {
6457
+ return agent ? parseAgentId(agent)?.family.id : void 0;
6041
6458
  }
6042
6459
  /** Extra argv for an agent CLI so it reports working/waiting state. */
6043
6460
  function agentLaunchFlags(agent) {
6044
- if (agent === "claude") {
6461
+ const family = agentFamily(agent);
6462
+ if (family === "claude") {
6045
6463
  const hook = (state, reason) => [{ hooks: [{
6046
6464
  type: "command",
6047
6465
  command: stateCurl(state, reason)
@@ -6053,7 +6471,7 @@ function agentLaunchFlags(agent) {
6053
6471
  Notification: hook("waiting", "attention")
6054
6472
  } })];
6055
6473
  }
6056
- if (agent === "codex") return ["-c", `notify=[${[
6474
+ if (family === "codex") return ["-c", `notify=[${[
6057
6475
  "sh",
6058
6476
  "-c",
6059
6477
  `[ -n "$WORK_SESSION_ID" ] && curl -sf -m 3 -X POST "http://127.0.0.1:\${WORK_APP_PORT:-${config.appPort}}/api/agent-state?session=$WORK_SESSION_ID&state=waiting&reason=done" -H 'content-type: application/json' --data "$1" >/dev/null 2>&1; exit 0`,
@@ -6070,7 +6488,7 @@ function getSession(id) {
6070
6488
  return get("SELECT * FROM sessions WHERE id = ?", id);
6071
6489
  }
6072
6490
  function createSession(workspaceId, agent) {
6073
- if (!(agent in COMMANDS)) throw new Error(`unknown session kind: ${agent}`);
6491
+ if (!isKnownAgent(agent)) throw new Error(`unknown session kind: ${agent}`);
6074
6492
  const id = Math.random().toString(36).slice(2, 10);
6075
6493
  db.prepare("INSERT INTO sessions (id, workspace_id, agent) VALUES (?, ?, ?)").run(id, workspaceId, agent);
6076
6494
  notifySessionsChanged(workspaceId);
@@ -6085,14 +6503,37 @@ function renameSession(id, title) {
6085
6503
  async function killSession(id) {
6086
6504
  const session = getSession(id);
6087
6505
  if (!session) return;
6506
+ await disposeSession(session.id);
6507
+ notifySessionsChanged(session.workspace_id);
6508
+ }
6509
+ /** Drop tmux + DB row with no sessions.changed — used when the workspace
6510
+ * is already gone from the list (delete notifies workspaces first). */
6511
+ async function disposeSessions(sessions) {
6512
+ for (const session of sessions) await disposeSession(session.id);
6513
+ }
6514
+ async function disposeSession(id) {
6088
6515
  await tmux([
6089
6516
  "kill-session",
6090
6517
  "-t",
6091
6518
  tmuxName(id)
6092
6519
  ]).catch(() => {});
6520
+ clearTmuxStarted(id);
6093
6521
  clearAgentPhase(id);
6094
6522
  db.prepare("DELETE FROM sessions WHERE id = ?").run(id);
6095
- notifySessionsChanged(session.workspace_id);
6523
+ }
6524
+ /** Session ids that have had a tmux session created at least once in this
6525
+ * process. After the agent exits, tmux drops the session; term attach must
6526
+ * not `-A` recreate it (that looks like Ctrl-C "reopening" the agent). A
6527
+ * deliberate respawn clears and re-marks this. */
6528
+ var tmuxStarted = /* @__PURE__ */ new Set();
6529
+ function markTmuxStarted(id) {
6530
+ tmuxStarted.add(id);
6531
+ }
6532
+ function tmuxWasStarted(id) {
6533
+ return tmuxStarted.has(id);
6534
+ }
6535
+ function clearTmuxStarted(id) {
6536
+ tmuxStarted.delete(id);
6096
6537
  }
6097
6538
  /** SSE payload: session rows + live tmux/hook state so clients don't refetch. */
6098
6539
  function notifySessionsChanged(workspaceId) {
@@ -6129,11 +6570,13 @@ async function sendToSession(id, text, size) {
6129
6570
  "-t",
6130
6571
  name
6131
6572
  ], env).then(() => true, () => false)) {
6132
- if (session.agent === "grok") {
6573
+ if (agentFamily(session.agent) === "grok") {
6133
6574
  await tmux(newSessionArgs(session, wsPath, "-d", text, size), env);
6575
+ markTmuxStarted(id);
6134
6576
  return;
6135
6577
  }
6136
6578
  await tmux(newSessionArgs(session, wsPath, "-d", void 0, size), env);
6579
+ markTmuxStarted(id);
6137
6580
  await sleep(AGENT_BOOT_MS);
6138
6581
  }
6139
6582
  const buffer = `work-send-${Math.random().toString(36).slice(2, 8)}`;
@@ -6201,7 +6644,7 @@ async function panePids() {
6201
6644
  * (tmux exits when its last session closes). */
6202
6645
  async function ensureTmuxServer() {
6203
6646
  if (await tmux(["has-session"]).then(() => true, () => false)) return;
6204
- await run("systemd-run", [
6647
+ await run$1("systemd-run", [
6205
6648
  "--user",
6206
6649
  "--unit=work-tmux",
6207
6650
  "--service-type=forking",
@@ -6357,20 +6800,14 @@ function cleanEnv() {
6357
6800
  }
6358
6801
  var AGENT_BOOT_MS = 1500;
6359
6802
  var PASTE_SETTLE_MS = 150;
6360
- /** Shell command each session kind runs inside its tmux session. */
6361
- var COMMANDS = {
6362
- shell: [],
6363
- claude: ["claude"],
6364
- codex: ["codex"],
6365
- grok: ["grok"],
6366
- copilot: ["copilot"],
6367
- cursor: ["cursor-agent"]
6368
- };
6369
- /** Command for a session kind; `command.<agent>` in settings overrides (e.g. claude → claude1). */
6803
+ /** Command for a session kind: the instance's binary (`claude2`,
6804
+ * `cursor-agent`), nothing for `shell`; `command.<agent>` in settings still
6805
+ * overrides for one-off wrappers. */
6370
6806
  function sessionCommand(agent) {
6371
6807
  const override = getSetting(`command.${agent}`);
6372
6808
  if (override) return override.split(/\s+/);
6373
- return COMMANDS[agent] ?? [];
6809
+ const command = agentCommand(agent);
6810
+ return command ? [command] : [];
6374
6811
  }
6375
6812
  /** tmux new-session env flags so the agent's hooks can report back which
6376
6813
  * session they belong to. */
@@ -6389,4 +6826,4 @@ function sleep(ms) {
6389
6826
  return new Promise((resolve) => setTimeout(resolve, ms));
6390
6827
  }
6391
6828
  //#endregion
6392
- export { TMUX_SOCKET as A, db as B, pushPublicKey as C, preferredAgent as D, allPrefs as E, publish as F, workspacePath as H, subscribe as I, subscriberCount as L, git as M, run as N, setPref as O, tmux as P, subscriberJoins as R, deleteSubscription as S, AGENTS as T, config as U, get as V, reasonFromHookPayload as _, killSession as a, setSessionViewers as b, newSessionArgs as c, renameSession as d, sendToSession as f, clearAgentPhase as g, reportsWorking as h, getSession as i, gh as j, setSetting as k, notifySessionsChanged as l, tmuxName as m, createSession as n, killWorkspaceSessions as o, sessionStates as p, ensureTmuxServer as r, listSessions as s, cleanEnv as t, panePids as u, setAgentPhase as v, saveSubscription as w, summaryFromHookPayload as x, setScrapedPhase as y, all as z };
6829
+ export { all as $, allPrefs as A, which as B, setScrapedPhase as C, pushPublicKey as D, deleteSubscription as E, setPref as F, gh as G, agentById as H, setSetting as I, tmux as J, git as K, doctor as L, enabledAgents as M, preferredAgent as N, saveSubscription as O, setDisabledAgents as P, subscriberJoins as Q, miseVersions as R, setAgentPhase as S, summaryFromHookPayload as T, toolById as U, TOOLS as V, TMUX_SOCKET as W, subscribe as X, publish as Y, subscriberCount as Z, tmuxName as _, ensureTmuxServer as a, clearAgentPhase as b, killWorkspaceSessions as c, newSessionArgs as d, db as et, notifySessionsChanged as f, sessionStates as g, sendToSession as h, disposeSessions as i, disabledAgents as j, agentChoices as k, listSessions as l, renameSession as m, clearTmuxStarted as n, workspacePath as nt, getSession as o, panePids as p, run$1 as q, createSession as r, config as rt, killSession as s, cleanEnv as t, get as tt, markTmuxStarted as u, tmuxWasStarted as v, setSessionViewers as w, reasonFromHookPayload as x, reportsWorking as y, setupPath as z };
@@ -0,0 +1,2 @@
1
+ import { f as notifySessionsChanged } from "./_CO83dVER.js";
2
+ export { notifySessionsChanged };