@dylanpiercey/work 0.0.222 → 0.0.223
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 +7 -4
- package/bin/work.mjs +70 -17
- package/dist/{_DNhDGBkH.js → _CpANOzpd.js} +219 -134
- package/dist/_LF2Fo5WE.js +2 -0
- package/dist/index.mjs +1462 -1770
- package/dist/public/assets/_--tE4Gxz.js +2 -0
- package/dist/public/assets/_--tE4Gxz.js.br +0 -0
- package/dist/public/assets/_1OL9vXM-.js +1 -0
- package/dist/public/assets/_2mnAZf6B.js +1 -0
- package/dist/public/assets/_2mnAZf6B.js.br +0 -0
- package/dist/public/assets/_5f9fMvWJ.js +1 -0
- package/dist/public/assets/_5y69OR6M.js +1 -0
- package/dist/public/assets/{_CsicaM6z.js → _Aq9oGnRu.js} +1 -1
- package/dist/public/assets/_Aq9oGnRu.js.br +0 -0
- package/dist/public/assets/_B0uJCjmk.js +1 -0
- package/dist/public/assets/{_C1JRCVnT.js → _B1RldJ0S.js} +1 -1
- package/dist/public/assets/_B1RldJ0S.js.br +0 -0
- package/dist/public/assets/_B5TpOQCZ.js +1 -0
- package/dist/public/assets/_B6UdulKa.js +1 -0
- package/dist/public/assets/{_cSsv1ZjH.js → _BA8HFnO3.js} +1 -1
- package/dist/public/assets/_BA8HFnO3.js.br +0 -0
- package/dist/public/assets/{_CdWPIocC.js → _BAHrOydH.js} +1 -1
- package/dist/public/assets/_BAHrOydH.js.br +0 -0
- package/dist/public/assets/{_Bpf0Nyqk.js → _BBpX-M4b.js} +1 -1
- package/dist/public/assets/_BBpX-M4b.js.br +0 -0
- package/dist/public/assets/{_BxpaVKca.js → _BCZpExov.js} +1 -1
- package/dist/public/assets/_BCZpExov.js.br +0 -0
- package/dist/public/assets/_BFZHNauV.js +1 -0
- package/dist/public/assets/_BGCK5I_O.js +1 -0
- package/dist/public/assets/_BGCK5I_O.js.br +0 -0
- package/dist/public/assets/_BJRSndB4.js +6 -0
- package/dist/public/assets/_BJRSndB4.js.br +0 -0
- package/dist/public/assets/{_DYBhy6q4.js → _BL9QMk_P.js} +1 -1
- package/dist/public/assets/_BL9QMk_P.js.br +0 -0
- package/dist/public/assets/_BLNEzyb5.js +1 -0
- package/dist/public/assets/{_B9Ukk65G.js → _BLRpf6Uw.js} +1 -1
- package/dist/public/assets/_BLRpf6Uw.js.br +0 -0
- package/dist/public/assets/{_CrV4JiE4.js → _BLTfQLdY.js} +1 -1
- package/dist/public/assets/_BLTfQLdY.js.br +0 -0
- package/dist/public/assets/{_Dns259C4.js → _BO0OB-rz.js} +1 -1
- package/dist/public/assets/_BO0OB-rz.js.br +0 -0
- package/dist/public/assets/{_DZLJGzpN.js → _BPcswKMK.js} +1 -1
- package/dist/public/assets/_BPcswKMK.js.br +0 -0
- package/dist/public/assets/_BPhXWliU.js +1 -0
- package/dist/public/assets/_BQXTv9Cr.js +1 -0
- package/dist/public/assets/{_DktieTrd.js → _BRG_DBcC.js} +1 -1
- package/dist/public/assets/_BRG_DBcC.js.br +0 -0
- package/dist/public/assets/{_DvqvHR7_.js → _BS4crAAm.js} +1 -1
- package/dist/public/assets/_BS4crAAm.js.br +0 -0
- package/dist/public/assets/{_OZcBKgKS.js → _BUH04L5e.js} +1 -1
- package/dist/public/assets/{_Cp1dT7ox.js → _BVp6r0fg.js} +1 -1
- package/dist/public/assets/_BVp6r0fg.js.br +0 -0
- package/dist/public/assets/{_BSliyqkf.js → _BXT2bXMi.js} +1 -1
- package/dist/public/assets/_BXT2bXMi.js.br +0 -0
- package/dist/public/assets/{_BJIAaIh4.js → _B_zyAtSJ.js} +1 -1
- package/dist/public/assets/_B_zyAtSJ.js.br +0 -0
- package/dist/public/assets/_BaXKdIeb.js +1 -0
- package/dist/public/assets/{_B29iioj9.js → _BbiACo0Y.js} +1 -1
- package/dist/public/assets/_BbiACo0Y.js.br +0 -0
- package/dist/public/assets/{_BxAKVWw-.js → _BdvO5Lqa.js} +1 -1
- package/dist/public/assets/_BdvO5Lqa.js.br +0 -0
- package/dist/public/assets/{_4KGVbuYs.js → _BeE9qDu0.js} +1 -1
- package/dist/public/assets/{_4KGVbuYs.js.br → _BeE9qDu0.js.br} +0 -0
- package/dist/public/assets/_BewXp5Y_.js +1 -0
- package/dist/public/assets/_BewXp5Y_.js.br +0 -0
- package/dist/public/assets/_BfOOLKo5.js +1 -0
- package/dist/public/assets/_BhS8bTnr.js +1 -0
- package/dist/public/assets/_BhZ3ZoG0.js +1 -0
- package/dist/public/assets/_Bi3_ZsOQ.js +1 -0
- package/dist/public/assets/_Bj_Lfa8B.js +1 -0
- package/dist/public/assets/_BlN_x04q.js +1 -0
- package/dist/public/assets/_Bn5nsnie.js +1 -0
- package/dist/public/assets/_BnOOD6nr.js +15 -0
- package/dist/public/assets/_BnOOD6nr.js.br +0 -0
- package/dist/public/assets/{_Dtx2usNe.js → _BnyLUTdO.js} +1 -1
- package/dist/public/assets/_BnyLUTdO.js.br +0 -0
- package/dist/public/assets/_Bp_WT09q.js +1 -0
- package/dist/public/assets/_Bp_WT09q.js.br +0 -0
- package/dist/public/assets/{_DZD7yzH2.js → _BsimXDnm.js} +1 -1
- package/dist/public/assets/_BsimXDnm.js.br +0 -0
- package/dist/public/assets/_BsupnkWM.js +1 -0
- package/dist/public/assets/_BsupnkWM.js.br +0 -0
- package/dist/public/assets/{_BNPo3NaH.js → _BxAl0m64.js} +1 -1
- package/dist/public/assets/_BxAl0m64.js.br +0 -0
- package/dist/public/assets/{_CPMD0qdL.js → _C-6dImS5.js} +1 -1
- package/dist/public/assets/_C-6dImS5.js.br +0 -0
- package/dist/public/assets/_C18Torhh.js +1 -0
- package/dist/public/assets/{_H7TtilBa.js → _C1PmcEws.js} +1 -1
- package/dist/public/assets/_C1PmcEws.js.br +0 -0
- package/dist/public/assets/{_i6oi77xC.js → _C2ZpyiHV.js} +1 -1
- package/dist/public/assets/_C2ZpyiHV.js.br +0 -0
- package/dist/public/assets/_C3P1VHUI.js +1 -0
- package/dist/public/assets/{_D74J3kwJ.js → _C6i9NP5A.js} +1 -1
- package/dist/public/assets/_C6xwTKke.js +1 -0
- package/dist/public/assets/_C6yqlRfl.js +1 -0
- package/dist/public/assets/_C75D8bH2.js +1 -0
- package/dist/public/assets/{_DLJu1hcD.js → _C87NBm9i.js} +1 -1
- package/dist/public/assets/_C87NBm9i.js.br +0 -0
- package/dist/public/assets/_C8Vc_vBH.js +1 -0
- package/dist/public/assets/{_BpLwQ1O8.js → _C9OdJcx4.js} +1 -1
- package/dist/public/assets/_C9OdJcx4.js.br +0 -0
- package/dist/public/assets/_C9eoo0sE.js +1 -0
- package/dist/public/assets/_C9qO_dny.js +1 -0
- package/dist/public/assets/_C9qO_dny.js.br +0 -0
- package/dist/public/assets/{_C3E24F_T.js → _CB31bp-W.js} +1 -1
- package/dist/public/assets/_CB31bp-W.js.br +0 -0
- package/dist/public/assets/{_BXU-ZvQb.js → _CCCQMLw5.js} +1 -1
- package/dist/public/assets/_CCCQMLw5.js.br +0 -0
- package/dist/public/assets/_CCie36pi.js +1 -0
- package/dist/public/assets/_CDD9N34p.js +1 -0
- package/dist/public/assets/{_Ca3bfNZI.js → _CE5MhJWL.js} +1 -1
- package/dist/public/assets/_CE5MhJWL.js.br +0 -0
- package/dist/public/assets/{_Ct2VbISZ.js → _CGLpCj_I.js} +1 -1
- package/dist/public/assets/_CGLpCj_I.js.br +0 -0
- package/dist/public/assets/{_BIul3uoC.js → _CJ9j8N5Z.js} +1 -1
- package/dist/public/assets/_CJ9j8N5Z.js.br +0 -0
- package/dist/public/assets/{_NGfZeYAt.js → _CLDmR3jR.js} +1 -1
- package/dist/public/assets/_CLDmR3jR.js.br +0 -0
- package/dist/public/assets/{_CKwCTsbp.js → _CLerZOx-.js} +1 -1
- package/dist/public/assets/_CLerZOx-.js.br +0 -0
- package/dist/public/assets/_CM5GtJb2.js +1 -0
- package/dist/public/assets/_COECwOVb.js +1 -0
- package/dist/public/assets/_CSQE9nMN.js +1 -0
- package/dist/public/assets/_CSXMgHLQ.js +1 -0
- package/dist/public/assets/{_DYm1j3HZ.js → _CT3clsOQ.js} +1 -1
- package/dist/public/assets/_CVRiByCT.js +1 -0
- package/dist/public/assets/_CVSrm4Pl.js +1 -0
- package/dist/public/assets/{_DNqoI_cd.js → _CX1wufuh.js} +1 -1
- package/dist/public/assets/_CX1wufuh.js.br +0 -0
- package/dist/public/assets/{_gP9nLV2Y.js → _CYNAhnRH.js} +117 -117
- package/dist/public/assets/_CYNAhnRH.js.br +0 -0
- package/dist/public/assets/{_DW6AnxDW.js → _CZGS4T08.js} +1 -1
- package/dist/public/assets/_CZGS4T08.js.br +0 -0
- package/dist/public/assets/_C_L7l9Mg.js +1 -0
- package/dist/public/assets/_CaMrYy1W.js +1 -0
- package/dist/public/assets/{_C4KQv1VW.js → _CdgAsi3s.js} +1 -1
- package/dist/public/assets/_CdgAsi3s.js.br +0 -0
- package/dist/public/assets/_Ce-E7sJE.js +1 -0
- package/dist/public/assets/_Cg3S760D.js +1 -0
- package/dist/public/assets/{_BY6ayWBy.js → _ChpYg41R.js} +1 -1
- package/dist/public/assets/_CicyY7KP.js +1 -0
- package/dist/public/assets/_Ck0YOw_7.js +1 -0
- package/dist/public/assets/_CmHlTZSs.js +1 -0
- package/dist/public/assets/_CnECYh66.js +1 -0
- package/dist/public/assets/{_CluEtmrQ.js → _CnKYioYw.js} +1 -1
- package/dist/public/assets/_CnKYioYw.js.br +0 -0
- package/dist/public/assets/_CnUVvVPd.js +1 -0
- package/dist/public/assets/_CqSgGCGC.js +1 -0
- package/dist/public/assets/{_LgS0G0uH.js → _CttJbiei.js} +1 -1
- package/dist/public/assets/_CttJbiei.js.br +0 -0
- package/dist/public/assets/{_TxnhYSE5.js → _CtyJUmXC.js} +1 -1
- package/dist/public/assets/_CtyJUmXC.js.br +0 -0
- package/dist/public/assets/{_KM7EGl2R.js → _Cw_8WbwF.js} +1 -1
- package/dist/public/assets/_Cw_8WbwF.js.br +0 -0
- package/dist/public/assets/{_D_joWBEC.js → _CwmzEsB4.js} +1 -1
- package/dist/public/assets/_CwmzEsB4.js.br +0 -0
- package/dist/public/assets/_CzETFsJs.js +1 -0
- package/dist/public/assets/_D-S9H-tX.js +1 -0
- package/dist/public/assets/{_C-oO7X9P.js → _D-hK5uFn.js} +1 -1
- package/dist/public/assets/_D-hK5uFn.js.br +0 -0
- package/dist/public/assets/_D5fTwHXK.js +1 -0
- package/dist/public/assets/{_DFiA_pht.js → _D8u1YU9b.js} +1 -1
- package/dist/public/assets/_D8u1YU9b.js.br +0 -0
- package/dist/public/assets/_DAH8evhA.js +1 -0
- package/dist/public/assets/_DAemmoHI.js +1 -0
- package/dist/public/assets/_DEMYxWZf.js +1 -0
- package/dist/public/assets/_DGTQBWy0.js +1 -0
- package/dist/public/assets/_DGTQBWy0.js.br +0 -0
- package/dist/public/assets/_DHhv0pCA.js +1 -0
- package/dist/public/assets/{_Cnl5owe1.js → _DI0QHEXB.js} +1 -1
- package/dist/public/assets/_DI0QHEXB.js.br +0 -0
- package/dist/public/assets/{_BHkMvOuI.js → _DJ3UAR_s.js} +1 -1
- package/dist/public/assets/_DJ3UAR_s.js.br +0 -0
- package/dist/public/assets/_DKu6UxI7.js +1 -0
- package/dist/public/assets/_DNC-9RBN.js +1 -0
- package/dist/public/assets/_DP-Bu7ET.js +1 -0
- package/dist/public/assets/_DYmmPBcq.js +1 -0
- package/dist/public/assets/_Da2Dmt_d.js +1 -0
- package/dist/public/assets/_Da2Dmt_d.js.br +0 -0
- package/dist/public/assets/{_ByqDCoAZ.js → _DaqT6m41.js} +1 -1
- package/dist/public/assets/_DaqT6m41.js.br +0 -0
- package/dist/public/assets/_DbVyutEZ.js +1 -0
- package/dist/public/assets/_DcBvO2Si.js +1 -0
- package/dist/public/assets/{_BYHfXvmU.js → _DeCJ44Me.js} +1 -1
- package/dist/public/assets/_DeCJ44Me.js.br +0 -0
- package/dist/public/assets/{_CEvca0JK.js → _DeN4EY8L.js} +1 -1
- package/dist/public/assets/_DeN4EY8L.js.br +0 -0
- package/dist/public/assets/{_BCTeDxHC.js → _DhEdzMUw.js} +1 -1
- package/dist/public/assets/_DhEdzMUw.js.br +0 -0
- package/dist/public/assets/{_aAORMS0u.js → _DhNuRs-V.js} +1 -1
- package/dist/public/assets/_DhNuRs-V.js.br +0 -0
- package/dist/public/assets/{_ItervcuA.js → _DiqV5bDH.js} +1 -1
- package/dist/public/assets/_DiqV5bDH.js.br +0 -0
- package/dist/public/assets/_Diqt_yCf.js +1 -0
- package/dist/public/assets/{_BJk5sqrB.js → _DlpTErRA.js} +1 -1
- package/dist/public/assets/_DlpTErRA.js.br +0 -0
- package/dist/public/assets/{_SHB9zmh2.js → _DmDSLxrw.js} +1 -1
- package/dist/public/assets/_DmDSLxrw.js.br +0 -0
- package/dist/public/assets/_DoC0qbSD.js +1 -0
- package/dist/public/assets/{_CtQ-4c6a.js → _DoCtdMd2.js} +1 -1
- package/dist/public/assets/_DoCtdMd2.js.br +0 -0
- package/dist/public/assets/_DpqWFkMg.js +1 -0
- package/dist/public/assets/_Dr0Bkgso.js +1 -0
- package/dist/public/assets/_Dt-n9FaQ.js +1 -0
- package/dist/public/assets/_DtOzdwHm.js +1 -0
- package/dist/public/assets/_DtOzdwHm.js.br +0 -0
- package/dist/public/assets/{_QlXMW-cP.js → _DuGmU4h0.js} +1 -1
- package/dist/public/assets/_DuGmU4h0.js.br +0 -0
- package/dist/public/assets/{_DJnXBrlD.js → _DuXOUegE.js} +1 -1
- package/dist/public/assets/_DuXOUegE.js.br +0 -0
- package/dist/public/assets/_DuaocJd1.js +1 -0
- package/dist/public/assets/{_CN5iw4cA.js → _DuarImb7.js} +1 -1
- package/dist/public/assets/_DuarImb7.js.br +0 -0
- package/dist/public/assets/{_9xYWGqfi.js → _DwcoW-IU.js} +1 -1
- package/dist/public/assets/_DwcoW-IU.js.br +0 -0
- package/dist/public/assets/{_M94yp4jo.js → _DxVt7Zuk.js} +11 -11
- package/dist/public/assets/_DxVt7Zuk.js.br +0 -0
- package/dist/public/assets/{_B-992FUw.js → _DzrtBP-L.js} +1 -1
- package/dist/public/assets/{_CB-I9KUl.js → _Fzbz4zvE.js} +1 -1
- package/dist/public/assets/_Fzbz4zvE.js.br +0 -0
- package/dist/public/assets/_I5oX-lGP.js +1 -0
- package/dist/public/assets/{_U2n8Yyqy.js → _IWMmnVCy.js} +1 -1
- package/dist/public/assets/_IWMmnVCy.js.br +0 -0
- package/dist/public/assets/{_BYgxEDpq.js → _O70J1Mfv.js} +1 -1
- package/dist/public/assets/_O70J1Mfv.js.br +0 -0
- package/dist/public/assets/_SwbsOoi9.js +1 -0
- package/dist/public/assets/_SwbsOoi9.js.br +0 -0
- package/dist/public/assets/_Yy39CykK.js +1 -0
- package/dist/public/assets/{_D5yRmwZD.js → __Oa255vo.js} +1 -1
- package/dist/public/assets/__Oa255vo.js.br +0 -0
- package/dist/public/assets/_bPze7k1x.js +1 -0
- package/dist/public/assets/_bU1KcT1I.js +1 -0
- package/dist/public/assets/{_BlSF31Ck.js → _dr95P55a.js} +1 -1
- package/dist/public/assets/_dr95P55a.js.br +0 -0
- package/dist/public/assets/{_B7nG9Ktb.js → _eQK3EZCc.js} +1 -1
- package/dist/public/assets/_eQK3EZCc.js.br +0 -0
- package/dist/public/assets/{_DPIQzOUl.js → _gPFPzzPF.js} +1 -1
- package/dist/public/assets/_gPFPzzPF.js.br +0 -0
- package/dist/public/assets/_hzpOPZUB.js +1 -0
- package/dist/public/assets/{_D93v6VDe.js → _ifUb4WX7.js} +1 -1
- package/dist/public/assets/_ifUb4WX7.js.br +0 -0
- package/dist/public/assets/_kQ7LiSim.js +1 -0
- package/dist/public/assets/_lOAW1VLM.js +1 -0
- package/dist/public/assets/{_BS0AEB1V.js → _mnBdD4YN.js} +1 -1
- package/dist/public/assets/_mnBdD4YN.js.br +0 -0
- package/dist/public/assets/_odBcV1kc.js +1 -0
- package/dist/public/assets/{_buuWf96L.js → _pP1W6w5v.js} +1 -1
- package/dist/public/assets/_pP1W6w5v.js.br +0 -0
- package/dist/public/assets/{_Bk_g_9Bn.js → _pUYwxsdF.js} +1 -1
- package/dist/public/assets/_pUYwxsdF.js.br +0 -0
- package/dist/public/assets/{_6FNzwUcm.js → _pvS44-AC.js} +1 -1
- package/dist/public/assets/_pvS44-AC.js.br +0 -0
- package/dist/public/assets/_qJTL2ooe.js +1 -0
- package/dist/public/assets/_qJTL2ooe.js.br +0 -0
- package/dist/public/assets/{_BDCQoRmq.js → _s5Jez2mu.js} +1 -1
- package/dist/public/assets/_s5Jez2mu.js.br +0 -0
- package/dist/public/assets/{_KpWeECPp.js → _unfL8mz1.js} +1 -1
- package/dist/public/assets/_unfL8mz1.js.br +0 -0
- package/dist/public/assets/_unwtcXFQ.js +1 -0
- package/dist/public/assets/_unwtcXFQ.js.br +0 -0
- package/dist/public/assets/{_tqD_68em.js → _vKQopDwG.js} +1 -1
- package/dist/public/assets/_vKQopDwG.js.br +0 -0
- package/dist/public/assets/_w1aegGdT.js +1 -0
- package/dist/public/assets/_xdrkfok5.js +1 -0
- package/dist/public/assets/_xdrkfok5.js.br +0 -0
- package/dist/public/assets/_y-lm36fI.js +1 -0
- package/dist/public/assets/{_CgsPFJZy.js → _zKlxcAnQ.js} +1 -1
- package/dist/public/assets/_zKlxcAnQ.js.br +0 -0
- package/dist/public/assets/app-shell-CpPCwWPW.css +1 -0
- package/dist/public/assets/app-shell-CpPCwWPW.css.br +0 -0
- package/dist/public/assets/files-view-BfCdcfXX.js +2 -0
- package/dist/public/assets/files-view-DtI7JE-f.css +1 -0
- package/dist/public/assets/files-view-DtI7JE-f.css.br +0 -0
- package/dist/public/assets/group.css.ts-SeaNz7WZ.css +1 -0
- package/dist/public/assets/group.css.ts-SeaNz7WZ.css.br +0 -0
- package/dist/public/assets/{icon-folder-De3LJVaT.css → icon-folder-DHVc-REl.css} +1 -1
- package/dist/public/assets/icon-folder-DHVc-REl.css.br +0 -0
- package/dist/public/assets/{icon-search-C6A4IBPq.css → icon-search-DAtjHWFL.css} +1 -1
- package/dist/public/assets/icon-search-DAtjHWFL.css.br +0 -0
- package/dist/public/assets/manage-workspace-6i6Zeai7.css +1 -0
- package/dist/public/assets/manage-workspace-CixeMkdt.js +2 -0
- package/dist/public/assets/{modal-view-BY2E8mw2.css → modal-view-D0qnmuJE.css} +1 -1
- package/dist/public/assets/modal-view-D0qnmuJE.css.br +0 -0
- package/dist/public/assets/new-DxhaKmbF.js +1 -0
- package/dist/public/assets/new-workspace-BXjDRbqF.css +1 -0
- package/dist/public/assets/new-workspace-BXjDRbqF.css.br +0 -0
- package/dist/public/assets/new-workspace-DG693v2S.js +2 -0
- package/dist/public/assets/port-chip-Lz3mVJWb.css +1 -0
- package/dist/public/assets/port-chip-Lz3mVJWb.css.br +0 -0
- package/dist/public/assets/prompt-dialog-vhnae1-x.css +1 -0
- package/dist/public/assets/prompt-dialog-vhnae1-x.css.br +0 -0
- package/dist/public/assets/quick-open-DVqzk3-g.css +1 -0
- package/dist/public/assets/quick-open-DVqzk3-g.css.br +0 -0
- package/dist/public/assets/repo-picker-K5RYsEge.css +1 -0
- package/dist/public/assets/repo-picker-K5RYsEge.css.br +0 -0
- package/dist/public/assets/review-view-DqMrB4Ny.css +1 -0
- package/dist/public/assets/review-view-DqMrB4Ny.css.br +0 -0
- package/dist/public/assets/review-view-TdLbCgEg.js +2 -0
- package/dist/public/assets/section-2MyJSq5D.css +1 -0
- package/dist/public/assets/section-2MyJSq5D.css.br +0 -0
- package/dist/public/assets/settings-DxhaKmbF.js +1 -0
- package/dist/public/assets/settings-page-BBAG94Vh.js +2 -0
- package/dist/public/assets/settings-page-DUefc32x.css +1 -0
- package/dist/public/assets/settings-page-DUefc32x.css.br +0 -0
- package/dist/public/assets/skill-row-BeOk8NK8.css +1 -0
- package/dist/public/assets/sso-auth-CU3fGJ4U.css +1 -0
- package/dist/public/assets/sso-auth-CU3fGJ4U.css.br +0 -0
- package/dist/public/assets/w-DxhaKmbF.js +1 -0
- package/dist/public/assets/w._-C6JVdFgi.js +1 -0
- package/dist/public/assets/w._-DxhaKmbF.js +1 -0
- package/dist/public/assets/w._-rfvcDGPk.js +1 -0
- package/install.sh +1 -1
- package/lib/setup/catalog.d.mts +3 -0
- package/lib/setup/catalog.mjs +17 -0
- package/lib/setup/doctor.d.mts +1 -0
- package/lib/setup/doctor.mjs +5 -4
- package/lib/share/manifest.mjs +1 -1
- package/package.json +3 -3
- package/scripts/migrate.mjs +119 -261
- package/dist/_u9qRCTjI.js +0 -2
- package/dist/public/assets/_43qHqm_h.js +0 -1
- package/dist/public/assets/_4hbCil9D.js +0 -1
- package/dist/public/assets/_4hbCil9D.js.br +0 -0
- package/dist/public/assets/_69GBvJfT.js +0 -1
- package/dist/public/assets/_6FNzwUcm.js.br +0 -0
- package/dist/public/assets/_8SWI_CIk.js +0 -1
- package/dist/public/assets/_8SWI_CIk.js.br +0 -0
- package/dist/public/assets/_9fKCaxLn.js +0 -1
- package/dist/public/assets/_9xYWGqfi.js.br +0 -0
- package/dist/public/assets/_AKwHRUw2.js +0 -1
- package/dist/public/assets/_B29iioj9.js.br +0 -0
- package/dist/public/assets/_B3bcGOWb.js +0 -1
- package/dist/public/assets/_B3fa8s0p.js +0 -1
- package/dist/public/assets/_B6-AgBRx.js +0 -1
- package/dist/public/assets/_B6-AgBRx.js.br +0 -0
- package/dist/public/assets/_B68mxQgf.js +0 -15
- package/dist/public/assets/_B68mxQgf.js.br +0 -0
- package/dist/public/assets/_B7lNd0Fe.js +0 -1
- package/dist/public/assets/_B7nG9Ktb.js.br +0 -0
- package/dist/public/assets/_B9Ukk65G.js.br +0 -0
- package/dist/public/assets/_BCTeDxHC.js.br +0 -0
- package/dist/public/assets/_BDCQoRmq.js.br +0 -0
- package/dist/public/assets/_BHkMvOuI.js.br +0 -0
- package/dist/public/assets/_BIul3uoC.js.br +0 -0
- package/dist/public/assets/_BJIAaIh4.js.br +0 -5
- package/dist/public/assets/_BJk5sqrB.js.br +0 -0
- package/dist/public/assets/_BLOE-kpM.js +0 -1
- package/dist/public/assets/_BNK4RUnx.js +0 -1
- package/dist/public/assets/_BNPo3NaH.js.br +0 -0
- package/dist/public/assets/_BPMmLRzt.js +0 -1
- package/dist/public/assets/_BQ91qGf-.js +0 -1
- package/dist/public/assets/_BS0AEB1V.js.br +0 -0
- package/dist/public/assets/_BS66ieXF.js +0 -1
- package/dist/public/assets/_BSb0QOJN.js +0 -1
- package/dist/public/assets/_BSliyqkf.js.br +0 -0
- package/dist/public/assets/_BSydNGAC.js +0 -2
- package/dist/public/assets/_BSydNGAC.js.br +0 -0
- package/dist/public/assets/_BXU-ZvQb.js.br +0 -0
- package/dist/public/assets/_BYHfXvmU.js.br +0 -0
- package/dist/public/assets/_BYcB3W24.js +0 -1
- package/dist/public/assets/_BYgxEDpq.js.br +0 -0
- package/dist/public/assets/_BYi6z1C9.js +0 -1
- package/dist/public/assets/_BbM04KlN.js +0 -1
- package/dist/public/assets/_Bc5E_ez3.js +0 -1
- package/dist/public/assets/_BcWZ_-iA.js +0 -1
- package/dist/public/assets/_BkXPpVmm.js +0 -1
- package/dist/public/assets/_Bk_g_9Bn.js.br +0 -0
- package/dist/public/assets/_BlSF31Ck.js.br +0 -0
- package/dist/public/assets/_Bn4xIRpG.js +0 -1
- package/dist/public/assets/_BpLwQ1O8.js.br +0 -0
- package/dist/public/assets/_BpVNeKi-.js +0 -1
- package/dist/public/assets/_BpdpbMex.js +0 -1
- package/dist/public/assets/_Bpf0Nyqk.js.br +0 -0
- package/dist/public/assets/_BwBNAwDG.js +0 -1
- package/dist/public/assets/_BxAKVWw-.js.br +0 -0
- package/dist/public/assets/_BxpaVKca.js.br +0 -0
- package/dist/public/assets/_ByqDCoAZ.js.br +0 -0
- package/dist/public/assets/_Bzg_Rzcf.js +0 -1
- package/dist/public/assets/_C-oO7X9P.js.br +0 -0
- package/dist/public/assets/_C0KvehwH.js +0 -1
- package/dist/public/assets/_C1JRCVnT.js.br +0 -0
- package/dist/public/assets/_C2U9mANP.js +0 -1
- package/dist/public/assets/_C3E24F_T.js.br +0 -0
- package/dist/public/assets/_C4KQv1VW.js.br +0 -0
- package/dist/public/assets/_C5MTb3MY.js +0 -1
- package/dist/public/assets/_C7ha2DpU.js +0 -1
- package/dist/public/assets/_C7ha2DpU.js.br +0 -0
- package/dist/public/assets/_CAaW1fUv.js +0 -1
- package/dist/public/assets/_CB-I9KUl.js.br +0 -0
- package/dist/public/assets/_CEvca0JK.js.br +0 -0
- package/dist/public/assets/_CGZs9U_g.js +0 -1
- package/dist/public/assets/_CK6p4Zj1.js +0 -1
- package/dist/public/assets/_CK6p4Zj1.js.br +0 -0
- package/dist/public/assets/_CKwCTsbp.js.br +0 -0
- package/dist/public/assets/_CKyRgnW2.js +0 -1
- package/dist/public/assets/_CN5iw4cA.js.br +0 -0
- package/dist/public/assets/_CPAGQRmF.js +0 -1
- package/dist/public/assets/_CPMD0qdL.js.br +0 -0
- package/dist/public/assets/_CRi7-Tyh.js +0 -1
- package/dist/public/assets/_CU2T7o-W.js +0 -1
- package/dist/public/assets/_CVSAwdO1.js +0 -1
- package/dist/public/assets/_CZzsPgfD.js +0 -1
- package/dist/public/assets/_C_jQehPQ.js +0 -1
- package/dist/public/assets/_Ca3bfNZI.js.br +0 -0
- package/dist/public/assets/_CdWPIocC.js.br +0 -0
- package/dist/public/assets/_CeFqvzt1.js +0 -1
- package/dist/public/assets/_CgsPFJZy.js.br +0 -0
- package/dist/public/assets/_ClgoCZxV.js +0 -6
- package/dist/public/assets/_ClgoCZxV.js.br +0 -0
- package/dist/public/assets/_CluEtmrQ.js.br +0 -0
- package/dist/public/assets/_Cnl5owe1.js.br +0 -0
- package/dist/public/assets/_Cp1dT7ox.js.br +0 -0
- package/dist/public/assets/_Cpyx7Ldm.js +0 -1
- package/dist/public/assets/_Cq4-AZ6O.js +0 -1
- package/dist/public/assets/_CrV4JiE4.js.br +0 -0
- package/dist/public/assets/_Csdgg-p8.js +0 -1
- package/dist/public/assets/_Csdgg-p8.js.br +0 -0
- package/dist/public/assets/_CsicaM6z.js.br +0 -0
- package/dist/public/assets/_Ct2VbISZ.js.br +0 -0
- package/dist/public/assets/_CtQ-4c6a.js.br +0 -0
- package/dist/public/assets/_Cyfdf5Zc.js +0 -1
- package/dist/public/assets/_D1qsYd77.js +0 -1
- package/dist/public/assets/_D1qsYd77.js.br +0 -0
- package/dist/public/assets/_D5yRmwZD.js.br +0 -0
- package/dist/public/assets/_D78O__dl.js +0 -1
- package/dist/public/assets/_D93v6VDe.js.br +0 -0
- package/dist/public/assets/_DDfizRXp.js +0 -1
- package/dist/public/assets/_DDfizRXp.js.br +0 -0
- package/dist/public/assets/_DFiA_pht.js.br +0 -0
- package/dist/public/assets/_DGDsfGXN.js +0 -1
- package/dist/public/assets/_DGDsfGXN.js.br +0 -0
- package/dist/public/assets/_DJnXBrlD.js.br +0 -0
- package/dist/public/assets/_DKiEZYX8.js +0 -1
- package/dist/public/assets/_DLEnV6cR.js +0 -1
- package/dist/public/assets/_DLJu1hcD.js.br +0 -0
- package/dist/public/assets/_DL_rHJtD.js +0 -1
- package/dist/public/assets/_DNFF24hk.js +0 -1
- package/dist/public/assets/_DNqoI_cd.js.br +0 -0
- package/dist/public/assets/_DOLRYXID.js +0 -1
- package/dist/public/assets/_DPIQzOUl.js.br +0 -0
- package/dist/public/assets/_DQWcu2Z_.js +0 -1
- package/dist/public/assets/_DW6AnxDW.js.br +0 -0
- package/dist/public/assets/_DWYjkjOA.js +0 -1
- package/dist/public/assets/_DXE83VZw.js +0 -1
- package/dist/public/assets/_DYBhy6q4.js.br +0 -0
- package/dist/public/assets/_DYKZ1zvC.js +0 -1
- package/dist/public/assets/_DYbmgf-P.js +0 -1
- package/dist/public/assets/_DZD7yzH2.js.br +0 -0
- package/dist/public/assets/_DZLJGzpN.js.br +0 -0
- package/dist/public/assets/_D_joWBEC.js.br +0 -0
- package/dist/public/assets/_D_qiANiM.js +0 -1
- package/dist/public/assets/_D_qiANiM.js.br +0 -0
- package/dist/public/assets/_DhhUcrza.js +0 -1
- package/dist/public/assets/_Dik2fbTK.js +0 -1
- package/dist/public/assets/_Dik2fbTK.js.br +0 -0
- package/dist/public/assets/_DjGbHRs7.js +0 -1
- package/dist/public/assets/_DjdPagIm.js +0 -1
- package/dist/public/assets/_Djnp5vRt.js +0 -1
- package/dist/public/assets/_DktieTrd.js.br +0 -0
- package/dist/public/assets/_Dns259C4.js.br +0 -0
- package/dist/public/assets/_Dr2zRKuC.js +0 -1
- package/dist/public/assets/_Dtx2usNe.js.br +0 -0
- package/dist/public/assets/_DvnFb18d.js +0 -1
- package/dist/public/assets/_DvqvHR7_.js.br +0 -0
- package/dist/public/assets/_Dy57KGoU.js +0 -1
- package/dist/public/assets/_Dy57KGoU.js.br +0 -0
- package/dist/public/assets/_FdygZebO.js +0 -1
- package/dist/public/assets/_H7TtilBa.js.br +0 -0
- package/dist/public/assets/_HwOcVvTN.js +0 -1
- package/dist/public/assets/_ICJfUHY2.js +0 -1
- package/dist/public/assets/_ItervcuA.js.br +0 -0
- package/dist/public/assets/_JGwf6udl.js +0 -1
- package/dist/public/assets/_KM7EGl2R.js.br +0 -0
- package/dist/public/assets/_KpWeECPp.js.br +0 -0
- package/dist/public/assets/_LgS0G0uH.js.br +0 -0
- package/dist/public/assets/_M94yp4jo.js.br +0 -0
- package/dist/public/assets/_NGfZeYAt.js.br +0 -0
- package/dist/public/assets/_QlXMW-cP.js.br +0 -0
- package/dist/public/assets/_SHB9zmh2.js.br +0 -0
- package/dist/public/assets/_TSA_v82C.js +0 -1
- package/dist/public/assets/_TxnhYSE5.js.br +0 -0
- package/dist/public/assets/_U2n8Yyqy.js.br +0 -0
- package/dist/public/assets/_Vhpht63x.js +0 -1
- package/dist/public/assets/_Z9CaLBvo.js +0 -1
- package/dist/public/assets/__-FQNLs7.js +0 -1
- package/dist/public/assets/__CN8nA63.js +0 -1
- package/dist/public/assets/_aAORMS0u.js.br +0 -0
- package/dist/public/assets/_buuWf96L.js.br +0 -0
- package/dist/public/assets/_cSsv1ZjH.js.br +0 -0
- package/dist/public/assets/_gP9nLV2Y.js.br +0 -0
- package/dist/public/assets/_i6oi77xC.js.br +0 -0
- package/dist/public/assets/_jb3Fwzol.js +0 -1
- package/dist/public/assets/_lmVJ3O6t.js +0 -1
- package/dist/public/assets/_mloSZbwk.js +0 -1
- package/dist/public/assets/_sYOWcsEI.js +0 -1
- package/dist/public/assets/_tqD_68em.js.br +0 -0
- package/dist/public/assets/_y4SZiKqE.js +0 -1
- package/dist/public/assets/_y4SZiKqE.js.br +0 -0
- package/dist/public/assets/_zMYJngRw.js +0 -1
- package/dist/public/assets/_zTWXKPCk.js +0 -1
- package/dist/public/assets/app-shell-BXDHei7B.css +0 -1
- package/dist/public/assets/app-shell-BXDHei7B.css.br +0 -0
- package/dist/public/assets/files-view-BCnw4-08.js +0 -2
- package/dist/public/assets/files-view-Ds4k9TjY.css +0 -1
- package/dist/public/assets/files-view-Ds4k9TjY.css.br +0 -0
- package/dist/public/assets/group.css.ts-CZcH3cNI.css +0 -1
- package/dist/public/assets/group.css.ts-CZcH3cNI.css.br +0 -0
- package/dist/public/assets/icon-folder-De3LJVaT.css.br +0 -0
- package/dist/public/assets/icon-search-C6A4IBPq.css.br +0 -0
- package/dist/public/assets/manage-workspace-B2IJyc-s.js +0 -2
- package/dist/public/assets/manage-workspace-BYotHuev.css +0 -1
- package/dist/public/assets/modal-view-BY2E8mw2.css.br +0 -0
- package/dist/public/assets/new-workspace-9FQTNRn4.css +0 -1
- package/dist/public/assets/new-workspace-9FQTNRn4.css.br +0 -0
- package/dist/public/assets/new-workspace-B_6v9CYu.js +0 -2
- package/dist/public/assets/new-zQDWH4FQ.js +0 -1
- package/dist/public/assets/port-chip-V2q_q3UM.css +0 -1
- package/dist/public/assets/port-chip-V2q_q3UM.css.br +0 -0
- package/dist/public/assets/prompt-dialog-C_kDiYmC.css +0 -1
- package/dist/public/assets/prompt-dialog-C_kDiYmC.css.br +0 -0
- package/dist/public/assets/quick-open-IkoNJ7wT.css +0 -1
- package/dist/public/assets/quick-open-IkoNJ7wT.css.br +0 -0
- package/dist/public/assets/repo-picker-CMHPjNaZ.css +0 -1
- package/dist/public/assets/repo-picker-CMHPjNaZ.css.br +0 -0
- package/dist/public/assets/review-view-CqIbovDm.css +0 -1
- package/dist/public/assets/review-view-CqIbovDm.css.br +0 -0
- package/dist/public/assets/review-view-DJ3TxEP8.js +0 -2
- package/dist/public/assets/section-Bjoist2N.css +0 -1
- package/dist/public/assets/section-Bjoist2N.css.br +0 -0
- package/dist/public/assets/settings-page-CA4M6Hig.css +0 -1
- package/dist/public/assets/settings-page-CA4M6Hig.css.br +0 -0
- package/dist/public/assets/settings-page-Gf4hmpSr.js +0 -2
- package/dist/public/assets/settings-zQDWH4FQ.js +0 -1
- package/dist/public/assets/skill-row-y-AJuVyg.css +0 -1
- package/dist/public/assets/sso-auth-DCSrkI2L.css +0 -1
- package/dist/public/assets/sso-auth-DCSrkI2L.css.br +0 -0
- package/dist/public/assets/w-zQDWH4FQ.js +0 -1
- package/dist/public/assets/w._-B47BqhrV.js +0 -1
- package/dist/public/assets/w._-D0upu6g5.js +0 -1
- package/dist/public/assets/w._-zQDWH4FQ.js +0 -1
|
@@ -4,11 +4,22 @@ import { t as require_safe_buffer } from "./_BmSjjJ2E.js";
|
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { execFile, execFileSync } from "node:child_process";
|
|
7
|
+
import fs$1 from "node:fs/promises";
|
|
7
8
|
import os from "node:os";
|
|
8
9
|
import { promisify } from "node:util";
|
|
9
10
|
import { DatabaseSync } from "node:sqlite";
|
|
10
11
|
import { createHash } from "node:crypto";
|
|
11
12
|
//#region src/server/http.ts
|
|
13
|
+
/** Who may frame the app's own responses: the app alone (the review's PDF
|
|
14
|
+
* preview). A page elsewhere that frames it can dress a click on it as a
|
|
15
|
+
* click on something of its own. A route that sends a
|
|
16
|
+
* Content-Security-Policy of its own replaces this one, so it names
|
|
17
|
+
* `FRAME_ANCESTORS` too. */
|
|
18
|
+
var FRAME_ANCESTORS = "frame-ancestors 'self'";
|
|
19
|
+
var FRAME_HEADERS = {
|
|
20
|
+
"content-security-policy": FRAME_ANCESTORS,
|
|
21
|
+
"x-frame-options": "SAMEORIGIN"
|
|
22
|
+
};
|
|
12
23
|
/** Error whose `status` the API error-boundary middleware uses for the response. */
|
|
13
24
|
function httpError(status, message) {
|
|
14
25
|
return Object.assign(new Error(message), { status });
|
|
@@ -25,6 +36,96 @@ async function readBody(ctx) {
|
|
|
25
36
|
return checked(await ctx.body, "request body");
|
|
26
37
|
}
|
|
27
38
|
//#endregion
|
|
39
|
+
//#region src/server/cache.ts
|
|
40
|
+
/** Keyed stale-while-revalidate cache: a cached value is served immediately
|
|
41
|
+
* (revalidating in the background when older than `ttlMs`); loads are deduped
|
|
42
|
+
* per key, and `refresh` bypasses both the cache and any in-flight load. */
|
|
43
|
+
function swr(ttlMs, load, seed) {
|
|
44
|
+
const cache = /* @__PURE__ */ new Map();
|
|
45
|
+
const inflight = /* @__PURE__ */ new Map();
|
|
46
|
+
function start(key, refresh) {
|
|
47
|
+
const startedAt = Date.now();
|
|
48
|
+
const promise = load(key, refresh).then((value) => {
|
|
49
|
+
const existing = cache.get(key);
|
|
50
|
+
if (!existing || existing.at <= startedAt) cache.set(key, {
|
|
51
|
+
at: Date.now(),
|
|
52
|
+
value
|
|
53
|
+
});
|
|
54
|
+
return value;
|
|
55
|
+
}).finally(() => {
|
|
56
|
+
if (inflight.get(key)?.promise === promise) inflight.delete(key);
|
|
57
|
+
});
|
|
58
|
+
inflight.set(key, {
|
|
59
|
+
promise,
|
|
60
|
+
refresh
|
|
61
|
+
});
|
|
62
|
+
return promise;
|
|
63
|
+
}
|
|
64
|
+
const read = (key, refresh = false) => {
|
|
65
|
+
if (refresh) {
|
|
66
|
+
const current = inflight.get(key);
|
|
67
|
+
return current?.refresh ? current.promise : start(key, true);
|
|
68
|
+
}
|
|
69
|
+
let cached = cache.get(key);
|
|
70
|
+
if (!cached && seed) {
|
|
71
|
+
cached = seed(key);
|
|
72
|
+
if (cached) cache.set(key, cached);
|
|
73
|
+
}
|
|
74
|
+
if (cached) {
|
|
75
|
+
if (Date.now() - cached.at >= ttlMs && !inflight.has(key)) start(key, false).catch(() => {});
|
|
76
|
+
return Promise.resolve(cached.value);
|
|
77
|
+
}
|
|
78
|
+
return inflight.get(key)?.promise ?? start(key, false);
|
|
79
|
+
};
|
|
80
|
+
/** Inject an externally fetched value (e.g. from a batched load). */
|
|
81
|
+
read.set = (key, value) => {
|
|
82
|
+
cache.set(key, {
|
|
83
|
+
at: Date.now(),
|
|
84
|
+
value
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
/** Current cached value, if any — used when a batch update must merge
|
|
88
|
+
* with a richer per-key load rather than replace it. */
|
|
89
|
+
read.get = (key) => cache.get(key)?.value;
|
|
90
|
+
return read;
|
|
91
|
+
}
|
|
92
|
+
/** Serialize async work per key: calls for one key run in submission order,
|
|
93
|
+
* each starting only after the previous settled. The stored tail is the
|
|
94
|
+
* all-settled form, so a rejection neither blocks the next caller nor leaves
|
|
95
|
+
* the entry behind — the map holds only keys with work still in flight. */
|
|
96
|
+
var locks = /* @__PURE__ */ new Map();
|
|
97
|
+
function withLock(key, fn) {
|
|
98
|
+
const run = (locks.get(key) ?? Promise.resolve()).then(fn);
|
|
99
|
+
const tail = run.then(() => {}, () => {});
|
|
100
|
+
locks.set(key, tail);
|
|
101
|
+
tail.then(() => {
|
|
102
|
+
if (locks.get(key) === tail) locks.delete(key);
|
|
103
|
+
});
|
|
104
|
+
return run;
|
|
105
|
+
}
|
|
106
|
+
/** One load at a time, and a short reuse window: callers join the in-flight
|
|
107
|
+
* load, and a result younger than `ttlMs` is served without one. For an
|
|
108
|
+
* expensive process sweep (lsof, ps, list-panes) whose answer does not
|
|
109
|
+
* change within the window — `ttlMs` of 0 still collapses concurrent
|
|
110
|
+
* callers onto a single spawn. */
|
|
111
|
+
function shared(fn, ttlMs) {
|
|
112
|
+
let inflight = null;
|
|
113
|
+
let last = null;
|
|
114
|
+
return () => {
|
|
115
|
+
if (last && Date.now() - last.at < ttlMs) return Promise.resolve(last.value);
|
|
116
|
+
if (!inflight) inflight = fn().then((value) => {
|
|
117
|
+
last = {
|
|
118
|
+
at: Date.now(),
|
|
119
|
+
value
|
|
120
|
+
};
|
|
121
|
+
return value;
|
|
122
|
+
}).finally(() => {
|
|
123
|
+
inflight = null;
|
|
124
|
+
});
|
|
125
|
+
return inflight;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
28
129
|
//#region lib/setup/listen.mjs
|
|
29
130
|
/** Addresses that mean every interface. */
|
|
30
131
|
var EVERY = /* @__PURE__ */ new Set([
|
|
@@ -66,8 +167,9 @@ var config = {
|
|
|
66
167
|
appPort: Number(process.env.WORK_APP_PORT || 7171),
|
|
67
168
|
/** How a workspace port is named in a hostname the app proxies
|
|
68
169
|
* (server/port-proxy.ts): `sub` is `3000.work.example.com`, `dash` is
|
|
69
|
-
* `3000-work.example.com`. The
|
|
70
|
-
*
|
|
170
|
+
* `3000-work.example.com`. The port chips link to this one; the server
|
|
171
|
+
* takes `sub` either way, and `dash` only when it is picked
|
|
172
|
+
* (server/access.ts `dashPortName`). `dash` stays one label under the
|
|
71
173
|
* zone, which is what a free Cloudflare certificate covers. */
|
|
72
174
|
portHosts: process.env.WORK_PORT_HOSTS === "dash" ? "dash" : "sub",
|
|
73
175
|
/** The address the server listens on: this machine only, unless set
|
|
@@ -92,6 +194,11 @@ function list(value) {
|
|
|
92
194
|
return (value || "").split(",").map((s) => s.trim()).filter(Boolean);
|
|
93
195
|
}
|
|
94
196
|
fs.mkdirSync(config.dataDir, { recursive: true });
|
|
197
|
+
try {
|
|
198
|
+
fs.chmodSync(config.dataDir, 448);
|
|
199
|
+
} catch (err) {
|
|
200
|
+
console.warn(`[work] could not make ${config.dataDir} private: ${err.message}`);
|
|
201
|
+
}
|
|
95
202
|
//#endregion
|
|
96
203
|
//#region src/server/exec.ts
|
|
97
204
|
/** Dedicated tmux server so we never touch another multiplexer's or the
|
|
@@ -131,21 +238,25 @@ var GIT_NETWORK_MS = {
|
|
|
131
238
|
push: 3e5,
|
|
132
239
|
"ls-remote": 6e4
|
|
133
240
|
};
|
|
134
|
-
/**
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
241
|
+
/** What every git process work starts runs with, `extra` on top: `git`
|
|
242
|
+
* below, and the diff's streaming reads, which spawn their own. Never let
|
|
243
|
+
* git wait on a terminal it doesn't have — a missing credential fails with
|
|
244
|
+
* a message instead of hanging the clone forever. Optional locks are off
|
|
245
|
+
* because most of what runs here is a background probe (the review's
|
|
246
|
+
* stamp poll, Files, the language servers' change feed): a `git status`
|
|
247
|
+
* refreshing the index holds `index.lock`, and an agent's `git commit` or
|
|
248
|
+
* rebase step landing in that moment fails on it. */
|
|
249
|
+
var gitEnv = (extra) => ({
|
|
250
|
+
...process.env,
|
|
251
|
+
GIT_TERMINAL_PROMPT: "0",
|
|
252
|
+
GIT_OPTIONAL_LOCKS: "0",
|
|
253
|
+
...extra
|
|
254
|
+
});
|
|
140
255
|
var git = async (args, cwd) => {
|
|
141
256
|
const verb = args.find((a) => !a.startsWith("-")) ?? "";
|
|
142
257
|
const timeoutMs = GIT_NETWORK_MS[verb];
|
|
143
258
|
try {
|
|
144
|
-
return await run$1("git", args, cwd, {
|
|
145
|
-
...process.env,
|
|
146
|
-
GIT_TERMINAL_PROMPT: "0",
|
|
147
|
-
GIT_OPTIONAL_LOCKS: "0"
|
|
148
|
-
}, timeoutMs ? { timeoutMs } : void 0);
|
|
259
|
+
return await run$1("git", args, cwd, gitEnv(), timeoutMs ? { timeoutMs } : void 0);
|
|
149
260
|
} catch (err) {
|
|
150
261
|
if (timeoutMs && err.killed) throw new Error(`git ${verb} timed out after ${Math.round(timeoutMs / 1e3)}s`);
|
|
151
262
|
throw err;
|
|
@@ -229,6 +340,7 @@ function get(sql, ...params) {
|
|
|
229
340
|
function workspacePath(id) {
|
|
230
341
|
return get("SELECT path FROM workspaces WHERE id = ?", id)?.path;
|
|
231
342
|
}
|
|
343
|
+
var fresh = !db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table'").get();
|
|
232
344
|
var freshReview = !db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'review_comments'").get();
|
|
233
345
|
db.exec(`
|
|
234
346
|
PRAGMA journal_mode = WAL;
|
|
@@ -290,8 +402,7 @@ db.exec(`
|
|
|
290
402
|
);
|
|
291
403
|
|
|
292
404
|
-- Viewed marks (server/viewed.ts): a file of a branch, and its change
|
|
293
|
-
-- as it was when marked.
|
|
294
|
-
-- creates it too.
|
|
405
|
+
-- as it was when marked.
|
|
295
406
|
CREATE TABLE IF NOT EXISTS review_marks (
|
|
296
407
|
workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
297
408
|
worktree TEXT NOT NULL,
|
|
@@ -313,6 +424,7 @@ ensureColumn("review_comments", "snippet", "TEXT");
|
|
|
313
424
|
ensureColumn("workspaces", "materialized", "INTEGER NOT NULL DEFAULT 1");
|
|
314
425
|
ensureColumn("workspaces", "origin_branch", "TEXT");
|
|
315
426
|
ensureColumn("workspaces", "imported_at", "TEXT");
|
|
427
|
+
if (fresh) db.exec("PRAGMA user_version = 1");
|
|
316
428
|
//#endregion
|
|
317
429
|
//#region src/client/pref-change.ts
|
|
318
430
|
/** The stored text after `change`, or null when nothing is left. A value
|
|
@@ -642,6 +754,18 @@ var DEFAULT_GITHUB_HOST = "github.com";
|
|
|
642
754
|
function toolById(id) {
|
|
643
755
|
return TOOLS.find((t) => t.id === id) || PROJECT_TOOLS.find((t) => t.id === id) || null;
|
|
644
756
|
}
|
|
757
|
+
/** A version that is only a version (`latest`, `lts`, `22`, `1.2.3-rc.1`),
|
|
758
|
+
* not one of mise's forms that build from a git ref or point at a path
|
|
759
|
+
* (`ref:`, `path:`, `prefix:`). */
|
|
760
|
+
var PLAIN_VERSION = /^(?!-)[\w.+-]+$/;
|
|
761
|
+
/** Whether a mise pin is one of the tools above, as they install, at a
|
|
762
|
+
* plain version: what a restore takes without asking. Any other name —
|
|
763
|
+
* a registry tool the catalog does not list, a backend (`npm:`, `ubi:`,
|
|
764
|
+
* `github:`, `cargo:`, `go:`, `pipx:` …), a URL — installs and runs
|
|
765
|
+
* whatever it names, so a restore takes it only when it is named. */
|
|
766
|
+
function catalogPin(name, version) {
|
|
767
|
+
return [...TOOLS, ...PROJECT_TOOLS].some((t) => t.mise === name) && PLAIN_VERSION.test(version);
|
|
768
|
+
}
|
|
645
769
|
function agentById(id) {
|
|
646
770
|
return AGENTS$1.find((a) => a.id === id) || null;
|
|
647
771
|
}
|
|
@@ -711,8 +835,9 @@ function setupDirs() {
|
|
|
711
835
|
};
|
|
712
836
|
return dirsFor.dirs;
|
|
713
837
|
}
|
|
714
|
-
/** `~/…` for anything under the home directory — every path
|
|
715
|
-
* display (Settings rows, `work doctor
|
|
838
|
+
/** `~/…` for anything under the home directory — every path given it is
|
|
839
|
+
* for display (Settings rows, `work doctor`, a language server's
|
|
840
|
+
* definition outside every checkout), never re-used to exec. */
|
|
716
841
|
function tilde(p) {
|
|
717
842
|
if (!p) return p;
|
|
718
843
|
return p === home ? "~" : p.startsWith(home + path.sep) ? "~" + p.slice(home.length) : p;
|
|
@@ -1106,96 +1231,6 @@ function preferredAgent(enabled = enabledAgents()) {
|
|
|
1106
1231
|
return enabled[0] || "shell";
|
|
1107
1232
|
}
|
|
1108
1233
|
//#endregion
|
|
1109
|
-
//#region src/server/cache.ts
|
|
1110
|
-
/** Keyed stale-while-revalidate cache: a cached value is served immediately
|
|
1111
|
-
* (revalidating in the background when older than `ttlMs`); loads are deduped
|
|
1112
|
-
* per key, and `refresh` bypasses both the cache and any in-flight load. */
|
|
1113
|
-
function swr(ttlMs, load, seed) {
|
|
1114
|
-
const cache = /* @__PURE__ */ new Map();
|
|
1115
|
-
const inflight = /* @__PURE__ */ new Map();
|
|
1116
|
-
function start(key, refresh) {
|
|
1117
|
-
const startedAt = Date.now();
|
|
1118
|
-
const promise = load(key, refresh).then((value) => {
|
|
1119
|
-
const existing = cache.get(key);
|
|
1120
|
-
if (!existing || existing.at <= startedAt) cache.set(key, {
|
|
1121
|
-
at: Date.now(),
|
|
1122
|
-
value
|
|
1123
|
-
});
|
|
1124
|
-
return value;
|
|
1125
|
-
}).finally(() => {
|
|
1126
|
-
if (inflight.get(key)?.promise === promise) inflight.delete(key);
|
|
1127
|
-
});
|
|
1128
|
-
inflight.set(key, {
|
|
1129
|
-
promise,
|
|
1130
|
-
refresh
|
|
1131
|
-
});
|
|
1132
|
-
return promise;
|
|
1133
|
-
}
|
|
1134
|
-
const read = (key, refresh = false) => {
|
|
1135
|
-
if (refresh) {
|
|
1136
|
-
const current = inflight.get(key);
|
|
1137
|
-
return current?.refresh ? current.promise : start(key, true);
|
|
1138
|
-
}
|
|
1139
|
-
let cached = cache.get(key);
|
|
1140
|
-
if (!cached && seed) {
|
|
1141
|
-
cached = seed(key);
|
|
1142
|
-
if (cached) cache.set(key, cached);
|
|
1143
|
-
}
|
|
1144
|
-
if (cached) {
|
|
1145
|
-
if (Date.now() - cached.at >= ttlMs && !inflight.has(key)) start(key, false).catch(() => {});
|
|
1146
|
-
return Promise.resolve(cached.value);
|
|
1147
|
-
}
|
|
1148
|
-
return inflight.get(key)?.promise ?? start(key, false);
|
|
1149
|
-
};
|
|
1150
|
-
/** Inject an externally fetched value (e.g. from a batched load). */
|
|
1151
|
-
read.set = (key, value) => {
|
|
1152
|
-
cache.set(key, {
|
|
1153
|
-
at: Date.now(),
|
|
1154
|
-
value
|
|
1155
|
-
});
|
|
1156
|
-
};
|
|
1157
|
-
/** Current cached value, if any — used when a batch update must merge
|
|
1158
|
-
* with a richer per-key load rather than replace it. */
|
|
1159
|
-
read.get = (key) => cache.get(key)?.value;
|
|
1160
|
-
return read;
|
|
1161
|
-
}
|
|
1162
|
-
/** Serialize async work per key: calls for one key run in submission order,
|
|
1163
|
-
* each starting only after the previous settled. The stored tail is the
|
|
1164
|
-
* all-settled form, so a rejection neither blocks the next caller nor leaves
|
|
1165
|
-
* the entry behind — the map holds only keys with work still in flight. */
|
|
1166
|
-
var locks = /* @__PURE__ */ new Map();
|
|
1167
|
-
function withLock(key, fn) {
|
|
1168
|
-
const run = (locks.get(key) ?? Promise.resolve()).then(fn);
|
|
1169
|
-
const tail = run.then(() => {}, () => {});
|
|
1170
|
-
locks.set(key, tail);
|
|
1171
|
-
tail.then(() => {
|
|
1172
|
-
if (locks.get(key) === tail) locks.delete(key);
|
|
1173
|
-
});
|
|
1174
|
-
return run;
|
|
1175
|
-
}
|
|
1176
|
-
/** One load at a time, and a short reuse window: callers join the in-flight
|
|
1177
|
-
* load, and a result younger than `ttlMs` is served without one. For an
|
|
1178
|
-
* expensive process sweep (lsof, ps, list-panes) whose answer does not
|
|
1179
|
-
* change within the window — `ttlMs` of 0 still collapses concurrent
|
|
1180
|
-
* callers onto a single spawn. */
|
|
1181
|
-
function shared(fn, ttlMs) {
|
|
1182
|
-
let inflight = null;
|
|
1183
|
-
let last = null;
|
|
1184
|
-
return () => {
|
|
1185
|
-
if (last && Date.now() - last.at < ttlMs) return Promise.resolve(last.value);
|
|
1186
|
-
if (!inflight) inflight = fn().then((value) => {
|
|
1187
|
-
last = {
|
|
1188
|
-
at: Date.now(),
|
|
1189
|
-
value
|
|
1190
|
-
};
|
|
1191
|
-
return value;
|
|
1192
|
-
}).finally(() => {
|
|
1193
|
-
inflight = null;
|
|
1194
|
-
});
|
|
1195
|
-
return inflight;
|
|
1196
|
-
};
|
|
1197
|
-
}
|
|
1198
|
-
//#endregion
|
|
1199
1234
|
//#region src/server/events.ts
|
|
1200
1235
|
var listeners$1 = /* @__PURE__ */ new Set();
|
|
1201
1236
|
function publish(type, data) {
|
|
@@ -1219,7 +1254,7 @@ function subscribe(listener) {
|
|
|
1219
1254
|
listeners$1.add(listener);
|
|
1220
1255
|
return () => listeners$1.delete(listener);
|
|
1221
1256
|
}
|
|
1222
|
-
/** Connected
|
|
1257
|
+
/** Connected events-bus clients — lets background watchers idle when no one
|
|
1223
1258
|
* is listening. */
|
|
1224
1259
|
function subscriberCount() {
|
|
1225
1260
|
return listeners$1.size;
|
|
@@ -7177,7 +7212,7 @@ var background = /* @__PURE__ */ new Map();
|
|
|
7177
7212
|
/** A turn's end is pushed once it has stayed ended this long. Stop fires
|
|
7178
7213
|
* again each time something sends the agent back to work (a stop hook
|
|
7179
7214
|
* that continues it, a goal loop, background subagents reporting in), and
|
|
7180
|
-
* each of those ends
|
|
7215
|
+
* each of those ends would be a "Finished" on the phone while it carries on. */
|
|
7181
7216
|
var DONE_SETTLE_MS = 3e3;
|
|
7182
7217
|
var listeners = /* @__PURE__ */ new Set();
|
|
7183
7218
|
/** Called on every phase transition (the status snapshot drops itself). */
|
|
@@ -7350,7 +7385,7 @@ function publishChange(sessionId) {
|
|
|
7350
7385
|
const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
|
|
7351
7386
|
if (row?.workspace_id) {
|
|
7352
7387
|
const workspaceId = row.workspace_id;
|
|
7353
|
-
import("./
|
|
7388
|
+
import("./_LF2Fo5WE.js").then((m) => m.notifySessionsChanged(workspaceId));
|
|
7354
7389
|
return;
|
|
7355
7390
|
}
|
|
7356
7391
|
publish("sessions.changed");
|
|
@@ -7760,10 +7795,10 @@ async function fetchUsage$3(account) {
|
|
|
7760
7795
|
var PROFILE_TTL_MS = 36e5;
|
|
7761
7796
|
var profiles = /* @__PURE__ */ new Map();
|
|
7762
7797
|
/** The account's plan as Anthropic has it now. `.claude.json` holds what
|
|
7763
|
-
* Claude Code saw at sign-in, and it only asks again on a new login, so
|
|
7764
|
-
* upgrade (Max 5x → 20x)
|
|
7765
|
-
* with the same token as the usage; the cached plan stands in
|
|
7766
|
-
* cannot be. */
|
|
7798
|
+
* Claude Code saw at sign-in, and it only asks again on a new login, so
|
|
7799
|
+
* from it alone an upgrade (Max 5x → 20x) reads as the old plan until
|
|
7800
|
+
* then. Asked with the same token as the usage; the cached plan stands in
|
|
7801
|
+
* when it cannot be. */
|
|
7767
7802
|
async function livePlan(account) {
|
|
7768
7803
|
const hit = profiles.get(account.dir);
|
|
7769
7804
|
if (hit && Date.now() - hit.at < PROFILE_TTL_MS) return hit.plan;
|
|
@@ -8664,6 +8699,47 @@ var cursor = {
|
|
|
8664
8699
|
usage: () => cursorRow().then((row) => [row])
|
|
8665
8700
|
};
|
|
8666
8701
|
//#endregion
|
|
8702
|
+
//#region src/server/paths.ts
|
|
8703
|
+
/** Whether `target` is `root` or somewhere under it, by name alone. Both
|
|
8704
|
+
* are normalised first, so `..` and a trailing slash count as the
|
|
8705
|
+
* filesystem would count them, and the separator after `root` is the
|
|
8706
|
+
* whole point: a sibling `…/work-2` is not in `…/work`. A relative
|
|
8707
|
+
* `target` is in nothing — an empty one is a process cwd that could not
|
|
8708
|
+
* be read, not the root. A symlink under `root` can still lead out: what
|
|
8709
|
+
* is read through one wants `realInside`. */
|
|
8710
|
+
function inside(target, root) {
|
|
8711
|
+
if (!path.isAbsolute(target)) return false;
|
|
8712
|
+
const top = path.resolve(root);
|
|
8713
|
+
const full = path.resolve(target);
|
|
8714
|
+
return full === top || full.startsWith(top.endsWith(path.sep) ? top : top + path.sep);
|
|
8715
|
+
}
|
|
8716
|
+
/** Where `file` — named from `root`, as git and the pages name a
|
|
8717
|
+
* checkout's files, or absolute — really leads through every symlink,
|
|
8718
|
+
* when that is still `root` or under it; null when it leads out or is not
|
|
8719
|
+
* there. The check by name alone lets a symlink in a repo, which a branch
|
|
8720
|
+
* can add, point a read at any file on the machine. */
|
|
8721
|
+
async function realInside(file, root) {
|
|
8722
|
+
const full = path.resolve(root, file);
|
|
8723
|
+
if (!inside(full, root)) return null;
|
|
8724
|
+
try {
|
|
8725
|
+
const [top, real] = await Promise.all([fs$1.realpath(root), fs$1.realpath(full)]);
|
|
8726
|
+
return inside(real, top) ? real : null;
|
|
8727
|
+
} catch {
|
|
8728
|
+
return null;
|
|
8729
|
+
}
|
|
8730
|
+
}
|
|
8731
|
+
/** `realInside` for a caller that cannot wait. */
|
|
8732
|
+
function realInsideSync(file, root) {
|
|
8733
|
+
const full = path.resolve(root, file);
|
|
8734
|
+
if (!inside(full, root)) return null;
|
|
8735
|
+
try {
|
|
8736
|
+
const real = fs.realpathSync(full);
|
|
8737
|
+
return inside(real, fs.realpathSync(root)) ? real : null;
|
|
8738
|
+
} catch {
|
|
8739
|
+
return null;
|
|
8740
|
+
}
|
|
8741
|
+
}
|
|
8742
|
+
//#endregion
|
|
8667
8743
|
//#region src/agents/grok/usage.ts
|
|
8668
8744
|
var AUTH = path.join(HOME, ".grok", "auth.json");
|
|
8669
8745
|
var LOG = path.join(HOME, ".grok", "logs", "unified.jsonl");
|
|
@@ -8836,7 +8912,7 @@ function scratch() {
|
|
|
8836
8912
|
return os.tmpdir();
|
|
8837
8913
|
}
|
|
8838
8914
|
})();
|
|
8839
|
-
return hookFile()
|
|
8915
|
+
return inside(hookFile(), tmp);
|
|
8840
8916
|
}
|
|
8841
8917
|
/** Whether Grok's hook registry names work's hook file — without it Grok
|
|
8842
8918
|
* reports nothing and the screen has to speak for it. Read from disk, not
|
|
@@ -9364,10 +9440,10 @@ function tmuxWasStarted(id) {
|
|
|
9364
9440
|
function clearTmuxStarted(id) {
|
|
9365
9441
|
tmuxStarted.delete(id);
|
|
9366
9442
|
}
|
|
9367
|
-
/**
|
|
9368
|
-
* Coalesced per workspace: a turn boundary lands as a burst
|
|
9369
|
-
* transitions (hook, then scrape), and each one cost a list-panes
|
|
9370
|
-
* and a broadcast for a list that came out the same. */
|
|
9443
|
+
/** Events-bus payload: session rows + live tmux/hook state so clients
|
|
9444
|
+
* don't refetch. Coalesced per workspace: a turn boundary lands as a burst
|
|
9445
|
+
* of phase transitions (hook, then scrape), and each one cost a list-panes
|
|
9446
|
+
* spawn and a broadcast for a list that came out the same. */
|
|
9371
9447
|
var EMIT_DEBOUNCE_MS = 50;
|
|
9372
9448
|
var pendingEmits = /* @__PURE__ */ new Map();
|
|
9373
9449
|
function notifySessionsChanged(workspaceId) {
|
|
@@ -9394,8 +9470,14 @@ async function emitSessionsChanged(workspaceId) {
|
|
|
9394
9470
|
async function killWorkspaceSessions(workspaceId) {
|
|
9395
9471
|
for (const session of listSessions(workspaceId)) await killSession(session.id);
|
|
9396
9472
|
}
|
|
9473
|
+
/** Control characters a paste never means: C0 but tab and line breaks,
|
|
9474
|
+
* ESC, DEL and C1. The text can quote a reviewed file, which is repo
|
|
9475
|
+
* content, and an ESC in it can end the bracketed paste early on a tmux
|
|
9476
|
+
* that passes one through, typing the rest into the pane as keys. */
|
|
9477
|
+
var PASTE_UNSAFE = /[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/g;
|
|
9397
9478
|
/** Type text into a session's tmux (bracketed paste + Enter), creating it if needed. */
|
|
9398
|
-
async function sendToSession(id,
|
|
9479
|
+
async function sendToSession(id, raw, size) {
|
|
9480
|
+
const text = raw.replace(PASTE_UNSAFE, "");
|
|
9399
9481
|
const session = getSession(id);
|
|
9400
9482
|
if (!session) throw new Error("unknown session");
|
|
9401
9483
|
const wsPath = workspacePath(session.workspace_id);
|
|
@@ -9573,68 +9655,71 @@ async function ensureTmuxServer() {
|
|
|
9573
9655
|
], os.homedir()).catch(() => {});
|
|
9574
9656
|
}
|
|
9575
9657
|
/** Full tmux command (options + new-session) for creating/attaching a
|
|
9576
|
-
* session's tmux; `mode` is "-d" (create detached) or "-A" (attach-or-create).
|
|
9658
|
+
* session's tmux; `mode` is "-d" (create detached) or "-A" (attach-or-create).
|
|
9659
|
+
* Every `set-option` is `-q`: one failed command drops the rest of a `;`
|
|
9660
|
+
* chain, new-session included, and a tmux older than an option
|
|
9661
|
+
* (`fill-character`, `extended-keys-format`) rejects its name. */
|
|
9577
9662
|
function newSessionArgs(session, wsPath, mode, initialPrompt, size) {
|
|
9578
9663
|
return [
|
|
9579
9664
|
"start-server",
|
|
9580
9665
|
";",
|
|
9581
9666
|
"set-option",
|
|
9582
|
-
"-
|
|
9667
|
+
"-gq",
|
|
9583
9668
|
"status",
|
|
9584
9669
|
"off",
|
|
9585
9670
|
";",
|
|
9586
9671
|
"set-option",
|
|
9587
|
-
"-
|
|
9672
|
+
"-gq",
|
|
9588
9673
|
"mouse",
|
|
9589
9674
|
"on",
|
|
9590
9675
|
";",
|
|
9591
9676
|
"set-option",
|
|
9592
|
-
"-
|
|
9677
|
+
"-gq",
|
|
9593
9678
|
"history-limit",
|
|
9594
9679
|
"5000",
|
|
9595
9680
|
";",
|
|
9596
9681
|
"set-option",
|
|
9597
|
-
"-
|
|
9682
|
+
"-gq",
|
|
9598
9683
|
"fill-character",
|
|
9599
9684
|
" ",
|
|
9600
9685
|
";",
|
|
9601
9686
|
"set-option",
|
|
9602
|
-
"-
|
|
9687
|
+
"-sq",
|
|
9603
9688
|
"set-clipboard",
|
|
9604
9689
|
"on",
|
|
9605
9690
|
";",
|
|
9606
9691
|
"set-option",
|
|
9607
|
-
"-
|
|
9692
|
+
"-gq",
|
|
9608
9693
|
"focus-events",
|
|
9609
9694
|
"on",
|
|
9610
9695
|
";",
|
|
9611
9696
|
"set-option",
|
|
9612
|
-
"-
|
|
9697
|
+
"-sq",
|
|
9613
9698
|
"extended-keys",
|
|
9614
9699
|
"on",
|
|
9615
9700
|
";",
|
|
9616
9701
|
"set-option",
|
|
9617
|
-
"-
|
|
9702
|
+
"-sq",
|
|
9618
9703
|
"extended-keys-format",
|
|
9619
9704
|
"csi-u",
|
|
9620
9705
|
";",
|
|
9621
9706
|
"set-option",
|
|
9622
|
-
"-
|
|
9707
|
+
"-sq",
|
|
9623
9708
|
"terminal-features[100]",
|
|
9624
9709
|
"*:hyperlinks",
|
|
9625
9710
|
";",
|
|
9626
9711
|
"set-option",
|
|
9627
|
-
"-
|
|
9712
|
+
"-sq",
|
|
9628
9713
|
"terminal-features[101]",
|
|
9629
9714
|
"*:clipboard",
|
|
9630
9715
|
";",
|
|
9631
9716
|
"set-option",
|
|
9632
|
-
"-
|
|
9717
|
+
"-sq",
|
|
9633
9718
|
"terminal-features[102]",
|
|
9634
9719
|
"*:sync:RGB",
|
|
9635
9720
|
";",
|
|
9636
9721
|
"set-option",
|
|
9637
|
-
"-
|
|
9722
|
+
"-sq",
|
|
9638
9723
|
"terminal-features[103]",
|
|
9639
9724
|
"*:sixel",
|
|
9640
9725
|
";",
|
|
@@ -9825,4 +9910,4 @@ function sleep(ms) {
|
|
|
9825
9910
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
9826
9911
|
}
|
|
9827
9912
|
//#endregion
|
|
9828
|
-
export {
|
|
9913
|
+
export { saveSubscription as $, readBody as $t, clearAgentPhase as A, agentById as At, agentBadge as B, gh as Bt, readHookPayload as C, miseVersions as Ct, realInsideSync as D, DEFAULT_GITHUB_HOST as Dt, realInside as E, which as Et, onPhaseChange as F, all as Ft, ACCENT_RE as G, config as Gt, agentFromCommand as H, gitEnv as Ht, setAgentPhase as I, db as It, manifest as J, withLock as Jt, getInstance as K, shared as Kt, setScrapedPhase as L, get as Lt, hookReportedAt as M, catalogPin as Mt, noteBackground as N, toolById as Nt, blankRow as O, PROJECT_TOOLS as Ot, noteUserAnswered as P, applyPrefChange as Pt, pushPublicKey as Q, httpError as Qt, setSessionViewers as R, workspacePath as Rt, AGENTS as S, miseInstalls as St, inside as T, tilde as Tt, agentLabel as U, run$1 as Ut, agentFamily as V, git as Vt, agentMeta as W, tmux as Wt, setInstance as X, FRAME_HEADERS as Xt, normalizeAccent as Y, FRAME_ANCESTORS as Yt, deleteSubscription as Z, checked 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, 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, agentLabel$1 as jt, agentPhase as k, 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, swr 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, TMUX_SOCKET as zt };
|