@dylanpiercey/work 0.2.39 → 0.2.41

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 (506) hide show
  1. package/README.md +9 -6
  2. package/bin/cli/_target.mjs +45 -10
  3. package/bin/cli/notify.mjs +1 -1
  4. package/bin/cli/open.mjs +1 -1
  5. package/bin/work.mjs +16 -6
  6. package/dist/{_Ca_OVNVt.js → _D4k_lVuT.js} +1 -1
  7. package/dist/_DDikKLG_.js +2 -0
  8. package/dist/_DgY5Gc2z.js +183 -0
  9. package/dist/{_C65JTOIi.js → _DuADlWik.js} +42 -5
  10. package/dist/_ENqPMLjD.js +2 -0
  11. package/dist/index.mjs +741 -689
  12. package/dist/public/assets/{_BgZcNnLg.js → _2X4Nxaqb.js} +1 -1
  13. package/dist/public/assets/_2X4Nxaqb.js.br +0 -0
  14. package/dist/public/assets/_4CG1_0AB.js +1 -0
  15. package/dist/public/assets/_6e0Uc2iz.js +1 -0
  16. package/dist/public/assets/_7EbyoqQO.js +1 -0
  17. package/dist/public/assets/{_Coskn8gG.js → _AZdn-pAq.js} +1 -1
  18. package/dist/public/assets/_AZdn-pAq.js.br +0 -0
  19. package/dist/public/assets/{_CJSSmh6t.js → _B0YpwhBT.js} +1 -1
  20. package/dist/public/assets/_B0YpwhBT.js.br +0 -0
  21. package/dist/public/assets/_B2E2dOUC.js +1 -0
  22. package/dist/public/assets/{_CO0xEfAK.js → _B4Cg-RuN.js} +1 -1
  23. package/dist/public/assets/_B4Cg-RuN.js.br +0 -0
  24. package/dist/public/assets/{_DTuXp9C5.js → _B7kCpNyD.js} +1 -1
  25. package/dist/public/assets/_B7kCpNyD.js.br +0 -0
  26. package/dist/public/assets/_B9NIbsbr.js +1 -0
  27. package/dist/public/assets/_BAmZEVIH.js +15 -0
  28. package/dist/public/assets/_BAmZEVIH.js.br +0 -0
  29. package/dist/public/assets/{_4Bq2ekUy.js → _BB9Q57R1.js} +1 -1
  30. package/dist/public/assets/_BB9Q57R1.js.br +0 -0
  31. package/dist/public/assets/_BCxjUBLn.js +1 -0
  32. package/dist/public/assets/_BCxjUBLn.js.br +0 -0
  33. package/dist/public/assets/_BD6kLg4i.js +1 -0
  34. package/dist/public/assets/{_BZtIVorQ.js → _BFR8p6md.js} +1 -1
  35. package/dist/public/assets/_BFR8p6md.js.br +0 -0
  36. package/dist/public/assets/{_CpVMVsYd.js → _BFkRvzwl.js} +1 -1
  37. package/dist/public/assets/_BFkRvzwl.js.br +0 -0
  38. package/dist/public/assets/_BFwjqxJi.js +1 -0
  39. package/dist/public/assets/{_Cm1Nqohh.js → _BG7u51c6.js} +1 -1
  40. package/dist/public/assets/_BG7u51c6.js.br +0 -0
  41. package/dist/public/assets/_BGj24EPL.js +1 -0
  42. package/dist/public/assets/{_Bzcq9D5V.js → _BHZ3z1c3.js} +1 -1
  43. package/dist/public/assets/_BHZ3z1c3.js.br +0 -0
  44. package/dist/public/assets/{_C4RLpLnG.js → _BLzCI5fA.js} +1 -1
  45. package/dist/public/assets/_BLzCI5fA.js.br +0 -0
  46. package/dist/public/assets/{_DTWOFQ_L.js → _BNKR_PFf.js} +1 -1
  47. package/dist/public/assets/_BNKR_PFf.js.br +0 -0
  48. package/dist/public/assets/{_Bl9K5YHh.js → _BP1-9YZQ.js} +1 -1
  49. package/dist/public/assets/_BP1-9YZQ.js.br +0 -0
  50. package/dist/public/assets/{_D1MrfQGR.js → _BPoHnP8w.js} +1 -1
  51. package/dist/public/assets/_BPoHnP8w.js.br +0 -0
  52. package/dist/public/assets/_BQK0Ua8P.js +1 -0
  53. package/dist/public/assets/{_790DO9mU.js → _BUi5Lnyu.js} +1 -1
  54. package/dist/public/assets/_BUi5Lnyu.js.br +0 -0
  55. package/dist/public/assets/{_CbaiHEJ0.js → _BVF9vDBR.js} +1 -1
  56. package/dist/public/assets/_BVF9vDBR.js.br +0 -0
  57. package/dist/public/assets/{_CHAfqeaD.js → _BWRhy73M.js} +1 -1
  58. package/dist/public/assets/_BWRhy73M.js.br +0 -0
  59. package/dist/public/assets/_BapqrzTC.js +1 -0
  60. package/dist/public/assets/_Bb3HjdgA.js +1 -0
  61. package/dist/public/assets/{_MWAFFnnV.js → _BbhdJgn7.js} +1 -1
  62. package/dist/public/assets/_BbhdJgn7.js.br +0 -0
  63. package/dist/public/assets/{_BdjF2jJX.js → _BdYyTR77.js} +1 -1
  64. package/dist/public/assets/_BdYyTR77.js.br +0 -0
  65. package/dist/public/assets/_BgJeYj6O.js +1 -0
  66. package/dist/public/assets/_Bgcqgb8f.js +1 -0
  67. package/dist/public/assets/{__fnIgJhv.js → _BjDtPv37.js} +5 -5
  68. package/dist/public/assets/_BjDtPv37.js.br +0 -0
  69. package/dist/public/assets/_BjL4pgd1.js +1 -0
  70. package/dist/public/assets/{_BejGpXBb.js → _Bjupqvvl.js} +1 -1
  71. package/dist/public/assets/_Bjupqvvl.js.br +0 -0
  72. package/dist/public/assets/_BjzIZvxS.js +1 -0
  73. package/dist/public/assets/_BkleQY2P.js +1 -0
  74. package/dist/public/assets/_BlGMtzOr.js +1 -0
  75. package/dist/public/assets/_Bo09pVsm.js +1 -0
  76. package/dist/public/assets/_Bo7UsgQ1.js +1 -0
  77. package/dist/public/assets/_Bo7UsgQ1.js.br +0 -0
  78. package/dist/public/assets/_BoN8WXNM.js +1 -0
  79. package/dist/public/assets/_BrAi38xM.js +1 -0
  80. package/dist/public/assets/_BrwDLY9A.js +1 -0
  81. package/dist/public/assets/{_CqK6uXIQ.js → _BsEmt4Xo.js} +1 -1
  82. package/dist/public/assets/_BsEmt4Xo.js.br +0 -0
  83. package/dist/public/assets/{_Cp7LYjQv.js → _BteLCW3W.js} +1 -1
  84. package/dist/public/assets/_BteLCW3W.js.br +0 -0
  85. package/dist/public/assets/{_BVzGsdh-.js → _Bud8PVk2.js} +1 -1
  86. package/dist/public/assets/_Bud8PVk2.js.br +0 -0
  87. package/dist/public/assets/_BwOL76jM.js +1 -0
  88. package/dist/public/assets/{_BKC5Sior.js → _Bzj2coXM.js} +1 -1
  89. package/dist/public/assets/_Bzj2coXM.js.br +0 -0
  90. package/dist/public/assets/_C0qwHGvt.js +1 -0
  91. package/dist/public/assets/_C0qwHGvt.js.br +0 -0
  92. package/dist/public/assets/_C44-U0HZ.js +1 -0
  93. package/dist/public/assets/{_CNVaYpUe.js → _C4TOoJt-.js} +1 -1
  94. package/dist/public/assets/_C4TOoJt-.js.br +0 -0
  95. package/dist/public/assets/{_jbv-fqI9.js → _C4i6tdPg.js} +1 -1
  96. package/dist/public/assets/_C4i6tdPg.js.br +0 -0
  97. package/dist/public/assets/_C4lozmRu.js +1 -0
  98. package/dist/public/assets/{_B5IcL3Lm.js → _C63MsoW_.js} +1 -1
  99. package/dist/public/assets/_C63MsoW_.js.br +0 -0
  100. package/dist/public/assets/_C9xpsatV.js +1 -0
  101. package/dist/public/assets/_CBcRMH1I.js +1 -0
  102. package/dist/public/assets/{_CQbUL0LZ.js → _CBmZFyev.js} +1 -1
  103. package/dist/public/assets/{_B1I3v6lY.js → _CEcIHTni.js} +1 -1
  104. package/dist/public/assets/_CEcIHTni.js.br +0 -0
  105. package/dist/public/assets/_CErLThfD.js +1 -0
  106. package/dist/public/assets/_CFDwxbE0.js +1 -0
  107. package/dist/public/assets/{_CaRh7LBz.js → _CFQ5E_MU.js} +1 -1
  108. package/dist/public/assets/{_IUsblI7h.js → _CGYOyAi6.js} +1 -1
  109. package/dist/public/assets/_CGYOyAi6.js.br +0 -0
  110. package/dist/public/assets/{_CcaL2eio.js → _CHCQDmjv.js} +9 -9
  111. package/dist/public/assets/_CHCQDmjv.js.br +0 -0
  112. package/dist/public/assets/{_XKlOPaT1.js → _CKGtByJf.js} +1 -1
  113. package/dist/public/assets/_CKGtByJf.js.br +0 -0
  114. package/dist/public/assets/_CKYU_-EV.js +1 -0
  115. package/dist/public/assets/_CLDzlgJ_.js +1 -0
  116. package/dist/public/assets/_CNz608a5.js +1 -0
  117. package/dist/public/assets/_CO7giqIn.js +1 -0
  118. package/dist/public/assets/_COImNA0T.js +1 -0
  119. package/dist/public/assets/_CQIbdL8n.js +2 -0
  120. package/dist/public/assets/_CQIbdL8n.js.br +0 -0
  121. package/dist/public/assets/_CR91niWu.js +1 -0
  122. package/dist/public/assets/{_DdHj8Hz8.js → _CRxrUJ-J.js} +1 -1
  123. package/dist/public/assets/_CRxrUJ-J.js.br +0 -0
  124. package/dist/public/assets/_CUI5_Kc8.js +1 -0
  125. package/dist/public/assets/_CViysOIy.js +2 -0
  126. package/dist/public/assets/_CViysOIy.js.br +0 -0
  127. package/dist/public/assets/_CWUHe8y9.js +1 -0
  128. package/dist/public/assets/{_Dv210Sbq.js → _CafkGbWO.js} +1 -1
  129. package/dist/public/assets/_CafkGbWO.js.br +0 -0
  130. package/dist/public/assets/_CamEQdEy.js +1 -0
  131. package/dist/public/assets/_CbLtpMzf.js +1 -0
  132. package/dist/public/assets/_CcUuSpPV.js +1 -0
  133. package/dist/public/assets/{_DCLdVQaK.js → _CgHFvMzh.js} +1 -1
  134. package/dist/public/assets/_CgHFvMzh.js.br +0 -0
  135. package/dist/public/assets/_ChYvsWUb.js +1 -0
  136. package/dist/public/assets/_CjMgo0is.js +1 -0
  137. package/dist/public/assets/{_CJ9JBlkp.js → _Clzo9X7l.js} +1 -1
  138. package/dist/public/assets/_Clzo9X7l.js.br +0 -0
  139. package/dist/public/assets/_CoRZeDpA.js +1 -0
  140. package/dist/public/assets/_CoUiEb__.js +1 -0
  141. package/dist/public/assets/{_B-MZJ0W3.js → _CqVEbJdU.js} +10 -10
  142. package/dist/public/assets/_CqVEbJdU.js.br +0 -0
  143. package/dist/public/assets/{_BBEvKNyP.js → _CsnYZRX1.js} +1 -1
  144. package/dist/public/assets/{_DT-iWqc9.js → _Ctprx5dp.js} +1 -1
  145. package/dist/public/assets/_Ctprx5dp.js.br +0 -0
  146. package/dist/public/assets/_CvO8C3EH.js +1 -0
  147. package/dist/public/assets/{_B-EEI_PL.js → _CvTM_Hkg.js} +1 -1
  148. package/dist/public/assets/_CvTM_Hkg.js.br +0 -0
  149. package/dist/public/assets/_Cw53IOvr.js +1 -0
  150. package/dist/public/assets/{_CUJGeylV.js → _CwwZF_Zb.js} +1 -1
  151. package/dist/public/assets/_CwwZF_Zb.js.br +0 -0
  152. package/dist/public/assets/{_OoE_a2tp.js → _CxA2ehGA.js} +1 -1
  153. package/dist/public/assets/_CxA2ehGA.js.br +0 -0
  154. package/dist/public/assets/{_iyGJuThT.js → _CxGMPpn8.js} +1 -1
  155. package/dist/public/assets/_CxGMPpn8.js.br +0 -0
  156. package/dist/public/assets/{_Cmetj14g.js → _CxPc5sJ4.js} +1 -1
  157. package/dist/public/assets/_CxPc5sJ4.js.br +0 -0
  158. package/dist/public/assets/_Cxa2TAUf.js +1 -0
  159. package/dist/public/assets/_Cy_niJWx.js +1 -0
  160. package/dist/public/assets/{_Cg9EmZN1.js → _CzBj3vat.js} +1 -1
  161. package/dist/public/assets/{_spjIhRZ0.js → _D-6002zy.js} +1 -1
  162. package/dist/public/assets/_D-6002zy.js.br +0 -0
  163. package/dist/public/assets/_D0Ae1m8t.js +1 -0
  164. package/dist/public/assets/_D1EJcr9u.js +1 -0
  165. package/dist/public/assets/{_B6NDaT5V.js → _D6N1Ob8T.js} +1 -1
  166. package/dist/public/assets/_D6N1Ob8T.js.br +0 -0
  167. package/dist/public/assets/{_Ch6MEtwM.js → _D6fwgK2P.js} +1 -1
  168. package/dist/public/assets/_D6fwgK2P.js.br +0 -0
  169. package/dist/public/assets/{_B2yws-s4.js → _D80egIjq.js} +1 -1
  170. package/dist/public/assets/_D80egIjq.js.br +0 -0
  171. package/dist/public/assets/{_C06TIN_W.js → _D9G809lq.js} +1 -1
  172. package/dist/public/assets/_D9G809lq.js.br +0 -0
  173. package/dist/public/assets/_DAgpiMnc.js +1 -0
  174. package/dist/public/assets/{_CGLEnCXI.js → _DAqHF2w4.js} +1 -1
  175. package/dist/public/assets/_DAqHF2w4.js.br +0 -0
  176. package/dist/public/assets/{_DqjRMGnp.js → _DCPFy4S-.js} +1 -1
  177. package/dist/public/assets/_DCPFy4S-.js.br +0 -0
  178. package/dist/public/assets/_DDdrxdVx.js +1 -0
  179. package/dist/public/assets/{_BudAQLe4.js → _DDwZqDeP.js} +1 -1
  180. package/dist/public/assets/_DDwZqDeP.js.br +0 -0
  181. package/dist/public/assets/_DEpWf8ro.js +1 -0
  182. package/dist/public/assets/_DEpWf8ro.js.br +0 -0
  183. package/dist/public/assets/_DFMkO54P.js +1 -0
  184. package/dist/public/assets/_DFVrnUUI.js +1 -0
  185. package/dist/public/assets/{_BBVQTbN9.js → _DH0yKcfT.js} +1 -1
  186. package/dist/public/assets/_DH0yKcfT.js.br +0 -0
  187. package/dist/public/assets/_DHE02xjh.js +1 -0
  188. package/dist/public/assets/{_ChyQEzer.js → _DMxmrREh.js} +1 -1
  189. package/dist/public/assets/_DMxmrREh.js.br +0 -0
  190. package/dist/public/assets/{_ULFEYxEM.js → _DNWcRd5b.js} +2 -2
  191. package/dist/public/assets/_DNWcRd5b.js.br +0 -0
  192. package/dist/public/assets/{_1COtnAgT.js → _DOGQJlMz.js} +1 -1
  193. package/dist/public/assets/_DOGQJlMz.js.br +0 -0
  194. package/dist/public/assets/_DUOr22R8.js +1 -0
  195. package/dist/public/assets/{_S3luDBRh.js → _DVfIcVOc.js} +1 -1
  196. package/dist/public/assets/_DVfIcVOc.js.br +0 -0
  197. package/dist/public/assets/_DWvJUtgI.js +1 -0
  198. package/dist/public/assets/_DX_wI8Ku.js +1 -0
  199. package/dist/public/assets/_DZAyYSrR.js +1 -0
  200. package/dist/public/assets/_DbON91M6.js +1 -0
  201. package/dist/public/assets/{_hsnHPTx2.js → _Dmr61lrF.js} +1 -1
  202. package/dist/public/assets/_Dmr61lrF.js.br +0 -0
  203. package/dist/public/assets/_Do0f-7ZP.js +1 -0
  204. package/dist/public/assets/{__gL0A9u-.js → _DrUKq1tq.js} +1 -1
  205. package/dist/public/assets/_DrUKq1tq.js.br +0 -0
  206. package/dist/public/assets/{_COBUjBRu.js → _DrmQTAwC.js} +1 -1
  207. package/dist/public/assets/_DrmQTAwC.js.br +0 -0
  208. package/dist/public/assets/_DsE5ESQl.js +1 -0
  209. package/dist/public/assets/{_DTmCdY_H.js → _DsODWTMK.js} +1 -1
  210. package/dist/public/assets/_DsODWTMK.js.br +0 -0
  211. package/dist/public/assets/_DuHnqTMi.js +1 -0
  212. package/dist/public/assets/{_BycRo0JP.js → _DuiVLwbC.js} +1 -1
  213. package/dist/public/assets/_DuiVLwbC.js.br +0 -0
  214. package/dist/public/assets/{_D0zty7xs.js → _DvhYEPCI.js} +1 -1
  215. package/dist/public/assets/_DvhYEPCI.js.br +0 -0
  216. package/dist/public/assets/{_CEh-8sYr.js → _Dw-MQsnH.js} +1 -1
  217. package/dist/public/assets/_Dw-MQsnH.js.br +0 -0
  218. package/dist/public/assets/{_ZbvoevWf.js → _DxG3J469.js} +1 -1
  219. package/dist/public/assets/_DxG3J469.js.br +0 -0
  220. package/dist/public/assets/{_DOB3kamX.js → _DxMfRWk5.js} +1 -1
  221. package/dist/public/assets/_DxMfRWk5.js.br +0 -0
  222. package/dist/public/assets/{_CK_Amboe.js → _Dxl6ePU3.js} +1 -1
  223. package/dist/public/assets/_DyJbxamO.js +1 -0
  224. package/dist/public/assets/{_CePbTg17.js → _DyPWIZeU.js} +1 -1
  225. package/dist/public/assets/_DyPWIZeU.js.br +0 -0
  226. package/dist/public/assets/_DzDisVDu.js +1 -0
  227. package/dist/public/assets/{_B8eCp_aS.js → _DzYdOMqO.js} +1 -1
  228. package/dist/public/assets/_DzYdOMqO.js.br +0 -0
  229. package/dist/public/assets/{_4zD4UdfG.js → _Goz4NHSk.js} +1 -1
  230. package/dist/public/assets/_Goz4NHSk.js.br +0 -0
  231. package/dist/public/assets/{_Dm6KUFm_.js → _HHBD7Mwb.js} +1 -1
  232. package/dist/public/assets/_HHBD7Mwb.js.br +0 -0
  233. package/dist/public/assets/_I0BsvzyX.js +1 -0
  234. package/dist/public/assets/{_ALjcwQtn.js → _Ih3MoXl0.js} +1 -1
  235. package/dist/public/assets/_Ih3MoXl0.js.br +0 -0
  236. package/dist/public/assets/_Iy5kHWHO.js +1 -0
  237. package/dist/public/assets/_K5LXbS5I.js +1 -0
  238. package/dist/public/assets/{_PI3MyCwn.js → _KcGCvv0h.js} +1 -1
  239. package/dist/public/assets/_KcGCvv0h.js.br +0 -0
  240. package/dist/public/assets/_PCJNoAwu.js +1 -0
  241. package/dist/public/assets/{_DEpO7jM6.js → _QSE08ioq.js} +1 -1
  242. package/dist/public/assets/_QSE08ioq.js.br +0 -0
  243. package/dist/public/assets/{_DwRnM8-F.js → _S0t9nmdw.js} +1 -1
  244. package/dist/public/assets/_S0t9nmdw.js.br +0 -0
  245. package/dist/public/assets/{_C_cIXoZS.js → _UBNUF9Kp.js} +1 -1
  246. package/dist/public/assets/_UBNUF9Kp.js.br +0 -0
  247. package/dist/public/assets/_Uz6LspUB.js +1 -0
  248. package/dist/public/assets/_WaGpIsSa.js +1 -0
  249. package/dist/public/assets/{_CvmQITco.js → _Yl99Ym1s.js} +1 -1
  250. package/dist/public/assets/_Yl99Ym1s.js.br +0 -0
  251. package/dist/public/assets/_Z73XNfnJ.js +1 -0
  252. package/dist/public/assets/{_B9izSHKD.js → __SKAFxGa.js} +1 -1
  253. package/dist/public/assets/__SKAFxGa.js.br +0 -0
  254. package/dist/public/assets/_c3cBqR4q.js +1 -0
  255. package/dist/public/assets/{_C86hHdzY.js → _csnQFbUb.js} +1 -1
  256. package/dist/public/assets/_csnQFbUb.js.br +0 -0
  257. package/dist/public/assets/_dLadtSBo.js +1 -0
  258. package/dist/public/assets/{_BFrKCutq.js → _f7Sgp2jB.js} +1 -1
  259. package/dist/public/assets/_f7Sgp2jB.js.br +0 -0
  260. package/dist/public/assets/_gjaB4W51.js +1 -0
  261. package/dist/public/assets/_l-1e5-uC.js +1 -0
  262. package/dist/public/assets/{_Duu2hqo_.js → _lEdDdBb0.js} +1 -1
  263. package/dist/public/assets/_lEdDdBb0.js.br +0 -0
  264. package/dist/public/assets/{_Dx-2kxuZ.js → _lv7q9SmK.js} +1 -1
  265. package/dist/public/assets/_lv7q9SmK.js.br +0 -0
  266. package/dist/public/assets/{_DxOkjs7j.js → _nVVtAArW.js} +1 -1
  267. package/dist/public/assets/_nVVtAArW.js.br +0 -0
  268. package/dist/public/assets/_pSzK2ztp.js +1 -0
  269. package/dist/public/assets/_r9IZX58O.js +1 -0
  270. package/dist/public/assets/{_CYQH2A25.js → _rV9c6noX.js} +1 -1
  271. package/dist/public/assets/_rV9c6noX.js.br +0 -0
  272. package/dist/public/assets/_rk0M_hpt.js +1 -0
  273. package/dist/public/assets/_ru_rDgLp.js +1 -0
  274. package/dist/public/assets/{_Bflk6wyJ.js → _sAZ12zqC.js} +1 -1
  275. package/dist/public/assets/_sAZ12zqC.js.br +0 -0
  276. package/dist/public/assets/_scmoaGnX.js +1 -0
  277. package/dist/public/assets/{_CT5sqaKe.js → _tlSiPgo6.js} +1 -1
  278. package/dist/public/assets/_tlSiPgo6.js.br +0 -0
  279. package/dist/public/assets/_w_kZ7oXG.js +1 -0
  280. package/dist/public/assets/{_CgxCARsn.js → _wlPMGofh.js} +1 -1
  281. package/dist/public/assets/_wlPMGofh.js.br +0 -0
  282. package/dist/public/assets/{_Bu8OD32j.js → _ymY4YmGe.js} +1 -1
  283. package/dist/public/assets/_ymY4YmGe.js.br +0 -0
  284. package/dist/public/assets/{_Dg5XYN_T.js → _zLL0pxIC.js} +1 -1
  285. package/dist/public/assets/_zLL0pxIC.js.br +0 -0
  286. package/dist/public/assets/{_BtO7HAya.js → _znlpA0RF.js} +1 -1
  287. package/dist/public/assets/_znlpA0RF.js.br +0 -0
  288. package/dist/public/assets/app-shell-CeJ_dovX.css +1 -0
  289. package/dist/public/assets/app-shell-CeJ_dovX.css.br +0 -0
  290. package/dist/public/assets/files-view-BMZoqQCr.js +2 -0
  291. package/dist/public/assets/manage-workspace-DVER4MrG.js +2 -0
  292. package/dist/public/assets/new-BuZjAnZr.js +1 -0
  293. package/dist/public/assets/new-workspace-DG5o9P6p.js +2 -0
  294. package/dist/public/assets/review-view-B9KVei-m.js +2 -0
  295. package/dist/public/assets/settings-BuZjAnZr.js +1 -0
  296. package/dist/public/assets/settings-page-CbLeDUF_.js +2 -0
  297. package/dist/public/assets/styles-DUzVKiZK.css +1 -0
  298. package/dist/public/assets/styles-DUzVKiZK.css.br +0 -0
  299. package/dist/public/assets/w-BuZjAnZr.js +1 -0
  300. package/dist/public/assets/w._-BLFJb1Kc.js +1 -0
  301. package/dist/public/assets/w._-BuZjAnZr.js +1 -0
  302. package/dist/public/assets/w._-DDS58VZm.js +1 -0
  303. package/lib/setup/firewall.d.mts +14 -0
  304. package/lib/setup/firewall.mjs +33 -2
  305. package/package.json +1 -1
  306. package/dist/_B2zjDgtj.js +0 -2
  307. package/dist/_BLQe5OC0.js +0 -182
  308. package/dist/_o6JmtS1w.js +0 -2
  309. package/dist/public/assets/_-wwiJPLW.js +0 -1
  310. package/dist/public/assets/_1COtnAgT.js.br +0 -0
  311. package/dist/public/assets/_1ocptEOo.js +0 -1
  312. package/dist/public/assets/_4Bq2ekUy.js.br +0 -0
  313. package/dist/public/assets/_4zD4UdfG.js.br +0 -0
  314. package/dist/public/assets/_790DO9mU.js.br +0 -0
  315. package/dist/public/assets/_ALjcwQtn.js.br +0 -0
  316. package/dist/public/assets/_B-EEI_PL.js.br +0 -0
  317. package/dist/public/assets/_B-MZJ0W3.js.br +0 -0
  318. package/dist/public/assets/_B1I3v6lY.js.br +0 -0
  319. package/dist/public/assets/_B2yws-s4.js.br +0 -0
  320. package/dist/public/assets/_B5IcL3Lm.js.br +0 -0
  321. package/dist/public/assets/_B6NDaT5V.js.br +0 -0
  322. package/dist/public/assets/_B8eCp_aS.js.br +0 -0
  323. package/dist/public/assets/_B9RNQdDm.js +0 -1
  324. package/dist/public/assets/_B9izSHKD.js.br +0 -0
  325. package/dist/public/assets/_BBEos7UL.js +0 -1
  326. package/dist/public/assets/_BBVQTbN9.js.br +0 -0
  327. package/dist/public/assets/_BFrKCutq.js.br +0 -0
  328. package/dist/public/assets/_BINxEVqo.js +0 -1
  329. package/dist/public/assets/_BIUcD6tx.js +0 -1
  330. package/dist/public/assets/_BKC5Sior.js.br +0 -0
  331. package/dist/public/assets/_BNACk2-o.js +0 -1
  332. package/dist/public/assets/_BNj2QmF6.js +0 -1
  333. package/dist/public/assets/_BP0ubsa-.js +0 -1
  334. package/dist/public/assets/_BVzGsdh-.js.br +0 -0
  335. package/dist/public/assets/_BYyn4zzU.js +0 -1
  336. package/dist/public/assets/_BZtIVorQ.js.br +0 -0
  337. package/dist/public/assets/_Bbl3b6ny.js +0 -1
  338. package/dist/public/assets/_BdjF2jJX.js.br +0 -0
  339. package/dist/public/assets/_BejGpXBb.js.br +0 -0
  340. package/dist/public/assets/_Bflk6wyJ.js.br +0 -0
  341. package/dist/public/assets/_BgZcNnLg.js.br +0 -0
  342. package/dist/public/assets/_Bl9K5YHh.js.br +0 -0
  343. package/dist/public/assets/_Bm8qrfnp.js +0 -1
  344. package/dist/public/assets/_Bm8qrfnp.js.br +0 -0
  345. package/dist/public/assets/_BqlPqMjo.js +0 -2
  346. package/dist/public/assets/_BqlPqMjo.js.br +0 -0
  347. package/dist/public/assets/_Br3d_KH6.js +0 -1
  348. package/dist/public/assets/_BtO7HAya.js.br +0 -0
  349. package/dist/public/assets/_Bu8OD32j.js.br +0 -0
  350. package/dist/public/assets/_BudAQLe4.js.br +0 -0
  351. package/dist/public/assets/_BxL4__1r.js +0 -1
  352. package/dist/public/assets/_BxUfXKzp.js +0 -1
  353. package/dist/public/assets/_BycRo0JP.js.br +0 -0
  354. package/dist/public/assets/_Bzcq9D5V.js.br +0 -0
  355. package/dist/public/assets/_C06TIN_W.js.br +0 -0
  356. package/dist/public/assets/_C4RLpLnG.js.br +0 -0
  357. package/dist/public/assets/_C664BAIO.js +0 -2
  358. package/dist/public/assets/_C664BAIO.js.br +0 -0
  359. package/dist/public/assets/_C86hHdzY.js.br +0 -0
  360. package/dist/public/assets/_C8j9l84J.js +0 -1
  361. package/dist/public/assets/_C9N-IDg0.js +0 -1
  362. package/dist/public/assets/_CB47AKvU.js +0 -1
  363. package/dist/public/assets/_CBXi9nMO.js +0 -1
  364. package/dist/public/assets/_CDh_JJiq.js +0 -1
  365. package/dist/public/assets/_CEh-8sYr.js.br +0 -0
  366. package/dist/public/assets/_CFqsbg7k.js +0 -1
  367. package/dist/public/assets/_CGLEnCXI.js.br +0 -0
  368. package/dist/public/assets/_CHAfqeaD.js.br +0 -0
  369. package/dist/public/assets/_CJ9JBlkp.js.br +0 -0
  370. package/dist/public/assets/_CJSSmh6t.js.br +0 -0
  371. package/dist/public/assets/_CL639YVF.js +0 -1
  372. package/dist/public/assets/_CMqAVjpq.js +0 -1
  373. package/dist/public/assets/_CNAyvnMv.js +0 -1
  374. package/dist/public/assets/_CNVaYpUe.js.br +0 -0
  375. package/dist/public/assets/_CO0xEfAK.js.br +0 -0
  376. package/dist/public/assets/_COBUjBRu.js.br +0 -0
  377. package/dist/public/assets/_CRbrZe0h.js +0 -1
  378. package/dist/public/assets/_CT5sqaKe.js.br +0 -0
  379. package/dist/public/assets/_CU1RzWKz.js +0 -1
  380. package/dist/public/assets/_CUJGeylV.js.br +0 -0
  381. package/dist/public/assets/_CY3eEs6_.js +0 -1
  382. package/dist/public/assets/_CYQH2A25.js.br +0 -0
  383. package/dist/public/assets/_CZ3yjtBe.js +0 -1
  384. package/dist/public/assets/_CZ84TPP7.js +0 -1
  385. package/dist/public/assets/_C_09UQ4w.js +0 -1
  386. package/dist/public/assets/_C_cIXoZS.js.br +0 -0
  387. package/dist/public/assets/_Calpuj5g.js +0 -1
  388. package/dist/public/assets/_Cavn0ptx.js +0 -1
  389. package/dist/public/assets/_CbRxaUGV.js +0 -1
  390. package/dist/public/assets/_CbaiHEJ0.js.br +0 -0
  391. package/dist/public/assets/_CcaL2eio.js.br +0 -0
  392. package/dist/public/assets/_Cd_aW7wV.js +0 -1
  393. package/dist/public/assets/_CePbTg17.js.br +0 -0
  394. package/dist/public/assets/_CgxCARsn.js.br +0 -0
  395. package/dist/public/assets/_Ch6MEtwM.js.br +0 -0
  396. package/dist/public/assets/_Chl_cS9w.js +0 -1
  397. package/dist/public/assets/_ChyQEzer.js.br +0 -0
  398. package/dist/public/assets/_Cl__s9AV.js +0 -15
  399. package/dist/public/assets/_Cl__s9AV.js.br +0 -0
  400. package/dist/public/assets/_Cm1Nqohh.js.br +0 -0
  401. package/dist/public/assets/_CmGaWAWV.js +0 -1
  402. package/dist/public/assets/_Cmetj14g.js.br +0 -0
  403. package/dist/public/assets/_CofBwph1.js +0 -1
  404. package/dist/public/assets/_CofBwph1.js.br +0 -0
  405. package/dist/public/assets/_Coskn8gG.js.br +0 -0
  406. package/dist/public/assets/_Cp5Hd0fZ.js +0 -1
  407. package/dist/public/assets/_Cp7LYjQv.js.br +0 -0
  408. package/dist/public/assets/_CpVMVsYd.js.br +0 -0
  409. package/dist/public/assets/_CqK6uXIQ.js.br +0 -0
  410. package/dist/public/assets/_CvmQITco.js.br +0 -0
  411. package/dist/public/assets/_CyCiQQkb.js +0 -1
  412. package/dist/public/assets/_CyCiQQkb.js.br +0 -0
  413. package/dist/public/assets/_D-R_QR3a.js +0 -1
  414. package/dist/public/assets/_D0zty7xs.js.br +0 -0
  415. package/dist/public/assets/_D1MrfQGR.js.br +0 -0
  416. package/dist/public/assets/_D6sn16ZU.js +0 -1
  417. package/dist/public/assets/_D7int8im.js +0 -1
  418. package/dist/public/assets/_D8mkgRMn.js +0 -1
  419. package/dist/public/assets/_D91QUBHM.js +0 -1
  420. package/dist/public/assets/_DCLdVQaK.js.br +0 -0
  421. package/dist/public/assets/_DEcYo7eQ.js +0 -1
  422. package/dist/public/assets/_DEpO7jM6.js.br +0 -0
  423. package/dist/public/assets/_DExwdfg0.js +0 -1
  424. package/dist/public/assets/_DFvS9UpG.js +0 -1
  425. package/dist/public/assets/_DKpTHHiU.js +0 -1
  426. package/dist/public/assets/_DOB3kamX.js.br +0 -0
  427. package/dist/public/assets/_DQPHTCvv.js +0 -1
  428. package/dist/public/assets/_DQXY-9GM.js +0 -1
  429. package/dist/public/assets/_DQXY-9GM.js.br +0 -0
  430. package/dist/public/assets/_DSaY05od.js +0 -1
  431. package/dist/public/assets/_DT-iWqc9.js.br +0 -0
  432. package/dist/public/assets/_DTWOFQ_L.js.br +0 -0
  433. package/dist/public/assets/_DTmCdY_H.js.br +0 -0
  434. package/dist/public/assets/_DTu8hKtU.js +0 -1
  435. package/dist/public/assets/_DTuXp9C5.js.br +0 -0
  436. package/dist/public/assets/_DXrjUTvT.js +0 -1
  437. package/dist/public/assets/_D_ZpPCJp.js +0 -1
  438. package/dist/public/assets/_Dc8IKwjP.js +0 -1
  439. package/dist/public/assets/_DcNiMkCH.js +0 -1
  440. package/dist/public/assets/_DdHj8Hz8.js.br +0 -0
  441. package/dist/public/assets/_Dg5XYN_T.js.br +0 -0
  442. package/dist/public/assets/_DiJCTZr9.js +0 -1
  443. package/dist/public/assets/_DlNU-5lx.js +0 -1
  444. package/dist/public/assets/_Dm6KUFm_.js.br +0 -0
  445. package/dist/public/assets/_DnCEdGjD.js +0 -1
  446. package/dist/public/assets/_DpPMKDBh.js +0 -1
  447. package/dist/public/assets/_DpqJBJp0.js +0 -1
  448. package/dist/public/assets/_DqjRMGnp.js.br +0 -0
  449. package/dist/public/assets/_DrJaX0SY.js +0 -1
  450. package/dist/public/assets/_DtnhHe-N.js +0 -1
  451. package/dist/public/assets/_DuctaBH1.js +0 -1
  452. package/dist/public/assets/_Duu2hqo_.js.br +0 -0
  453. package/dist/public/assets/_Dv210Sbq.js.br +0 -0
  454. package/dist/public/assets/_DwRnM8-F.js.br +0 -0
  455. package/dist/public/assets/_Dx-2kxuZ.js.br +0 -0
  456. package/dist/public/assets/_Dx7wPThN.js +0 -1
  457. package/dist/public/assets/_DxOkjs7j.js.br +0 -0
  458. package/dist/public/assets/_DzSlntrn.js +0 -1
  459. package/dist/public/assets/_IUsblI7h.js.br +0 -0
  460. package/dist/public/assets/_IXdPjq_0.js +0 -1
  461. package/dist/public/assets/_L4K52NBr.js +0 -1
  462. package/dist/public/assets/_MWAFFnnV.js.br +0 -0
  463. package/dist/public/assets/_OoE_a2tp.js.br +0 -0
  464. package/dist/public/assets/_PI3MyCwn.js.br +0 -0
  465. package/dist/public/assets/_S3luDBRh.js.br +0 -0
  466. package/dist/public/assets/_TTCeqr7i.js +0 -1
  467. package/dist/public/assets/_ULFEYxEM.js.br +0 -0
  468. package/dist/public/assets/_W5O1RkyQ.js +0 -1
  469. package/dist/public/assets/_XJ3JIj7H.js +0 -1
  470. package/dist/public/assets/_XKlOPaT1.js.br +0 -0
  471. package/dist/public/assets/_XNrqm5Az.js +0 -1
  472. package/dist/public/assets/_ZbvoevWf.js.br +0 -0
  473. package/dist/public/assets/__fnIgJhv.js.br +0 -0
  474. package/dist/public/assets/__gL0A9u-.js.br +0 -0
  475. package/dist/public/assets/_b76PAgg0.js +0 -1
  476. package/dist/public/assets/_gWz2IpiT.js +0 -1
  477. package/dist/public/assets/_hsnHPTx2.js.br +0 -0
  478. package/dist/public/assets/_iwEIhOmP.js +0 -1
  479. package/dist/public/assets/_iyGJuThT.js.br +0 -0
  480. package/dist/public/assets/_jbv-fqI9.js.br +0 -0
  481. package/dist/public/assets/_joTDbJc3.js +0 -1
  482. package/dist/public/assets/_kaD7ZM9j.js +0 -1
  483. package/dist/public/assets/_o36Mts6R.js +0 -1
  484. package/dist/public/assets/_qrfnRJwm.js +0 -1
  485. package/dist/public/assets/_spjIhRZ0.js.br +0 -0
  486. package/dist/public/assets/_t56NKp5w.js +0 -1
  487. package/dist/public/assets/_tL2b4itk.js +0 -1
  488. package/dist/public/assets/_u0lI2Zbu.js +0 -1
  489. package/dist/public/assets/_vLaC2A1G.js +0 -1
  490. package/dist/public/assets/_xUsHynLe.js +0 -1
  491. package/dist/public/assets/_yYbphr2y.js +0 -1
  492. package/dist/public/assets/app-shell-CVYlktwa.css +0 -1
  493. package/dist/public/assets/app-shell-CVYlktwa.css.br +0 -0
  494. package/dist/public/assets/files-view-BGNc8n_2.js +0 -2
  495. package/dist/public/assets/manage-workspace-CwuJAuUl.js +0 -2
  496. package/dist/public/assets/new-Wdvg8N8u.js +0 -1
  497. package/dist/public/assets/new-workspace-CPNUMUcS.js +0 -2
  498. package/dist/public/assets/review-view-DKWYk3vP.js +0 -2
  499. package/dist/public/assets/settings-Wdvg8N8u.js +0 -1
  500. package/dist/public/assets/settings-page-ZAotQNkO.js +0 -2
  501. package/dist/public/assets/styles-D_6YaAaT.css +0 -1
  502. package/dist/public/assets/styles-D_6YaAaT.css.br +0 -0
  503. package/dist/public/assets/w-Wdvg8N8u.js +0 -1
  504. package/dist/public/assets/w._--5XxreDD.js +0 -1
  505. package/dist/public/assets/w._-BQayuIWJ.js +0 -1
  506. package/dist/public/assets/w._-Wdvg8N8u.js +0 -1
