@dylanpiercey/work 0.1.1 → 0.2.0

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 (486) hide show
  1. package/README.md +28 -0
  2. package/bin/work.mjs +244 -4
  3. package/dist/_BO3_WJb5.js +169 -0
  4. package/dist/{_Dzz52ZtI.js → _CzOrFOdN.js} +344 -12
  5. package/dist/_DiOv9AKj.js +2 -0
  6. package/dist/index.mjs +8631 -7573
  7. package/dist/public/assets/{_DX5u6Wvm.js → _3hcTpTUc.js} +1 -1
  8. package/dist/public/assets/_3hcTpTUc.js.br +0 -0
  9. package/dist/public/assets/_88jVvZ6C.js +1 -0
  10. package/dist/public/assets/{_DRHCy0UF.js → _B0FtZL3L.js} +1 -1
  11. package/dist/public/assets/_B0FtZL3L.js.br +0 -0
  12. package/dist/public/assets/{_BKIx7IZP.js → _B0rj5kOY.js} +1 -1
  13. package/dist/public/assets/_B0rj5kOY.js.br +0 -0
  14. package/dist/public/assets/{_DUs3ZGbj.js → _B3aw0q8p.js} +1 -1
  15. package/dist/public/assets/_B3aw0q8p.js.br +0 -0
  16. package/dist/public/assets/{__cyRVmTO.js → _B42XfAog.js} +1 -1
  17. package/dist/public/assets/_B42XfAog.js.br +0 -0
  18. package/dist/public/assets/_B5Ih3Lwt.js +1 -0
  19. package/dist/public/assets/_B6jh-_o_.js +1 -0
  20. package/dist/public/assets/_B8FHVXDZ.js +1 -0
  21. package/dist/public/assets/_BBJYNk03.js +1 -0
  22. package/dist/public/assets/{_CKLGAGKJ.js → _BBk5_vEh.js} +1 -1
  23. package/dist/public/assets/_BBk5_vEh.js.br +0 -0
  24. package/dist/public/assets/{_TrcWRD8T.js → _BCS_gQxR.js} +7 -7
  25. package/dist/public/assets/_BCS_gQxR.js.br +0 -0
  26. package/dist/public/assets/{_C8bqYk4J.js → _BDBxSbjY.js} +1 -1
  27. package/dist/public/assets/_BDBxSbjY.js.br +0 -0
  28. package/dist/public/assets/_BDkqB224.js +1 -0
  29. package/dist/public/assets/{_DQyjuXTi.js → _BEtl4C9q.js} +1 -1
  30. package/dist/public/assets/_BEtl4C9q.js.br +0 -0
  31. package/dist/public/assets/{_Cmmdd2e3.js → _BJZwk-Pf.js} +1 -1
  32. package/dist/public/assets/_BJZwk-Pf.js.br +0 -0
  33. package/dist/public/assets/{_BzGHediB.js → _BM8qop28.js} +1 -1
  34. package/dist/public/assets/_BM8qop28.js.br +0 -0
  35. package/dist/public/assets/_BNL2e5az.js +1 -0
  36. package/dist/public/assets/{_HmkI4Rfn.js → _BODl5Jdc.js} +1 -1
  37. package/dist/public/assets/_BODl5Jdc.js.br +0 -0
  38. package/dist/public/assets/{_C81nSl09.js → _BOe3voZI.js} +1 -1
  39. package/dist/public/assets/_BOe3voZI.js.br +0 -0
  40. package/dist/public/assets/{_CiYQhf81.js → _BPW-OoaM.js} +1 -1
  41. package/dist/public/assets/_BPW-OoaM.js.br +0 -0
  42. package/dist/public/assets/{_CqCenHOp.js → _BSHUa-H0.js} +1 -1
  43. package/dist/public/assets/_BSHUa-H0.js.br +0 -0
  44. package/dist/public/assets/_BTXURtlK.js +1 -0
  45. package/dist/public/assets/{_BLfzQY-3.js → _BU4lH-F3.js} +1 -1
  46. package/dist/public/assets/_BU4lH-F3.js.br +0 -0
  47. package/dist/public/assets/{_CHdpLB95.js → _BVGSrb9C.js} +1 -1
  48. package/dist/public/assets/_BVGSrb9C.js.br +0 -0
  49. package/dist/public/assets/{_BSFJEuJX.js → _BXyDScMX.js} +1 -1
  50. package/dist/public/assets/_BXyDScMX.js.br +0 -0
  51. package/dist/public/assets/{_CfGEGt_k.js → _BZXtyNwD.js} +1 -1
  52. package/dist/public/assets/_BZXtyNwD.js.br +0 -0
  53. package/dist/public/assets/{_BRQ6iQ5p.js → _B_iUZxSk.js} +1 -1
  54. package/dist/public/assets/_B_iUZxSk.js.br +0 -0
  55. package/dist/public/assets/_B_klvcQs.js +1 -0
  56. package/dist/public/assets/{_DZvkgS3V.js → _BaNsw5pr.js} +1 -1
  57. package/dist/public/assets/_BaNsw5pr.js.br +0 -0
  58. package/dist/public/assets/_BbPq34k8.js +1 -0
  59. package/dist/public/assets/{_UaKPY71M.js → _BfDaM2KU.js} +1 -1
  60. package/dist/public/assets/_BfDaM2KU.js.br +0 -0
  61. package/dist/public/assets/_Bk1naXp4.js +1 -0
  62. package/dist/public/assets/{_kWQ0dtYZ.js → _BkNKadGd.js} +1 -1
  63. package/dist/public/assets/_BkNKadGd.js.br +0 -0
  64. package/dist/public/assets/{_1JXC9nFp.js → _BkztnqUW.js} +1 -1
  65. package/dist/public/assets/_BkztnqUW.js.br +0 -0
  66. package/dist/public/assets/_BlNBDTvP.js +1 -0
  67. package/dist/public/assets/_BlNBDTvP.js.br +0 -0
  68. package/dist/public/assets/_BlUmx1wN.js +1 -0
  69. package/dist/public/assets/_Ble8b9gd.js +1 -0
  70. package/dist/public/assets/{_B7VYILLZ.js → _BpEvAl9E.js} +1 -1
  71. package/dist/public/assets/_BpEvAl9E.js.br +0 -0
  72. package/dist/public/assets/_Bqyvdrqf.js +1 -0
  73. package/dist/public/assets/_BsA2bpua.js +1 -0
  74. package/dist/public/assets/_BsA2bpua.js.br +0 -0
  75. package/dist/public/assets/_BsAVia13.js +1 -0
  76. package/dist/public/assets/_BtxLmMRq.js +1 -0
  77. package/dist/public/assets/{_B1-W0Sn2.js → _Byfemjjt.js} +1 -1
  78. package/dist/public/assets/_Byfemjjt.js.br +0 -0
  79. package/dist/public/assets/{_Do1ltY2a.js → _Bz94qqXL.js} +1 -1
  80. package/dist/public/assets/_Bz94qqXL.js.br +0 -0
  81. package/dist/public/assets/_C-HIZYIZ.js +1 -0
  82. package/dist/public/assets/{_Di1ccq_2.js → _C-UGjoFi.js} +1 -1
  83. package/dist/public/assets/_C-UGjoFi.js.br +0 -0
  84. package/dist/public/assets/{_DM60dKRs.js → _C-jXvDAe.js} +1 -1
  85. package/dist/public/assets/_C-jXvDAe.js.br +0 -0
  86. package/dist/public/assets/{_DomK7Scb.js → _C2b1kmvc.js} +1 -1
  87. package/dist/public/assets/_C2b1kmvc.js.br +0 -0
  88. package/dist/public/assets/{_pXG8fRON.js → _C3PIXMJF.js} +1 -1
  89. package/dist/public/assets/_C3PIXMJF.js.br +0 -0
  90. package/dist/public/assets/_C6eXJBpX.js +1 -0
  91. package/dist/public/assets/{_EefWj858.js → _C7Xd05b1.js} +1 -1
  92. package/dist/public/assets/_C7Xd05b1.js.br +0 -0
  93. package/dist/public/assets/_C8jPP8tm.js +1 -0
  94. package/dist/public/assets/{_CWG813ur.js → _CB9BGKKP.js} +1 -1
  95. package/dist/public/assets/_CB9BGKKP.js.br +0 -0
  96. package/dist/public/assets/{_CCVkYcN5.js → _CD44YUtO.js} +1 -1
  97. package/dist/public/assets/_CD44YUtO.js.br +0 -0
  98. package/dist/public/assets/{_CxA3Yab0.js → _CEXagH_p.js} +1 -1
  99. package/dist/public/assets/_CEXagH_p.js.br +0 -0
  100. package/dist/public/assets/{_m2tRa0jk.js → _CFOiLJdu.js} +1 -1
  101. package/dist/public/assets/_CFOiLJdu.js.br +0 -0
  102. package/dist/public/assets/{_C-EkQeP_.js → _CGrClLsS.js} +1 -1
  103. package/dist/public/assets/_CGrClLsS.js.br +0 -0
  104. package/dist/public/assets/_CHJuzFIS.js +1 -0
  105. package/dist/public/assets/{_CDY0RpYX.js → _CJ7DGNLC.js} +1 -1
  106. package/dist/public/assets/_CJ7DGNLC.js.br +0 -0
  107. package/dist/public/assets/_CJG7LF4o.js +1 -0
  108. package/dist/public/assets/{_B3NfNm8M.js → _CK0tdQ6M.js} +13 -13
  109. package/dist/public/assets/_CK0tdQ6M.js.br +0 -0
  110. package/dist/public/assets/{_BSWN-v3P.js → _CKcab_6c.js} +1 -1
  111. package/dist/public/assets/_CKcab_6c.js.br +0 -0
  112. package/dist/public/assets/{_DBD57l1T.js → _CKpSd2DN.js} +1 -1
  113. package/dist/public/assets/_CKpSd2DN.js.br +0 -0
  114. package/dist/public/assets/{_FlITqTCo.js → _CKy2HduV.js} +1 -1
  115. package/dist/public/assets/_CKy2HduV.js.br +0 -0
  116. package/dist/public/assets/{_DL3w8c_p.js → _CLikwAg5.js} +1 -1
  117. package/dist/public/assets/_CLikwAg5.js.br +0 -0
  118. package/dist/public/assets/{_ClHPjF-1.js → _CM-AIl7T.js} +1 -1
  119. package/dist/public/assets/_CM-AIl7T.js.br +0 -0
  120. package/dist/public/assets/{_DxD_AC3a.js → _CMwrJ1ju.js} +1 -1
  121. package/dist/public/assets/_CMwrJ1ju.js.br +0 -0
  122. package/dist/public/assets/_CQG-EbMi.js +1 -0
  123. package/dist/public/assets/_CUl36Gcx.js +1 -0
  124. package/dist/public/assets/{_7YrArFMB.js → _CUq2djIT.js} +1 -1
  125. package/dist/public/assets/_CUq2djIT.js.br +0 -0
  126. package/dist/public/assets/{_DgWKSW-Y.js → _CWSGdqC2.js} +1 -1
  127. package/dist/public/assets/_CWSGdqC2.js.br +0 -0
  128. package/dist/public/assets/_CXK3AUqn.js +1 -0
  129. package/dist/public/assets/{_JEvx8ub4.js → _CYYRiJuo.js} +1 -1
  130. package/dist/public/assets/_CYYRiJuo.js.br +0 -0
  131. package/dist/public/assets/_CYr8GcJI.js +1 -0
  132. package/dist/public/assets/{_B1D0PIz3.js → _CaFhYr8X.js} +1 -1
  133. package/dist/public/assets/_CaFhYr8X.js.br +0 -0
  134. package/dist/public/assets/_CbzGfu_I.js +1 -0
  135. package/dist/public/assets/{_iutZ4EDe.js → _Cd85Xtd1.js} +1 -1
  136. package/dist/public/assets/_Cd85Xtd1.js.br +0 -0
  137. package/dist/public/assets/_Ch-bwiFD.js +1 -0
  138. package/dist/public/assets/_ClGAsZdo.js +1 -0
  139. package/dist/public/assets/_ClGAsZdo.js.br +0 -0
  140. package/dist/public/assets/_ClhDmYWO.js +1 -0
  141. package/dist/public/assets/_ClhDmYWO.js.br +0 -0
  142. package/dist/public/assets/{_B_0C2_RO.js → _Cm85V2m3.js} +1 -1
  143. package/dist/public/assets/_Cm85V2m3.js.br +0 -0
  144. package/dist/public/assets/_Cp4ZjGeg.js +1 -0
  145. package/dist/public/assets/{_3aBl7SEn.js → _CsRnEvC3.js} +1 -1
  146. package/dist/public/assets/_CsRnEvC3.js.br +0 -0
  147. package/dist/public/assets/_CtFo1511.js +1 -0
  148. package/dist/public/assets/{_dsj7vMTW.js → _CtIpOiCk.js} +1 -1
  149. package/dist/public/assets/_CtIpOiCk.js.br +0 -0
  150. package/dist/public/assets/{_DSUBv-Bl.js → _CwOgQx7H.js} +1 -1
  151. package/dist/public/assets/_CwOgQx7H.js.br +0 -0
  152. package/dist/public/assets/_CwtVecVY.js +1 -0
  153. package/dist/public/assets/_Cxuln-KJ.js +1 -0
  154. package/dist/public/assets/_CyYNC4Ow.js +1 -0
  155. package/dist/public/assets/{_HM_QqtJi.js → _Cy_g0woP.js} +1 -1
  156. package/dist/public/assets/_Cy_g0woP.js.br +0 -0
  157. package/dist/public/assets/{_DEOryr7w.js → _CzDRlITT.js} +1 -1
  158. package/dist/public/assets/_CzDRlITT.js.br +0 -0
  159. package/dist/public/assets/_Czq9fyjZ.js +1 -0
  160. package/dist/public/assets/{_BDUjU8Ev.js → _D1Rh4MKD.js} +1 -1
  161. package/dist/public/assets/_D2edy8B-.js +1 -0
  162. package/dist/public/assets/_D2edy8B-.js.br +0 -0
  163. package/dist/public/assets/_D2pdXUO3.js +1 -0
  164. package/dist/public/assets/_D4M5BFEU.js +1 -0
  165. package/dist/public/assets/{_Cb_k_JA_.js → _D749nUfQ.js} +1 -1
  166. package/dist/public/assets/_D749nUfQ.js.br +0 -0
  167. package/dist/public/assets/_D7mcWce0.js +2 -0
  168. package/dist/public/assets/_D7mcWce0.js.br +0 -0
  169. package/dist/public/assets/{_BsJZPHmz.js → _D81sIY4I.js} +1 -1
  170. package/dist/public/assets/_D81sIY4I.js.br +0 -0
  171. package/dist/public/assets/{_Dbm6zAQS.js → _D8Opg0DA.js} +1 -1
  172. package/dist/public/assets/_D8Opg0DA.js.br +0 -0
  173. package/dist/public/assets/{_BtZ2AatF.js → _DCJrZQ6J.js} +1 -1
  174. package/dist/public/assets/_DEPHQNx4.js +1 -0
  175. package/dist/public/assets/_DEtYVOe1.js +1 -0
  176. package/dist/public/assets/_DJ4gN7dQ.js +1 -0
  177. package/dist/public/assets/_DJ9NEjwG.js +1 -0
  178. package/dist/public/assets/{_BkcPY2j0.js → _DJUeUZKF.js} +1 -1
  179. package/dist/public/assets/_DJUeUZKF.js.br +0 -0
  180. package/dist/public/assets/_DLZswhbS.js +1 -0
  181. package/dist/public/assets/{_DJqEBkNd.js → _DMEtxMrc.js} +1 -1
  182. package/dist/public/assets/_DMEtxMrc.js.br +0 -0
  183. package/dist/public/assets/{_CfdK8EeQ.js → _DOr6ubI-.js} +1 -1
  184. package/dist/public/assets/_DOr6ubI-.js.br +0 -0
  185. package/dist/public/assets/{_BPSTqkJn.js → _DQu5M2GV.js} +1 -1
  186. package/dist/public/assets/_DQu5M2GV.js.br +0 -0
  187. package/dist/public/assets/_DUvup9ew.js +1 -0
  188. package/dist/public/assets/{_DvKnakqk.js → _DWrhUk5T.js} +1 -1
  189. package/dist/public/assets/_DWrhUk5T.js.br +0 -0
  190. package/dist/public/assets/{_BHU5aikZ.js → _DXOx4zKx.js} +1 -1
  191. package/dist/public/assets/_D_1b7pob.js +1 -0
  192. package/dist/public/assets/_Daap2skI.js +1 -0
  193. package/dist/public/assets/{_DifjKObE.js → _DcktT8yN.js} +1 -1
  194. package/dist/public/assets/_DcktT8yN.js.br +0 -0
  195. package/dist/public/assets/{_1xOByopP.js → _Ddc9Y9a_.js} +1 -1
  196. package/dist/public/assets/_Ddc9Y9a_.js.br +0 -0
  197. package/dist/public/assets/{_DMJHTH74.js → _Dfjlzo9W.js} +1 -1
  198. package/dist/public/assets/_Dfjlzo9W.js.br +0 -0
  199. package/dist/public/assets/_Dh30YzVM.js +1 -0
  200. package/dist/public/assets/_DhohfuPc.js +1 -0
  201. package/dist/public/assets/_DjQz8h-q.js +1 -0
  202. package/dist/public/assets/_DjX1BGKn.js +1 -0
  203. package/dist/public/assets/_DjiaxzEs.js +1 -0
  204. package/dist/public/assets/_Dkg-QEnz.js +1 -0
  205. package/dist/public/assets/{_Cx_aJfDp.js → _Dl46-33v.js} +1 -1
  206. package/dist/public/assets/_Dl46-33v.js.br +0 -0
  207. package/dist/public/assets/{_VPLoEBTS.js → _DlvIY6aE.js} +1 -1
  208. package/dist/public/assets/{_BKHtiW96.js → _Dmi6AQP3.js} +1 -1
  209. package/dist/public/assets/_Dmi6AQP3.js.br +0 -0
  210. package/dist/public/assets/{_CFUREq1M.js → _Dmj0vHNs.js} +1 -1
  211. package/dist/public/assets/_Dmj0vHNs.js.br +0 -0
  212. package/dist/public/assets/{_CY87Y7QL.js → _DnYboxB9.js} +1 -1
  213. package/dist/public/assets/_DnYboxB9.js.br +0 -0
  214. package/dist/public/assets/{_-5UNb9-C.js → _Do6MGycg.js} +1 -1
  215. package/dist/public/assets/_Do6MGycg.js.br +0 -0
  216. package/dist/public/assets/{_DzKW89Sx.js → _DtZ-vebM.js} +1 -1
  217. package/dist/public/assets/_DtZ-vebM.js.br +0 -0
  218. package/dist/public/assets/_DuNisSjT.js +1 -0
  219. package/dist/public/assets/_Dvk-TlMq.js +1 -0
  220. package/dist/public/assets/_Dvk-TlMq.js.br +0 -0
  221. package/dist/public/assets/_DwdnhMjL.js +1 -0
  222. package/dist/public/assets/_DwydmxSi.js +1 -0
  223. package/dist/public/assets/_DzgHDUu0.js +1 -0
  224. package/dist/public/assets/{_CtqGSS84.js → _G-e2JHHS.js} +1 -1
  225. package/dist/public/assets/_G-e2JHHS.js.br +0 -0
  226. package/dist/public/assets/_IOS0xG1B.js +1 -0
  227. package/dist/public/assets/_IiZnk_jc.js +1 -0
  228. package/dist/public/assets/{_CUsrMpdL.js → _KYdxhRVL.js} +1 -1
  229. package/dist/public/assets/_KYdxhRVL.js.br +0 -0
  230. package/dist/public/assets/_LY1sEEvJ.js +1 -0
  231. package/dist/public/assets/_MATnTPAL.js +1 -0
  232. package/dist/public/assets/_MATnTPAL.js.br +0 -0
  233. package/dist/public/assets/_OVl4e0V3.js +1 -0
  234. package/dist/public/assets/{_vcLBrU2m.js → _Sv1HjkeK.js} +1 -1
  235. package/dist/public/assets/_Sv1HjkeK.js.br +0 -0
  236. package/dist/public/assets/_Syg4UyQU.js +86 -0
  237. package/dist/public/assets/_Syg4UyQU.js.br +0 -0
  238. package/dist/public/assets/_TJCslr2g.js +1 -0
  239. package/dist/public/assets/_UcXY-7XH.js +2 -0
  240. package/dist/public/assets/_UcXY-7XH.js.br +0 -0
  241. package/dist/public/assets/{_BVQosHjY.js → _VM9JbUGP.js} +1 -1
  242. package/dist/public/assets/_VM9JbUGP.js.br +0 -0
  243. package/dist/public/assets/{_C98JZr09.js → _YOjtJWMK.js} +1 -1
  244. package/dist/public/assets/_YOjtJWMK.js.br +10 -0
  245. package/dist/public/assets/_YPt61819.js +1 -0
  246. package/dist/public/assets/{_yUmRJIJ6.js → _Zh4-3iG-.js} +1 -1
  247. package/dist/public/assets/_Zh4-3iG-.js.br +0 -0
  248. package/dist/public/assets/{_DcOkTFth.js → _ZptG1LQC.js} +1 -1
  249. package/dist/public/assets/_brnakAIx.js +1 -0
  250. package/dist/public/assets/_bsxJ1YDE.js +1 -0
  251. package/dist/public/assets/_f5wPpUkq.js +1 -0
  252. package/dist/public/assets/_fPqLhj85.js +1 -0
  253. package/dist/public/assets/_g3oXW6NQ.js +1 -0
  254. package/dist/public/assets/_iHPPeFV7.js +1 -0
  255. package/dist/public/assets/_iJwEKWn1.js +1 -0
  256. package/dist/public/assets/_jtFrcV5d.js +1 -0
  257. package/dist/public/assets/{_C0Ib7MZF.js → _kQ9qYC7a.js} +1 -1
  258. package/dist/public/assets/_kQ9qYC7a.js.br +0 -0
  259. package/dist/public/assets/_kQki_UDN.js +1 -0
  260. package/dist/public/assets/_lRRU15CX.js +1 -0
  261. package/dist/public/assets/_lRRU15CX.js.br +0 -0
  262. package/dist/public/assets/_mKx7UwEC.js +1 -0
  263. package/dist/public/assets/_nnKb_fyX.js +6 -0
  264. package/dist/public/assets/_nnKb_fyX.js.br +0 -0
  265. package/dist/public/assets/_p44jCyhe.js +1 -0
  266. package/dist/public/assets/_pAx6IPLY.js +1 -0
  267. package/dist/public/assets/_psqSIrEM.js +1 -0
  268. package/dist/public/assets/{_D9r_Fn0I.js → _w_IRrfdL.js} +1 -1
  269. package/dist/public/assets/_w_IRrfdL.js.br +0 -0
  270. package/dist/public/assets/_wxSNlWQ_.js +1 -0
  271. package/dist/public/assets/_xPBJn0Hx.js +1 -0
  272. package/dist/public/assets/_xPBJn0Hx.js.br +0 -0
  273. package/dist/public/assets/_yP2G9NCR.js +1 -0
  274. package/dist/public/assets/files-view-SzdFekvc.js +2 -0
  275. package/dist/public/assets/manage-workspace-DIY2p0qY.js +2 -0
  276. package/dist/public/assets/new-dBLsQZ5Y.js +1 -0
  277. package/dist/public/assets/new-workspace-D6YmZcwM.js +2 -0
  278. package/dist/public/assets/review-view-Dr5gLqyl.js +2 -0
  279. package/dist/public/assets/settings-dBLsQZ5Y.js +1 -0
  280. package/dist/public/assets/settings-page-COg15zf5.js +2 -0
  281. package/dist/public/assets/styles-DqimleOa.css +1 -0
  282. package/dist/public/assets/styles-DqimleOa.css.br +0 -0
  283. package/dist/public/assets/w-dBLsQZ5Y.js +1 -0
  284. package/dist/public/assets/w._-BbJyr8oS.js +1 -0
  285. package/dist/public/assets/w._-Bbhvn-OV.js +1 -0
  286. package/dist/public/assets/w._-dBLsQZ5Y.js +1 -0
  287. package/dist/rtc-helper.mjs +1170 -0
  288. package/lib/preview/media.mjs +5 -4
  289. package/lib/setup/doctor.d.mts +11 -0
  290. package/lib/setup/doctor.mjs +23 -2
  291. package/lib/setup/firewall.d.mts +76 -0
  292. package/lib/setup/firewall.mjs +598 -0
  293. package/package.json +3 -2
  294. package/dist/_D1C-XIqT.js +0 -168
  295. package/dist/_HbAW5Cbt.js +0 -2
  296. package/dist/public/assets/_-5UNb9-C.js.br +0 -0
  297. package/dist/public/assets/_06rtP_SB.js +0 -1
  298. package/dist/public/assets/_14yhXek7.js +0 -1
  299. package/dist/public/assets/_14yhXek7.js.br +0 -0
  300. package/dist/public/assets/_1JXC9nFp.js.br +0 -0
  301. package/dist/public/assets/_1Yit_Y5R.js +0 -1
  302. package/dist/public/assets/_1ZPfR2B8.js +0 -6
  303. package/dist/public/assets/_1ZPfR2B8.js.br +0 -0
  304. package/dist/public/assets/_1xOByopP.js.br +0 -0
  305. package/dist/public/assets/_3aBl7SEn.js.br +0 -0
  306. package/dist/public/assets/_5aMLV2Vy.js +0 -1
  307. package/dist/public/assets/_7YrArFMB.js.br +0 -0
  308. package/dist/public/assets/_B1-W0Sn2.js.br +0 -0
  309. package/dist/public/assets/_B1D0PIz3.js.br +0 -0
  310. package/dist/public/assets/_B1agoKUa.js +0 -1
  311. package/dist/public/assets/_B3NfNm8M.js.br +0 -0
  312. package/dist/public/assets/_B7VYILLZ.js.br +0 -0
  313. package/dist/public/assets/_B7sPBy0J.js +0 -1
  314. package/dist/public/assets/_B81p6DSw.js +0 -1
  315. package/dist/public/assets/_BAkSKCkz.js +0 -1
  316. package/dist/public/assets/_BHZPTv1U.js +0 -1
  317. package/dist/public/assets/_BKHtiW96.js.br +0 -0
  318. package/dist/public/assets/_BKIx7IZP.js.br +0 -0
  319. package/dist/public/assets/_BLfzQY-3.js.br +0 -0
  320. package/dist/public/assets/_BPSTqkJn.js.br +0 -0
  321. package/dist/public/assets/_BQZOimBB.js +0 -1
  322. package/dist/public/assets/_BRQ6iQ5p.js.br +0 -0
  323. package/dist/public/assets/_BRVURc4u.js +0 -1
  324. package/dist/public/assets/_BSFJEuJX.js.br +0 -0
  325. package/dist/public/assets/_BSWN-v3P.js.br +0 -0
  326. package/dist/public/assets/_BTVAQr2c.js +0 -1
  327. package/dist/public/assets/_BUD1pBC0.js +0 -1
  328. package/dist/public/assets/_BVGzCczb.js +0 -1
  329. package/dist/public/assets/_BVQosHjY.js.br +0 -0
  330. package/dist/public/assets/_B_0C2_RO.js.br +0 -0
  331. package/dist/public/assets/_BaA31ms5.js +0 -1
  332. package/dist/public/assets/_BgCHJGlO.js +0 -1
  333. package/dist/public/assets/_BhpRLDbL.js +0 -1
  334. package/dist/public/assets/_BhpRLDbL.js.br +0 -0
  335. package/dist/public/assets/_BkKcjMAC.js +0 -1
  336. package/dist/public/assets/_BkcPY2j0.js.br +0 -0
  337. package/dist/public/assets/_BlTVd_3d.js +0 -1
  338. package/dist/public/assets/_BlqlLmEY.js +0 -1
  339. package/dist/public/assets/_BoNfxc9P.js +0 -1
  340. package/dist/public/assets/_BoPk1gXL.js +0 -1
  341. package/dist/public/assets/_BqswW9B9.js +0 -1
  342. package/dist/public/assets/_BricqzsO.js +0 -1
  343. package/dist/public/assets/_BrreckIa.js +0 -1
  344. package/dist/public/assets/_BsJZPHmz.js.br +0 -0
  345. package/dist/public/assets/_BtRYwaBb.js +0 -1
  346. package/dist/public/assets/_BvPBKjRP.js +0 -1
  347. package/dist/public/assets/_BvPBKjRP.js.br +0 -0
  348. package/dist/public/assets/_ByrrjMU9.js +0 -1
  349. package/dist/public/assets/_BzGHediB.js.br +0 -0
  350. package/dist/public/assets/_BzvTKm92.js +0 -1
  351. package/dist/public/assets/_C-EkQeP_.js.br +0 -0
  352. package/dist/public/assets/_C0Ib7MZF.js.br +0 -0
  353. package/dist/public/assets/_C2p1Z5Lf.js +0 -86
  354. package/dist/public/assets/_C2p1Z5Lf.js.br +0 -0
  355. package/dist/public/assets/_C3iiOlxd.js +0 -1
  356. package/dist/public/assets/_C81nSl09.js.br +0 -0
  357. package/dist/public/assets/_C8bqYk4J.js.br +0 -0
  358. package/dist/public/assets/_C98JZr09.js.br +0 -0
  359. package/dist/public/assets/_CB4VkmGZ.js +0 -1
  360. package/dist/public/assets/_CCVkYcN5.js.br +0 -0
  361. package/dist/public/assets/_CDY0RpYX.js.br +0 -0
  362. package/dist/public/assets/_CE2GEqMx.js +0 -1
  363. package/dist/public/assets/_CE2GEqMx.js.br +0 -0
  364. package/dist/public/assets/_CFUREq1M.js.br +0 -0
  365. package/dist/public/assets/_CHdh6bII.js +0 -1
  366. package/dist/public/assets/_CHdpLB95.js.br +0 -0
  367. package/dist/public/assets/_CKLGAGKJ.js.br +0 -0
  368. package/dist/public/assets/_CMRt2lyQ.js +0 -1
  369. package/dist/public/assets/_CN1zW1AT.js +0 -1
  370. package/dist/public/assets/_CN1zW1AT.js.br +0 -0
  371. package/dist/public/assets/_CUILmj9R.js +0 -1
  372. package/dist/public/assets/_CUhP8KQ8.js +0 -1
  373. package/dist/public/assets/_CUsrMpdL.js.br +0 -0
  374. package/dist/public/assets/_CVG0_w9T.js +0 -1
  375. package/dist/public/assets/_CWG813ur.js.br +0 -0
  376. package/dist/public/assets/_CY87Y7QL.js.br +0 -0
  377. package/dist/public/assets/_CYAsKva_.js +0 -1
  378. package/dist/public/assets/_CajKYNSY.js +0 -1
  379. package/dist/public/assets/_Cb_k_JA_.js.br +0 -0
  380. package/dist/public/assets/_Ce8PlfMD.js +0 -1
  381. package/dist/public/assets/_CfGEGt_k.js.br +0 -0
  382. package/dist/public/assets/_CfdK8EeQ.js.br +0 -0
  383. package/dist/public/assets/_CgOKmAwr.js +0 -1
  384. package/dist/public/assets/_CiYQhf81.js.br +0 -0
  385. package/dist/public/assets/_Cj9DHPRL.js +0 -1
  386. package/dist/public/assets/_ClHPjF-1.js.br +0 -0
  387. package/dist/public/assets/_Cmmdd2e3.js.br +0 -0
  388. package/dist/public/assets/_Cn9Ia4SS.js +0 -1
  389. package/dist/public/assets/_Cn9Ia4SS.js.br +0 -0
  390. package/dist/public/assets/_CnTzFbuG.js +0 -1
  391. package/dist/public/assets/_CqCenHOp.js.br +0 -0
  392. package/dist/public/assets/_CtqGSS84.js.br +0 -0
  393. package/dist/public/assets/_CttfwM-c.js +0 -1
  394. package/dist/public/assets/_CxA3Yab0.js.br +0 -0
  395. package/dist/public/assets/_Cx_aJfDp.js.br +0 -0
  396. package/dist/public/assets/_D2L_ILOW.js +0 -1
  397. package/dist/public/assets/_D47lCu0c.js +0 -1
  398. package/dist/public/assets/_D5W-uGIK.js +0 -1
  399. package/dist/public/assets/_D6BbZLrc.js +0 -1
  400. package/dist/public/assets/_D6RVeCAn.js +0 -1
  401. package/dist/public/assets/_D75V4jV-.js +0 -1
  402. package/dist/public/assets/_D9r_Fn0I.js.br +0 -0
  403. package/dist/public/assets/_DBD57l1T.js.br +0 -0
  404. package/dist/public/assets/_DCWILZgL.js +0 -1
  405. package/dist/public/assets/_DEOryr7w.js.br +0 -0
  406. package/dist/public/assets/_DF54Iz7o.js +0 -1
  407. package/dist/public/assets/_DFamU2Uj.js +0 -2
  408. package/dist/public/assets/_DFamU2Uj.js.br +0 -0
  409. package/dist/public/assets/_DHmBuyCO.js +0 -1
  410. package/dist/public/assets/_DHmBuyCO.js.br +0 -0
  411. package/dist/public/assets/_DJqEBkNd.js.br +0 -0
  412. package/dist/public/assets/_DL3w8c_p.js.br +0 -0
  413. package/dist/public/assets/_DLVL-4MP.js +0 -1
  414. package/dist/public/assets/_DM60dKRs.js.br +0 -0
  415. package/dist/public/assets/_DMJHTH74.js.br +0 -0
  416. package/dist/public/assets/_DMLv6KA6.js +0 -1
  417. package/dist/public/assets/_DQYpgyzr.js +0 -1
  418. package/dist/public/assets/_DQYpgyzr.js.br +0 -0
  419. package/dist/public/assets/_DQyjuXTi.js.br +0 -0
  420. package/dist/public/assets/_DRHCy0UF.js.br +0 -0
  421. package/dist/public/assets/_DSUBv-Bl.js.br +0 -0
  422. package/dist/public/assets/_DUFM9qLV.js +0 -1
  423. package/dist/public/assets/_DUFM9qLV.js.br +0 -0
  424. package/dist/public/assets/_DUs3ZGbj.js.br +0 -0
  425. package/dist/public/assets/_DX5u6Wvm.js.br +0 -0
  426. package/dist/public/assets/_DZvkgS3V.js.br +0 -0
  427. package/dist/public/assets/_Dbm6zAQS.js.br +0 -0
  428. package/dist/public/assets/_Ddf1gumD.js +0 -1
  429. package/dist/public/assets/_De6E9M7R.js +0 -1
  430. package/dist/public/assets/_DgWKSW-Y.js.br +0 -0
  431. package/dist/public/assets/_DhEN6T4v.js +0 -1
  432. package/dist/public/assets/_Di1ccq_2.js.br +0 -0
  433. package/dist/public/assets/_DifjKObE.js.br +0 -0
  434. package/dist/public/assets/_Dn10ABa-.js +0 -1
  435. package/dist/public/assets/_Do1ltY2a.js.br +0 -0
  436. package/dist/public/assets/_DomK7Scb.js.br +0 -0
  437. package/dist/public/assets/_DtWggCxt.js +0 -1
  438. package/dist/public/assets/_DtqqybyQ.js +0 -1
  439. package/dist/public/assets/_DvKnakqk.js.br +0 -0
  440. package/dist/public/assets/_DxD_AC3a.js.br +0 -0
  441. package/dist/public/assets/_Dxo7m9cG.js +0 -1
  442. package/dist/public/assets/_DzKW89Sx.js.br +0 -0
  443. package/dist/public/assets/_DzTHCioH.js +0 -1
  444. package/dist/public/assets/_EefWj858.js.br +0 -0
  445. package/dist/public/assets/_FlITqTCo.js.br +0 -0
  446. package/dist/public/assets/_GkEw2S0T.js +0 -1
  447. package/dist/public/assets/_HM_QqtJi.js.br +0 -0
  448. package/dist/public/assets/_HmkI4Rfn.js.br +0 -0
  449. package/dist/public/assets/_JEvx8ub4.js.br +0 -0
  450. package/dist/public/assets/_JOb8B3tz.js +0 -1
  451. package/dist/public/assets/_LEIhjFrO.js +0 -1
  452. package/dist/public/assets/_STJhwy7U.js +0 -1
  453. package/dist/public/assets/_TrcWRD8T.js.br +0 -0
  454. package/dist/public/assets/_UaKPY71M.js.br +0 -0
  455. package/dist/public/assets/_UhK3lkm0.js +0 -1
  456. package/dist/public/assets/_Zeftz3t1.js +0 -1
  457. package/dist/public/assets/__cyRVmTO.js.br +0 -0
  458. package/dist/public/assets/_awfYTHit.js +0 -1
  459. package/dist/public/assets/_dsj7vMTW.js.br +0 -0
  460. package/dist/public/assets/_eqpiOhSM.js +0 -1
  461. package/dist/public/assets/_iutZ4EDe.js.br +0 -0
  462. package/dist/public/assets/_kWQ0dtYZ.js.br +0 -0
  463. package/dist/public/assets/_knvMqXQh.js +0 -1
  464. package/dist/public/assets/_lwC7sIgC.js +0 -1
  465. package/dist/public/assets/_m2tRa0jk.js.br +0 -0
  466. package/dist/public/assets/_pXG8fRON.js.br +0 -0
  467. package/dist/public/assets/_r541ENtr.js +0 -1
  468. package/dist/public/assets/_rrUx1wn3.js +0 -1
  469. package/dist/public/assets/_tJvcu7sD.js +0 -1
  470. package/dist/public/assets/_vcLBrU2m.js.br +0 -0
  471. package/dist/public/assets/_xZC4Vm70.js +0 -1
  472. package/dist/public/assets/_yAr5r-uL.js +0 -1
  473. package/dist/public/assets/_yUmRJIJ6.js.br +0 -0
  474. package/dist/public/assets/files-view-CTadakLK.js +0 -2
  475. package/dist/public/assets/manage-workspace-HUAS6qjy.js +0 -2
  476. package/dist/public/assets/new-CirJkJFl.js +0 -1
  477. package/dist/public/assets/new-workspace-C3t1nA6z.js +0 -2
  478. package/dist/public/assets/review-view-DKPNtgmc.js +0 -2
  479. package/dist/public/assets/settings-CirJkJFl.js +0 -1
  480. package/dist/public/assets/settings-page-DH-9cN-8.js +0 -2
  481. package/dist/public/assets/styles-CIeNhVxC.css +0 -1
  482. package/dist/public/assets/styles-CIeNhVxC.css.br +0 -0
  483. package/dist/public/assets/w-CirJkJFl.js +0 -1
  484. package/dist/public/assets/w._-BnShhzdq.js +0 -1
  485. package/dist/public/assets/w._-CirJkJFl.js +0 -1
  486. package/dist/public/assets/w._-aCTYfruH.js +0 -1
