@dylanpiercey/work 0.1.0 → 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.
- package/README.md +45 -5
- package/bin/work.mjs +449 -10
- package/dist/_BO3_WJb5.js +169 -0
- package/dist/{_Bq7to522.js → _CzOrFOdN.js} +527 -56
- package/dist/_DiOv9AKj.js +2 -0
- package/dist/index.mjs +8916 -7891
- package/dist/public/assets/{_Dytf99zx.js → _3hcTpTUc.js} +1 -1
- package/dist/public/assets/_3hcTpTUc.js.br +0 -0
- package/dist/public/assets/_88jVvZ6C.js +1 -0
- package/dist/public/assets/{_DrIgZJzN.js → _B0FtZL3L.js} +1 -1
- package/dist/public/assets/_B0FtZL3L.js.br +0 -0
- package/dist/public/assets/{_C0_s45qg.js → _B0rj5kOY.js} +1 -1
- package/dist/public/assets/_B0rj5kOY.js.br +0 -0
- package/dist/public/assets/{_BNW5Jiec.js → _B3aw0q8p.js} +1 -1
- package/dist/public/assets/_B3aw0q8p.js.br +0 -0
- package/dist/public/assets/{_Bhx319Hi.js → _B42XfAog.js} +1 -1
- package/dist/public/assets/_B42XfAog.js.br +0 -0
- package/dist/public/assets/_B5Ih3Lwt.js +1 -0
- package/dist/public/assets/_B6jh-_o_.js +1 -0
- package/dist/public/assets/_B8FHVXDZ.js +1 -0
- package/dist/public/assets/_BBJYNk03.js +1 -0
- package/dist/public/assets/{_D4q8XSMI.js → _BBk5_vEh.js} +1 -1
- package/dist/public/assets/_BBk5_vEh.js.br +0 -0
- package/dist/public/assets/_BCS_gQxR.js +15 -0
- package/dist/public/assets/_BCS_gQxR.js.br +0 -0
- package/dist/public/assets/{_BvXp6HpX.js → _BDBxSbjY.js} +1 -1
- package/dist/public/assets/_BDBxSbjY.js.br +0 -0
- package/dist/public/assets/_BDkqB224.js +1 -0
- package/dist/public/assets/{_SGDxiwE1.js → _BEtl4C9q.js} +1 -1
- package/dist/public/assets/_BEtl4C9q.js.br +0 -0
- package/dist/public/assets/{_DDl8KSWJ.js → _BJZwk-Pf.js} +1 -1
- package/dist/public/assets/_BJZwk-Pf.js.br +0 -0
- package/dist/public/assets/{_CpjSCB1I.js → _BM8qop28.js} +1 -1
- package/dist/public/assets/_BM8qop28.js.br +0 -0
- package/dist/public/assets/_BNL2e5az.js +1 -0
- package/dist/public/assets/{_CEXHZd73.js → _BODl5Jdc.js} +1 -1
- package/dist/public/assets/_BODl5Jdc.js.br +0 -0
- package/dist/public/assets/{_De7P3jUH.js → _BOe3voZI.js} +1 -1
- package/dist/public/assets/_BOe3voZI.js.br +0 -0
- package/dist/public/assets/{_eoa1EOU-.js → _BPW-OoaM.js} +1 -1
- package/dist/public/assets/_BPW-OoaM.js.br +0 -0
- package/dist/public/assets/{_BE_Jyvqd.js → _BSHUa-H0.js} +1 -1
- package/dist/public/assets/_BSHUa-H0.js.br +0 -0
- package/dist/public/assets/_BTXURtlK.js +1 -0
- package/dist/public/assets/{_Bp8-V8yl.js → _BU4lH-F3.js} +1 -1
- package/dist/public/assets/_BU4lH-F3.js.br +0 -0
- package/dist/public/assets/{_wcshV0sZ.js → _BVGSrb9C.js} +1 -1
- package/dist/public/assets/_BVGSrb9C.js.br +0 -0
- package/dist/public/assets/{_CTINBWaG.js → _BXyDScMX.js} +1 -1
- package/dist/public/assets/_BXyDScMX.js.br +0 -0
- package/dist/public/assets/{_Bm4SHrNp.js → _BZXtyNwD.js} +1 -1
- package/dist/public/assets/_BZXtyNwD.js.br +0 -0
- package/dist/public/assets/{_DfI982PI.js → _B_iUZxSk.js} +1 -1
- package/dist/public/assets/_B_iUZxSk.js.br +0 -0
- package/dist/public/assets/_B_klvcQs.js +1 -0
- package/dist/public/assets/{_CHuLFr1f.js → _BaNsw5pr.js} +1 -1
- package/dist/public/assets/_BaNsw5pr.js.br +0 -0
- package/dist/public/assets/_BbPq34k8.js +1 -0
- package/dist/public/assets/{_CAkPJLeF.js → _BfDaM2KU.js} +1 -1
- package/dist/public/assets/{_CAkPJLeF.js.br → _BfDaM2KU.js.br} +0 -0
- package/dist/public/assets/_Bk1naXp4.js +1 -0
- package/dist/public/assets/{_BOGkzMx9.js → _BkNKadGd.js} +1 -1
- package/dist/public/assets/_BkNKadGd.js.br +0 -0
- package/dist/public/assets/_BkztnqUW.js +1 -0
- package/dist/public/assets/_BkztnqUW.js.br +0 -0
- package/dist/public/assets/_BlNBDTvP.js +1 -0
- package/dist/public/assets/_BlNBDTvP.js.br +0 -0
- package/dist/public/assets/_BlUmx1wN.js +1 -0
- package/dist/public/assets/_Ble8b9gd.js +1 -0
- package/dist/public/assets/{_BDa-iwuj.js → _BpEvAl9E.js} +1 -1
- package/dist/public/assets/_BpEvAl9E.js.br +0 -0
- package/dist/public/assets/_Bqyvdrqf.js +1 -0
- package/dist/public/assets/_BsA2bpua.js +1 -0
- package/dist/public/assets/_BsA2bpua.js.br +0 -0
- package/dist/public/assets/_BsAVia13.js +1 -0
- package/dist/public/assets/_BtxLmMRq.js +1 -0
- package/dist/public/assets/{_ClldMY37.js → _Byfemjjt.js} +1 -1
- package/dist/public/assets/_Byfemjjt.js.br +0 -0
- package/dist/public/assets/{_MCwIJAuJ.js → _Bz94qqXL.js} +1 -1
- package/dist/public/assets/_Bz94qqXL.js.br +0 -0
- package/dist/public/assets/_C-HIZYIZ.js +1 -0
- package/dist/public/assets/{_D4quFMVQ.js → _C-UGjoFi.js} +1 -1
- package/dist/public/assets/_C-UGjoFi.js.br +0 -0
- package/dist/public/assets/{_wXDh-Z2N.js → _C-jXvDAe.js} +1 -1
- package/dist/public/assets/_C-jXvDAe.js.br +0 -0
- package/dist/public/assets/{_Ct3RF80L.js → _C2b1kmvc.js} +1 -1
- package/dist/public/assets/_C2b1kmvc.js.br +0 -0
- package/dist/public/assets/{_CIb7xw_1.js → _C3PIXMJF.js} +1 -1
- package/dist/public/assets/_C3PIXMJF.js.br +0 -0
- package/dist/public/assets/_C6eXJBpX.js +1 -0
- package/dist/public/assets/{_C654p96Z.js → _C7Xd05b1.js} +1 -1
- package/dist/public/assets/_C7Xd05b1.js.br +0 -0
- package/dist/public/assets/_C8jPP8tm.js +1 -0
- package/dist/public/assets/{_CamWDaoG.js → _CB9BGKKP.js} +1 -1
- package/dist/public/assets/_CB9BGKKP.js.br +0 -0
- package/dist/public/assets/{_bcsuBP7T.js → _CD44YUtO.js} +1 -1
- package/dist/public/assets/_CD44YUtO.js.br +0 -0
- package/dist/public/assets/{_D6kktUFn.js → _CEXagH_p.js} +1 -1
- package/dist/public/assets/_CEXagH_p.js.br +0 -0
- package/dist/public/assets/_CFOiLJdu.js +1 -0
- package/dist/public/assets/_CFOiLJdu.js.br +0 -0
- package/dist/public/assets/{_D1uRW1qz.js → _CGrClLsS.js} +1 -1
- package/dist/public/assets/_CGrClLsS.js.br +0 -0
- package/dist/public/assets/_CHJuzFIS.js +1 -0
- package/dist/public/assets/{_DC-78WeM.js → _CJ7DGNLC.js} +1 -1
- package/dist/public/assets/_CJ7DGNLC.js.br +0 -0
- package/dist/public/assets/_CJG7LF4o.js +1 -0
- package/dist/public/assets/_CK0tdQ6M.js +1591 -0
- package/dist/public/assets/_CK0tdQ6M.js.br +0 -0
- package/dist/public/assets/{_CMSBfO6u.js → _CKcab_6c.js} +1 -1
- package/dist/public/assets/_CKcab_6c.js.br +0 -0
- package/dist/public/assets/{_8G2Mv7jG.js → _CKpSd2DN.js} +1 -1
- package/dist/public/assets/_CKpSd2DN.js.br +0 -0
- package/dist/public/assets/{_zSAfqXcm.js → _CKy2HduV.js} +1 -1
- package/dist/public/assets/_CKy2HduV.js.br +0 -0
- package/dist/public/assets/{_BUvqweu0.js → _CLikwAg5.js} +1 -1
- package/dist/public/assets/_CLikwAg5.js.br +0 -0
- package/dist/public/assets/{_CxAPL49a.js → _CM-AIl7T.js} +1 -1
- package/dist/public/assets/_CM-AIl7T.js.br +0 -0
- package/dist/public/assets/_CMwrJ1ju.js +1 -0
- package/dist/public/assets/_CMwrJ1ju.js.br +0 -0
- package/dist/public/assets/_CQG-EbMi.js +1 -0
- package/dist/public/assets/_CUl36Gcx.js +1 -0
- package/dist/public/assets/{_BwP07uVS.js → _CUq2djIT.js} +1 -1
- package/dist/public/assets/_CUq2djIT.js.br +0 -0
- package/dist/public/assets/{_DFWOMF-B.js → _CWSGdqC2.js} +1 -1
- package/dist/public/assets/_CWSGdqC2.js.br +0 -0
- package/dist/public/assets/_CXK3AUqn.js +1 -0
- package/dist/public/assets/{_d5u7EI97.js → _CYYRiJuo.js} +1 -1
- package/dist/public/assets/_CYYRiJuo.js.br +0 -0
- package/dist/public/assets/_CYr8GcJI.js +1 -0
- package/dist/public/assets/{_8dvK2NDJ.js → _CaFhYr8X.js} +1 -1
- package/dist/public/assets/_CaFhYr8X.js.br +0 -0
- package/dist/public/assets/_CbzGfu_I.js +1 -0
- package/dist/public/assets/{_CZ_OWtIT.js → _Cd85Xtd1.js} +1 -1
- package/dist/public/assets/_Cd85Xtd1.js.br +0 -0
- package/dist/public/assets/_Ch-bwiFD.js +1 -0
- package/dist/public/assets/_ClGAsZdo.js +1 -0
- package/dist/public/assets/_ClGAsZdo.js.br +0 -0
- package/dist/public/assets/_ClhDmYWO.js +1 -0
- package/dist/public/assets/_ClhDmYWO.js.br +0 -0
- package/dist/public/assets/{_9kX9D09B.js → _Cm85V2m3.js} +1 -1
- package/dist/public/assets/_Cm85V2m3.js.br +0 -0
- package/dist/public/assets/_Cp4ZjGeg.js +1 -0
- package/dist/public/assets/{_C_37_B6u.js → _CsRnEvC3.js} +1 -1
- package/dist/public/assets/_CsRnEvC3.js.br +0 -0
- package/dist/public/assets/_CtFo1511.js +1 -0
- package/dist/public/assets/{_DcMIlvz-.js → _CtIpOiCk.js} +1 -1
- package/dist/public/assets/_CtIpOiCk.js.br +0 -0
- package/dist/public/assets/{_D4rOX-Fa.js → _CwOgQx7H.js} +1 -1
- package/dist/public/assets/_CwOgQx7H.js.br +0 -0
- package/dist/public/assets/_CwtVecVY.js +1 -0
- package/dist/public/assets/_Cxuln-KJ.js +1 -0
- package/dist/public/assets/_CyYNC4Ow.js +1 -0
- package/dist/public/assets/{_Dd6X3e7w.js → _Cy_g0woP.js} +1 -1
- package/dist/public/assets/_Cy_g0woP.js.br +0 -0
- package/dist/public/assets/{_COcePo2y.js → _CzDRlITT.js} +1 -1
- package/dist/public/assets/_CzDRlITT.js.br +0 -0
- package/dist/public/assets/_Czq9fyjZ.js +1 -0
- package/dist/public/assets/{_B582D2rg.js → _D1Rh4MKD.js} +1 -1
- package/dist/public/assets/_D2edy8B-.js +1 -0
- package/dist/public/assets/_D2edy8B-.js.br +0 -0
- package/dist/public/assets/_D2pdXUO3.js +1 -0
- package/dist/public/assets/_D4M5BFEU.js +1 -0
- package/dist/public/assets/{_D0aoEFRx.js → _D749nUfQ.js} +1 -1
- package/dist/public/assets/_D749nUfQ.js.br +0 -0
- package/dist/public/assets/_D7mcWce0.js +2 -0
- package/dist/public/assets/_D7mcWce0.js.br +0 -0
- package/dist/public/assets/{_BpoeUr5j.js → _D81sIY4I.js} +1 -1
- package/dist/public/assets/_D81sIY4I.js.br +0 -0
- package/dist/public/assets/{_D9sS4J_w.js → _D8Opg0DA.js} +1 -1
- package/dist/public/assets/_D8Opg0DA.js.br +0 -0
- package/dist/public/assets/{_B7GwDeKK.js → _DCJrZQ6J.js} +1 -1
- package/dist/public/assets/_DEPHQNx4.js +1 -0
- package/dist/public/assets/_DEtYVOe1.js +1 -0
- package/dist/public/assets/_DJ4gN7dQ.js +1 -0
- package/dist/public/assets/_DJ9NEjwG.js +1 -0
- package/dist/public/assets/{_xyw_DS5P.js → _DJUeUZKF.js} +1 -1
- package/dist/public/assets/_DJUeUZKF.js.br +0 -0
- package/dist/public/assets/_DLZswhbS.js +1 -0
- package/dist/public/assets/{_BywcP-As.js → _DMEtxMrc.js} +1 -1
- package/dist/public/assets/_DMEtxMrc.js.br +0 -0
- package/dist/public/assets/{_DqhphdU4.js → _DOr6ubI-.js} +1 -1
- package/dist/public/assets/_DOr6ubI-.js.br +0 -0
- package/dist/public/assets/{_ch_yXAap.js → _DQu5M2GV.js} +1 -1
- package/dist/public/assets/_DQu5M2GV.js.br +0 -0
- package/dist/public/assets/_DUvup9ew.js +1 -0
- package/dist/public/assets/{_CEJUcePr.js → _DWrhUk5T.js} +1 -1
- package/dist/public/assets/_DWrhUk5T.js.br +0 -0
- package/dist/public/assets/{_Bv3qNE1b.js → _DXOx4zKx.js} +1 -1
- package/dist/public/assets/_D_1b7pob.js +1 -0
- package/dist/public/assets/_Daap2skI.js +1 -0
- package/dist/public/assets/{_CUXajOKj.js → _DcktT8yN.js} +1 -1
- package/dist/public/assets/_DcktT8yN.js.br +0 -0
- package/dist/public/assets/{_D2un443j.js → _Ddc9Y9a_.js} +1 -1
- package/dist/public/assets/_Ddc9Y9a_.js.br +0 -0
- package/dist/public/assets/{_BBWaxDkO.js → _Dfjlzo9W.js} +1 -1
- package/dist/public/assets/_Dfjlzo9W.js.br +0 -0
- package/dist/public/assets/_Dh30YzVM.js +1 -0
- package/dist/public/assets/_DhohfuPc.js +1 -0
- package/dist/public/assets/_DjQz8h-q.js +1 -0
- package/dist/public/assets/_DjX1BGKn.js +1 -0
- package/dist/public/assets/_DjiaxzEs.js +1 -0
- package/dist/public/assets/_Dkg-QEnz.js +1 -0
- package/dist/public/assets/{_Bx1CW-sF.js → _Dl46-33v.js} +1 -1
- package/dist/public/assets/_Dl46-33v.js.br +0 -0
- package/dist/public/assets/_DlvIY6aE.js +1 -0
- package/dist/public/assets/{_DxEm-Gwj.js → _Dmi6AQP3.js} +1 -1
- package/dist/public/assets/_Dmi6AQP3.js.br +0 -0
- package/dist/public/assets/{_BbbOvNRH.js → _Dmj0vHNs.js} +1 -1
- package/dist/public/assets/{_BbbOvNRH.js.br → _Dmj0vHNs.js.br} +0 -0
- package/dist/public/assets/{_DSVLaMWS.js → _DnYboxB9.js} +1 -1
- package/dist/public/assets/_DnYboxB9.js.br +0 -0
- package/dist/public/assets/{_Cz5BPBG8.js → _Do6MGycg.js} +1 -1
- package/dist/public/assets/_Do6MGycg.js.br +0 -0
- package/dist/public/assets/{_DkCaEf_h.js → _DtZ-vebM.js} +1 -1
- package/dist/public/assets/_DtZ-vebM.js.br +0 -0
- package/dist/public/assets/_DuNisSjT.js +1 -0
- package/dist/public/assets/_Dvk-TlMq.js +1 -0
- package/dist/public/assets/_Dvk-TlMq.js.br +0 -0
- package/dist/public/assets/_DwdnhMjL.js +1 -0
- package/dist/public/assets/_DwydmxSi.js +1 -0
- package/dist/public/assets/_DzgHDUu0.js +1 -0
- package/dist/public/assets/{_Dp3IZdH8.js → _G-e2JHHS.js} +1 -1
- package/dist/public/assets/_G-e2JHHS.js.br +0 -0
- package/dist/public/assets/_IOS0xG1B.js +1 -0
- package/dist/public/assets/_IiZnk_jc.js +1 -0
- package/dist/public/assets/{_DaMVRI8f.js → _KYdxhRVL.js} +1 -1
- package/dist/public/assets/_KYdxhRVL.js.br +0 -0
- package/dist/public/assets/_LY1sEEvJ.js +1 -0
- package/dist/public/assets/_MATnTPAL.js +1 -0
- package/dist/public/assets/_MATnTPAL.js.br +0 -0
- package/dist/public/assets/_OVl4e0V3.js +1 -0
- package/dist/public/assets/{_Bf8WYPfh.js → _Sv1HjkeK.js} +1 -1
- package/dist/public/assets/_Sv1HjkeK.js.br +0 -0
- package/dist/public/assets/_Syg4UyQU.js +86 -0
- package/dist/public/assets/_Syg4UyQU.js.br +0 -0
- package/dist/public/assets/_TJCslr2g.js +1 -0
- package/dist/public/assets/_UcXY-7XH.js +2 -0
- package/dist/public/assets/_UcXY-7XH.js.br +0 -0
- package/dist/public/assets/{_j2tDSMvo.js → _VM9JbUGP.js} +1 -1
- package/dist/public/assets/_VM9JbUGP.js.br +0 -0
- package/dist/public/assets/_YOjtJWMK.js +1 -0
- package/dist/public/assets/_YOjtJWMK.js.br +10 -0
- package/dist/public/assets/_YPt61819.js +1 -0
- package/dist/public/assets/{_DbvaGqOl.js → _Zh4-3iG-.js} +1 -1
- package/dist/public/assets/_Zh4-3iG-.js.br +0 -0
- package/dist/public/assets/{_D4dJ2qEE.js → _ZptG1LQC.js} +1 -1
- package/dist/public/assets/_brnakAIx.js +1 -0
- package/dist/public/assets/_bsxJ1YDE.js +1 -0
- package/dist/public/assets/_f5wPpUkq.js +1 -0
- package/dist/public/assets/_fPqLhj85.js +1 -0
- package/dist/public/assets/_g3oXW6NQ.js +1 -0
- package/dist/public/assets/_iHPPeFV7.js +1 -0
- package/dist/public/assets/_iJwEKWn1.js +1 -0
- package/dist/public/assets/_jtFrcV5d.js +1 -0
- package/dist/public/assets/{_Bv3e3rg8.js → _kQ9qYC7a.js} +1 -1
- package/dist/public/assets/_kQ9qYC7a.js.br +0 -0
- package/dist/public/assets/_kQki_UDN.js +1 -0
- package/dist/public/assets/_lRRU15CX.js +1 -0
- package/dist/public/assets/_lRRU15CX.js.br +0 -0
- package/dist/public/assets/_mKx7UwEC.js +1 -0
- package/dist/public/assets/_nnKb_fyX.js +6 -0
- package/dist/public/assets/_nnKb_fyX.js.br +0 -0
- package/dist/public/assets/_p44jCyhe.js +1 -0
- package/dist/public/assets/_pAx6IPLY.js +1 -0
- package/dist/public/assets/_psqSIrEM.js +1 -0
- package/dist/public/assets/{_CyBCIknf.js → _w_IRrfdL.js} +1 -1
- package/dist/public/assets/_w_IRrfdL.js.br +0 -0
- package/dist/public/assets/_wxSNlWQ_.js +1 -0
- package/dist/public/assets/_xPBJn0Hx.js +1 -0
- package/dist/public/assets/_xPBJn0Hx.js.br +0 -0
- package/dist/public/assets/_yP2G9NCR.js +1 -0
- package/dist/public/assets/app-shell-CVYlktwa.css +1 -0
- package/dist/public/assets/app-shell-CVYlktwa.css.br +0 -0
- package/dist/public/assets/files-view-SzdFekvc.js +2 -0
- package/dist/public/assets/manage-workspace-DIY2p0qY.js +2 -0
- package/dist/public/assets/new-dBLsQZ5Y.js +1 -0
- package/dist/public/assets/new-workspace-D6YmZcwM.js +2 -0
- package/dist/public/assets/review-view-Dr5gLqyl.js +2 -0
- package/dist/public/assets/settings-dBLsQZ5Y.js +1 -0
- package/dist/public/assets/settings-page-COg15zf5.js +2 -0
- package/dist/public/assets/styles-DqimleOa.css +1 -0
- package/dist/public/assets/styles-DqimleOa.css.br +0 -0
- package/dist/public/assets/w-dBLsQZ5Y.js +1 -0
- package/dist/public/assets/w._-BbJyr8oS.js +1 -0
- package/dist/public/assets/w._-Bbhvn-OV.js +1 -0
- package/dist/public/assets/w._-dBLsQZ5Y.js +1 -0
- package/dist/rtc-helper.mjs +1170 -0
- package/lib/preview/media.mjs +5 -4
- package/lib/setup/doctor.d.mts +23 -1
- package/lib/setup/doctor.mjs +75 -9
- package/lib/setup/firewall.d.mts +76 -0
- package/lib/setup/firewall.mjs +598 -0
- package/lib/setup/tailscale.d.mts +53 -0
- package/lib/setup/tailscale.mjs +179 -0
- package/package.json +3 -2
- package/dist/_CkwTsHKB.js +0 -2
- package/dist/public/assets/_1RHVsAcK.js +0 -1
- package/dist/public/assets/_4CShjaLP.js +0 -1
- package/dist/public/assets/_68JtNDO1.js +0 -1
- package/dist/public/assets/_8G2Mv7jG.js.br +0 -0
- package/dist/public/assets/_8dvK2NDJ.js.br +0 -0
- package/dist/public/assets/_94L2SIJF.js +0 -1
- package/dist/public/assets/_9AnDb3YH.js +0 -1
- package/dist/public/assets/_9kX9D09B.js.br +0 -0
- package/dist/public/assets/_9lErVegn.js +0 -1
- package/dist/public/assets/_B0oyGUU5.js +0 -1
- package/dist/public/assets/_B0oyGUU5.js.br +0 -0
- package/dist/public/assets/_B1mPnLlp.js +0 -1
- package/dist/public/assets/_B4fi2SSA.js +0 -1
- package/dist/public/assets/_B7Qx25UP.js +0 -1
- package/dist/public/assets/_B7b8EVjA.js +0 -1
- package/dist/public/assets/_BBWaxDkO.js.br +0 -0
- package/dist/public/assets/_BDa-iwuj.js.br +0 -0
- package/dist/public/assets/_BEKHKNmM.js +0 -1
- package/dist/public/assets/_BE_Jyvqd.js.br +0 -0
- package/dist/public/assets/_BFU-kJkk.js +0 -1
- package/dist/public/assets/_BIJ2O2oU.js +0 -1
- package/dist/public/assets/_BJ59XAZ9.js +0 -1
- package/dist/public/assets/_BKqRYfOI.js +0 -15
- package/dist/public/assets/_BKqRYfOI.js.br +0 -0
- package/dist/public/assets/_BKr9Dzz1.js +0 -1
- package/dist/public/assets/_BN7xvxS_.js +0 -1
- package/dist/public/assets/_BNQTVBlH.js +0 -1
- package/dist/public/assets/_BNW5Jiec.js.br +0 -0
- package/dist/public/assets/_BOGkzMx9.js.br +0 -0
- package/dist/public/assets/_BUEpqQ_m.js +0 -1
- package/dist/public/assets/_BUvqweu0.js.br +0 -0
- package/dist/public/assets/_BZKB4fhr.js +0 -1
- package/dist/public/assets/_BZKB4fhr.js.br +0 -0
- package/dist/public/assets/_BZo9BjDF.js +0 -1
- package/dist/public/assets/_BdUNnSlC.js +0 -1
- package/dist/public/assets/_Bf8WYPfh.js.br +0 -0
- package/dist/public/assets/_Bhx319Hi.js.br +0 -0
- package/dist/public/assets/_Bm4SHrNp.js.br +0 -0
- package/dist/public/assets/_Bmrqq8Ro.js +0 -2
- package/dist/public/assets/_Bmrqq8Ro.js.br +0 -0
- package/dist/public/assets/_BnHZ6Npj.js +0 -1
- package/dist/public/assets/_BoDxRJLS.js +0 -1
- package/dist/public/assets/_BoDxRJLS.js.br +0 -0
- package/dist/public/assets/_BoPk1gXL.js +0 -1
- package/dist/public/assets/_Bo_Ru664.js +0 -1
- package/dist/public/assets/_Bp8-V8yl.js.br +0 -0
- package/dist/public/assets/_BpoeUr5j.js.br +0 -0
- package/dist/public/assets/_Bq2G_Tid.js +0 -1
- package/dist/public/assets/_BsyoLB_D.js +0 -1
- package/dist/public/assets/_Bv3e3rg8.js.br +0 -0
- package/dist/public/assets/_BvXp6HpX.js.br +0 -0
- package/dist/public/assets/_BwP07uVS.js.br +0 -0
- package/dist/public/assets/_Bx1CW-sF.js.br +0 -0
- package/dist/public/assets/_BywcP-As.js.br +0 -0
- package/dist/public/assets/_Bzgtwt3G.js +0 -1
- package/dist/public/assets/_Bzgtwt3G.js.br +0 -0
- package/dist/public/assets/_C0_s45qg.js.br +0 -0
- package/dist/public/assets/_C0ePgF6b.js +0 -1
- package/dist/public/assets/_C0oVtTqO.js +0 -1
- package/dist/public/assets/_C0oVtTqO.js.br +0 -0
- package/dist/public/assets/_C654p96Z.js.br +0 -0
- package/dist/public/assets/_C8_1Y2-z.js +0 -1
- package/dist/public/assets/_C8_1Y2-z.js.br +0 -0
- package/dist/public/assets/_C8v1AZFP.js +0 -1
- package/dist/public/assets/_CB0D5cRH.js +0 -1
- package/dist/public/assets/_CD05JUTh.js +0 -1
- package/dist/public/assets/_CEJUcePr.js.br +0 -0
- package/dist/public/assets/_CEXHZd73.js.br +0 -0
- package/dist/public/assets/_CHcUMVR7.js +0 -1
- package/dist/public/assets/_CHuLFr1f.js.br +0 -0
- package/dist/public/assets/_CIb7xw_1.js.br +0 -0
- package/dist/public/assets/_CMSBfO6u.js.br +0 -0
- package/dist/public/assets/_CN7GPyBo.js +0 -1
- package/dist/public/assets/_COcePo2y.js.br +0 -0
- package/dist/public/assets/_CTINBWaG.js.br +0 -0
- package/dist/public/assets/_CTWrnAbz.js +0 -1
- package/dist/public/assets/_CUXajOKj.js.br +0 -0
- package/dist/public/assets/_CVru3vzC.js +0 -1
- package/dist/public/assets/_CYjE__ml.js +0 -1
- package/dist/public/assets/_CYjE__ml.js.br +0 -0
- package/dist/public/assets/_CZ_OWtIT.js.br +0 -0
- package/dist/public/assets/_C_37_B6u.js.br +0 -0
- package/dist/public/assets/_C_CIQL7J.js +0 -1
- package/dist/public/assets/_C_CIQL7J.js.br +0 -0
- package/dist/public/assets/_C_WdpYbK.js +0 -1
- package/dist/public/assets/_CaiH3VN9.js +0 -1
- package/dist/public/assets/_CamWDaoG.js.br +0 -0
- package/dist/public/assets/_CdDElA0V.js +0 -1
- package/dist/public/assets/_CfnsClzZ.js +0 -1
- package/dist/public/assets/_Cgo1fRhJ.js +0 -1
- package/dist/public/assets/_Cgo1fRhJ.js.br +0 -0
- package/dist/public/assets/_CjhGrlf3.js +0 -1
- package/dist/public/assets/_CjlbL4C_.js +0 -1
- package/dist/public/assets/_CjogTUXK.js +0 -1
- package/dist/public/assets/_ClldMY37.js.br +0 -0
- package/dist/public/assets/_CmFq6Gtp.js +0 -1
- package/dist/public/assets/_CoAPOKiP.js +0 -1
- package/dist/public/assets/_CoUUgh9P.js +0 -1
- package/dist/public/assets/_CpjSCB1I.js.br +0 -0
- package/dist/public/assets/_Ct3RF80L.js.br +0 -0
- package/dist/public/assets/_CtYy5eZs.js +0 -1
- package/dist/public/assets/_CxAPL49a.js.br +0 -0
- package/dist/public/assets/_CyBCIknf.js.br +0 -0
- package/dist/public/assets/_Cz5BPBG8.js.br +0 -0
- package/dist/public/assets/_D-eEFXaI.js +0 -1
- package/dist/public/assets/_D0aoEFRx.js.br +0 -0
- package/dist/public/assets/_D1uRW1qz.js.br +0 -0
- package/dist/public/assets/_D2oIr2T2.js +0 -1
- package/dist/public/assets/_D2un443j.js.br +0 -0
- package/dist/public/assets/_D3MPx4-f.js +0 -1
- package/dist/public/assets/_D4q8XSMI.js.br +0 -0
- package/dist/public/assets/_D4quFMVQ.js.br +0 -0
- package/dist/public/assets/_D4rOX-Fa.js.br +0 -0
- package/dist/public/assets/_D5edrSyA.js +0 -1
- package/dist/public/assets/_D6kktUFn.js.br +0 -0
- package/dist/public/assets/_D80-qtVY.js +0 -1
- package/dist/public/assets/_D9-3EVA4.js +0 -1
- package/dist/public/assets/_D9sS4J_w.js.br +0 -0
- package/dist/public/assets/_DBLpxTDi.js +0 -1
- package/dist/public/assets/_DByHQ7nW.js +0 -1591
- package/dist/public/assets/_DByHQ7nW.js.br +0 -0
- package/dist/public/assets/_DC-78WeM.js.br +0 -0
- package/dist/public/assets/_DDl8KSWJ.js.br +0 -0
- package/dist/public/assets/_DFWOMF-B.js.br +0 -0
- package/dist/public/assets/_DKb-rt9n.js +0 -1
- package/dist/public/assets/_DMnSJCF_.js +0 -1
- package/dist/public/assets/_DOOIlrPh.js +0 -1
- package/dist/public/assets/_DPW-0yKP.js +0 -1
- package/dist/public/assets/_DR3BmvWU.js +0 -1
- package/dist/public/assets/_DSVLaMWS.js.br +0 -0
- package/dist/public/assets/_DYNGNKLk.js +0 -1
- package/dist/public/assets/_DZnEgCbj.js +0 -1
- package/dist/public/assets/_DaMVRI8f.js.br +0 -0
- package/dist/public/assets/_DbvaGqOl.js.br +0 -0
- package/dist/public/assets/_DcMIlvz-.js.br +0 -0
- package/dist/public/assets/_Dd6X3e7w.js.br +0 -0
- package/dist/public/assets/_De7P3jUH.js.br +0 -0
- package/dist/public/assets/_DeiFEAar.js +0 -1
- package/dist/public/assets/_DfI982PI.js.br +0 -0
- package/dist/public/assets/_DfZ6emcw.js +0 -1
- package/dist/public/assets/_Dj1lZ1pa.js +0 -86
- package/dist/public/assets/_Dj1lZ1pa.js.br +0 -0
- package/dist/public/assets/_DkCaEf_h.js.br +0 -0
- package/dist/public/assets/_DonAis0J.js +0 -1
- package/dist/public/assets/_Dp3IZdH8.js.br +0 -0
- package/dist/public/assets/_DqYih4xk.js +0 -1
- package/dist/public/assets/_DqYih4xk.js.br +0 -0
- package/dist/public/assets/_DqhphdU4.js.br +0 -0
- package/dist/public/assets/_DrIgZJzN.js.br +0 -0
- package/dist/public/assets/_Dt4hHR05.js +0 -1
- package/dist/public/assets/_DtTbTraA.js +0 -1
- package/dist/public/assets/_DwMxAJKP.js +0 -1
- package/dist/public/assets/_DxEm-Gwj.js.br +0 -0
- package/dist/public/assets/_Dytf99zx.js.br +0 -0
- package/dist/public/assets/_EAgv5jR9.js +0 -1
- package/dist/public/assets/_Iecpd0kS.js +0 -1
- package/dist/public/assets/_Iecpd0kS.js.br +0 -0
- package/dist/public/assets/_MCwIJAuJ.js.br +0 -0
- package/dist/public/assets/_NM79Lu3L.js +0 -6
- package/dist/public/assets/_NM79Lu3L.js.br +0 -0
- package/dist/public/assets/_QpNKKuS9.js +0 -1
- package/dist/public/assets/_SGDxiwE1.js.br +0 -0
- package/dist/public/assets/_TA8pE7z9.js +0 -1
- package/dist/public/assets/_bE4sNDeU.js +0 -1
- package/dist/public/assets/_bcsuBP7T.js.br +0 -0
- package/dist/public/assets/_cdcAU4yY.js +0 -1
- package/dist/public/assets/_ch_yXAap.js.br +0 -0
- package/dist/public/assets/_d5u7EI97.js.br +0 -0
- package/dist/public/assets/_eoa1EOU-.js.br +0 -0
- package/dist/public/assets/_j2tDSMvo.js.br +0 -0
- package/dist/public/assets/_jNhIFgbc.js +0 -1
- package/dist/public/assets/_kDYiTaag.js +0 -1
- package/dist/public/assets/_lNMVVbUx.js +0 -1
- package/dist/public/assets/_nwJ7Hu3S.js +0 -1
- package/dist/public/assets/_tmDtUACa.js +0 -1
- package/dist/public/assets/_tmDtUACa.js.br +0 -0
- package/dist/public/assets/_wXDh-Z2N.js.br +0 -0
- package/dist/public/assets/_wcshV0sZ.js.br +0 -0
- package/dist/public/assets/_x-NwqgCn.js +0 -1
- package/dist/public/assets/_xyw_DS5P.js.br +0 -0
- package/dist/public/assets/_zSAfqXcm.js.br +0 -0
- package/dist/public/assets/app-shell-ChQoVC5b.css +0 -1
- package/dist/public/assets/app-shell-ChQoVC5b.css.br +0 -0
- package/dist/public/assets/files-view-CLtLp_BW.js +0 -2
- package/dist/public/assets/files-view-CNHQapdI.css +0 -1
- package/dist/public/assets/files-view-CNHQapdI.css.br +0 -0
- package/dist/public/assets/group.css.ts-BG82htKb.css +0 -1
- package/dist/public/assets/group.css.ts-BG82htKb.css.br +0 -0
- package/dist/public/assets/icon-folder-DJOHuEpD.css +0 -1
- package/dist/public/assets/icon-folder-DJOHuEpD.css.br +0 -0
- package/dist/public/assets/icon-search-DsJuFXUJ.css +0 -1
- package/dist/public/assets/icon-search-DsJuFXUJ.css.br +0 -0
- package/dist/public/assets/manage-workspace-NBcFDyrB.js +0 -2
- package/dist/public/assets/manage-workspace-f_Np32TD.css +0 -1
- package/dist/public/assets/modal-view-KVNBpNYi.css +0 -1
- package/dist/public/assets/modal-view-KVNBpNYi.css.br +0 -0
- package/dist/public/assets/new-DHI77GvL.js +0 -1
- package/dist/public/assets/new-workspace-BFE-HpD_.css +0 -1
- package/dist/public/assets/new-workspace-BFE-HpD_.css.br +0 -0
- package/dist/public/assets/new-workspace-BRzimdd5.js +0 -2
- package/dist/public/assets/port-chip-CUUIDOVM.css +0 -1
- package/dist/public/assets/port-chip-CUUIDOVM.css.br +0 -0
- package/dist/public/assets/prompt-dialog-BGs6RXOV.css +0 -1
- package/dist/public/assets/prompt-dialog-BGs6RXOV.css.br +0 -0
- package/dist/public/assets/quick-open-Gx4so1bl.css +0 -1
- package/dist/public/assets/quick-open-Gx4so1bl.css.br +0 -0
- package/dist/public/assets/repo-picker-CUhd0vJN.css +0 -1
- package/dist/public/assets/repo-picker-CUhd0vJN.css.br +0 -4
- package/dist/public/assets/review-view-DFEK9VBa.js +0 -2
- package/dist/public/assets/review-view-deUY3OE5.css +0 -1
- package/dist/public/assets/review-view-deUY3OE5.css.br +0 -0
- package/dist/public/assets/section-CziSOSBR.css +0 -1
- package/dist/public/assets/section-CziSOSBR.css.br +0 -0
- package/dist/public/assets/settings-DHI77GvL.js +0 -1
- package/dist/public/assets/settings-page-OOtPOzIn.js +0 -2
- package/dist/public/assets/settings-page-wZhd7FLi.css +0 -1
- package/dist/public/assets/settings-page-wZhd7FLi.css.br +0 -0
- package/dist/public/assets/skill-row-BoCyFIXg.css +0 -1
- package/dist/public/assets/sso-auth-DV76tTpE.css +0 -1
- package/dist/public/assets/sso-auth-DV76tTpE.css.br +0 -0
- package/dist/public/assets/w-DHI77GvL.js +0 -1
- package/dist/public/assets/w._-DHI77GvL.js +0 -1
- package/dist/public/assets/w._-DsTgq3-C.js +0 -1
- package/dist/public/assets/w._-igEOSPR-.js +0 -1
package/lib/preview/media.mjs
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
// What a browser can render inline for a binary file in review, keyed by
|
|
2
|
-
// extension. Plain ESM with no dependencies: the blob route serves
|
|
3
|
-
// types in this table and the browser picks its element from the
|
|
4
|
-
// so a type can never be displayable at one end and not the other.
|
|
2
|
+
// extension. Plain ESM with no dependencies: the blob route serves inline
|
|
3
|
+
// only the types in this table and the browser picks its element from the
|
|
4
|
+
// same one, so a type can never be displayable at one end and not the other.
|
|
5
5
|
//
|
|
6
6
|
// The allowlist is the security boundary, not a nicety. The app's API and
|
|
7
7
|
// the review page share an origin, so an `image/svg+xml` opened in a tab —
|
|
8
8
|
// or worse a `text/html` — from a repo under review would be script with
|
|
9
9
|
// the reviewer's access to it. Nothing outside this table is ever served
|
|
10
|
-
// inline
|
|
10
|
+
// inline (a `.share/` file of another type goes only as an attachment),
|
|
11
|
+
// and the served response denies scripts on top of that.
|
|
11
12
|
|
|
12
13
|
/** @typedef {"image" | "pdf" | "video"} PreviewKind */
|
|
13
14
|
/** @typedef {{ kind: PreviewKind, type: string }} Preview */
|
package/lib/setup/doctor.d.mts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { TailscaleProbe } from "./tailscale.mjs";
|
|
2
|
+
import type { FirewallProbe } from "./firewall.mjs";
|
|
1
3
|
export interface DoctorTool {
|
|
2
4
|
id: string;
|
|
3
5
|
label: string;
|
|
@@ -47,6 +49,11 @@ export interface Doctor {
|
|
|
47
49
|
awake: boolean | null;
|
|
48
50
|
/** git credential helpers that run a gh which is gone (config keys). */
|
|
49
51
|
staleGhHelpers: string[];
|
|
52
|
+
/** Tailscale, optional: how work is reached from other devices. */
|
|
53
|
+
tailscale: TailscaleProbe;
|
|
54
|
+
/** The host firewall in front of direct connections' UDP port; null
|
|
55
|
+
* with none active (or direct connections off). */
|
|
56
|
+
firewall: FirewallProbe | null;
|
|
50
57
|
}
|
|
51
58
|
export function setupPath(base?: string): string;
|
|
52
59
|
export function which(bin: string): string | null;
|
|
@@ -61,5 +68,20 @@ export const VERSIONED_PATH: RegExp;
|
|
|
61
68
|
export function stableGh(): string | null;
|
|
62
69
|
export function staleGhHelpers(): Promise<string[]>;
|
|
63
70
|
export function discoverAgents(fresh?: boolean): DoctorAgent[];
|
|
64
|
-
export function
|
|
71
|
+
export function tailscaleProbe(opts?: {
|
|
72
|
+
port?: string;
|
|
73
|
+
allowedHosts?: string;
|
|
74
|
+
}): Promise<TailscaleProbe>;
|
|
75
|
+
export function doctor(opts?: {
|
|
76
|
+
hosts?: string[];
|
|
77
|
+
port?: string;
|
|
78
|
+
allowedHosts?: string;
|
|
79
|
+
/** The service's direct-connection settings, for the firewall probe. */
|
|
80
|
+
rtcPort?: string;
|
|
81
|
+
listen?: string;
|
|
82
|
+
rtc?: string;
|
|
83
|
+
/** The firewall as the service meets it, read by the caller (the CLI
|
|
84
|
+
* asks the running server); the probe runs here without it. */
|
|
85
|
+
firewall?: FirewallProbe | null | Promise<FirewallProbe | null>;
|
|
86
|
+
}): Promise<Doctor>;
|
|
65
87
|
export function formatDoctor(d: Doctor): string;
|
package/lib/setup/doctor.mjs
CHANGED
|
@@ -6,6 +6,8 @@ import fs from "node:fs";
|
|
|
6
6
|
import os from "node:os";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { AGENTS, DEFAULT_GITHUB_HOST, TOOLS } from "./catalog.mjs";
|
|
9
|
+
import { readTailscale, tailscaleLine } from "./tailscale.mjs";
|
|
10
|
+
import { firewallLine, firewallProbe } from "./firewall.mjs";
|
|
9
11
|
|
|
10
12
|
const home = os.homedir();
|
|
11
13
|
|
|
@@ -363,11 +365,50 @@ async function ghExtensions() {
|
|
|
363
365
|
return out;
|
|
364
366
|
}
|
|
365
367
|
|
|
368
|
+
function parseJson(text) {
|
|
369
|
+
try {
|
|
370
|
+
return JSON.parse(text);
|
|
371
|
+
} catch {
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/** Tailscale here and what its serve config does with work's port
|
|
377
|
+
* (lib/setup/tailscale.mjs), from read-only commands. `port` and
|
|
378
|
+
* `allowedHosts` default to this process's own, which are the server's
|
|
379
|
+
* when the server asks. */
|
|
380
|
+
export async function tailscaleProbe({ port, allowedHosts } = {}) {
|
|
381
|
+
const bin = which("tailscale");
|
|
382
|
+
if (!bin) return { installed: false };
|
|
383
|
+
// Without peers: a large tailnet's full status is megabytes, and only
|
|
384
|
+
// this node is read.
|
|
385
|
+
const [version, status, serve] = await Promise.all([
|
|
386
|
+
run(bin, ["version"], { timeout: 5000 }),
|
|
387
|
+
run(bin, ["status", "--json", "--peers=false"], { timeout: 5000 }),
|
|
388
|
+
run(bin, ["serve", "status", "--json"], { timeout: 5000 }),
|
|
389
|
+
]);
|
|
390
|
+
return readTailscale(
|
|
391
|
+
{
|
|
392
|
+
path: tilde(bin),
|
|
393
|
+
version: version.stdout,
|
|
394
|
+
status: status.ok ? parseJson(status.stdout) : null,
|
|
395
|
+
serve: serve.ok ? parseJson(serve.stdout) : null,
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
port: port || process.env.PORT || process.env.WORK_APP_PORT || "7171",
|
|
399
|
+
allowedHosts: allowedHosts ?? process.env.WORK_ALLOWED_HOSTS,
|
|
400
|
+
},
|
|
401
|
+
);
|
|
402
|
+
}
|
|
403
|
+
|
|
366
404
|
/**
|
|
367
405
|
* Full readiness snapshot.
|
|
368
406
|
*
|
|
369
|
-
* @param {{ hosts?: string[] }} [opts]
|
|
370
|
-
* github.com and any host gh is
|
|
407
|
+
* @param {{ hosts?: string[], port?: string, allowedHosts?: string }} [opts]
|
|
408
|
+
* configured GitHub hosts (settings); github.com and any host gh is
|
|
409
|
+
* already signed in to are always included. `port` and `allowedHosts`
|
|
410
|
+
* are the service's, for the Tailscale probe; `firewall`, when given, is
|
|
411
|
+
* the service's own firewall reading (`serviceFirewall` in the CLI).
|
|
371
412
|
*/
|
|
372
413
|
export async function doctor(opts = {}) {
|
|
373
414
|
const hostSet = new Set([
|
|
@@ -375,13 +416,29 @@ export async function doctor(opts = {}) {
|
|
|
375
416
|
...(opts.hosts || []),
|
|
376
417
|
...ghKnownHosts(),
|
|
377
418
|
]);
|
|
378
|
-
const [versions, github, awake, extensions, helpers] =
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
419
|
+
const [versions, github, awake, extensions, helpers, tailscale, firewall] =
|
|
420
|
+
await Promise.all([
|
|
421
|
+
miseVersions(),
|
|
422
|
+
Promise.all([...hostSet].map(githubHostStatus)),
|
|
423
|
+
canStayAwake(),
|
|
424
|
+
ghExtensions(),
|
|
425
|
+
staleGhHelpers(),
|
|
426
|
+
tailscaleProbe(opts),
|
|
427
|
+
// The CLI hands in the service's own reading (bin/work.mjs
|
|
428
|
+
// `serviceFirewall`); the server reads for itself.
|
|
429
|
+
opts.firewall !== undefined
|
|
430
|
+
? opts.firewall
|
|
431
|
+
: firewallProbe({
|
|
432
|
+
rtcPort: opts.rtcPort ?? process.env.WORK_RTC_PORT,
|
|
433
|
+
appPort:
|
|
434
|
+
opts.port ||
|
|
435
|
+
process.env.PORT ||
|
|
436
|
+
process.env.WORK_APP_PORT ||
|
|
437
|
+
"7171",
|
|
438
|
+
listen: opts.listen ?? process.env.WORK_LISTEN,
|
|
439
|
+
rtc: opts.rtc ?? process.env.WORK_RTC,
|
|
440
|
+
}),
|
|
441
|
+
]);
|
|
385
442
|
|
|
386
443
|
const tools = TOOLS.map((t) => {
|
|
387
444
|
if (t.ghExtension) {
|
|
@@ -429,6 +486,8 @@ export async function doctor(opts = {}) {
|
|
|
429
486
|
github,
|
|
430
487
|
awake,
|
|
431
488
|
staleGhHelpers: helpers,
|
|
489
|
+
tailscale,
|
|
490
|
+
firewall,
|
|
432
491
|
};
|
|
433
492
|
}
|
|
434
493
|
|
|
@@ -455,6 +514,13 @@ export function formatDoctor(d) {
|
|
|
455
514
|
`${a.label.padEnd(11)}${mark(a.installed)} ${a.installed ? a.instances.map((i) => `${i.command} (${i.path})`).join(", ") : "not installed"}`,
|
|
456
515
|
);
|
|
457
516
|
}
|
|
517
|
+
// Optional, so never part of `ready`: it is how work is reached from
|
|
518
|
+
// elsewhere, not what it needs to run.
|
|
519
|
+
lines.push(tailscaleLine(d.tailscale));
|
|
520
|
+
// Optional too: only devices elsewhere on the network lose the direct
|
|
521
|
+
// path to a firewall, and work runs either way.
|
|
522
|
+
const firewall = firewallLine(d.firewall);
|
|
523
|
+
if (firewall) lines.push(firewall);
|
|
458
524
|
// Said only when nothing holds the host: not a readiness gate, since
|
|
459
525
|
// work runs either way, but the one place a headless host would say so.
|
|
460
526
|
if (d.awake === false) {
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export const RULE: string;
|
|
2
|
+
export interface FirewallProbe {
|
|
3
|
+
kind: "firewalld" | "ufw" | "macos";
|
|
4
|
+
/** How it is named in a sentence: `firewalld (zone FedoraServer)`. */
|
|
5
|
+
what: string;
|
|
6
|
+
zone?: string;
|
|
7
|
+
/** The UDP port direct connections use. */
|
|
8
|
+
port: number;
|
|
9
|
+
/** It lets that port in (by its settings, or work's own rule). */
|
|
10
|
+
admits: boolean;
|
|
11
|
+
/** It likely drops it: not admitted by what could be read. */
|
|
12
|
+
likely: boolean;
|
|
13
|
+
/** Its settings were read as they are, not as shipped. */
|
|
14
|
+
exact: boolean;
|
|
15
|
+
/** work's named rule is there. */
|
|
16
|
+
ruled: boolean;
|
|
17
|
+
/** The commands `work setup --firewall` runs (argv, sudo first); empty
|
|
18
|
+
* where it adds nothing. */
|
|
19
|
+
plan: string[][];
|
|
20
|
+
/** Those as one shell line, or the fix to run by hand; null with none. */
|
|
21
|
+
fix: string | null;
|
|
22
|
+
/** What the verdict rests on, when it is not work's rule. */
|
|
23
|
+
why?: string | null;
|
|
24
|
+
/** The node macOS's firewall was asked about (its real path). */
|
|
25
|
+
node?: string;
|
|
26
|
+
/** Whose node that was, as the CLI found it: the running service's
|
|
27
|
+
* own reading, its definition's, or this shell's for want of either. */
|
|
28
|
+
nodeFrom?: "service" | "unit" | "shell";
|
|
29
|
+
}
|
|
30
|
+
export function firewallProbe(opts?: {
|
|
31
|
+
rtcPort?: string | number;
|
|
32
|
+
appPort?: string | number;
|
|
33
|
+
listen?: string;
|
|
34
|
+
rtc?: string;
|
|
35
|
+
node?: string;
|
|
36
|
+
root?: string;
|
|
37
|
+
platform?: string;
|
|
38
|
+
}): Promise<FirewallProbe | null>;
|
|
39
|
+
export interface MacosVerdict {
|
|
40
|
+
admits: boolean;
|
|
41
|
+
exact: boolean;
|
|
42
|
+
why: string;
|
|
43
|
+
needs: "blockall" | "unblock" | "add" | null;
|
|
44
|
+
}
|
|
45
|
+
export function macosVerdict(said: {
|
|
46
|
+
state?: string;
|
|
47
|
+
blockAll?: string;
|
|
48
|
+
signed?: string;
|
|
49
|
+
blocked?: string;
|
|
50
|
+
apps?: string;
|
|
51
|
+
sign?: string;
|
|
52
|
+
paths: string[];
|
|
53
|
+
}): MacosVerdict | null;
|
|
54
|
+
export function globalOn(text?: string): boolean | null;
|
|
55
|
+
export function blockAllOn(text?: string): boolean | null;
|
|
56
|
+
export function allowSigned(text?: string): {
|
|
57
|
+
builtIn: boolean | null;
|
|
58
|
+
downloaded: boolean | null;
|
|
59
|
+
};
|
|
60
|
+
export function listedAs(
|
|
61
|
+
text?: string,
|
|
62
|
+
paths?: string[],
|
|
63
|
+
): "allow" | "block" | null;
|
|
64
|
+
export function appBlocked(text?: string): "allow" | "block" | null;
|
|
65
|
+
export function signatureOf(
|
|
66
|
+
text?: string,
|
|
67
|
+
): "developer-id" | "apple" | "adhoc" | "unsigned" | "other" | null;
|
|
68
|
+
export function serviceNode(
|
|
69
|
+
text: string,
|
|
70
|
+
opts?: { PATH?: string },
|
|
71
|
+
): string | null;
|
|
72
|
+
export function firewallLine(f: FirewallProbe | null): string | null;
|
|
73
|
+
export function applyPlan(
|
|
74
|
+
plan: string[][],
|
|
75
|
+
log: (line: string) => void,
|
|
76
|
+
): { ok: boolean; failed?: string[] };
|