package/README.md CHANGED
@@ -124,12 +124,15 @@ must. On the LAN the direct path needs nothing more; from another network
124
124
  (a phone on cellular) the UDP port has to be reachable through your router.
125
125
  Settings → Terminal can allow work to open it on the router when needed
126
126
  (UPnP, off by default): only after a device failed to connect without it,
127
- leased, and given back once unused. A host firewall has to let the port
128
- in too: `work doctor` says when one drops it, or may (where only root can
129
- read its rules, it judges from the defaults and gives the command that
130
- shows them), with the command that admits it, and
131
- `work setup` offers to add that rule, named `work` so it is removed as one
132
- (`--firewall` adds it without asking, `--no-firewall` skips the question).
127
+ leased, and given back once unused. A host firewall can keep a device
128
+ out too, though usually it does not (ICE gets through a stateful one from
129
+ most networks), so work says nothing of it until a device has failed to
130
+ connect directly while nothing has come in through the port. Then `work
131
+ doctor` says it drops the port, or may (where only root can read its
132
+ rules, it judges from the defaults and gives the command that shows
133
+ them), with the command that admits it, and `work setup` offers to add
134
+ that rule, named `work` so it is removed as one (`--firewall` adds it
135
+ without asking, `--no-firewall` skips the question).
133
136
  macOS's firewall admits programs rather than ports, so there it is the
