@dylanpiercey/work 0.1.0 → 0.1.1

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 (513) hide show
  1. package/README.md +17 -5
  2. package/bin/work.mjs +208 -9
  3. package/dist/_D1C-XIqT.js +168 -0
  4. package/dist/{_Bq7to522.js → _Dzz52ZtI.js} +188 -49
  5. package/dist/_HbAW5Cbt.js +2 -0
  6. package/dist/index.mjs +1118 -1151
  7. package/dist/public/assets/{_Cz5BPBG8.js → _-5UNb9-C.js} +1 -1
  8. package/dist/public/assets/_-5UNb9-C.js.br +0 -0
  9. package/dist/public/assets/_06rtP_SB.js +1 -0
  10. package/dist/public/assets/_14yhXek7.js +1 -0
  11. package/dist/public/assets/_14yhXek7.js.br +0 -0
  12. package/dist/public/assets/_1JXC9nFp.js +1 -0
  13. package/dist/public/assets/_1JXC9nFp.js.br +0 -0
  14. package/dist/public/assets/_1Yit_Y5R.js +1 -0
  15. package/dist/public/assets/_1ZPfR2B8.js +6 -0
  16. package/dist/public/assets/_1ZPfR2B8.js.br +0 -0
  17. package/dist/public/assets/{_D2un443j.js → _1xOByopP.js} +1 -1
  18. package/dist/public/assets/_1xOByopP.js.br +0 -0
  19. package/dist/public/assets/{_C_37_B6u.js → _3aBl7SEn.js} +1 -1
  20. package/dist/public/assets/_3aBl7SEn.js.br +0 -0
  21. package/dist/public/assets/_5aMLV2Vy.js +1 -0
  22. package/dist/public/assets/{_BwP07uVS.js → _7YrArFMB.js} +1 -1
  23. package/dist/public/assets/_7YrArFMB.js.br +0 -0
  24. package/dist/public/assets/{_ClldMY37.js → _B1-W0Sn2.js} +1 -1
  25. package/dist/public/assets/_B1-W0Sn2.js.br +0 -0
  26. package/dist/public/assets/{_8dvK2NDJ.js → _B1D0PIz3.js} +1 -1
  27. package/dist/public/assets/_B1D0PIz3.js.br +0 -0
  28. package/dist/public/assets/_B1agoKUa.js +1 -0
  29. package/dist/public/assets/_B3NfNm8M.js +1591 -0
  30. package/dist/public/assets/_B3NfNm8M.js.br +0 -0
  31. package/dist/public/assets/{_BDa-iwuj.js → _B7VYILLZ.js} +1 -1
  32. package/dist/public/assets/_B7VYILLZ.js.br +0 -0
  33. package/dist/public/assets/_B7sPBy0J.js +1 -0
  34. package/dist/public/assets/_B81p6DSw.js +1 -0
  35. package/dist/public/assets/_BAkSKCkz.js +1 -0
  36. package/dist/public/assets/{_B582D2rg.js → _BDUjU8Ev.js} +1 -1
  37. package/dist/public/assets/{_Bv3qNE1b.js → _BHU5aikZ.js} +1 -1
  38. package/dist/public/assets/_BHZPTv1U.js +1 -0
  39. package/dist/public/assets/{_DxEm-Gwj.js → _BKHtiW96.js} +1 -1
  40. package/dist/public/assets/_BKHtiW96.js.br +0 -0
  41. package/dist/public/assets/{_C0_s45qg.js → _BKIx7IZP.js} +1 -1
  42. package/dist/public/assets/_BKIx7IZP.js.br +0 -0
  43. package/dist/public/assets/{_Bp8-V8yl.js → _BLfzQY-3.js} +1 -1
  44. package/dist/public/assets/_BLfzQY-3.js.br +0 -0
  45. package/dist/public/assets/{_ch_yXAap.js → _BPSTqkJn.js} +1 -1
  46. package/dist/public/assets/_BPSTqkJn.js.br +0 -0
  47. package/dist/public/assets/_BQZOimBB.js +1 -0
  48. package/dist/public/assets/{_DfI982PI.js → _BRQ6iQ5p.js} +1 -1
  49. package/dist/public/assets/_BRQ6iQ5p.js.br +0 -0
  50. package/dist/public/assets/_BRVURc4u.js +1 -0
  51. package/dist/public/assets/{_CTINBWaG.js → _BSFJEuJX.js} +1 -1
  52. package/dist/public/assets/_BSFJEuJX.js.br +0 -0
  53. package/dist/public/assets/{_CMSBfO6u.js → _BSWN-v3P.js} +1 -1
  54. package/dist/public/assets/_BSWN-v3P.js.br +0 -0
  55. package/dist/public/assets/_BTVAQr2c.js +1 -0
  56. package/dist/public/assets/_BUD1pBC0.js +1 -0
  57. package/dist/public/assets/_BVGzCczb.js +1 -0
  58. package/dist/public/assets/{_j2tDSMvo.js → _BVQosHjY.js} +1 -1
  59. package/dist/public/assets/_BVQosHjY.js.br +0 -0
  60. package/dist/public/assets/{_9kX9D09B.js → _B_0C2_RO.js} +1 -1
  61. package/dist/public/assets/_B_0C2_RO.js.br +0 -0
  62. package/dist/public/assets/_BaA31ms5.js +1 -0
  63. package/dist/public/assets/_BgCHJGlO.js +1 -0
  64. package/dist/public/assets/_BhpRLDbL.js +1 -0
  65. package/dist/public/assets/_BhpRLDbL.js.br +0 -0
  66. package/dist/public/assets/_BkKcjMAC.js +1 -0
  67. package/dist/public/assets/{_xyw_DS5P.js → _BkcPY2j0.js} +1 -1
  68. package/dist/public/assets/_BkcPY2j0.js.br +0 -0
  69. package/dist/public/assets/_BlTVd_3d.js +1 -0
  70. package/dist/public/assets/_BlqlLmEY.js +1 -0
  71. package/dist/public/assets/_BoNfxc9P.js +1 -0
  72. package/dist/public/assets/_BqswW9B9.js +1 -0
  73. package/dist/public/assets/_BricqzsO.js +1 -0
  74. package/dist/public/assets/_BrreckIa.js +1 -0
  75. package/dist/public/assets/{_BpoeUr5j.js → _BsJZPHmz.js} +1 -1
  76. package/dist/public/assets/_BsJZPHmz.js.br +0 -0
  77. package/dist/public/assets/_BtRYwaBb.js +1 -0
  78. package/dist/public/assets/{_B7GwDeKK.js → _BtZ2AatF.js} +1 -1
  79. package/dist/public/assets/_BvPBKjRP.js +1 -0
  80. package/dist/public/assets/_BvPBKjRP.js.br +0 -0
  81. package/dist/public/assets/_ByrrjMU9.js +1 -0
  82. package/dist/public/assets/{_CpjSCB1I.js → _BzGHediB.js} +1 -1
  83. package/dist/public/assets/_BzGHediB.js.br +0 -0
  84. package/dist/public/assets/_BzvTKm92.js +1 -0
  85. package/dist/public/assets/{_D1uRW1qz.js → _C-EkQeP_.js} +1 -1
  86. package/dist/public/assets/_C-EkQeP_.js.br +0 -0
  87. package/dist/public/assets/{_Bv3e3rg8.js → _C0Ib7MZF.js} +1 -1
  88. package/dist/public/assets/_C0Ib7MZF.js.br +0 -0
  89. package/dist/public/assets/_C2p1Z5Lf.js +86 -0
  90. package/dist/public/assets/_C2p1Z5Lf.js.br +0 -0
  91. package/dist/public/assets/_C3iiOlxd.js +1 -0
  92. package/dist/public/assets/{_De7P3jUH.js → _C81nSl09.js} +1 -1
  93. package/dist/public/assets/_C81nSl09.js.br +0 -0
  94. package/dist/public/assets/{_BvXp6HpX.js → _C8bqYk4J.js} +1 -1
  95. package/dist/public/assets/_C8bqYk4J.js.br +0 -0
  96. package/dist/public/assets/_C98JZr09.js +1 -0
  97. package/dist/public/assets/_C98JZr09.js.br +0 -0
  98. package/dist/public/assets/_CB4VkmGZ.js +1 -0
  99. package/dist/public/assets/{_bcsuBP7T.js → _CCVkYcN5.js} +1 -1
  100. package/dist/public/assets/_CCVkYcN5.js.br +0 -0
  101. package/dist/public/assets/{_DC-78WeM.js → _CDY0RpYX.js} +1 -1
  102. package/dist/public/assets/_CDY0RpYX.js.br +0 -0
  103. package/dist/public/assets/_CE2GEqMx.js +1 -0
  104. package/dist/public/assets/_CE2GEqMx.js.br +0 -0
  105. package/dist/public/assets/{_BbbOvNRH.js → _CFUREq1M.js} +1 -1
  106. package/dist/public/assets/_CFUREq1M.js.br +0 -0
  107. package/dist/public/assets/_CHdh6bII.js +1 -0
  108. package/dist/public/assets/{_wcshV0sZ.js → _CHdpLB95.js} +1 -1
  109. package/dist/public/assets/_CHdpLB95.js.br +0 -0
  110. package/dist/public/assets/{_D4q8XSMI.js → _CKLGAGKJ.js} +1 -1
  111. package/dist/public/assets/_CKLGAGKJ.js.br +0 -0
  112. package/dist/public/assets/_CMRt2lyQ.js +1 -0
  113. package/dist/public/assets/_CN1zW1AT.js +1 -0
  114. package/dist/public/assets/_CN1zW1AT.js.br +0 -0
  115. package/dist/public/assets/_CUILmj9R.js +1 -0
  116. package/dist/public/assets/_CUhP8KQ8.js +1 -0
  117. package/dist/public/assets/{_DaMVRI8f.js → _CUsrMpdL.js} +1 -1
  118. package/dist/public/assets/_CUsrMpdL.js.br +0 -0
  119. package/dist/public/assets/_CVG0_w9T.js +1 -0
  120. package/dist/public/assets/{_CamWDaoG.js → _CWG813ur.js} +1 -1
  121. package/dist/public/assets/_CWG813ur.js.br +0 -0
  122. package/dist/public/assets/{_DSVLaMWS.js → _CY87Y7QL.js} +1 -1
  123. package/dist/public/assets/_CY87Y7QL.js.br +0 -0
  124. package/dist/public/assets/_CYAsKva_.js +1 -0
  125. package/dist/public/assets/_CajKYNSY.js +1 -0
  126. package/dist/public/assets/{_D0aoEFRx.js → _Cb_k_JA_.js} +1 -1
  127. package/dist/public/assets/_Cb_k_JA_.js.br +0 -0
  128. package/dist/public/assets/_Ce8PlfMD.js +1 -0
  129. package/dist/public/assets/{_Bm4SHrNp.js → _CfGEGt_k.js} +1 -1
  130. package/dist/public/assets/_CfGEGt_k.js.br +0 -0
  131. package/dist/public/assets/{_DqhphdU4.js → _CfdK8EeQ.js} +1 -1
  132. package/dist/public/assets/_CfdK8EeQ.js.br +0 -0
  133. package/dist/public/assets/_CgOKmAwr.js +1 -0
  134. package/dist/public/assets/{_eoa1EOU-.js → _CiYQhf81.js} +1 -1
  135. package/dist/public/assets/_CiYQhf81.js.br +0 -0
  136. package/dist/public/assets/_Cj9DHPRL.js +1 -0
  137. package/dist/public/assets/{_CxAPL49a.js → _ClHPjF-1.js} +1 -1
  138. package/dist/public/assets/_ClHPjF-1.js.br +0 -0
  139. package/dist/public/assets/{_DDl8KSWJ.js → _Cmmdd2e3.js} +1 -1
  140. package/dist/public/assets/_Cmmdd2e3.js.br +0 -0
  141. package/dist/public/assets/{_BZKB4fhr.js → _Cn9Ia4SS.js} +1 -1
  142. package/dist/public/assets/_Cn9Ia4SS.js.br +0 -0
  143. package/dist/public/assets/_CnTzFbuG.js +1 -0
  144. package/dist/public/assets/{_BE_Jyvqd.js → _CqCenHOp.js} +1 -1
  145. package/dist/public/assets/_CqCenHOp.js.br +0 -0
  146. package/dist/public/assets/{_Dp3IZdH8.js → _CtqGSS84.js} +1 -1
  147. package/dist/public/assets/_CtqGSS84.js.br +0 -0
  148. package/dist/public/assets/_CttfwM-c.js +1 -0
  149. package/dist/public/assets/{_D6kktUFn.js → _CxA3Yab0.js} +1 -1
  150. package/dist/public/assets/_CxA3Yab0.js.br +0 -0
  151. package/dist/public/assets/{_Bx1CW-sF.js → _Cx_aJfDp.js} +1 -1
  152. package/dist/public/assets/_Cx_aJfDp.js.br +0 -0
  153. package/dist/public/assets/_D2L_ILOW.js +1 -0
  154. package/dist/public/assets/_D47lCu0c.js +1 -0
  155. package/dist/public/assets/_D5W-uGIK.js +1 -0
  156. package/dist/public/assets/_D6BbZLrc.js +1 -0
  157. package/dist/public/assets/_D6RVeCAn.js +1 -0
  158. package/dist/public/assets/_D75V4jV-.js +1 -0
  159. package/dist/public/assets/{_CyBCIknf.js → _D9r_Fn0I.js} +1 -1
  160. package/dist/public/assets/_D9r_Fn0I.js.br +0 -0
  161. package/dist/public/assets/{_8G2Mv7jG.js → _DBD57l1T.js} +1 -1
  162. package/dist/public/assets/_DBD57l1T.js.br +0 -0
  163. package/dist/public/assets/_DCWILZgL.js +1 -0
  164. package/dist/public/assets/{_COcePo2y.js → _DEOryr7w.js} +1 -1
  165. package/dist/public/assets/_DEOryr7w.js.br +0 -0
  166. package/dist/public/assets/_DF54Iz7o.js +1 -0
  167. package/dist/public/assets/_DFamU2Uj.js +2 -0
  168. package/dist/public/assets/_DFamU2Uj.js.br +0 -0
  169. package/dist/public/assets/_DHmBuyCO.js +1 -0
  170. package/dist/public/assets/_DHmBuyCO.js.br +0 -0
  171. package/dist/public/assets/{_BywcP-As.js → _DJqEBkNd.js} +1 -1
  172. package/dist/public/assets/_DJqEBkNd.js.br +0 -0
  173. package/dist/public/assets/{_BUvqweu0.js → _DL3w8c_p.js} +1 -1
  174. package/dist/public/assets/_DL3w8c_p.js.br +0 -0
  175. package/dist/public/assets/_DLVL-4MP.js +1 -0
  176. package/dist/public/assets/{_wXDh-Z2N.js → _DM60dKRs.js} +1 -1
  177. package/dist/public/assets/_DM60dKRs.js.br +0 -0
  178. package/dist/public/assets/{_BBWaxDkO.js → _DMJHTH74.js} +1 -1
  179. package/dist/public/assets/_DMJHTH74.js.br +0 -0
  180. package/dist/public/assets/_DMLv6KA6.js +1 -0
  181. package/dist/public/assets/_DQYpgyzr.js +1 -0
  182. package/dist/public/assets/_DQYpgyzr.js.br +0 -0
  183. package/dist/public/assets/{_SGDxiwE1.js → _DQyjuXTi.js} +1 -1
  184. package/dist/public/assets/_DQyjuXTi.js.br +0 -0
  185. package/dist/public/assets/{_DrIgZJzN.js → _DRHCy0UF.js} +1 -1
  186. package/dist/public/assets/_DRHCy0UF.js.br +0 -0
  187. package/dist/public/assets/{_D4rOX-Fa.js → _DSUBv-Bl.js} +1 -1
  188. package/dist/public/assets/_DSUBv-Bl.js.br +0 -0
  189. package/dist/public/assets/{_CYjE__ml.js → _DUFM9qLV.js} +1 -1
  190. package/dist/public/assets/_DUFM9qLV.js.br +0 -0
  191. package/dist/public/assets/{_BNW5Jiec.js → _DUs3ZGbj.js} +1 -1
  192. package/dist/public/assets/_DUs3ZGbj.js.br +0 -0
  193. package/dist/public/assets/{_Dytf99zx.js → _DX5u6Wvm.js} +1 -1
  194. package/dist/public/assets/_DX5u6Wvm.js.br +0 -0
  195. package/dist/public/assets/{_CHuLFr1f.js → _DZvkgS3V.js} +1 -1
  196. package/dist/public/assets/_DZvkgS3V.js.br +0 -0
  197. package/dist/public/assets/{_D9sS4J_w.js → _Dbm6zAQS.js} +1 -1
  198. package/dist/public/assets/_Dbm6zAQS.js.br +0 -0
  199. package/dist/public/assets/{_D4dJ2qEE.js → _DcOkTFth.js} +1 -1
  200. package/dist/public/assets/_Ddf1gumD.js +1 -0
  201. package/dist/public/assets/_De6E9M7R.js +1 -0
  202. package/dist/public/assets/{_DFWOMF-B.js → _DgWKSW-Y.js} +1 -1
  203. package/dist/public/assets/_DgWKSW-Y.js.br +0 -0
  204. package/dist/public/assets/_DhEN6T4v.js +1 -0
  205. package/dist/public/assets/{_D4quFMVQ.js → _Di1ccq_2.js} +1 -1
  206. package/dist/public/assets/_Di1ccq_2.js.br +0 -0
  207. package/dist/public/assets/{_CUXajOKj.js → _DifjKObE.js} +1 -1
  208. package/dist/public/assets/_DifjKObE.js.br +0 -0
  209. package/dist/public/assets/_Dn10ABa-.js +1 -0
  210. package/dist/public/assets/{_MCwIJAuJ.js → _Do1ltY2a.js} +1 -1
  211. package/dist/public/assets/_Do1ltY2a.js.br +0 -0
  212. package/dist/public/assets/{_Ct3RF80L.js → _DomK7Scb.js} +1 -1
  213. package/dist/public/assets/_DomK7Scb.js.br +0 -0
  214. package/dist/public/assets/_DtWggCxt.js +1 -0
  215. package/dist/public/assets/_DtqqybyQ.js +1 -0
  216. package/dist/public/assets/{_CEJUcePr.js → _DvKnakqk.js} +1 -1
  217. package/dist/public/assets/_DvKnakqk.js.br +0 -0
  218. package/dist/public/assets/_DxD_AC3a.js +1 -0
  219. package/dist/public/assets/_DxD_AC3a.js.br +0 -0
  220. package/dist/public/assets/_Dxo7m9cG.js +1 -0
  221. package/dist/public/assets/{_DkCaEf_h.js → _DzKW89Sx.js} +1 -1
  222. package/dist/public/assets/_DzKW89Sx.js.br +0 -0
  223. package/dist/public/assets/_DzTHCioH.js +1 -0
  224. package/dist/public/assets/{_C654p96Z.js → _EefWj858.js} +1 -1
  225. package/dist/public/assets/_EefWj858.js.br +0 -0
  226. package/dist/public/assets/{_zSAfqXcm.js → _FlITqTCo.js} +1 -1
  227. package/dist/public/assets/_FlITqTCo.js.br +0 -0
  228. package/dist/public/assets/_GkEw2S0T.js +1 -0
  229. package/dist/public/assets/{_Dd6X3e7w.js → _HM_QqtJi.js} +1 -1
  230. package/dist/public/assets/_HM_QqtJi.js.br +0 -0
  231. package/dist/public/assets/{_CEXHZd73.js → _HmkI4Rfn.js} +1 -1
  232. package/dist/public/assets/_HmkI4Rfn.js.br +0 -0
  233. package/dist/public/assets/{_d5u7EI97.js → _JEvx8ub4.js} +1 -1
  234. package/dist/public/assets/_JEvx8ub4.js.br +0 -0
  235. package/dist/public/assets/_JOb8B3tz.js +1 -0
  236. package/dist/public/assets/_LEIhjFrO.js +1 -0
  237. package/dist/public/assets/_STJhwy7U.js +1 -0
  238. package/dist/public/assets/_TrcWRD8T.js +15 -0
  239. package/dist/public/assets/_TrcWRD8T.js.br +0 -0
  240. package/dist/public/assets/{_CAkPJLeF.js → _UaKPY71M.js} +1 -1
  241. package/dist/public/assets/_UaKPY71M.js.br +0 -0
  242. package/dist/public/assets/_UhK3lkm0.js +1 -0
  243. package/dist/public/assets/_VPLoEBTS.js +1 -0
  244. package/dist/public/assets/_Zeftz3t1.js +1 -0
  245. package/dist/public/assets/{_Bhx319Hi.js → __cyRVmTO.js} +1 -1
  246. package/dist/public/assets/__cyRVmTO.js.br +0 -0
  247. package/dist/public/assets/_awfYTHit.js +1 -0
  248. package/dist/public/assets/{_DcMIlvz-.js → _dsj7vMTW.js} +1 -1
  249. package/dist/public/assets/_dsj7vMTW.js.br +0 -0
  250. package/dist/public/assets/_eqpiOhSM.js +1 -0
  251. package/dist/public/assets/{_CZ_OWtIT.js → _iutZ4EDe.js} +1 -1
  252. package/dist/public/assets/_iutZ4EDe.js.br +0 -0
  253. package/dist/public/assets/{_BOGkzMx9.js → _kWQ0dtYZ.js} +1 -1
  254. package/dist/public/assets/_kWQ0dtYZ.js.br +0 -0
  255. package/dist/public/assets/_knvMqXQh.js +1 -0
  256. package/dist/public/assets/_lwC7sIgC.js +1 -0
  257. package/dist/public/assets/_m2tRa0jk.js +1 -0
  258. package/dist/public/assets/_m2tRa0jk.js.br +0 -0
  259. package/dist/public/assets/{_CIb7xw_1.js → _pXG8fRON.js} +1 -1
  260. package/dist/public/assets/_pXG8fRON.js.br +0 -0
  261. package/dist/public/assets/_r541ENtr.js +1 -0
  262. package/dist/public/assets/_rrUx1wn3.js +1 -0
  263. package/dist/public/assets/_tJvcu7sD.js +1 -0
  264. package/dist/public/assets/{_Bf8WYPfh.js → _vcLBrU2m.js} +1 -1
  265. package/dist/public/assets/_vcLBrU2m.js.br +0 -0
  266. package/dist/public/assets/_xZC4Vm70.js +1 -0
  267. package/dist/public/assets/_yAr5r-uL.js +1 -0
  268. package/dist/public/assets/{_DbvaGqOl.js → _yUmRJIJ6.js} +1 -1
  269. package/dist/public/assets/_yUmRJIJ6.js.br +0 -0
  270. package/dist/public/assets/app-shell-CVYlktwa.css +1 -0
  271. package/dist/public/assets/app-shell-CVYlktwa.css.br +0 -0
  272. package/dist/public/assets/files-view-CTadakLK.js +2 -0
  273. package/dist/public/assets/manage-workspace-HUAS6qjy.js +2 -0
  274. package/dist/public/assets/new-CirJkJFl.js +1 -0
  275. package/dist/public/assets/new-workspace-C3t1nA6z.js +2 -0
  276. package/dist/public/assets/review-view-DKPNtgmc.js +2 -0
  277. package/dist/public/assets/settings-CirJkJFl.js +1 -0
  278. package/dist/public/assets/settings-page-DH-9cN-8.js +2 -0
  279. package/dist/public/assets/styles-CIeNhVxC.css +1 -0
  280. package/dist/public/assets/styles-CIeNhVxC.css.br +0 -0
  281. package/dist/public/assets/w-CirJkJFl.js +1 -0
  282. package/dist/public/assets/w._-BnShhzdq.js +1 -0
  283. package/dist/public/assets/w._-CirJkJFl.js +1 -0
  284. package/dist/public/assets/w._-aCTYfruH.js +1 -0
  285. package/lib/setup/doctor.d.mts +12 -1
  286. package/lib/setup/doctor.mjs +54 -9
  287. package/lib/setup/tailscale.d.mts +53 -0
  288. package/lib/setup/tailscale.mjs +179 -0
  289. package/package.json +1 -1
  290. package/dist/_CkwTsHKB.js +0 -2
  291. package/dist/public/assets/_1RHVsAcK.js +0 -1
  292. package/dist/public/assets/_4CShjaLP.js +0 -1
  293. package/dist/public/assets/_68JtNDO1.js +0 -1
  294. package/dist/public/assets/_8G2Mv7jG.js.br +0 -0
  295. package/dist/public/assets/_8dvK2NDJ.js.br +0 -0
  296. package/dist/public/assets/_94L2SIJF.js +0 -1
  297. package/dist/public/assets/_9AnDb3YH.js +0 -1
  298. package/dist/public/assets/_9kX9D09B.js.br +0 -0
  299. package/dist/public/assets/_9lErVegn.js +0 -1
  300. package/dist/public/assets/_B0oyGUU5.js +0 -1
  301. package/dist/public/assets/_B0oyGUU5.js.br +0 -0
  302. package/dist/public/assets/_B1mPnLlp.js +0 -1
  303. package/dist/public/assets/_B4fi2SSA.js +0 -1
  304. package/dist/public/assets/_B7Qx25UP.js +0 -1
  305. package/dist/public/assets/_B7b8EVjA.js +0 -1
  306. package/dist/public/assets/_BBWaxDkO.js.br +0 -0
  307. package/dist/public/assets/_BDa-iwuj.js.br +0 -0
  308. package/dist/public/assets/_BEKHKNmM.js +0 -1
  309. package/dist/public/assets/_BE_Jyvqd.js.br +0 -0
  310. package/dist/public/assets/_BFU-kJkk.js +0 -1
  311. package/dist/public/assets/_BIJ2O2oU.js +0 -1
  312. package/dist/public/assets/_BJ59XAZ9.js +0 -1
  313. package/dist/public/assets/_BKqRYfOI.js +0 -15
  314. package/dist/public/assets/_BKqRYfOI.js.br +0 -0
  315. package/dist/public/assets/_BKr9Dzz1.js +0 -1
  316. package/dist/public/assets/_BN7xvxS_.js +0 -1
  317. package/dist/public/assets/_BNQTVBlH.js +0 -1
  318. package/dist/public/assets/_BNW5Jiec.js.br +0 -0
  319. package/dist/public/assets/_BOGkzMx9.js.br +0 -0
  320. package/dist/public/assets/_BUEpqQ_m.js +0 -1
  321. package/dist/public/assets/_BUvqweu0.js.br +0 -0
  322. package/dist/public/assets/_BZKB4fhr.js.br +0 -0
  323. package/dist/public/assets/_BZo9BjDF.js +0 -1
  324. package/dist/public/assets/_BbbOvNRH.js.br +0 -0
  325. package/dist/public/assets/_BdUNnSlC.js +0 -1
  326. package/dist/public/assets/_Bf8WYPfh.js.br +0 -0
  327. package/dist/public/assets/_Bhx319Hi.js.br +0 -0
  328. package/dist/public/assets/_Bm4SHrNp.js.br +0 -0
  329. package/dist/public/assets/_Bmrqq8Ro.js +0 -2
  330. package/dist/public/assets/_Bmrqq8Ro.js.br +0 -0
  331. package/dist/public/assets/_BnHZ6Npj.js +0 -1
  332. package/dist/public/assets/_BoDxRJLS.js +0 -1
  333. package/dist/public/assets/_BoDxRJLS.js.br +0 -0
  334. package/dist/public/assets/_Bo_Ru664.js +0 -1
  335. package/dist/public/assets/_Bp8-V8yl.js.br +0 -0
  336. package/dist/public/assets/_BpoeUr5j.js.br +0 -0
  337. package/dist/public/assets/_Bq2G_Tid.js +0 -1
  338. package/dist/public/assets/_BsyoLB_D.js +0 -1
  339. package/dist/public/assets/_Bv3e3rg8.js.br +0 -0
  340. package/dist/public/assets/_BvXp6HpX.js.br +0 -0
  341. package/dist/public/assets/_BwP07uVS.js.br +0 -0
  342. package/dist/public/assets/_Bx1CW-sF.js.br +0 -0
  343. package/dist/public/assets/_BywcP-As.js.br +0 -0
  344. package/dist/public/assets/_Bzgtwt3G.js +0 -1
  345. package/dist/public/assets/_Bzgtwt3G.js.br +0 -0
  346. package/dist/public/assets/_C0_s45qg.js.br +0 -0
  347. package/dist/public/assets/_C0ePgF6b.js +0 -1
  348. package/dist/public/assets/_C0oVtTqO.js +0 -1
  349. package/dist/public/assets/_C0oVtTqO.js.br +0 -0
  350. package/dist/public/assets/_C654p96Z.js.br +0 -0
  351. package/dist/public/assets/_C8_1Y2-z.js +0 -1
  352. package/dist/public/assets/_C8_1Y2-z.js.br +0 -0
  353. package/dist/public/assets/_C8v1AZFP.js +0 -1
  354. package/dist/public/assets/_CAkPJLeF.js.br +0 -0
  355. package/dist/public/assets/_CB0D5cRH.js +0 -1
  356. package/dist/public/assets/_CD05JUTh.js +0 -1
  357. package/dist/public/assets/_CEJUcePr.js.br +0 -0
  358. package/dist/public/assets/_CEXHZd73.js.br +0 -0
  359. package/dist/public/assets/_CHcUMVR7.js +0 -1
  360. package/dist/public/assets/_CHuLFr1f.js.br +0 -0
  361. package/dist/public/assets/_CIb7xw_1.js.br +0 -0
  362. package/dist/public/assets/_CMSBfO6u.js.br +0 -0
  363. package/dist/public/assets/_CN7GPyBo.js +0 -1
  364. package/dist/public/assets/_COcePo2y.js.br +0 -0
  365. package/dist/public/assets/_CTINBWaG.js.br +0 -0
  366. package/dist/public/assets/_CTWrnAbz.js +0 -1
  367. package/dist/public/assets/_CUXajOKj.js.br +0 -0
  368. package/dist/public/assets/_CVru3vzC.js +0 -1
  369. package/dist/public/assets/_CYjE__ml.js.br +0 -0
  370. package/dist/public/assets/_CZ_OWtIT.js.br +0 -0
  371. package/dist/public/assets/_C_37_B6u.js.br +0 -0
  372. package/dist/public/assets/_C_CIQL7J.js +0 -1
  373. package/dist/public/assets/_C_CIQL7J.js.br +0 -0
  374. package/dist/public/assets/_C_WdpYbK.js +0 -1
  375. package/dist/public/assets/_CaiH3VN9.js +0 -1
  376. package/dist/public/assets/_CamWDaoG.js.br +0 -0
  377. package/dist/public/assets/_CdDElA0V.js +0 -1
  378. package/dist/public/assets/_CfnsClzZ.js +0 -1
  379. package/dist/public/assets/_Cgo1fRhJ.js +0 -1
  380. package/dist/public/assets/_Cgo1fRhJ.js.br +0 -0
  381. package/dist/public/assets/_CjhGrlf3.js +0 -1
  382. package/dist/public/assets/_CjlbL4C_.js +0 -1
  383. package/dist/public/assets/_CjogTUXK.js +0 -1
  384. package/dist/public/assets/_ClldMY37.js.br +0 -0
  385. package/dist/public/assets/_CmFq6Gtp.js +0 -1
  386. package/dist/public/assets/_CoAPOKiP.js +0 -1
  387. package/dist/public/assets/_CoUUgh9P.js +0 -1
  388. package/dist/public/assets/_CpjSCB1I.js.br +0 -0
  389. package/dist/public/assets/_Ct3RF80L.js.br +0 -0
  390. package/dist/public/assets/_CtYy5eZs.js +0 -1
  391. package/dist/public/assets/_CxAPL49a.js.br +0 -0
  392. package/dist/public/assets/_CyBCIknf.js.br +0 -0
  393. package/dist/public/assets/_Cz5BPBG8.js.br +0 -0
  394. package/dist/public/assets/_D-eEFXaI.js +0 -1
  395. package/dist/public/assets/_D0aoEFRx.js.br +0 -0
  396. package/dist/public/assets/_D1uRW1qz.js.br +0 -0
  397. package/dist/public/assets/_D2oIr2T2.js +0 -1
  398. package/dist/public/assets/_D2un443j.js.br +0 -0
  399. package/dist/public/assets/_D3MPx4-f.js +0 -1
  400. package/dist/public/assets/_D4q8XSMI.js.br +0 -0
  401. package/dist/public/assets/_D4quFMVQ.js.br +0 -0
  402. package/dist/public/assets/_D4rOX-Fa.js.br +0 -0
  403. package/dist/public/assets/_D5edrSyA.js +0 -1
  404. package/dist/public/assets/_D6kktUFn.js.br +0 -0
  405. package/dist/public/assets/_D80-qtVY.js +0 -1
  406. package/dist/public/assets/_D9-3EVA4.js +0 -1
  407. package/dist/public/assets/_D9sS4J_w.js.br +0 -0
  408. package/dist/public/assets/_DBLpxTDi.js +0 -1
  409. package/dist/public/assets/_DByHQ7nW.js +0 -1591
  410. package/dist/public/assets/_DByHQ7nW.js.br +0 -0
  411. package/dist/public/assets/_DC-78WeM.js.br +0 -0
  412. package/dist/public/assets/_DDl8KSWJ.js.br +0 -0
  413. package/dist/public/assets/_DFWOMF-B.js.br +0 -0
  414. package/dist/public/assets/_DKb-rt9n.js +0 -1
  415. package/dist/public/assets/_DMnSJCF_.js +0 -1
  416. package/dist/public/assets/_DOOIlrPh.js +0 -1
  417. package/dist/public/assets/_DPW-0yKP.js +0 -1
  418. package/dist/public/assets/_DR3BmvWU.js +0 -1
  419. package/dist/public/assets/_DSVLaMWS.js.br +0 -0
  420. package/dist/public/assets/_DYNGNKLk.js +0 -1
  421. package/dist/public/assets/_DZnEgCbj.js +0 -1
  422. package/dist/public/assets/_DaMVRI8f.js.br +0 -0
  423. package/dist/public/assets/_DbvaGqOl.js.br +0 -0
  424. package/dist/public/assets/_DcMIlvz-.js.br +0 -0
  425. package/dist/public/assets/_Dd6X3e7w.js.br +0 -0
  426. package/dist/public/assets/_De7P3jUH.js.br +0 -0
  427. package/dist/public/assets/_DeiFEAar.js +0 -1
  428. package/dist/public/assets/_DfI982PI.js.br +0 -0
  429. package/dist/public/assets/_DfZ6emcw.js +0 -1
  430. package/dist/public/assets/_Dj1lZ1pa.js +0 -86
  431. package/dist/public/assets/_Dj1lZ1pa.js.br +0 -0
  432. package/dist/public/assets/_DkCaEf_h.js.br +0 -0
  433. package/dist/public/assets/_DonAis0J.js +0 -1
  434. package/dist/public/assets/_Dp3IZdH8.js.br +0 -0
  435. package/dist/public/assets/_DqYih4xk.js +0 -1
  436. package/dist/public/assets/_DqYih4xk.js.br +0 -0
  437. package/dist/public/assets/_DqhphdU4.js.br +0 -0
  438. package/dist/public/assets/_DrIgZJzN.js.br +0 -0
  439. package/dist/public/assets/_Dt4hHR05.js +0 -1
  440. package/dist/public/assets/_DtTbTraA.js +0 -1
  441. package/dist/public/assets/_DwMxAJKP.js +0 -1
  442. package/dist/public/assets/_DxEm-Gwj.js.br +0 -0
  443. package/dist/public/assets/_Dytf99zx.js.br +0 -0
  444. package/dist/public/assets/_EAgv5jR9.js +0 -1
  445. package/dist/public/assets/_Iecpd0kS.js +0 -1
  446. package/dist/public/assets/_Iecpd0kS.js.br +0 -0
  447. package/dist/public/assets/_MCwIJAuJ.js.br +0 -0
  448. package/dist/public/assets/_NM79Lu3L.js +0 -6
  449. package/dist/public/assets/_NM79Lu3L.js.br +0 -0
  450. package/dist/public/assets/_QpNKKuS9.js +0 -1
  451. package/dist/public/assets/_SGDxiwE1.js.br +0 -0
  452. package/dist/public/assets/_TA8pE7z9.js +0 -1
  453. package/dist/public/assets/_bE4sNDeU.js +0 -1
  454. package/dist/public/assets/_bcsuBP7T.js.br +0 -0
  455. package/dist/public/assets/_cdcAU4yY.js +0 -1
  456. package/dist/public/assets/_ch_yXAap.js.br +0 -0
  457. package/dist/public/assets/_d5u7EI97.js.br +0 -0
  458. package/dist/public/assets/_eoa1EOU-.js.br +0 -0
  459. package/dist/public/assets/_j2tDSMvo.js.br +0 -0
  460. package/dist/public/assets/_jNhIFgbc.js +0 -1
  461. package/dist/public/assets/_kDYiTaag.js +0 -1
  462. package/dist/public/assets/_lNMVVbUx.js +0 -1
  463. package/dist/public/assets/_nwJ7Hu3S.js +0 -1
  464. package/dist/public/assets/_tmDtUACa.js +0 -1
  465. package/dist/public/assets/_tmDtUACa.js.br +0 -0
  466. package/dist/public/assets/_wXDh-Z2N.js.br +0 -0
  467. package/dist/public/assets/_wcshV0sZ.js.br +0 -0
  468. package/dist/public/assets/_x-NwqgCn.js +0 -1
  469. package/dist/public/assets/_xyw_DS5P.js.br +0 -0
  470. package/dist/public/assets/_zSAfqXcm.js.br +0 -0
  471. package/dist/public/assets/app-shell-ChQoVC5b.css +0 -1
  472. package/dist/public/assets/app-shell-ChQoVC5b.css.br +0 -0
  473. package/dist/public/assets/files-view-CLtLp_BW.js +0 -2
  474. package/dist/public/assets/files-view-CNHQapdI.css +0 -1
  475. package/dist/public/assets/files-view-CNHQapdI.css.br +0 -0
  476. package/dist/public/assets/group.css.ts-BG82htKb.css +0 -1
  477. package/dist/public/assets/group.css.ts-BG82htKb.css.br +0 -0
  478. package/dist/public/assets/icon-folder-DJOHuEpD.css +0 -1
  479. package/dist/public/assets/icon-folder-DJOHuEpD.css.br +0 -0
  480. package/dist/public/assets/icon-search-DsJuFXUJ.css +0 -1
  481. package/dist/public/assets/icon-search-DsJuFXUJ.css.br +0 -0
  482. package/dist/public/assets/manage-workspace-NBcFDyrB.js +0 -2
  483. package/dist/public/assets/manage-workspace-f_Np32TD.css +0 -1
  484. package/dist/public/assets/modal-view-KVNBpNYi.css +0 -1
  485. package/dist/public/assets/modal-view-KVNBpNYi.css.br +0 -0
  486. package/dist/public/assets/new-DHI77GvL.js +0 -1
  487. package/dist/public/assets/new-workspace-BFE-HpD_.css +0 -1
  488. package/dist/public/assets/new-workspace-BFE-HpD_.css.br +0 -0
  489. package/dist/public/assets/new-workspace-BRzimdd5.js +0 -2
  490. package/dist/public/assets/port-chip-CUUIDOVM.css +0 -1
  491. package/dist/public/assets/port-chip-CUUIDOVM.css.br +0 -0
  492. package/dist/public/assets/prompt-dialog-BGs6RXOV.css +0 -1
  493. package/dist/public/assets/prompt-dialog-BGs6RXOV.css.br +0 -0
  494. package/dist/public/assets/quick-open-Gx4so1bl.css +0 -1
  495. package/dist/public/assets/quick-open-Gx4so1bl.css.br +0 -0
  496. package/dist/public/assets/repo-picker-CUhd0vJN.css +0 -1
  497. package/dist/public/assets/repo-picker-CUhd0vJN.css.br +0 -4
  498. package/dist/public/assets/review-view-DFEK9VBa.js +0 -2
  499. package/dist/public/assets/review-view-deUY3OE5.css +0 -1
  500. package/dist/public/assets/review-view-deUY3OE5.css.br +0 -0
  501. package/dist/public/assets/section-CziSOSBR.css +0 -1
  502. package/dist/public/assets/section-CziSOSBR.css.br +0 -0
  503. package/dist/public/assets/settings-DHI77GvL.js +0 -1
  504. package/dist/public/assets/settings-page-OOtPOzIn.js +0 -2
  505. package/dist/public/assets/settings-page-wZhd7FLi.css +0 -1
  506. package/dist/public/assets/settings-page-wZhd7FLi.css.br +0 -0
  507. package/dist/public/assets/skill-row-BoCyFIXg.css +0 -1
  508. package/dist/public/assets/sso-auth-DV76tTpE.css +0 -1
  509. package/dist/public/assets/sso-auth-DV76tTpE.css.br +0 -0
  510. package/dist/public/assets/w-DHI77GvL.js +0 -1
  511. package/dist/public/assets/w._-DHI77GvL.js +0 -1
  512. package/dist/public/assets/w._-DsTgq3-C.js +0 -1
  513. package/dist/public/assets/w._-igEOSPR-.js +0 -1