@@ -182,7 +182,7 @@ try {
182
182
  * open terminal. */
183
183
  var TMUX_SOCKET = process.env.WORK_TMUX_SOCKET || "work";
184
184
  var execFileAsync = promisify(execFile);
185
- async function run$1(cmd, args, cwd, env, opts = {}) {
185
+ async function run$2(cmd, args, cwd, env, opts = {}) {
186
186
  const child = execFileAsync(cmd, args, {
187
187
  cwd,
188
188
  env,
@@ -230,7 +230,7 @@ var git = async (args, cwd) => {
230
230
  const verb = args.find((a) => !a.startsWith("-")) ?? "";
231
231
  const timeoutMs = GIT_NETWORK_MS[verb];
232
232
  try {
233
- return await run$1("git", args, cwd, gitEnv(), timeoutMs ? { timeoutMs } : void 0);
233
+ return await run$2("git", args, cwd, gitEnv(), timeoutMs ? { timeoutMs } : void 0);
234
234
  } catch (err) {
235
235
  if (timeoutMs && err.killed) throw new Error(`git ${verb} timed out after ${Math.round(timeoutMs / 1e3)}s`);
236
236
  throw err;
@@ -248,7 +248,7 @@ var gh = async (args, host) => {
248
248
  const verb = args[0] ?? "";
249
249
  const timeoutMs = GH_MS[verb] ?? GH_DEFAULT_MS;
250
250
  try {
251
- return await run$1("gh", args, void 0, host ? {
251
+ return await run$2("gh", args, void 0, host ? {
252
252
  ...process.env,
253
253
  GH_HOST: host
254
254
  } : void 0, { timeoutMs });
@@ -257,7 +257,7 @@ var gh = async (args, host) => {
257
257
  throw err;
258
258
  }
259
259
  };
260
- var tmux = (args, env, opts) => run$1("tmux", [
260
+ var tmux = (args, env, opts) => run$2("tmux", [
261
261
  "-L",
262
262
  TMUX_SOCKET,
263
263
  ...args
@@ -1078,6 +1078,330 @@ function readTailscale({ path, version: versionText, status, serve }, { port, al
1078
1078
  };
1079
1079
  }
1080
1080
  //#endregion
1081
+ //#region lib/setup/firewall.mjs
1082
+ /** The name work's own rule goes by: a firewalld service, a ufw comment. */
1083
+ var RULE = "work";
1084
+ var SOCKETFILTERFW = "usr/libexec/ApplicationFirewall/socketfilterfw";
1085
+ var CODESIGN = "usr/bin/codesign";
1086
+ /**
1087
+ * The active host firewall and whether it admits UDP `rtcPort`, or null
1088
+ * when none is active (or direct connections are off, `rtc` = "off").
1089
+ * `appPort` joins the rule when `listen` is beyond this machine, since the
1090
+ * app's own TCP port then has to be reachable too. `node` is the program
1091
+ * macOS's firewall is asked about (this process's by default: the server
1092
+ * asking for itself). `root` is where /etc and /usr are read from, and
1093
+ * `platform` the system taken for this one (a test's stand-ins).
1094
+ */
1095
+ async function firewallProbe({ rtcPort, appPort, listen = "127.0.0.1", rtc, node = process.execPath, root = "/", platform = process.platform } = {}) {
1096
+ if (rtc === "off") return null;
1097
+ const port = Number(rtcPort) || Number(appPort) || 7171;
1098
+ const tcp = loopback(listen) ? null : Number(appPort) || port;
1099
+ const at = (p) => path.join(root, p);
1100
+ if (platform === "darwin") return macos(port, node, at);
1101
+ return await firewalld(port, tcp, at) ?? ufw(port, tcp, at);
1102
+ }
1103
+ async function firewalld(port, tcp, at) {
1104
+ const bin = findBin("firewall-cmd");
1105
+ if (!bin) return null;
1106
+ const active = await run$1(bin, ["--get-active-zones"]);
1107
+ if (!active.ok || !active.stdout.trim()) return null;
1108
+ const zones = active.stdout.split("\n").filter((line) => line && !/^\s/.test(line)).map((line) => line.trim().split(/\s+/)[0]);
1109
+ const byDefault = /^(\S+)\s+\(default\)/m.exec(active.stdout)?.[1];
1110
+ const zone = byDefault && zones.includes(byDefault) ? byDefault : zones[0];
1111
+ const services = await run$1(bin, ["--get-services"]);
1112
+ const ruled = services.ok && services.stdout.split(/\s+/).includes("work");
1113
+ const changed = readXml(at(`etc/firewalld/zones/${zone}.xml`));
1114
+ const def = changed ?? readXml(at(`usr/lib/firewalld/zones/${zone}.xml`));
1115
+ const exact = changed !== null;
1116
+ const admits = ruled || def !== null && zoneAdmits(def, port, at);
1117
+ const likely = !admits;
1118
+ const plan = [
1119
+ ...ruled ? [] : [sudo("firewall-cmd", "--permanent", `--new-service=${RULE}`), sudo("firewall-cmd", "--permanent", `--service=${RULE}`, `--set-short=${RULE}`)],
1120
+ sudo("firewall-cmd", "--permanent", `--service=${RULE}`, `--add-port=${port}/udp`),
1121
+ ...tcp ? [sudo("firewall-cmd", "--permanent", `--service=${RULE}`, `--add-port=${tcp}/tcp`)] : [],
1122
+ sudo("firewall-cmd", "--permanent", `--zone=${zone}`, `--add-service=${RULE}`),
1123
+ sudo("firewall-cmd", "--reload")
1124
+ ];
1125
+ return result({
1126
+ kind: "firewalld",
1127
+ what: `firewalld (zone ${zone})`,
1128
+ zone,
1129
+ port,
1130
+ admits,
1131
+ likely,
1132
+ exact,
1133
+ ruled,
1134
+ why: admits || exact ? null : "by the zone's definition as shipped",
1135
+ plan: admits ? [] : plan
1136
+ });
1137
+ }
1138
+ function ufw(port, tcp, at) {
1139
+ let conf = "";
1140
+ try {
1141
+ conf = fs.readFileSync(at("etc/ufw/ufw.conf"), "utf8");
1142
+ } catch {
1143
+ return null;
1144
+ }
1145
+ if (!/^\s*ENABLED\s*=\s*yes/m.test(conf)) return null;
1146
+ let policy = "DROP";
1147
+ try {
1148
+ policy = /^\s*DEFAULT_INPUT_POLICY\s*=\s*"?(\w+)/m.exec(fs.readFileSync(at("etc/default/ufw"), "utf8"))?.[1] ?? policy;
1149
+ } catch {}
1150
+ let rules = null;
1151
+ try {
1152
+ rules = fs.readFileSync(at("etc/ufw/user.rules"), "utf8");
1153
+ } catch {}
1154
+ const ruled = !!rules && new RegExp(`### tuple ### allow udp ${port} \\S+ \\S+ \\S+ in\\b`).test(rules);
1155
+ const admits = policy === "ACCEPT" || ruled;
1156
+ const plan = [sudo("ufw", "allow", `${port}/udp`, "comment", RULE), ...tcp ? [sudo("ufw", "allow", `${tcp}/tcp`, "comment", RULE)] : []];
1157
+ return result({
1158
+ kind: "ufw",
1159
+ what: "ufw",
1160
+ port,
1161
+ admits,
1162
+ likely: !admits,
1163
+ exact: rules !== null,
1164
+ ruled,
1165
+ why: admits || rules !== null ? null : `by its default input policy, ${policy}`,
1166
+ plan: admits ? [] : plan
1167
+ });
1168
+ }
1169
+ /** macOS's application firewall filters by program, not port: what counts
1170
+ * is whether the node the server runs (`node`) may take connections. All
1171
+ * of it reads without root — the switch, "Block all incoming
1172
+ * connections", whether signed software is let in by itself, node's own
1173
+ * entry, and node's signature — and each parser takes what it can
1174
+ * recognise and leaves the rest unknown (`macosVerdict`), since the
1175
+ * wording has changed across releases. */
1176
+ async function macos(port, node, at) {
1177
+ const bin = at(SOCKETFILTERFW);
1178
+ if (!fs.existsSync(bin)) return null;
1179
+ const real = realpath(node);
1180
+ const said = (r) => `${r.stdout}\n${r.stderr}`;
1181
+ const [state, blockAll, signed, blocked, apps, sign] = await Promise.all([
1182
+ ["--getglobalstate"],
1183
+ ["--getblockall"],
1184
+ ["--getallowsigned"],
1185
+ ["--getappblocked", real],
1186
+ ["--listapps"]
1187
+ ].map((a) => run$1(bin, a).then(said)).concat(run$1(at(CODESIGN), ["-dv", real]).then(said)));
1188
+ const v = macosVerdict({
1189
+ state,
1190
+ blockAll,
1191
+ signed,
1192
+ blocked,
1193
+ apps,
1194
+ sign,
1195
+ paths: [.../* @__PURE__ */ new Set([node, real])]
1196
+ });
1197
+ if (!v) return null;
1198
+ const sfw = (...a) => sudo(bin, ...a);
1199
+ const plan = v.needs === "unblock" ? [sfw("--unblockapp", real)] : v.needs === "add" ? [sfw("--add", real), sfw("--unblockapp", real)] : [];
1200
+ return result({
1201
+ kind: "macos",
1202
+ what: "the macOS firewall",
1203
+ port,
1204
+ admits: v.admits,
1205
+ likely: !v.admits,
1206
+ exact: v.exact,
1207
+ ruled: false,
1208
+ why: v.why,
1209
+ node: real,
1210
+ plan,
1211
+ fix: v.needs === "blockall" ? BLOCK_ALL_FIX : void 0
1212
+ });
1213
+ }
1214
+ var BLOCK_ALL_FIX = "turn off “Block all incoming connections” (System Settings → Network → Firewall → Options); no rule for one program opens anything while it is on";
1215
+ /**
1216
+ * The macOS firewall's verdict on node from what socketfilterfw and
1217
+ * codesign said (their stdout and stderr, as text): null when the firewall
1218
+ * is off or its state could not be read. `needs` names the fix: `blockall`
1219
+ * (a setting only the user should change), `unblock` (node is listed and
1220
+ * blocked), `add` (node is not listed).
1221
+ */
1222
+ function macosVerdict({ state, blockAll, signed, blocked, apps, sign, paths }) {
1223
+ if (globalOn(state) !== true) return null;
1224
+ if (blockAllOn(blockAll) ?? /State\s*=\s*2\b/.test(state)) return {
1225
+ admits: false,
1226
+ exact: true,
1227
+ why: "“Block all incoming connections” is on",
1228
+ needs: "blockall"
1229
+ };
1230
+ const entry = listedAs(apps, paths) ?? appBlocked(blocked);
1231
+ if (entry === "block") return {
1232
+ admits: false,
1233
+ exact: true,
1234
+ why: "node is blocked in it",
1235
+ needs: "unblock"
1236
+ };
1237
+ if (entry === "allow") return {
1238
+ admits: true,
1239
+ exact: true,
1240
+ why: "node is allowed in it",
1241
+ needs: null
1242
+ };
1243
+ const signature = signatureOf(sign);
1244
+ const auto = allowSigned(signed);
1245
+ if (signature === "developer-id" && auto.downloaded || signature === "apple" && auto.builtIn) return {
1246
+ admits: true,
1247
+ exact: false,
1248
+ why: `node is not listed, but it is ${signature === "apple" ? "Apple" : "Developer ID"}-signed and signed ${signature === "apple" ? "built-in" : "downloaded"} software is let in`,
1249
+ needs: null
1250
+ };
1251
+ return {
1252
+ admits: false,
1253
+ exact: false,
1254
+ why: `node is not listed, and ${signature === "developer-id" || signature === "apple" ? "signed software is not let in by itself" : signature === "adhoc" ? "an ad-hoc-signed program is not let in by itself" : signature === "unsigned" ? "an unsigned program is not let in by itself" : signature ? "a program not Developer ID-signed is not let in by itself" : "its signature could not be read"}, so its connections are dropped or asked about on the Mac's screen`,
1255
+ needs: "add"
1256
+ };
1257
+ }
1258
+ /** `--getglobalstate`: "Firewall is enabled. (State = 1)", "Firewall is
1259
+ * disabled. (State = 0)"; 2 is on with everything blocked. */
1260
+ function globalOn(text = "") {
1261
+ const n = /State\s*=\s*(\d)/i.exec(text);
1262
+ if (n) return n[1] !== "0";
1263
+ if (/\bdisabled\b|\boff\b/i.test(text)) return false;
1264
+ if (/\benabled\b|\bon\b/i.test(text)) return true;
1265
+ return null;
1266
+ }
1267
+ /** `--getblockall`: "Block all ENABLED!" / "Block all DISABLED!", or
1268
+ * "Firewall has block all state set to enabled." / "… disabled." */
1269
+ function blockAllOn(text = "") {
1270
+ if (!/block\s*all/i.test(text)) return null;
1271
+ if (/\bdisabled\b|\boff\b/i.test(text)) return false;
1272
+ if (/\benabled\b|\bon\b/i.test(text)) return true;
1273
+ return null;
1274
+ }
1275
+ /** `--getallowsigned`: "Automatically allow built-in signed software
1276
+ * ENABLED." and "Automatically allow downloaded signed software
1277
+ * ENABLED." (older: "… allow signed built-in software …", or one "… allow
1278
+ * signed software …" switch for both). */
1279
+ function allowSigned(text = "") {
1280
+ const out = {
1281
+ builtIn: null,
1282
+ downloaded: null
1283
+ };
1284
+ for (const line of text.split("\n")) {
1285
+ if (!/signed/i.test(line)) continue;
1286
+ const on = /\bdisabled\b|\boff\b/i.test(line) ? false : /\benabled\b|\bon\b/i.test(line) ? true : null;
1287
+ if (on === null) continue;
1288
+ if (/download/i.test(line)) out.downloaded = on;
1289
+ else if (/built-?\s?in/i.test(line)) out.builtIn = on;
1290
+ else out.builtIn = out.downloaded = on;
1291
+ }
1292
+ return out;
1293
+ }
1294
+ /** `--listapps`: "ALF: total number of apps = 2", then per app "1 :
1295
+ * /path" and, on its next line or after the path, "( Allow incoming
1296
+ * connections )" or "( Block incoming connections )". */
1297
+ function listedAs(text = "", paths = []) {
1298
+ const lines = text.split("\n");
1299
+ for (let i = 0; i < lines.length; i++) {
1300
+ const m = /^\s*\d+\s*:\s*(.+?)\s*(?:\(([^)]*)\))?\s*$/.exec(lines[i]);
1301
+ if (!m || !paths.includes(m[1].trim())) continue;
1302
+ for (const said of [m[2] ?? "", ...lines.slice(i + 1, i + 4)]) {
1303
+ if (/^\s*\d+\s*:/.test(said)) break;
1304
+ if (/\bblock/i.test(said)) return "block";
1305
+ if (/\b(allow|permit)/i.test(said)) return "allow";
1306
+ }
1307
+ }
1308
+ return null;
1309
+ }
1310
+ /** `--getappblocked <path>`: "… is permitted" / "… is blocked", or that it
1311
+ * is not part of the firewall (not listed). */
1312
+ function appBlocked(text = "") {
1313
+ if (/not part of|isn['’]?t part|not (?:a )?(?:listed|found|in the)|no such|does not exist/i.test(text)) return null;
1314
+ if (/\bpermitted\b|\ballowed\b|\bunblocked\b|\bnot blocked\b/i.test(text)) return "allow";
1315
+ if (/\bblocked\b/i.test(text)) return "block";
1316
+ return null;
1317
+ }
1318
+ /** `codesign -dv <path>` (on stderr): "Authority=Developer ID
1319
+ * Application: …", Apple's own ("Authority=Software Signing"),
1320
+ * "Signature=adhoc", or "code object is not signed at all". */
1321
+ function signatureOf(text = "") {
1322
+ if (/not signed at all/i.test(text)) return "unsigned";
1323
+ if (/^Authority=Developer ID Application\b/im.test(text)) return "developer-id";
1324
+ if (/^Authority=(Software Signing|Apple Code Signing|Apple Mac OS Application Signing)\b/im.test(text)) return "apple";
1325
+ if (/^Signature=adhoc\b|\badhoc\b/im.test(text)) return "adhoc";
1326
+ if (/^Authority=/im.test(text)) return "other";
1327
+ return null;
1328
+ }
1329
+ function result(r) {
1330
+ return {
1331
+ ...r,
1332
+ fix: r.fix ?? (r.plan.length ? r.plan.map(shell).join(" && ") : null)
1333
+ };
1334
+ }
1335
+ /** Whether a firewalld zone definition lets UDP `port` in: by its target,
1336
+ * a port range of its own, or a service it names (a readable one). */
1337
+ function zoneAdmits(xml, port, at) {
1338
+ if (/<zone[^>]*\btarget="ACCEPT"/.test(xml)) return true;
1339
+ if (portsAdmit(xml, port)) return true;
1340
+ for (const [, name] of xml.matchAll(/<service\s+name="([^"]+)"/g)) {
1341
+ const svc = readXml(at(`etc/firewalld/services/${name}.xml`)) ?? readXml(at(`usr/lib/firewalld/services/${name}.xml`));
1342
+ if (svc && portsAdmit(svc, port)) return true;
1343
+ }
1344
+ return false;
1345
+ }
1346
+ function portsAdmit(xml, port) {
1347
+ for (const [tag] of xml.matchAll(/<port\b[^>]*>/g)) {
1348
+ const proto = /protocol="(\w+)"/.exec(tag)?.[1];
1349
+ const range = /port="(\d+)(?:-(\d+))?"/.exec(tag);
1350
+ if (proto !== "udp" || !range) continue;
1351
+ const lo = Number(range[1]);
1352
+ const hi = Number(range[2] ?? range[1]);
1353
+ if (port >= lo && port <= hi) return true;
1354
+ }
1355
+ return false;
1356
+ }
1357
+ function realpath(file) {
1358
+ try {
1359
+ return fs.realpathSync(file);
1360
+ } catch {
1361
+ return file;
1362
+ }
1363
+ }
1364
+ function sudo(...args) {
1365
+ return ["sudo", ...args];
1366
+ }
1367
+ function shell(argv) {
1368
+ return argv.map((a) => /^[\w@%+=:,./-]+$/.test(a) ? a : `'${a.replace(/'/g, "'\\''")}'`).join(" ");
1369
+ }
1370
+ function loopback(listen) {
1371
+ return !listen || listen === "::1" || /^127\./.test(listen) || listen === "localhost";
1372
+ }
1373
+ function readXml(file) {
1374
+ try {
1375
+ return fs.readFileSync(file, "utf8");
1376
+ } catch {
1377
+ return null;
1378
+ }
1379
+ }
1380
+ /** A program on PATH, or in the sbin directories a user's PATH can leave
1381
+ * out. */
1382
+ function findBin(name) {
1383
+ const dirs = [
1384
+ ...(process.env.PATH || "").split(path.delimiter),
1385
+ "/usr/sbin",
1386
+ "/sbin"
1387
+ ];
1388
+ for (const dir of dirs) {
1389
+ if (!dir) continue;
1390
+ const full = path.join(dir, name);
1391
+ try {
1392
+ if (fs.statSync(full).isFile()) return full;
1393
+ } catch {}
1394
+ }
1395
+ return null;
1396
+ }
1397
+ function run$1(cmd, args) {
1398
+ return new Promise((resolve) => execFile(cmd, args, { timeout: 5e3 }, (err, stdout, stderr) => resolve({
1399
+ ok: !err,
1400
+ stdout: String(stdout || ""),
1401
+ stderr: String(stderr || "")
1402
+ })));
1403
+ }
1404
+ //#endregion
1081
1405
  //#region lib/setup/doctor.mjs
1082
1406
  var home = os.homedir();
1083
1407
  /** Agent CLI install dirs from meta (`~` → home). Same list the service and
@@ -1423,7 +1747,8 @@ async function tailscaleProbe({ port, allowedHosts } = {}) {
1423
1747
  * @param {{ hosts?: string[], port?: string, allowedHosts?: string }} [opts]
1424
1748
  * configured GitHub hosts (settings); github.com and any host gh is
1425
1749
  * already signed in to are always included. `port` and `allowedHosts`
1426
- * are the service's, for the Tailscale probe.
1750
+ * are the service's, for the Tailscale probe; `firewall`, when given, is
1751
+ * the service's own firewall reading (`serviceFirewall` in the CLI).
1427
1752
  */
1428
1753
  async function doctor(opts = {}) {
1429
1754
  const hostSet = /* @__PURE__ */ new Set([
@@ -1431,13 +1756,19 @@ async function doctor(opts = {}) {
1431
1756
  ...opts.hosts || [],
1432
1757
  ...ghKnownHosts()
1433
1758
  ]);
1434
- const [versions, github, awake, extensions, helpers, tailscale] = await Promise.all([
1759
+ const [versions, github, awake, extensions, helpers, tailscale, firewall] = await Promise.all([
1435
1760
  miseVersions(),
1436
1761
  Promise.all([...hostSet].map(githubHostStatus)),
1437
1762
  canStayAwake(),
1438
1763
  ghExtensions(),
1439
1764
  staleGhHelpers(),
1440
- tailscaleProbe(opts)
1765
+ tailscaleProbe(opts),
1766
+ opts.firewall !== void 0 ? opts.firewall : firewallProbe({
1767
+ rtcPort: opts.rtcPort ?? process.env.WORK_RTC_PORT,
1768
+ appPort: opts.port || process.env.PORT || process.env.WORK_APP_PORT || "7171",
1769
+ listen: opts.listen ?? process.env.WORK_LISTEN,
1770
+ rtc: opts.rtc ?? process.env.WORK_RTC
1771
+ })
1441
1772
  ]);
1442
1773
  const tools = TOOLS.map((t) => {
1443
1774
  if (t.ghExtension) {
@@ -1480,7 +1811,8 @@ async function doctor(opts = {}) {
1480
1811
  github,
1481
1812
  awake,
1482
1813
  staleGhHelpers: helpers,
1483
- tailscale
1814
+ tailscale,
1815
+ firewall
1484
1816
  };
1485
1817
  }
1486
1818
  //#endregion
@@ -7745,7 +8077,7 @@ function publishChange(sessionId) {
7745
8077
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
7746
8078
  if (row?.workspace_id) {
7747
8079
  const workspaceId = row.workspace_id;
7748
- import("./_HbAW5Cbt.js").then((m) => m.notifySessionsChanged(workspaceId));
8080
+ import("./_DiOv9AKj.js").then((m) => m.notifySessionsChanged(workspaceId));
7749
8081
  return;
7750
8082
  }
7751
8083
  publish("sessions.changed");
@@ -8688,7 +9020,7 @@ async function token() {
8688
9020
  const fromHosts = hostsToken();
8689
9021
  if (fromHosts) return fromHosts;
8690
9022
  try {
8691
- return await run$1("gh", ["auth", "token"]) || null;
9023
+ return await run$2("gh", ["auth", "token"]) || null;
8692
9024
  } catch {
8693
9025
  return null;
8694
9026
  }
@@ -9982,7 +10314,7 @@ async function listPanesNow() {
9982
10314
  * (tmux exits when its last session closes). */
9983
10315
  async function ensureTmuxServer() {
9984
10316
  if (await tmux(["has-session"]).then(() => true, () => false)) return;
9985
- await run$1("systemd-run", [
10317
+ await run$2("systemd-run", [
9986
10318
  "--user",
9987
10319
  `--unit=${TMUX_SOCKET === "work" ? "work-tmux" : `work-tmux-${TMUX_SOCKET.replace(/[^\w.:-]/g, "_")}`}`,
9988
10320
  "--service-type=forking",
@@ -10254,4 +10586,4 @@ function sleep(ms) {
10254
10586
  return new Promise((resolve) => setTimeout(resolve, ms));
10255
10587
  }
10256
10588
  //#endregion
10257
- export { saveSubscription as $, swr as $t, clearAgentPhase as A, TOOLS as At, agentBadge as B, readBody as Bt, readHookPayload as C, miseVersions as Ct, realInsideSync as D, which as Dt, realInside as E, tilde as Et, onPhaseChange as F, applyPrefChange as Ft, ACCENT_RE as G, TMUX_SOCKET as Gt, agentFromCommand as H, db as Ht, setAgentPhase as I, FRAME_ANCESTORS as It, manifest as J, gitEnv as Jt, getInstance as K, gh as Kt, setScrapedPhase as L, FRAME_HEADERS as Lt, hookReportedAt as M, agentLabel$1 as Mt, noteBackground as N, catalogPin as Nt, blankRow as O, DEFAULT_GITHUB_HOST as Ot, noteUserAnswered as P, toolById as Pt, pushPublicKey as Q, shared as Qt, setSessionViewers as R, checked as Rt, AGENTS as S, miseInstalls as St, inside as T, stableGh as Tt, agentLabel as U, get as Ut, agentFamily as V, all as Vt, agentMeta as W, workspacePath as Wt, setInstance as X, tmux as Xt, normalizeAccent as Y, run$1 as Yt, deleteSubscription as Z, config as Zt, renameSession as _, setPref as _t, ensureTmuxServer as a, subscriberCount as at, tmuxName as b, doctor as bt, killSession as c, agentChoices as ct, listPanesWithin as d, deleteWorkspacePrefs as dt, withLock as en, sendPush as et, listSessions as f, disabledAgents as ft, panePids as g, setDisabledAgents as gt, notifySessionsChanged as h, preferredAgent as ht, disposeSessions as i, subscribe as it, hookPhase as j, agentById as jt, agentPhase as k, PROJECT_TOOLS as kt, killWorkspaceSessions as l, allPrefs as lt, newSessionArgs as m, getSetting as mt, clearTmuxStarted as n, publish as nt, forgetPanes as o, PREF_MAX as ot, markTmuxStarted as p, enabledAgents as pt, iconSvg as q, git as qt, createSession as r, publishJson as rt, getSession as s, WORKSPACE_PREFS as st, cleanEnv as t, validSubscription as tt, listPanes as u, changePref as ut, sendToSession as v, setSetting as vt, reportsWorking as w, setupPath as wt, tmuxWasStarted as x, ghKnownHosts as xt, sessionStates as y, discoverAgents as yt, settleQuietWorking as z, httpError as zt };
10589
+ export { saveSubscription as $, shared as $t, clearAgentPhase as A, PROJECT_TOOLS as At, agentBadge as B, httpError as Bt, readHookPayload as C, miseVersions as Ct, realInsideSync as D, which as Dt, realInside as E, tilde as Et, onPhaseChange as F, toolById as Ft, ACCENT_RE as G, workspacePath as Gt, agentFromCommand as H, all as Ht, setAgentPhase as I, applyPrefChange as It, manifest as J, git as Jt, getInstance as K, TMUX_SOCKET as Kt, setScrapedPhase as L, FRAME_ANCESTORS as Lt, hookReportedAt as M, agentById as Mt, noteBackground as N, agentLabel$1 as Nt, blankRow as O, firewallProbe as Ot, noteUserAnswered as P, catalogPin as Pt, pushPublicKey as Q, config as Qt, setSessionViewers as R, FRAME_HEADERS as Rt, AGENTS as S, miseInstalls as St, inside as T, stableGh as Tt, agentLabel as U, db as Ut, agentFamily as V, readBody as Vt, agentMeta as W, get as Wt, setInstance as X, run$2 as Xt, normalizeAccent as Y, gitEnv as Yt, deleteSubscription as Z, tmux as Zt, renameSession as _, setPref as _t, ensureTmuxServer as a, subscriberCount as at, tmuxName as b, doctor as bt, killSession as c, agentChoices as ct, listPanesWithin as d, deleteWorkspacePrefs as dt, swr as en, sendPush as et, listSessions as f, disabledAgents as ft, panePids as g, setDisabledAgents as gt, notifySessionsChanged as h, preferredAgent as ht, disposeSessions as i, subscribe as it, hookPhase as j, TOOLS as jt, agentPhase as k, DEFAULT_GITHUB_HOST as kt, killWorkspaceSessions as l, allPrefs as lt, newSessionArgs as m, getSetting as mt, clearTmuxStarted as n, publish as nt, forgetPanes as o, PREF_MAX as ot, markTmuxStarted as p, enabledAgents as pt, iconSvg as q, gh as qt, createSession as r, publishJson as rt, getSession as s, WORKSPACE_PREFS as st, cleanEnv as t, withLock as tn, validSubscription as tt, listPanes as u, changePref as ut, sendToSession as v, setSetting as vt, reportsWorking as w, setupPath as wt, tmuxWasStarted as x, ghKnownHosts as xt, sessionStates as y, discoverAgents as yt, settleQuietWorking as z, checked as zt };
@@ -0,0 +1,2 @@
1
+ import { h as notifySessionsChanged } from "./_CzOrFOdN.js";
2
+ export { notifySessionsChanged };