134
137
  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
135
138
  public address (Cloudflare's by default; empty for none).
@@ -4,6 +4,7 @@
4
4
  // printed path is (`/term-paths`: the session's directory, its checkout,
5
5
  // the workspace, each repo; files and folders inside its checkouts and
6
6
  // .share/ only).
7
+ import fs from "node:fs";
7
8
  import os from "node:os";
8
9
  import path from "node:path";
9
10
 
@@ -17,16 +18,9 @@ import path from "node:path";
17
18
  export async function resolveTarget(ctx, ws, raw) {
18
19
  if (/^\/w\//.test(raw)) return { link: raw, label: raw };
19
20
  if (/^https?:\/\//i.test(raw)) return { link: raw, label: raw };
20
- // `name:42` is a line in it, as editors and the terminal's links take it.
21
- const m = /^(.*?):(\d+)(?::\d+)?$/.exec(raw);
22
- const target = m ? m[1] : raw;
23
- const line = m ? Number(m[2]) : null;
24
- const home = target.startsWith("~/")
25
- ? path.join(os.homedir(), target.slice(2))
26
- : target;
21
+ const { line, home, abs } = pathOf(raw);
27
22
  // This shell's own directory first; then as typed, which the server
28
23
  // tries against the session's, the workspace and each repo.
29
- const abs = path.resolve(process.cwd(), home);
30
24
  const answers = await ctx.api.post(`/api/workspaces/${ws.id}/term-paths`, {
31
25
  ...(process.env.WORK_SESSION_ID && {
32
26
  session: process.env.WORK_SESSION_ID,
@@ -43,7 +37,48 @@ export async function resolveTarget(ctx, ws, raw) {
43
37
  };
44
38
  }
45
39
 
46
- /** Why a target named nothing, said once for both commands. */
47
- export function unresolved(raw) {
40
+ /** A path target as typed: `name:42` is a line in it, as editors and the
41
+ * terminal's links take it. */
42
+ function pathOf(raw) {
43
+ const m = /^(.*?):(\d+)(?::\d+)?$/.exec(raw);
44
+ const target = m ? m[1] : raw;
45
+ const home = target.startsWith("~/")
46
+ ? path.join(os.homedir(), target.slice(2))
47
+ : target;
48
+ return {
49
+ line: m ? Number(m[2]) : null,
50
+ home,
51
+ abs: path.resolve(process.cwd(), home),
52
+ };
53
+ }
54
+
55
+ /** Why a target named nothing, said once for both commands. A file in the
56
+ * workspace's `.tmp/` gets its own answer: it is there, but that is the
57
+ * sessions' scratch, which the app never shows, so the fix is to put it
58
+ * where the user can open it, not to name it some other way. */
59
+ export function unresolved(raw, ws) {
60
+ if (!ws?.path) return nothing(raw);
61
+ const { home, abs } = pathOf(raw);
62
+ // Real paths on both sides: /home may be a symlink to /var/home.
63
+ const tmp = real(path.join(ws.path, ".tmp"));
64
+ const at = real(abs);
65
+ if (
66
+ at === tmp ||
67
+ at.startsWith(tmp + path.sep) ||
68
+ /^\.tmp(\/|$)/.test(path.normalize(home))
69
+ )
70
+ return `${raw} is in .tmp/, scratch the app never shows: save what the user should see in ${path.join(ws.path, ".share")}/ and name that instead`;
71
+ return nothing(raw);
72
+ }
73
+
74
+ function nothing(raw) {
48
75
  return `nothing at ${raw} in this workspace: a file or folder in its checkouts or its .share/, an app page (/w/…), or a URL`;
49
76
  }
77
+
78
+ function real(p) {
79
+ try {
80
+ return fs.realpathSync(p);
81
+ } catch {
82
+ return p;
83
+ }
84
+ }
@@ -30,7 +30,7 @@ export const commands = [
30
30
  const { ws } = await ctx.resolveWorkspace(ctx.flag("--workspace"));
31
31
  const raw = ctx.flag("--link");
32
32
  const target = raw ? await resolveTarget(ctx, ws, raw) : null;
33
- if (raw && !target) ctx.die(unresolved(raw));
33
+ if (raw && !target) ctx.die(unresolved(raw, ws));
34
34
  const res = await ctx.api.post(`/api/workspaces/${ws.id}/notices`, {
35
35
  message,
36
36
  ...(ctx.flag("--title") && { title: ctx.flag("--title") }),
package/bin/cli/open.mjs CHANGED
@@ -20,7 +20,7 @@ export const commands = [
20
20
  if (!raw) ctx.die("open what? work open <target> (see: work help open)");
21
21
  const { ws } = await ctx.resolveWorkspace(ctx.flag("--workspace"));
22
22
  const target = await resolveTarget(ctx, ws, raw);
23
- if (!target) ctx.die(unresolved(raw));
23
+ if (!target) ctx.die(unresolved(raw, ws));
24
24
  const res = await ctx.api.post(`/api/workspaces/${ws.id}/notices`, {
25
25
  message: ctx.flag("--message") || `Look at ${target.label}`,
26
26
  link: target.link,
package/bin/work.mjs CHANGED
@@ -6,7 +6,8 @@
6
6
  // it otherwise offers when Tailscale is logged in; --no-tailscale skips that;
7
7
  // --firewall adds a `work` rule for direct connections' UDP port to a host
8
8
  // firewall that may drop it, or on macOS lets the service's node in,
9
- // which it otherwise offers; --no-firewall skips that;
9
+ // which it otherwise offers once a device could not connect directly;
10
+ // --no-firewall skips that;
10
11
  // --allow-host <name> / --disallow-host <name>, repeated, put one name
11
12
  // in or out of WORK_ALLOWED_HOSTS and keep the rest; --json prints
12
13
  // what it did as JSON on stdout, its progress on stderr)
@@ -1850,10 +1851,12 @@ local Tailscale daemon to port ${port}.${ts.https === false ? "\nHTTPS certifica
1850
1851
  * the active zone, or ufw rules with that comment (lib/setup/firewall.mjs);
1851
1852
  * on macOS, whose firewall admits programs, the service's node let in
1852
1853
  * (`serviceFirewall`; "Block all incoming connections" is only said).
1853
- * Added with sudo, and only on an explicit yes, the prompt's or
1854
- * `--firewall`: `--yes` is how the installer, `work update` and the app's
1855
- * own update run setup unattended, and none of them asked for it. What it
1856
- * runs is printed as it runs.
1854
+ * Offered only where the running server advises it (a device could not
1855
+ * connect directly, and nothing has come in through the port), and added
1856
+ * with sudo only on an explicit yes, the prompt's or `--firewall`: `--yes`
1857
+ * is how the installer, `work update` and the app's own update run setup
1858
+ * unattended, and none of them asked for it. What it runs is printed as it
1859
+ * runs.
1857
1860
  */
1858
1861
  async function firewall() {
1859
1862
  if (args.includes("--no-firewall")) return;
@@ -1866,9 +1869,16 @@ async function firewall() {
1866
1869
  return;
1867
1870
  }
1868
1871
  if (f.admits) {
1869
- if (asked) log(`${f.what} already admits UDP ${f.port}`);
1872
+ if (asked)
1873
+ log(
1874
+ `${f.what} already admits UDP ${f.port}${f.why ? ` (${f.why})` : ""}`,
1875
+ );
1870
1876
  return;
1871
1877
  }
1878
+ // Offered only once a device could not connect directly and nothing has
1879
+ // shown the port open (`bornOut`): a may-drop read from the rules as
1880
+ // shipped is no reason to change them.
1881
+ if (!asked && !f.advise) return;
1872
1882
  const drops = `${dropText(f)}, which direct connections from your other devices use`;
1873
1883
  if (!f.plan.length) {
1874
1884
  if (asked || !yes) warn(`${drops}: ${f.fix}`);
@@ -1,4 +1,4 @@
1
- import { $ as reopenSession, A as closedSession, An as onFinished, Bn as turnPhase, Dr as getSetting, Fn as setExpecting, Hn as turnSince, J as notifySessionsChanged, Kn as agentLabel, L as getSession, Mn as onTurnEnd, Nn as sessionWatched, Or as isKnownAgent, Q as renameSession, R as interruptSession, Sn as lastTypedAt, U as listPanesWithin, Vn as turnSettling, Y as onSessionDispose, Zr as httpError, _n as agentPhase, ai as get, an as interruptKeys, bn as hookReportedAt, cn as steerKeys, et as reopenable, gn as activityOf, ii as db, j as createSession, jn as onPhaseChange, nt as sendToSession, pn as cleanSummary, ri as all, tt as retireSession, z as killSession, zn as summaryOf } from "./_C65JTOIi.js";
1
+ import { $ as reopenSession, A as closedSession, An as onFinished, Bn as turnPhase, Dr as getSetting, Fn as setExpecting, Hn as turnSince, J as notifySessionsChanged, Kn as agentLabel, L as getSession, Mn as onTurnEnd, Nn as sessionWatched, Or as isKnownAgent, Q as renameSession, Qr as httpError, R as interruptSession, Sn as lastTypedAt, U as listPanesWithin, Vn as turnSettling, Y as onSessionDispose, _n as agentPhase, ai as db, an as interruptKeys, bn as hookReportedAt, cn as steerKeys, et as reopenable, gn as activityOf, ii as all, j as createSession, jn as onPhaseChange, nt as sendToSession, oi as get, pn as cleanSummary, tt as retireSession, z as killSession, zn as summaryOf } from "./_DuADlWik.js";
2
2
  //#region src/server/messages.ts
3
3
  var team = {
4
4
  memberGroup: () => null,
@@ -0,0 +1,2 @@
1
+ import { J as notifySessionsChanged } from "./_DuADlWik.js";
2
+ export { notifySessionsChanged };
@@ -0,0 +1,183 @@
1
+ //#endregion
2
+ //#region src/styles/tokens.css.ts
3
+ var color = {
4
+ ok: "light-dark(#1a7f37, #57d364)",
5
+ okStrong: "light-dark(#116329, #7ee787)",
6
+ warn: "light-dark(#bf8700, #d4a72c)",
7
+ warnStrong: "light-dark(#8a5a00, #f0b84a)",
8
+ merged: "light-dark(#8250df, #a371f7)",
9
+ closed: "light-dark(#cf222e, #f85149)",
10
+ onAccent: "#fff",
11
+ onDanger: "#fff",
12
+ accentDefault: "light-dark(#4f5bd5, #6470e6)",
13
+ bg: "var(--bg)",
14
+ panel: "var(--panel)",
15
+ border: "var(--border)",
16
+ text: "var(--text)",
17
+ dim: "var(--dim)",
18
+ accent: "var(--accent)",
19
+ accentFill: "var(--accent-fill)",
20
+ accentText: "var(--accent-text)",
21
+ danger: "var(--danger)",
22
+ fieldBorder: "var(--field-border)",
23
+ raised: "color-mix(in srgb, var(--panel) 94%, var(--text))",
24
+ raisedHover: "color-mix(in srgb, var(--panel) 90%, var(--text))",
25
+ onScrim: "#fff"
26
+ };
27
+ var sans = "Inter, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif";
28
+ var iconSize = {
29
+ sm: 12,
30
+ md: 14,
31
+ lg: 16,
32
+ xl: 18
33
+ };
34
+ var mobile = "screen and (max-width: 899px) and (pointer: coarse), screen and (max-width: 899px) and (pointer: none)";
35
+ var glyphBadgeNum = "_P _O";
36
+ var usageInk = {
37
+ ok: "_Q",
38
+ mid: "_R",
39
+ warm: "_S",
40
+ hot: "_T"
41
+ };
42
+ var usageFill = {
43
+ ok: "_U",
44
+ mid: "_V",
45
+ warm: "_W",
46
+ hot: "_X"
47
+ };
48
+ var prTone = {
49
+ open: "_Y",
50
+ draft: "_Z",
51
+ merged: "_0",
52
+ closed: "_1"
53
+ };
54
+ var phaseIcon = {
55
+ working: "_bd _bc",
56
+ waiting: "_be _bc",
57
+ idle: "_bf _bc",
58
+ off: "_bg _bc"
59
+ };
60
+ var btnSm = "_bn _I";
61
+ var btnLg = "_bo _I";
62
+ var tone = {
63
+ accent: "_bs",
64
+ ok: "_bt",
65
+ warn: "_bu",
66
+ danger: "_bv",
67
+ merged: "_bw",
68
+ closed: "_bx"
69
+ };
70
+ var inputLg = "_bB _bA";
71
+ var iconBtnXs = "_bF _D";
72
+ var iconBtnRow = "_bG _D";
73
+ var iconBtnLg = "_bH _D";
74
+ var chipBtn = "_bI _D";
75
+ var toastStack = "_f _e";
76
+ var toastKind = {
77
+ error: "_j",
78
+ warn: "_k",
79
+ info: "_l"
80
+ };
81
+ var toastTitle = {
82
+ error: "_m",
83
+ warn: "_n",
84
+ info: "_o"
85
+ };
86
+ var tocDot = "_b1 _ba";
87
+ //#endregion
88
+ //#region src/tags/settings-agents.css.ts
89
+ var agentRow = "_d0 _dG";
90
+ var list$3 = "_dK _cB _dF _dI";
91
+ var metaChip = "_dY _bz _by";
92
+ var sectionCount = "_cy _bp _bq";
93
+ var usageNote = "_hL _by";
94
+ var pop$2 = "_f5 _bN";
95
+ var spinner = "_f8 _bD _bi";
96
+ var toolLead = "_ge _dT";
97
+ var name$4 = "_gv _dT";
98
+ var desc$1 = "_gw _dU";
99
+ //#endregion
100
+ //#region src/tags/lsp-add-dialog.css.ts
101
+ var addDlg = "_ko _c3";
102
+ var key$1 = "_mO _mM";
103
+ var addTile = "_mQ _mM";
104
+ var field$2 = "_m1 _bA";
105
+ var keyField = "_m2 _m1 _bA";
106
+ var labelField = "_m3 _m1 _bA";
107
+ var detailsToggle = "_ff _6";
108
+ var themeSeg = "_eH _bR";
109
+ var checkList = "_ei _cz";
110
+ //#endregion
111
+ //#region src/tags/prompt-dialog.css.ts
112
+ var promptDlg = "_c7 _c3";
113
+ var item$1 = "_cm _D";
114
+ var glance = "_gA _D";
115
+ //#endregion
116
+ //#region src/tags/side-nav.css.ts
117
+ var iconBtn = "_di _D";
118
+ var settingsDot = "_dj _bQ";
119
+ var notifyBtn = "_do _D";
120
+ //#endregion
121
+ //#region src/styles/session-pop.css.ts
122
+ var sessionPop = "_dq _bN";
123
+ var sessionPopBtn = "_dr _bk";
124
+ var wsBtn = "_g3 _bk";
125
+ var rowIcon = "_g5 _bF _D";
126
+ var prChip = "_nW _M _nQ";
127
+ //#endregion
128
+ //#region src/tags/port-chip.css.ts
129
+ var port = "_oI _M _nQ";
130
+ var depth = {
131
+ "1": "_ml",
132
+ "2": "_mm",
133
+ "3": "_mn"
134
+ };
135
+ var open = "_mt _bk";
136
+ var action = "_my _bI _D";
137
+ var toggle = "_hj _6";
138
+ var fold = "_hk _dH";
139
+ var statusOf = {
140
+ queued: "_lp",
141
+ starting: "_lq",
142
+ working: "_lr",
143
+ waiting: "_ls",
144
+ idle: "_lt",
145
+ done: "_lu",
146
+ closed: "_lv"
147
+ };
148
+ var item = "_kR _bk";
149
+ var menu = "_nH _dq _bN";
150
+ var menuItem = "_nJ _bk";
151
+ var findBtn$1 = "_jy _hv _bG _D";
152
+ var tool = "_hv _bG _D";
153
+ var heldRefresh = "_hD _M";
154
+ var pop$1 = "_mH _dq _bN";
155
+ var fileFilter = "_o6 _F";
156
+ var findInput = "_iU _F";
157
+ var keybarIconBtn = "_i3 _bI _D";
158
+ var input = "_du _F";
159
+ var group = "_dx _6";
160
+ var hint$1 = "_lW _bp _3";
161
+ var sheetDir = "_mc _bP";
162
+ var upBtn = "_ih _bG _D";
163
+ var findBtn = "_il _hv _bG _D";
164
+ var goBtn = "_im _hv _bG _D";
165
+ var note = "_kW _by";
166
+ //#endregion
167
+ //#region src/tags/manage-workspace.css.ts
168
+ var procCmd = "_hV _dT";
169
+ var factCopy = "_h2 _bI _D";
170
+ var resultRow = "_kz _bk";
171
+ var resultBranch = "_kA _dY _bz _by _bF _D";
172
+ var urlAction = "_kB _dY _bz _by _dZ";
173
+ var curRow = "_gH _dN";
174
+ //#endregion
175
+ //#region src/tags/join-dialog.css.ts
176
+ var dlg = "_kX _c3";
177
+ var hint = "_kY _by";
178
+ var kbtn = "_cU _bH _D";
179
+ var repeat = "_cX _cW";
180
+ var dpadUser = "_c0 _cW";
181
+ var dpadEsc = "_c1 _cW";
182
+ //#endregion
183
+ export { field$2 as $, item as A, usageInk as At, wsBtn as B, fileFilter as C, iconBtnRow as Ct, findBtn$1 as D, prTone as Dt, tool as E, phaseIcon as Et, depth as F, settingsDot as G, sessionPopBtn as H, open as I, promptDlg as J, glance as K, port as L, fold as M, iconSize as Mt, toggle as N, mobile as Nt, menu as O, tone as Ot, action as P, sans as Pt, addTile as Q, prChip as R, keybarIconBtn as S, iconBtnLg as St, heldRefresh as T, inputLg as Tt, iconBtn as U, sessionPop as V, notifyBtn as W, themeSeg as X, checkList as Y, detailsToggle as Z, sheetDir as _, toastTitle as _t, dlg as a, name$4 as at, input as b, chipBtn 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, toastStack as gt, goBtn as h, toastKind as ht, repeat as i, desc$1 as it, statusOf as j, color as jt, menuItem as k, usageFill as kt, resultRow as l, usageNote as lt, findBtn as m, tocDot 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, btnLg as vt, pop$1 as w, iconBtnXs as wt, findInput as x, glyphBadgeNum as xt, group as y, btnSm as yt, rowIcon as z };
@@ -1664,6 +1664,42 @@ function portsAdmit(xml, port) {
1664
1664
  }
1665
1665
  return false;
1666
1666
  }
1667
+ /** `work doctor`'s line, or null with nothing to say. Never a failure of
1668
+ * readiness: work runs either way, and only devices on the network lose
1669
+ * the direct path. macOS's answer is for one node, so the line says when
1670
+ * it had to be this shell's (`nodeFrom`, set by the CLI). */
1671
+ /**
1672
+ * The reading `f` as direct connections bear it out (`seen`, the running
1673
+ * server's record). A connection whose page side came in unasked — a
1674
+ * peer-reflexive address, which this end never sent to first — got through
1675
+ * whatever the reading guessed, so the port admits. Otherwise the fix is
1676
+ * advised (`advise`) only once a page's direct path never connected
1677
+ * (`turnedAway`): ICE punches through a stateful firewall from most
1678
+ * networks, so a firewall that may drop the port is no reason to change it
1679
+ * until a device could not get in. Without a record (no server to ask),
1680
+ * nothing is advised.
1681
+ */
1682
+ function bornOut(f, seen) {
1683
+ if (!f) return f;
1684
+ if (f.admits) return {
1685
+ ...f,
1686
+ advise: false
1687
+ };
1688
+ if (seen?.inbound) return {
1689
+ ...f,
1690
+ admits: true,
1691
+ likely: false,
1692
+ why: "a device's connection came in through it unasked",
1693
+ check: null,
1694
+ plan: [],
1695
+ fix: null,
1696
+ advise: false
1697
+ };
1698
+ return {
1699
+ ...f,
1700
+ advise: (seen?.turnedAway ?? 0) > 0
1701
+ };
1702
+ }
1667
1703
  function realpath(file) {
1668
1704
  try {
1669
1705
  return fs.realpathSync(file);
@@ -9472,7 +9508,7 @@ function publishChange(sessionId) {
9472
9508
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
9473
9509
  if (row?.workspace_id) {
9474
9510
  const workspaceId = row.workspace_id;
9475
- import("./_o6JmtS1w.js").then((m) => m.notifySessionsChanged(workspaceId));
9511
+ import("./_DDikKLG_.js").then((m) => m.notifySessionsChanged(workspaceId));
9476
9512
  return;
9477
9513
  }
9478
9514
  publish("sessions.changed");
@@ -17609,7 +17645,7 @@ function notifySessionsChanged(workspaceId) {
17609
17645
  async function emitSessionsChanged(workspaceId) {
17610
17646
  try {
17611
17647
  const states = await sessionStates();
17612
- const { teamsOf } = await import("./_B2zjDgtj.js");
17648
+ const { teamsOf } = await import("./_ENqPMLjD.js");
17613
17649
  publish("sessions.changed", {
17614
17650
  workspaceId,
17615
17651
  sessions: listSessions(workspaceId).map((s) => ({
@@ -19219,8 +19255,9 @@ ${repoLines}
19219
19255
  a repo), and each one you mention is a Markdown link named for it:
19220
19256
  \`[login-after](/w/${wsId}/files?file=.share/<path>)\`, never a bare file
19221
19257
  name, which nothing opens (\`work open <path>\` offers it in the app too).
19222
- \`.tmp/\` (your \`TMPDIR\`) is scratch they never see. Their pastes land
19223
- in \`.share/pasted/\`.
19258
+ \`.tmp/\` (your \`TMPDIR\`) is scratch the app neither lists nor opens: never
19259
+ link or name a file there, copy it into \`.share/\` and link that. Their
19260
+ pastes land in \`.share/pasted/\`.
19224
19261
  - **Tell the user** only what the app does not already: it notifies them when
19225
19262
  your turn ends or you are waiting on them. For news in the middle of a turn
19226
19263
  (a long job finished while you work on),
@@ -19259,4 +19296,4 @@ ${repoLines}
19259
19296
  `;
19260
19297
  }
19261
19298
  //#endregion
19262
- export { reopenSession as $, setInstance as $n, publish as $r, notePushActivity as $t, closedSession as A, onFinished as An, setDisabledAgents as Ar, authGithub as At, killWorkspaceSessions as B, turnPhase as Bn, PROJECT_TOOLS as Br, readBlobAt as Bt, workspaceBranches as C, noteActivity$1 as Cn, changePref as Cr, installServer as Ct, beginCreation as D, noteTyped as Dn, getSetting as Dr, serverList as Dt, agentCaller as E, notePermissionMode as En, enabledAgents as Er, serverById as Et, ensureTmuxServer as F, setExpecting as Fn, ghKnownHosts as Fr, refreshGithub as Ft, markTmuxStarted as G, agentFromCommand as Gn, parseAgentId as Gr, setPoints as Gt, listPanes as H, turnSince as Hn, agentById as Hr, reviewWaiting as Ht, forgetPanes as I, setScrapedPhase as In, miseInstalls as Ir, removeTool as It, notifySessionsChanged as J, ACCENT_RE as Jn, FRAME_ANCESTORS as Jr, commentFolder as Jt, newSessionArgs as K, agentLabel as Kn, toolById as Kr, startSnapSweep as Kt, getSession as L, setSessionViewers as Ln, miseVersions as Lr, runStreaming as Lt, creationOf as M, onTurnEnd as Mn, setSetting as Mr, installMise as Mt, descendantsOf as N, sessionWatched as Nn, discoverAgents as Nr, installTool as Nt, cleanEnv as O, noteUserAnswered as On, isKnownAgent as Or, sharing as Ot, disposeSessions as P, setAgentPhase as Pn, doctor as Pr, logoutGithub as Pt, renameSession as Q, normalizeAccent as Qn, readBody as Qr, hotBatchMinMs as Qt, interruptSession as R, settleQuietWorking as Rn, which as Rr, updateTool as Rt, withProgressOp as S, lastTypedAt as Sn, allPrefs as Sr, installKey as St, hookToken as T, noteInterrupt as Tn, disabledAgents as Tr, removeServer as Tt, listPanesWithin as U, agentBadge as Un, agentLabel$1 as Ur, workspaceDiff as Ut, launchDir as V, turnSettling as Vn, TOOLS as Vr, readFileAt as Vt, listSessions as W, agentFamily as Wn, catalogPin as Wr, workspaceSections as Wt, ownWorkspaceOnly as X, iconSvg as Xn, checked as Xr, sectionFor as Xt, onSessionDispose as Y, getInstance as Yn, FRAME_HEADERS as Yr, markBranch as Yt, panePids as Z, manifest as Zn, httpError as Zr, dismissPr as Zt, retryMaterialize as _, agentPhase as _n, removeHost as _r, stopServers as _t, ensureUntrackedCache as a, get as ai, interruptKeys as an, headOid as ar, tmuxWasStarted as at, sweepTrash as b, hookReportedAt as bn, WORKSPACE_PREFS as br, forgetCustomServer as bt, insertPendingWorkspace as c, ensureAllCacheConfig as ci, steerKeys as cn, repoCatalog as cr, workspaceProcs as ct, progress as d, tmux as di, readCache as dn, addHost as dr, lspQuery as dt, publishJson as ei, refreshPrsBatch as en, deleteSubscription as er, reopenable as et, progressSince as f, config as fi, writeCache as fn, configuredHosts as fr, lspQueryOf as ft, resumePendingWorkspaces as g, activityOf as gn, normalizeHost as gr, stopAllServers as gt, removeRepo as h, realInside as hn, isValidHost as hr, runningServers as ht, deleteWorkspace as i, db as ii, AGENTS as in, validSubscription as ir, tmuxName as it, createSession as j, onPhaseChange as jn, setPref as jr, installAgent as jt, clearTmuxStarted as k, notifyEventOn as kn, preferredAgent as kr, whileInstalling as kt, listWorkspaces as l, TMUX_SOCKET as li, blankRow as ln, repoDefaultBranch as lr, killServers as lt, queueMaterialize as m, withLock as mi, inside as mn, forgetToken as mr, lspWarm as mt, barePath as n, subscriberCount as ni, workspacePrs as nn, saveSubscription as nr, sendToSession as nt, gcBares as o, workspacePath as oi, readHookPayload as on, pendingSsoOrgs as or, killWorkspaceProc as ot, pruneLaneBranch as p, swr as pi, cleanSummary as pn, ensureGitCredentials as pr, lspUses as pt, noteConversation as q, agentMeta as qn, applyPrefChange as qr, diffStamp as qt, createWorkspace as r, all as ri, noteActivity as rn, sendPush as rr, sessionStates as rt, getWorkspace as s, ownsBranchOf as si, reportsWorking as sn, repoBranches as sr, portsByWorkspace as st, addRepo as t, subscribe as ti, withoutDismissed as tn, pushPublicKey as tr, retireSession as tt, otherWorkspaceBranches as u, git as ui, credentialStamp as un, DEFAULT_HOST as ur, lspDiagnostics as ut, revParse as v, clearAgentPhase as vn, unreachableRepos as vr, addCustomServer as vt, ensureAllPushHooks as w, noteBackground as wn, deleteSetting as wr, lspEnabled as wt, syncAgentsMd as x, interruptedSinceReport as xn, agentChoices as xr, forgetProbes as xt, setWorkspaceStatus as y, hookPhase as yn, PREF_MAX as yr, allServers as yt, killSession as z, summaryOf as zn, firewallProbe as zr, fileChanges as zt };
19299
+ export { reopenSession as $, setInstance as $n, readBody as $r, notePushActivity as $t, closedSession as A, onFinished as An, setDisabledAgents as Ar, authGithub as At, killWorkspaceSessions as B, turnPhase as Bn, firewallProbe as Br, readBlobAt as Bt, workspaceBranches as C, noteActivity$1 as Cn, changePref as Cr, installServer as Ct, beginCreation as D, noteTyped as Dn, getSetting as Dr, serverList as Dt, agentCaller as E, notePermissionMode as En, enabledAgents as Er, serverById as Et, ensureTmuxServer as F, setExpecting as Fn, ghKnownHosts as Fr, refreshGithub as Ft, markTmuxStarted as G, agentFromCommand as Gn, catalogPin as Gr, setPoints as Gt, listPanes as H, turnSince as Hn, TOOLS as Hr, reviewWaiting as Ht, forgetPanes as I, setScrapedPhase as In, miseInstalls as Ir, removeTool as It, notifySessionsChanged as J, ACCENT_RE as Jn, applyPrefChange as Jr, commentFolder as Jt, newSessionArgs as K, agentLabel as Kn, parseAgentId as Kr, startSnapSweep as Kt, getSession as L, setSessionViewers as Ln, miseVersions as Lr, runStreaming as Lt, creationOf as M, onTurnEnd as Mn, setSetting as Mr, installMise as Mt, descendantsOf as N, sessionWatched as Nn, discoverAgents as Nr, installTool as Nt, cleanEnv as O, noteUserAnswered as On, isKnownAgent as Or, sharing as Ot, disposeSessions as P, setAgentPhase as Pn, doctor as Pr, logoutGithub as Pt, renameSession as Q, normalizeAccent as Qn, httpError as Qr, hotBatchMinMs as Qt, interruptSession as R, settleQuietWorking as Rn, which as Rr, updateTool as Rt, withProgressOp as S, lastTypedAt as Sn, allPrefs as Sr, installKey as St, hookToken as T, noteInterrupt as Tn, disabledAgents as Tr, removeServer as Tt, listPanesWithin as U, agentBadge as Un, agentById as Ur, workspaceDiff as Ut, launchDir as V, turnSettling as Vn, PROJECT_TOOLS as Vr, readFileAt as Vt, listSessions as W, agentFamily as Wn, agentLabel$1 as Wr, workspaceSections as Wt, ownWorkspaceOnly as X, iconSvg as Xn, FRAME_HEADERS as Xr, sectionFor as Xt, onSessionDispose as Y, getInstance as Yn, FRAME_ANCESTORS as Yr, markBranch as Yt, panePids as Z, manifest as Zn, checked as Zr, dismissPr as Zt, retryMaterialize as _, agentPhase as _n, removeHost as _r, stopServers as _t, ensureUntrackedCache as a, db as ai, interruptKeys as an, headOid as ar, tmuxWasStarted as at, sweepTrash as b, hookReportedAt as bn, WORKSPACE_PREFS as br, forgetCustomServer as bt, insertPendingWorkspace as c, ownsBranchOf as ci, steerKeys as cn, repoCatalog as cr, workspaceProcs as ct, progress as d, git as di, readCache as dn, addHost as dr, lspQuery as dt, publish as ei, refreshPrsBatch as en, deleteSubscription as er, reopenable as et, progressSince as f, tmux as fi, writeCache as fn, configuredHosts as fr, lspQueryOf as ft, resumePendingWorkspaces as g, activityOf as gn, normalizeHost as gr, stopAllServers as gt, removeRepo as h, withLock as hi, realInside as hn, isValidHost as hr, runningServers as ht, deleteWorkspace as i, all as ii, AGENTS as in, validSubscription as ir, tmuxName as it, createSession as j, onPhaseChange as jn, setPref as jr, installAgent as jt, clearTmuxStarted as k, notifyEventOn as kn, preferredAgent as kr, whileInstalling as kt, listWorkspaces as l, ensureAllCacheConfig as li, blankRow as ln, repoDefaultBranch as lr, killServers as lt, queueMaterialize as m, swr as mi, inside as mn, forgetToken as mr, lspWarm as mt, barePath as n, subscribe as ni, workspacePrs as nn, saveSubscription as nr, sendToSession as nt, gcBares as o, get as oi, readHookPayload as on, pendingSsoOrgs as or, killWorkspaceProc as ot, pruneLaneBranch as p, config as pi, cleanSummary as pn, ensureGitCredentials as pr, lspUses as pt, noteConversation as q, agentMeta as qn, toolById as qr, diffStamp as qt, createWorkspace as r, subscriberCount as ri, noteActivity as rn, sendPush as rr, sessionStates as rt, getWorkspace as s, workspacePath as si, reportsWorking as sn, repoBranches as sr, portsByWorkspace as st, addRepo as t, publishJson as ti, withoutDismissed as tn, pushPublicKey as tr, retireSession as tt, otherWorkspaceBranches as u, TMUX_SOCKET as ui, credentialStamp as un, DEFAULT_HOST as ur, lspDiagnostics as ut, revParse as v, clearAgentPhase as vn, unreachableRepos as vr, addCustomServer as vt, ensureAllPushHooks as w, noteBackground as wn, deleteSetting as wr, lspEnabled as wt, syncAgentsMd as x, interruptedSinceReport as xn, agentChoices as xr, forgetProbes as xt, setWorkspaceStatus as y, hookPhase as yn, PREF_MAX as yr, allServers as yt, killSession as z, summaryOf as zn, bornOut as zr, fileChanges as zt };
@@ -0,0 +1,2 @@
1
+ import { f as teamsOf } from "./_D4k_lVuT.js";
2
+ export { teamsOf };