@@ -347,11 +347,12 @@ function bridgeForServer(dataDir) {
347
347
  }
348
348
  //#endregion
349
349
  //#region src/server/migrations.ts
350
- var STEPS = [{
351
- version: 1,
352
- name: "baseline",
353
- up(db) {
354
- db.exec(`
350
+ var STEPS = [
351
+ {
352
+ version: 1,
353
+ name: "baseline",
354
+ up(db) {
355
+ db.exec(`
355
356
  CREATE TABLE workspaces (
356
357
  id TEXT PRIMARY KEY,
357
358
  name TEXT NOT NULL,
@@ -421,49 +422,58 @@ var STEPS = [{
421
422
  PRIMARY KEY (workspace_id, worktree, branch, path)
422
423
  );
423
424
  `);
424
- }
425
- }, {
426
- version: 2,
427
- name: "drop what 0.0.x kept for its upgrades",
428
- up(db) {
429
- db.exec(`
425
+ }
426
+ },
427
+ {
428
+ version: 2,
429
+ name: "drop what 0.0.x kept for its upgrades",
430
+ up(db) {
431
+ db.exec(`
430
432
  DELETE FROM review_marks WHERE path = '';
431
433
  DELETE FROM settings
432
434
  WHERE key IN ('review-cleared-diff-v2', 'ui.diff-uncommitted', 'diff-uncommitted')
433
435
  OR key GLOB 'review.seen:*';
434
436
  `);
435
- for (const name of [
436
- "tab",
437
- "diff-filter",
438
- "diff-folded",
439
- "diff-collapsed",
440
- "diff-focus",
441
- "diff-pos",
442
- "files-recent"
443
- ]) {
444
- const prefix = `ui.${name}:`;
445
- db.prepare("DELETE FROM settings WHERE key GLOB ? AND substr(key, ?) NOT IN (SELECT id FROM workspaces)").run(`${prefix}*`, prefix.length + 1);
437
+ for (const name of [
438
+ "tab",
439
+ "diff-filter",
440
+ "diff-folded",
441
+ "diff-collapsed",
442
+ "diff-focus",
443
+ "diff-pos",
444
+ "files-recent"
445
+ ]) {
446
+ const prefix = `ui.${name}:`;
447
+ db.prepare("DELETE FROM settings WHERE key GLOB ? AND substr(key, ?) NOT IN (SELECT id FROM workspaces)").run(`${prefix}*`, prefix.length + 1);
448
+ }
449
+ const pref = (key) => db.prepare("SELECT value FROM settings WHERE key = ?").get(key)?.value;
450
+ const parse = (text) => {
451
+ try {
452
+ return text === void 0 ? void 0 : JSON.parse(text);
453
+ } catch {
454
+ return;
455
+ }
456
+ };
457
+ const font = parse(pref("ui.term-font"));
458
+ if (font && typeof font === "object") {
459
+ for (const device of ["desktop", "touch"]) if (Number.isInteger(font[device])) db.prepare("INSERT OR IGNORE INTO settings (key, value) VALUES (?, ?)").run(`ui.term-font-${device}`, String(font[device]));
460
+ }
461
+ db.exec("DELETE FROM settings WHERE key = 'ui.term-font'");
462
+ const keys = parse(pref("ui.phone-keys"));
463
+ if (Array.isArray(keys)) db.prepare("UPDATE settings SET value = ? WHERE key = 'ui.phone-keys'").run(JSON.stringify({
464
+ base: [],
465
+ extra: keys
466
+ }));
446
467
  }
447
- const pref = (key) => db.prepare("SELECT value FROM settings WHERE key = ?").get(key)?.value;
448
- const parse = (text) => {
449
- try {
450
- return text === void 0 ? void 0 : JSON.parse(text);
451
- } catch {
452
- return;
453
- }
454
- };
455
- const font = parse(pref("ui.term-font"));
456
- if (font && typeof font === "object") {
457
- for (const device of ["desktop", "touch"]) if (Number.isInteger(font[device])) db.prepare("INSERT OR IGNORE INTO settings (key, value) VALUES (?, ?)").run(`ui.term-font-${device}`, String(font[device]));
468
+ },
469
+ {
470
+ version: 3,
471
+ name: "drop the typing-prediction pref",
472
+ up(db) {
473
+ db.exec("DELETE FROM settings WHERE key = 'ui.term-predict'");
458
474
  }
459
- db.exec("DELETE FROM settings WHERE key = 'ui.term-font'");
460
- const keys = parse(pref("ui.phone-keys"));
461
- if (Array.isArray(keys)) db.prepare("UPDATE settings SET value = ? WHERE key = 'ui.phone-keys'").run(JSON.stringify({
462
- base: [],
463
- extra: keys
464
- }));
465
475
  }
466
- }];
476
+ ];
467
477
  var LATEST = STEPS.at(-1).version;
468
478
  /** The database at `file`, at the latest version: an empty one is built by
469
479
  * every step, an existing one gets those it lacks — each in a transaction
@@ -979,6 +989,94 @@ function agentLabel$1(id) {
979
989
  const parsed = parseAgentId(id);
980
990
  return parsed ? `${parsed.family.label}${parsed.suffix ? ` ${parsed.suffix}` : ""}` : id;
981
991
  }
992
+ /** `tailscale version` prints the short version first (`1.76.1`, or
993
+ * `1.77.30` on an unstable track), then commit lines. */
994
+ function parseVersion(text) {
995
+ return /\b(\d+)\.(\d+)\.(\d+)\b/.exec(text || "")?.[0] ?? null;
996
+ }
997
+ function atLeast(version, min) {
998
+ const a = version.split(".").map(Number);
999
+ const b = min.split(".").map(Number);
1000
+ for (let i = 0; i < 3; i++) if (a[i] !== b[i]) return a[i] > b[i];
1001
+ return true;
1002
+ }
1003
+ /** The target the CLI writes (`http://127.0.0.1:7171`) or one a hand-made
1004
+ * or older config holds (`localhost:7171`, `http://[::1]:7171`, `7171`),
1005
+ * when it is work's port on this machine. */
1006
+ function targetsPort(proxy, port) {
1007
+ if (/^\d+$/.test(proxy)) return proxy === String(port);
1008
+ let url;
1009
+ try {
1010
+ url = new URL(proxy.includes("://") ? proxy : `http://${proxy}`);
1011
+ } catch {
1012
+ return false;
1013
+ }
1014
+ return url.protocol === "http:" && [
1015
+ "127.0.0.1",
1016
+ "localhost",
1017
+ "[::1]"
1018
+ ].includes(url.hostname) && url.port === String(port);
1019
+ }
1020
+ /** The URL a `Web` entry (`<name>:<port>`) is opened at: https unless its
1021
+ * port is served as plain HTTP (`--http=<port>`). */
1022
+ function webUrl(config, hostPort) {
1023
+ const i = hostPort.lastIndexOf(":");
1024
+ const host = hostPort.slice(0, i);
1025
+ const port = hostPort.slice(i + 1);
1026
+ const tls = !config.TCP?.[port]?.HTTP;
1027
+ return `${tls ? "https" : "http"}://${host}${port === (tls ? "443" : "80") ? "" : `:${port}`}/`;
1028
+ }
1029
+ /** Where `tailscale serve status --json` (an ipn.ServeConfig; `{}` or
1030
+ * `null` when empty) serves work's port, and whether Funnel publishes that
1031
+ * to the internet — or null. Only a handler at `/` counts: work serves
1032
+ * every page, asset and websocket from the root. */
1033
+ function serveOf(config, port) {
1034
+ for (const [hostPort, web] of Object.entries(config?.Web || {})) {
1035
+ const proxy = web?.Handlers?.["/"]?.Proxy;
1036
+ if (!proxy || !targetsPort(proxy, port)) continue;
1037
+ const url = webUrl(config, hostPort);
1038
+ return {
1039
+ url,
1040
+ host: new URL(url).hostname,
1041
+ funnel: !!config.AllowFunnel?.[hostPort]
1042
+ };
1043
+ }
1044
+ return null;
1045
+ }
1046
+ function hosts(value) {
1047
+ return (value || "").split(",").map((s) => s.trim()).filter(Boolean);
1048
+ }
1049
+ /**
1050
+ * The probe `work doctor` and `work setup` read, from the CLI's output:
1051
+ * `version` (`tailscale version`), `status` (`tailscale status --json`,
1052
+ * null when tailscaled did not answer) and `serve` (`tailscale serve
1053
+ * status --json`). `allowedHosts` is the WORK_ALLOWED_HOSTS the service
1054
+ * runs with.
1055
+ */
1056
+ function readTailscale({ path, version: versionText, status, serve }, { port, allowedHosts }) {
1057
+ const version = parseVersion(versionText);
1058
+ const name = String(status?.Self?.DNSName || "").replace(/\.$/, "").toLowerCase() || null;
1059
+ const certs = status?.CertDomains;
1060
+ const https = Array.isArray(certs) ? certs.some((d) => d.toLowerCase() === name) : status && "CertDomains" in status ? false : null;
1061
+ const served = serveOf(serve, port);
1062
+ const root = name ? serve?.Web?.[`${name}:443`]?.Handlers?.["/"] : null;
1063
+ return {
1064
+ installed: true,
1065
+ path,
1066
+ version,
1067
+ serveCli: !!version && atLeast(version, "1.52.0"),
1068
+ state: status?.BackendState ?? null,
1069
+ running: status?.BackendState === "Running" && !!name,
1070
+ name,
1071
+ https,
1072
+ port: String(port),
1073
+ serve: served && {
1074
+ ...served,
1075
+ allowed: hosts(allowedHosts).some((h) => h.toLowerCase() === served.host)
1076
+ },
1077
+ rootTaken: !served && root ? root.Proxy || root.Path || root.Redirect || "text" : null
1078
+ };
1079
+ }
982
1080
  //#endregion
983
1081
  //#region lib/setup/doctor.mjs
984
1082
  var home = os.homedir();
@@ -1282,11 +1380,50 @@ async function ghExtensions() {
1282
1380
  }
1283
1381
  return out;
1284
1382
  }
1383
+ function parseJson(text) {
1384
+ try {
1385
+ return JSON.parse(text);
1386
+ } catch {
1387
+ return null;
1388
+ }
1389
+ }
1390
+ /** Tailscale here and what its serve config does with work's port
1391
+ * (lib/setup/tailscale.mjs), from read-only commands. `port` and
1392
+ * `allowedHosts` default to this process's own, which are the server's
1393
+ * when the server asks. */
1394
+ async function tailscaleProbe({ port, allowedHosts } = {}) {
1395
+ const bin = which("tailscale");
1396
+ if (!bin) return { installed: false };
1397
+ const [version, status, serve] = await Promise.all([
1398
+ run(bin, ["version"], { timeout: 5e3 }),
1399
+ run(bin, [
1400
+ "status",
1401
+ "--json",
1402
+ "--peers=false"
1403
+ ], { timeout: 5e3 }),
1404
+ run(bin, [
1405
+ "serve",
1406
+ "status",
1407
+ "--json"
1408
+ ], { timeout: 5e3 })
1409
+ ]);
1410
+ return readTailscale({
1411
+ path: tilde(bin),
1412
+ version: version.stdout,
1413
+ status: status.ok ? parseJson(status.stdout) : null,
1414
+ serve: serve.ok ? parseJson(serve.stdout) : null
1415
+ }, {
1416
+ port: port || process.env.PORT || process.env.WORK_APP_PORT || "7171",
1417
+ allowedHosts: allowedHosts ?? process.env.WORK_ALLOWED_HOSTS
1418
+ });
1419
+ }
1285
1420
  /**
1286
1421
  * Full readiness snapshot.
1287
1422
  *
1288
- * @param {{ hosts?: string[] }} [opts] configured GitHub hosts (settings);
1289
- * github.com and any host gh is already signed in to are always included.
1423
+ * @param {{ hosts?: string[], port?: string, allowedHosts?: string }} [opts]
1424
+ * configured GitHub hosts (settings); github.com and any host gh is
1425
+ * already signed in to are always included. `port` and `allowedHosts`
1426
+ * are the service's, for the Tailscale probe.
1290
1427
  */
1291
1428
  async function doctor(opts = {}) {
1292
1429
  const hostSet = /* @__PURE__ */ new Set([
@@ -1294,12 +1431,13 @@ async function doctor(opts = {}) {
1294
1431
  ...opts.hosts || [],
1295
1432
  ...ghKnownHosts()
1296
1433
  ]);
1297
- const [versions, github, awake, extensions, helpers] = await Promise.all([
1434
+ const [versions, github, awake, extensions, helpers, tailscale] = await Promise.all([
1298
1435
  miseVersions(),
1299
1436
  Promise.all([...hostSet].map(githubHostStatus)),
1300
1437
  canStayAwake(),
1301
1438
  ghExtensions(),
1302
- staleGhHelpers()
1439
+ staleGhHelpers(),
1440
+ tailscaleProbe(opts)
1303
1441
  ]);
1304
1442
  const tools = TOOLS.map((t) => {
1305
1443
  if (t.ghExtension) {
@@ -1341,7 +1479,8 @@ async function doctor(opts = {}) {
1341
1479
  agents,
1342
1480
  github,
1343
1481
  awake,
1344
- staleGhHelpers: helpers
1482
+ staleGhHelpers: helpers,
1483
+ tailscale
1345
1484
  };
1346
1485
  }
1347
1486
  //#endregion
@@ -5862,7 +6001,7 @@ var require_vapid_helper = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5862
6001
  var crypto$3 = __require("crypto");
5863
6002
  var asn1 = require_asn1();
5864
6003
  var jws = require_jws();
5865
- var { URL } = __require("url");
6004
+ var { URL: URL$1 } = __require("url");
5866
6005
  var WebPushConstants = require_web_push_constants();
5867
6006
  var urlBase64Helper = require_urlsafe_base64_helper();
5868
6007
  /**
@@ -5913,7 +6052,7 @@ var require_vapid_helper = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5913
6052
  if (typeof subject !== "string" || subject.length === 0) throw new Error("The subject value must be a string containing an https: URL or mailto: address. " + subject);
5914
6053
  let subjectParseResult = null;
5915
6054
  try {
5916
- subjectParseResult = new URL(subject);
6055
+ subjectParseResult = new URL$1(subject);
5917
6056
  } catch (err) {
5918
6057
  throw new Error("Vapid subject is not a valid URL. " + subject);
5919
6058
  }
@@ -5975,7 +6114,7 @@ var require_vapid_helper = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5975
6114
  if (!audience) throw new Error("No audience could be generated for VAPID.");
5976
6115
  if (typeof audience !== "string" || audience.length === 0) throw new Error("The audience value must be a string containing the origin of a push service. " + audience);
5977
6116
  try {
5978
- new URL(audience);
6117
+ new URL$1(audience);
5979
6118
  } catch (err) {
5980
6119
  throw new Error("VAPID audience is not a url. " + audience);
5981
6120
  }
@@ -7606,7 +7745,7 @@ function publishChange(sessionId) {
7606
7745
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
7607
7746
  if (row?.workspace_id) {
7608
7747
  const workspaceId = row.workspace_id;
7609
- import("./_CkwTsHKB.js").then((m) => m.notifySessionsChanged(workspaceId));
7748
+ import("./_HbAW5Cbt.js").then((m) => m.notifySessionsChanged(workspaceId));
7610
7749
  return;
7611
7750
  }
7612
7751
  publish("sessions.changed");
@@ -0,0 +1,2 @@
1
+ import { h as notifySessionsChanged } from "./_Dzz52ZtI.js";
2
+ export { notifySessionsChanged };