@dylanpiercey/work 0.2.19 → 0.2.21
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 +3 -1
- package/bin/cli/session.mjs +256 -31
- package/bin/cli/topic.mjs +73 -40
- package/dist/_ChI2bucF.js +182 -0
- package/dist/_CwRrg_5F.js +2 -0
- package/dist/{_CsokArOR.js → _D2c8RJYx.js} +244 -58
- package/dist/_D4MBRSvk.js +730 -0
- package/dist/_D_EchrLM.js +2 -0
- package/dist/index.mjs +3319 -2288
- package/dist/public/assets/_0_tMiE7f.js +1 -0
- package/dist/public/assets/{_bHL-NcWS.js → _5Ph1wNdv.js} +1 -1
- package/dist/public/assets/_5Ph1wNdv.js.br +0 -0
- package/dist/public/assets/{_CCoTlnvb.js → _73_5-rCS.js} +1 -1
- package/dist/public/assets/_73_5-rCS.js.br +0 -0
- package/dist/public/assets/{_Ctjz3BD9.js → _7GQ1l7sx.js} +1 -1
- package/dist/public/assets/_7GQ1l7sx.js.br +0 -0
- package/dist/public/assets/_7k6uqsTc.js +1 -0
- package/dist/public/assets/_A-HJRoUO.js +1 -0
- package/dist/public/assets/{_DbT6uo7W.js → _AG2JmsQz.js} +1 -1
- package/dist/public/assets/_AG2JmsQz.js.br +0 -0
- package/dist/public/assets/_B-imOnRL.js +1 -0
- package/dist/public/assets/_B0RaDdiN.js +1 -0
- package/dist/public/assets/_B2I37jlY.js +1 -0
- package/dist/public/assets/_B2W_RvT4.js +1 -0
- package/dist/public/assets/_B3CzJbQp.js +1 -0
- package/dist/public/assets/_B8r95K43.js +1 -0
- package/dist/public/assets/{_CPaMvBMG.js → _BA03_q-y.js} +1 -1
- package/dist/public/assets/_BA03_q-y.js.br +0 -0
- package/dist/public/assets/{_MHZgY1AQ.js → _BBa2z28B.js} +1 -1
- package/dist/public/assets/_BBa2z28B.js.br +0 -0
- package/dist/public/assets/_BByqToGp.js +1 -0
- package/dist/public/assets/_BDeHik-b.js +1 -0
- package/dist/public/assets/_BDeHik-b.js.br +0 -0
- package/dist/public/assets/{_DTNiWZFr.js → _BFRiYaJJ.js} +1 -1
- package/dist/public/assets/_BFRiYaJJ.js.br +0 -0
- package/dist/public/assets/{_CHmEM8Sm.js → _BFwKmI_N.js} +1 -1
- package/dist/public/assets/_BFwKmI_N.js.br +0 -0
- package/dist/public/assets/{_DDcVFyaQ.js → _BHNeaYnj.js} +1 -1
- package/dist/public/assets/_BHNeaYnj.js.br +0 -0
- package/dist/public/assets/{_BprZx4vg.js → _BICa3xdD.js} +2 -2
- package/dist/public/assets/_BICa3xdD.js.br +0 -0
- package/dist/public/assets/{_DuyCZnNC.js → _BIFenNek.js} +1 -1
- package/dist/public/assets/_BIFenNek.js.br +0 -0
- package/dist/public/assets/{_BH9BIky6.js → _BIZTsyRb.js} +1 -1
- package/dist/public/assets/_BIZTsyRb.js.br +0 -0
- package/dist/public/assets/_BIa9L_Jp.js +1 -0
- package/dist/public/assets/_BMzbHEFm.js +1 -0
- package/dist/public/assets/_BN97aa7P.js +1 -0
- package/dist/public/assets/_BN97aa7P.js.br +0 -0
- package/dist/public/assets/_BNwDgGuR.js +1 -0
- package/dist/public/assets/_BOUZTVjf.js +1 -0
- package/dist/public/assets/_BPz4j7rE.js +1 -0
- package/dist/public/assets/_BTIm72sB.js +1 -0
- package/dist/public/assets/{_J1v2clxU.js → _BUYhsvxh.js} +1 -1
- package/dist/public/assets/_BUYhsvxh.js.br +0 -0
- package/dist/public/assets/_BXJTxGED.js +1 -0
- package/dist/public/assets/_BY0If-li.js +1 -0
- package/dist/public/assets/{_D__ojGam.js → _BYAIloss.js} +1 -1
- package/dist/public/assets/_BYAIloss.js.br +0 -0
- package/dist/public/assets/{_B9qGqvit.js → _BYRLA-dW.js} +1 -1
- package/dist/public/assets/{_YoXk_8Bl.js → _Bce4ghWU.js} +1 -1
- package/dist/public/assets/_Bce4ghWU.js.br +0 -0
- package/dist/public/assets/{_J3wdy6bJ.js → _BcsCv88i.js} +1 -1
- package/dist/public/assets/_BcsCv88i.js.br +0 -0
- package/dist/public/assets/{_-7Amnss4.js → _Bdmof7vZ.js} +1 -1
- package/dist/public/assets/_Bdmof7vZ.js.br +0 -0
- package/dist/public/assets/_BfZCi5tl.js +1 -0
- package/dist/public/assets/{_DYhs8iJg.js → _Bg6bkAHS.js} +12 -12
- package/dist/public/assets/_Bg6bkAHS.js.br +0 -0
- package/dist/public/assets/{_Cmtl59QM.js → _BgvqVgPM.js} +1 -1
- package/dist/public/assets/_BgvqVgPM.js.br +0 -0
- package/dist/public/assets/{_Dtx52FYB.js → _BizVDqf8.js} +1 -1
- package/dist/public/assets/{_Bt03HU8S.js → _Bk8Ggq5-.js} +1 -1
- package/dist/public/assets/{_BBCzcNZY.js → _BkfWuvuV.js} +1 -1
- package/dist/public/assets/_BkfWuvuV.js.br +0 -0
- package/dist/public/assets/{_CBEKHwUV.js → _BkzIkssa.js} +1 -1
- package/dist/public/assets/_BkzIkssa.js.br +0 -0
- package/dist/public/assets/{_BClUYs-k.js → _BlDj9LAX.js} +1 -1
- package/dist/public/assets/_BlDj9LAX.js.br +0 -0
- package/dist/public/assets/_BlMnx5Na.js +1 -0
- package/dist/public/assets/{_C1RigMYD.js → _Bmbd0VHt.js} +1 -1
- package/dist/public/assets/_Bmbd0VHt.js.br +0 -0
- package/dist/public/assets/_BmrjESDR.js +1 -0
- package/dist/public/assets/_Bo-ZmKi7.js +1 -0
- package/dist/public/assets/_BoQkVIQr.js +1 -0
- package/dist/public/assets/_BoRKAxyI.js +1 -0
- package/dist/public/assets/_BqIUSM2Y.js +1 -0
- package/dist/public/assets/_BrEXuoKx.js +1 -0
- package/dist/public/assets/{_D7qWWxdI.js → _Bsq9keoe.js} +1 -1
- package/dist/public/assets/_Bsq9keoe.js.br +0 -0
- package/dist/public/assets/{_UZAFx6D8.js → _Bvx-j57v.js} +1 -1
- package/dist/public/assets/_Bvx-j57v.js.br +0 -0
- package/dist/public/assets/_BzqqrLsh.js +1 -0
- package/dist/public/assets/{_G8KNSVdM.js → _BzuJUSrq.js} +1 -1
- package/dist/public/assets/_BzuJUSrq.js.br +0 -0
- package/dist/public/assets/{_uCKs5N6Q.js → _C08Yvl87.js} +1 -1
- package/dist/public/assets/_C08Yvl87.js.br +0 -0
- package/dist/public/assets/_C1JmLCpr.js +1 -0
- package/dist/public/assets/_C1JmLCpr.js.br +0 -0
- package/dist/public/assets/{_BPDSQUbl.js → _C58IJd_X.js} +1 -1
- package/dist/public/assets/_C58IJd_X.js.br +0 -0
- package/dist/public/assets/{_DCrPsldZ.js → _C5zDywEl.js} +1 -1
- package/dist/public/assets/_C5zDywEl.js.br +0 -0
- package/dist/public/assets/{_CG383oZY.js → _C640tDQf.js} +1 -1
- package/dist/public/assets/_C640tDQf.js.br +0 -0
- package/dist/public/assets/{_DsehEuMD.js → _C9iToy9b.js} +1 -1
- package/dist/public/assets/_C9iToy9b.js.br +0 -0
- package/dist/public/assets/{_CuglAToi.js → _CDjIrVlP.js} +1 -1
- package/dist/public/assets/_CDjIrVlP.js.br +0 -0
- package/dist/public/assets/{_qAsGEOt5.js → _CDxca_Y6.js} +1 -1
- package/dist/public/assets/_CDxca_Y6.js.br +0 -0
- package/dist/public/assets/_CEW7bDu1.js +1 -0
- package/dist/public/assets/{_CEC5O89D.js → _CH9bw9am.js} +1 -1
- package/dist/public/assets/_CH9bw9am.js.br +0 -0
- package/dist/public/assets/_CHHsqkCg.js +1 -0
- package/dist/public/assets/_CI27TAPs.js +1 -0
- package/dist/public/assets/_CK6szfVl.js +1 -0
- package/dist/public/assets/_CL0Zklna.js +1 -0
- package/dist/public/assets/{_C7Y4xApK.js → _CLf29XSp.js} +1 -1
- package/dist/public/assets/_CLf29XSp.js.br +0 -0
- package/dist/public/assets/_CQ5mzxP3.js +1 -0
- package/dist/public/assets/{_CspPbDoP.js → _CSJjeQ2T.js} +1 -1
- package/dist/public/assets/_CSJjeQ2T.js.br +0 -0
- package/dist/public/assets/{_BhecGD7y.js → _CVZMUsZa.js} +1 -1
- package/dist/public/assets/_CVZMUsZa.js.br +0 -0
- package/dist/public/assets/_CXTzKJ7b.js +1 -0
- package/dist/public/assets/{_Cl7LTITm.js → _CXb8mRib.js} +1 -1
- package/dist/public/assets/_CXb8mRib.js.br +0 -0
- package/dist/public/assets/_CXg0iofG.js +1 -0
- package/dist/public/assets/_CYfTE2mK.js +1 -0
- package/dist/public/assets/_CYjOt5W9.js +1 -0
- package/dist/public/assets/_CZuGGG4i.js +1 -0
- package/dist/public/assets/{_T5HFHZgl.js → _C_iT3nzY.js} +1 -1
- package/dist/public/assets/_C_iT3nzY.js.br +0 -0
- package/dist/public/assets/{_C-BYkx5h.js → _CaNdac_8.js} +1 -1
- package/dist/public/assets/_CaNdac_8.js.br +0 -0
- package/dist/public/assets/_CaiQP-gC.js +1 -0
- package/dist/public/assets/_Cdn3JBI2.js +1 -0
- package/dist/public/assets/_CdnnYSkh.js +1 -0
- package/dist/public/assets/{_CdpmkkzR.js → _CerICoJl.js} +1 -1
- package/dist/public/assets/_CerICoJl.js.br +0 -0
- package/dist/public/assets/_CfnM74sI.js +1 -0
- package/dist/public/assets/{_DWb03VKf.js → _Cfupsedr.js} +1 -1
- package/dist/public/assets/_Cfupsedr.js.br +0 -0
- package/dist/public/assets/_ChTIOm8i.js +1 -0
- package/dist/public/assets/_ChqCBy1f.js +1 -0
- package/dist/public/assets/_CiorUJIA.js +1 -0
- package/dist/public/assets/_Cjbj13jO.js +1 -0
- package/dist/public/assets/_Cjbj13jO.js.br +0 -0
- package/dist/public/assets/_Ck1wrcUI.js +1 -0
- package/dist/public/assets/{_BAWjkhA8.js → _Ck7pAEbn.js} +1 -1
- package/dist/public/assets/_Ck7pAEbn.js.br +0 -0
- package/dist/public/assets/{_CBgzBB_k.js → _CkFtsZjQ.js} +1 -1
- package/dist/public/assets/_CkFtsZjQ.js.br +0 -0
- package/dist/public/assets/{_bDI-pCZR.js → _Cl4-TcfE.js} +1 -1
- package/dist/public/assets/_Cl4-TcfE.js.br +0 -0
- package/dist/public/assets/_CoqRYp5v.js +1 -0
- package/dist/public/assets/_CqpW3h-I.js +1 -0
- package/dist/public/assets/{_C6Yt6h_R.js → _CsGNOykB.js} +1 -1
- package/dist/public/assets/_CsGNOykB.js.br +0 -0
- package/dist/public/assets/_Ctnz7WWJ.js +1 -0
- package/dist/public/assets/{_B9xuaMHt.js → _CxVvYDtS.js} +1 -1
- package/dist/public/assets/_CxVvYDtS.js.br +0 -0
- package/dist/public/assets/_CxyIt6f7.js +1 -0
- package/dist/public/assets/{_0sTkxfPx.js → _CyL-kdgT.js} +1 -1
- package/dist/public/assets/_CyL-kdgT.js.br +0 -0
- package/dist/public/assets/_CzJ9InTW.js +1 -0
- package/dist/public/assets/{_Bcc0Xs64.js → _D1eeoDTu.js} +1 -1
- package/dist/public/assets/_D1eeoDTu.js.br +0 -0
- package/dist/public/assets/_D4CDV27H.js +1 -0
- package/dist/public/assets/{_zN8SypHW.js → _D4_n-0mW.js} +1 -1
- package/dist/public/assets/_D4_n-0mW.js.br +0 -0
- package/dist/public/assets/_D4cLcNV3.js +1 -0
- package/dist/public/assets/_DAyjzJQh.js +1 -0
- package/dist/public/assets/{_XsB9KmcW.js → _DDzF_HKK.js} +1 -1
- package/dist/public/assets/_DDzF_HKK.js.br +0 -0
- package/dist/public/assets/{_CfP0f0PU.js → _DErtgeIr.js} +1 -1
- package/dist/public/assets/_DErtgeIr.js.br +0 -0
- package/dist/public/assets/_DFfExL2u.js +1 -0
- package/dist/public/assets/_DFrz22tm.js +1 -0
- package/dist/public/assets/_DHa_6Ojs.js +1 -0
- package/dist/public/assets/_DJOP49xX.js +1 -0
- package/dist/public/assets/_DK8uOd3E.js +1 -0
- package/dist/public/assets/{_BtedGrGs.js → _DOdGN8S4.js} +1 -1
- package/dist/public/assets/_DOdGN8S4.js.br +0 -0
- package/dist/public/assets/{_BDdZkZRc.js → _DRLwtZUR.js} +1 -1
- package/dist/public/assets/_DRLwtZUR.js.br +0 -0
- package/dist/public/assets/{_B9I2AEux.js → _DRTmj9TH.js} +1 -1
- package/dist/public/assets/_DRTmj9TH.js.br +0 -0
- package/dist/public/assets/_DSzLnpML.js +1 -0
- package/dist/public/assets/_DUKPsBJp.js +1 -0
- package/dist/public/assets/_DVYTGzTu.js +2 -0
- package/dist/public/assets/_DVYTGzTu.js.br +0 -0
- package/dist/public/assets/_DVmN6ae4.js +1 -0
- package/dist/public/assets/_DWA6owFW.js +1 -0
- package/dist/public/assets/{_D36PnqCD.js → _DdYu7WPn.js} +1 -1
- package/dist/public/assets/_DdYu7WPn.js.br +0 -0
- package/dist/public/assets/_Df7MvCAw.js +1 -0
- package/dist/public/assets/_DgOj7Cbi.js +1 -0
- package/dist/public/assets/{_qxffRpjc.js → _DhVfuzvb.js} +1 -1
- package/dist/public/assets/{_dVHSDgPC.js → _DiprQjpN.js} +1 -1
- package/dist/public/assets/_DiprQjpN.js.br +0 -0
- package/dist/public/assets/_DnlLdQgB.js +1 -0
- package/dist/public/assets/_DsnvOSuz.js +1 -0
- package/dist/public/assets/_Dt3XHRda.js +1 -0
- package/dist/public/assets/{_CDyWgQ0v.js → _DtP6T0Qs.js} +4 -4
- package/dist/public/assets/_DtP6T0Qs.js.br +0 -0
- package/dist/public/assets/_DtTvqD6P.js +86 -0
- package/dist/public/assets/_DtTvqD6P.js.br +0 -0
- package/dist/public/assets/{_BmpOmFbo.js → _DuaHQLSY.js} +1 -1
- package/dist/public/assets/_DuaHQLSY.js.br +0 -0
- package/dist/public/assets/_DvUlBhvt.js +1 -0
- package/dist/public/assets/{_DJBR8Qwq.js → _DwGQe611.js} +1 -1
- package/dist/public/assets/_DwGQe611.js.br +0 -0
- package/dist/public/assets/{_C_D5TPb7.js → _DwywWG3y.js} +1 -1
- package/dist/public/assets/_DwywWG3y.js.br +0 -0
- package/dist/public/assets/_IVFMD_0n.js +1 -0
- package/dist/public/assets/{_DYUFCi44.js → _Ij8bPUyH.js} +1 -1
- package/dist/public/assets/_Ij8bPUyH.js.br +0 -0
- package/dist/public/assets/_J6lHekiE.js +1 -0
- package/dist/public/assets/{_CB52LkYt.js → _NdzBn2sR.js} +1 -1
- package/dist/public/assets/_NdzBn2sR.js.br +0 -0
- package/dist/public/assets/_O_eRw3B2.js +1 -0
- package/dist/public/assets/{_CIfCdAzS.js → _P3IdziH9.js} +1 -1
- package/dist/public/assets/{_DSeQngGR.js → _P_Cq2but.js} +1 -1
- package/dist/public/assets/_P_Cq2but.js.br +0 -0
- package/dist/public/assets/_Qz67tpvL.js +1 -0
- package/dist/public/assets/{_D3IviZbJ.js → _R03vQ_v0.js} +1 -1
- package/dist/public/assets/_R03vQ_v0.js.br +0 -0
- package/dist/public/assets/{_C-DhXiEm.js → _RFw6Nx5T.js} +1 -1
- package/dist/public/assets/_RFw6Nx5T.js.br +0 -0
- package/dist/public/assets/{_D8ac72_O.js → _STdNaT6y.js} +1 -1
- package/dist/public/assets/_STdNaT6y.js.br +0 -0
- package/dist/public/assets/{_CL8DzBla.js → _UA84gjfG.js} +1 -1
- package/dist/public/assets/_UA84gjfG.js.br +0 -0
- package/dist/public/assets/_WkGa-CtY.js +1 -0
- package/dist/public/assets/{_briyaWgK.js → _YUh2tPBd.js} +1 -1
- package/dist/public/assets/_YUh2tPBd.js.br +0 -0
- package/dist/public/assets/_ZyOQxLKv.js +1 -0
- package/dist/public/assets/_ZyOQxLKv.js.br +0 -0
- package/dist/public/assets/{_G1BLeMns.js → _c-qsSFlV.js} +1 -1
- package/dist/public/assets/_c-qsSFlV.js.br +0 -0
- package/dist/public/assets/_dokDnQxT.js +1 -0
- package/dist/public/assets/_evDhQu9i.js +1 -0
- package/dist/public/assets/_gJS63N3S.js +1 -0
- package/dist/public/assets/{_DmoI4cIl.js → _gNcK1gjL.js} +1 -1
- package/dist/public/assets/_gNcK1gjL.js.br +0 -0
- package/dist/public/assets/_iRrqodg_.js +1 -0
- package/dist/public/assets/{_1M3oZPSf.js → _kVP48xNg.js} +1 -1
- package/dist/public/assets/_kVP48xNg.js.br +0 -0
- package/dist/public/assets/_kzqXqxfV.js +1 -0
- package/dist/public/assets/{_DN7pTn2g.js → _lkg74XVz.js} +1 -1
- package/dist/public/assets/_lkg74XVz.js.br +0 -0
- package/dist/public/assets/{_CdtjIoUd.js → _mSdir26q.js} +1 -1
- package/dist/public/assets/_mSdir26q.js.br +0 -0
- package/dist/public/assets/{_BjZqS7za.js → _maOaIkt7.js} +1 -1
- package/dist/public/assets/_maOaIkt7.js.br +0 -0
- package/dist/public/assets/{_BdSsUhCi.js → _oz27bk8p.js} +1 -1
- package/dist/public/assets/_oz27bk8p.js.br +0 -0
- package/dist/public/assets/{_BlshXH2Y.js → _pWJ2zOe1.js} +9 -9
- package/dist/public/assets/_pWJ2zOe1.js.br +0 -0
- package/dist/public/assets/{_BQW1kIop.js → _puLINbut.js} +1 -1
- package/dist/public/assets/_puLINbut.js.br +0 -0
- package/dist/public/assets/_u10cI9v9.js +1 -0
- package/dist/public/assets/_u10cI9v9.js.br +0 -0
- package/dist/public/assets/{_EcMqP1xI.js → _uifx05bO.js} +1 -1
- package/dist/public/assets/_uifx05bO.js.br +0 -0
- package/dist/public/assets/{_CPj_VL66.js → _vK3Svg3Y.js} +1 -1
- package/dist/public/assets/_vK3Svg3Y.js.br +0 -0
- package/dist/public/assets/_vatAiflQ.js +1 -0
- package/dist/public/assets/{_DSCqWPO0.js → _vkQNoNgo.js} +1 -1
- package/dist/public/assets/_vkQNoNgo.js.br +0 -0
- package/dist/public/assets/{_DzNFlI0M.js → _vrEdqivA.js} +1 -1
- package/dist/public/assets/_vrEdqivA.js.br +0 -0
- package/dist/public/assets/{_DpbHp8yR.js → _waOVbKBy.js} +1 -1
- package/dist/public/assets/_waOVbKBy.js.br +0 -0
- package/dist/public/assets/{_Dw1P6xZJ.js → _xClsbTiz.js} +1 -1
- package/dist/public/assets/_xClsbTiz.js.br +0 -0
- package/dist/public/assets/{_CToqok6Q.js → _yEwkwRQh.js} +1 -1
- package/dist/public/assets/_yEwkwRQh.js.br +0 -0
- package/dist/public/assets/{_C3fslTAD.js → _zjCzqshZ.js} +1 -1
- package/dist/public/assets/_zjCzqshZ.js.br +0 -0
- package/dist/public/assets/files-view-LgAHHBkN.js +2 -0
- package/dist/public/assets/manage-workspace-GIrOdQfT.js +2 -0
- package/dist/public/assets/new-BnJGtHxA.js +1 -0
- package/dist/public/assets/new-workspace-D0_Bjnwr.js +2 -0
- package/dist/public/assets/review-view-EK5wo6mn.js +2 -0
- package/dist/public/assets/settings-BnJGtHxA.js +1 -0
- package/dist/public/assets/settings-page-fQ5vUGWY.js +2 -0
- package/dist/public/assets/styles-DJePZwKA.css +1 -0
- package/dist/public/assets/styles-DJePZwKA.css.br +0 -0
- package/dist/public/assets/w-BnJGtHxA.js +1 -0
- package/dist/public/assets/w._-6UqjOxF-.js +1 -0
- package/dist/public/assets/w._-B3lMtxDs.js +1 -0
- package/dist/public/assets/w._-BnJGtHxA.js +1 -0
- package/package.json +1 -1
- package/dist/_L2HNAA_8.js +0 -2
- package/dist/__TCdgPY5.js +0 -173
- package/dist/public/assets/_-7Amnss4.js.br +0 -0
- package/dist/public/assets/_0XXNUttq.js +0 -1
- package/dist/public/assets/_0sTkxfPx.js.br +0 -0
- package/dist/public/assets/_0zzYbK0A.js +0 -1
- package/dist/public/assets/_1M3oZPSf.js.br +0 -0
- package/dist/public/assets/_2O5HnHht.js +0 -1
- package/dist/public/assets/_7WlUaJPH.js +0 -1
- package/dist/public/assets/_8Tr7ByPg.js +0 -1
- package/dist/public/assets/_9AXMmQSO.js +0 -1
- package/dist/public/assets/_B1VqbV-X.js +0 -1
- package/dist/public/assets/_B9I2AEux.js.br +0 -0
- package/dist/public/assets/_B9xuaMHt.js.br +0 -0
- package/dist/public/assets/_BAWjkhA8.js.br +0 -0
- package/dist/public/assets/_BBCzcNZY.js.br +0 -0
- package/dist/public/assets/_BBW2szHh.js +0 -1
- package/dist/public/assets/_BCP2Njnu.js +0 -1
- package/dist/public/assets/_BClUYs-k.js.br +0 -0
- package/dist/public/assets/_BDdZkZRc.js.br +0 -0
- package/dist/public/assets/_BEDmGSgS.js +0 -1
- package/dist/public/assets/_BEDmGSgS.js.br +0 -0
- package/dist/public/assets/_BH9BIky6.js.br +0 -0
- package/dist/public/assets/_BLdi8Ee5.js +0 -1
- package/dist/public/assets/_BPDSQUbl.js.br +0 -0
- package/dist/public/assets/_BQW1kIop.js.br +0 -0
- package/dist/public/assets/_BQeoUfFw.js +0 -1
- package/dist/public/assets/_BRzroLbh.js +0 -1
- package/dist/public/assets/_BSXsTYSe.js +0 -1
- package/dist/public/assets/_BTXDT3Na.js +0 -1
- package/dist/public/assets/_BXm4xeFI.js +0 -1
- package/dist/public/assets/_BY8UeogK.js +0 -1
- package/dist/public/assets/_BYpyhp64.js +0 -1
- package/dist/public/assets/_BYpyhp64.js.br +0 -0
- package/dist/public/assets/_B_Kz7LnY.js +0 -1
- package/dist/public/assets/_Bcc0Xs64.js.br +0 -0
- package/dist/public/assets/_BdSsUhCi.js.br +0 -0
- package/dist/public/assets/_BdaWssEH.js +0 -1
- package/dist/public/assets/_BhecGD7y.js.br +0 -0
- package/dist/public/assets/_Bj9dpPhN.js +0 -1
- package/dist/public/assets/_BjZqS7za.js.br +0 -0
- package/dist/public/assets/_BkSUiyHK.js +0 -1
- package/dist/public/assets/_BlshXH2Y.js.br +0 -0
- package/dist/public/assets/_BmX-VP7w.js +0 -1
- package/dist/public/assets/_BmpOmFbo.js.br +0 -0
- package/dist/public/assets/_Bo6YntUl.js +0 -1
- package/dist/public/assets/_BprZx4vg.js.br +0 -0
- package/dist/public/assets/_Bqm7OnIV.js +0 -1
- package/dist/public/assets/_BquBGUNK.js +0 -1
- package/dist/public/assets/_BquBGUNK.js.br +0 -0
- package/dist/public/assets/_BrB66aRZ.js +0 -1
- package/dist/public/assets/_BtedGrGs.js.br +0 -0
- package/dist/public/assets/_C-BYkx5h.js.br +0 -0
- package/dist/public/assets/_C-DhXiEm.js.br +0 -0
- package/dist/public/assets/_C-NBFnST.js +0 -1
- package/dist/public/assets/_C1RigMYD.js.br +0 -0
- package/dist/public/assets/_C2vRS-ES.js +0 -1
- package/dist/public/assets/_C3fslTAD.js.br +0 -0
- package/dist/public/assets/_C4EYjWGn.js +0 -1
- package/dist/public/assets/_C4EYjWGn.js.br +0 -0
- package/dist/public/assets/_C6Yt6h_R.js.br +0 -0
- package/dist/public/assets/_C7Y4xApK.js.br +0 -0
- package/dist/public/assets/_CB52LkYt.js.br +0 -0
- package/dist/public/assets/_CBEKHwUV.js.br +0 -0
- package/dist/public/assets/_CBSLBYQF.js +0 -1
- package/dist/public/assets/_CBgzBB_k.js.br +0 -0
- package/dist/public/assets/_CCoTlnvb.js.br +0 -0
- package/dist/public/assets/_CD26To-f.js +0 -1
- package/dist/public/assets/_CDyWgQ0v.js.br +0 -0
- package/dist/public/assets/_CEC5O89D.js.br +0 -0
- package/dist/public/assets/_CF2kEAU7.js +0 -1
- package/dist/public/assets/_CFURqbmO.js +0 -1
- package/dist/public/assets/_CG383oZY.js.br +0 -0
- package/dist/public/assets/_CHNJosg3.js +0 -1
- package/dist/public/assets/_CHmEM8Sm.js.br +0 -0
- package/dist/public/assets/_CKyzH0fl.js +0 -1
- package/dist/public/assets/_CL8DzBla.js.br +0 -0
- package/dist/public/assets/_CNYS94C5.js +0 -1
- package/dist/public/assets/_CNhypHJN.js +0 -1
- package/dist/public/assets/_CO-FkxlA.js +0 -1
- package/dist/public/assets/_COiGBSpO.js +0 -1
- package/dist/public/assets/_COvolvRQ.js +0 -1
- package/dist/public/assets/_CPaMvBMG.js.br +0 -0
- package/dist/public/assets/_CPj_VL66.js.br +0 -0
- package/dist/public/assets/_CQJC8Vx4.js +0 -1
- package/dist/public/assets/_CRHNlzBC.js +0 -1
- package/dist/public/assets/_CToqok6Q.js.br +0 -0
- package/dist/public/assets/_CUFKkl0B.js +0 -1
- package/dist/public/assets/_CZsOUa-q.js +0 -1
- package/dist/public/assets/_C_D5TPb7.js.br +0 -0
- package/dist/public/assets/_CdHI48v6.js +0 -1
- package/dist/public/assets/_CdpmkkzR.js.br +0 -0
- package/dist/public/assets/_CdtjIoUd.js.br +0 -0
- package/dist/public/assets/_Ce9Tv01m.js +0 -1
- package/dist/public/assets/_CeC7Lv10.js +0 -1
- package/dist/public/assets/_CfP0f0PU.js.br +0 -0
- package/dist/public/assets/_Cg7DH3xk.js +0 -1
- package/dist/public/assets/_Cg7DH3xk.js.br +0 -0
- package/dist/public/assets/_CikNq0z8.js +0 -1
- package/dist/public/assets/_Cl7LTITm.js.br +0 -0
- package/dist/public/assets/_Cmtl59QM.js.br +0 -0
- package/dist/public/assets/_CshYq_Dp.js +0 -1
- package/dist/public/assets/_CspPbDoP.js.br +0 -0
- package/dist/public/assets/_Ctjz3BD9.js.br +0 -0
- package/dist/public/assets/_CuglAToi.js.br +0 -0
- package/dist/public/assets/_CwSoAVRN.js +0 -1
- package/dist/public/assets/_D0XQV-Hm.js +0 -1
- package/dist/public/assets/_D36PnqCD.js.br +0 -0
- package/dist/public/assets/_D3IviZbJ.js.br +0 -0
- package/dist/public/assets/_D6rgUB9O.js +0 -1
- package/dist/public/assets/_D7qWWxdI.js.br +0 -0
- package/dist/public/assets/_D8ac72_O.js.br +0 -0
- package/dist/public/assets/_D9WWxrQR.js +0 -1
- package/dist/public/assets/_D9hI5dSA.js +0 -1
- package/dist/public/assets/_DCrPsldZ.js.br +0 -0
- package/dist/public/assets/_DDcVFyaQ.js.br +0 -0
- package/dist/public/assets/_DDhkKo8Q.js +0 -1
- package/dist/public/assets/_DJBR8Qwq.js.br +0 -0
- package/dist/public/assets/_DLpa6VYT.js +0 -1
- package/dist/public/assets/_DMqe6rR-.js +0 -1
- package/dist/public/assets/_DN7pTn2g.js.br +0 -0
- package/dist/public/assets/_DP8UuFuJ.js +0 -1
- package/dist/public/assets/_DQedUaqM.js +0 -1
- package/dist/public/assets/_DSCqWPO0.js.br +0 -0
- package/dist/public/assets/_DSeQngGR.js.br +0 -0
- package/dist/public/assets/_DTNiWZFr.js.br +0 -0
- package/dist/public/assets/_DThlusXY.js +0 -1
- package/dist/public/assets/_DUK16H19.js +0 -1
- package/dist/public/assets/_DUZ13t3U.js +0 -1
- package/dist/public/assets/_DWb03VKf.js.br +0 -0
- package/dist/public/assets/_DWsyhfgn.js +0 -1
- package/dist/public/assets/_DXuzYhW6.js +0 -1
- package/dist/public/assets/_DXyOzA2b.js +0 -1
- package/dist/public/assets/_DYUFCi44.js.br +0 -0
- package/dist/public/assets/_DYhs8iJg.js.br +0 -0
- package/dist/public/assets/_D__ojGam.js.br +0 -0
- package/dist/public/assets/_DaFI_W5D.js +0 -1
- package/dist/public/assets/_DbT6uo7W.js.br +0 -0
- package/dist/public/assets/_DhnT0cCE.js +0 -1
- package/dist/public/assets/_Dm9OGn2q.js +0 -1
- package/dist/public/assets/_DmkeGFoM.js +0 -1
- package/dist/public/assets/_DmoI4cIl.js.br +0 -0
- package/dist/public/assets/_DpbHp8yR.js.br +0 -0
- package/dist/public/assets/_Dqz_HBE1.js +0 -1
- package/dist/public/assets/_DsehEuMD.js.br +0 -0
- package/dist/public/assets/_DuEyirL6.js +0 -1
- package/dist/public/assets/_DuuloSIi.js +0 -1
- package/dist/public/assets/_DuyCZnNC.js.br +0 -0
- package/dist/public/assets/_Dw1P6xZJ.js.br +0 -0
- package/dist/public/assets/_DzNFlI0M.js.br +0 -0
- package/dist/public/assets/_EcMqP1xI.js.br +0 -0
- package/dist/public/assets/_G1BLeMns.js.br +0 -0
- package/dist/public/assets/_G8KNSVdM.js.br +0 -0
- package/dist/public/assets/_J1v2clxU.js.br +0 -0
- package/dist/public/assets/_J3wdy6bJ.js.br +0 -0
- package/dist/public/assets/_MHZgY1AQ.js.br +0 -0
- package/dist/public/assets/_NHTZitq1.js +0 -2
- package/dist/public/assets/_NHTZitq1.js.br +0 -0
- package/dist/public/assets/_PsuNqRL9.js +0 -86
- package/dist/public/assets/_PsuNqRL9.js.br +0 -0
- package/dist/public/assets/_T5HFHZgl.js.br +0 -0
- package/dist/public/assets/_UZAFx6D8.js.br +0 -0
- package/dist/public/assets/_XA8_RQXF.js +0 -1
- package/dist/public/assets/_XsB9KmcW.js.br +0 -0
- package/dist/public/assets/_YoXk_8Bl.js.br +0 -0
- package/dist/public/assets/_YubCdy3Z.js +0 -1
- package/dist/public/assets/_bDI-pCZR.js.br +0 -0
- package/dist/public/assets/_bHL-NcWS.js.br +0 -0
- package/dist/public/assets/_bqRzDYc8.js +0 -1
- package/dist/public/assets/_briyaWgK.js.br +0 -0
- package/dist/public/assets/_dVHSDgPC.js.br +0 -0
- package/dist/public/assets/_gkZjZ9I4.js +0 -1
- package/dist/public/assets/_plyCYAnN.js +0 -1
- package/dist/public/assets/_q0Z44mWJ.js +0 -1
- package/dist/public/assets/_q0Z44mWJ.js.br +0 -0
- package/dist/public/assets/_qAsGEOt5.js.br +0 -0
- package/dist/public/assets/_uCKs5N6Q.js.br +0 -0
- package/dist/public/assets/_utWnC80Q.js +0 -1
- package/dist/public/assets/_utvzcBHT.js +0 -1
- package/dist/public/assets/_v8WbCPI8.js +0 -1
- package/dist/public/assets/_yK4b_Bl5.js +0 -1
- package/dist/public/assets/_yoQW4BY5.js +0 -1
- package/dist/public/assets/_zB6USXHX.js +0 -1
- package/dist/public/assets/_zN8SypHW.js.br +0 -0
- package/dist/public/assets/files-view-Fl0rU3Ns.js +0 -2
- package/dist/public/assets/manage-workspace-DggRcsXf.js +0 -2
- package/dist/public/assets/new-C7NxTJAT.js +0 -1
- package/dist/public/assets/new-workspace-C0pw5Iz1.js +0 -2
- package/dist/public/assets/review-view-C4YQ0J-X.js +0 -2
- package/dist/public/assets/settings-C7NxTJAT.js +0 -1
- package/dist/public/assets/settings-page-Cl_1tWCv.js +0 -2
- package/dist/public/assets/styles-Vcsj4CA7.css +0 -1
- package/dist/public/assets/styles-Vcsj4CA7.css.br +0 -0
- package/dist/public/assets/w-C7NxTJAT.js +0 -1
- package/dist/public/assets/w._-BbFH2lR-.js +0 -1
- package/dist/public/assets/w._-C7NxTJAT.js +0 -1
- package/dist/public/assets/w._-YIzLOiyZ.js +0 -1
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
var glyphBadgeNum = "_P _O";
|
|
2
|
+
var usageInk = {
|
|
3
|
+
ok: "_Q",
|
|
4
|
+
mid: "_R",
|
|
5
|
+
warm: "_S",
|
|
6
|
+
hot: "_T"
|
|
7
|
+
};
|
|
8
|
+
var usageFill = {
|
|
9
|
+
ok: "_U",
|
|
10
|
+
mid: "_V",
|
|
11
|
+
warm: "_W",
|
|
12
|
+
hot: "_X"
|
|
13
|
+
};
|
|
14
|
+
var prTone = {
|
|
15
|
+
open: "_Y",
|
|
16
|
+
draft: "_Z",
|
|
17
|
+
merged: "_0",
|
|
18
|
+
closed: "_1"
|
|
19
|
+
};
|
|
20
|
+
var phaseIcon = {
|
|
21
|
+
working: "_bd _bc",
|
|
22
|
+
waiting: "_be _bc",
|
|
23
|
+
idle: "_bf _bc",
|
|
24
|
+
off: "_bg _bc"
|
|
25
|
+
};
|
|
26
|
+
var btnSm = "_bn _I";
|
|
27
|
+
var btnLg = "_bo _I";
|
|
28
|
+
var tone = {
|
|
29
|
+
accent: "_bs",
|
|
30
|
+
ok: "_bt",
|
|
31
|
+
warn: "_bu",
|
|
32
|
+
danger: "_bv",
|
|
33
|
+
merged: "_bw",
|
|
34
|
+
closed: "_bx"
|
|
35
|
+
};
|
|
36
|
+
var inputLg = "_bB _bA";
|
|
37
|
+
var iconBtnXs = "_bF _D";
|
|
38
|
+
var iconBtnRow = "_bG _D";
|
|
39
|
+
var iconBtnLg = "_bH _D";
|
|
40
|
+
var chipBtn = "_bI _D";
|
|
41
|
+
var toastStack = "_o _n";
|
|
42
|
+
var toastKind = {
|
|
43
|
+
error: "_s",
|
|
44
|
+
warn: "_t",
|
|
45
|
+
info: "_u"
|
|
46
|
+
};
|
|
47
|
+
var toastTitle = {
|
|
48
|
+
error: "_v",
|
|
49
|
+
warn: "_w",
|
|
50
|
+
info: "_x"
|
|
51
|
+
};
|
|
52
|
+
var tocDot = "_dh _ba";
|
|
53
|
+
//#endregion
|
|
54
|
+
//#region src/styles/tokens.css.ts
|
|
55
|
+
var color = {
|
|
56
|
+
ok: "light-dark(#1a7f37, #57d364)",
|
|
57
|
+
okStrong: "light-dark(#116329, #7ee787)",
|
|
58
|
+
warn: "light-dark(#bf8700, #d4a72c)",
|
|
59
|
+
warnStrong: "light-dark(#8a5a00, #f0b84a)",
|
|
60
|
+
merged: "light-dark(#8250df, #a371f7)",
|
|
61
|
+
closed: "light-dark(#cf222e, #f85149)",
|
|
62
|
+
onAccent: "#fff",
|
|
63
|
+
onDanger: "#fff",
|
|
64
|
+
accentDefault: "light-dark(#4f5bd5, #6470e6)",
|
|
65
|
+
bg: "var(--bg)",
|
|
66
|
+
panel: "var(--panel)",
|
|
67
|
+
border: "var(--border)",
|
|
68
|
+
text: "var(--text)",
|
|
69
|
+
dim: "var(--dim)",
|
|
70
|
+
accent: "var(--accent)",
|
|
71
|
+
accentFill: "var(--accent-fill)",
|
|
72
|
+
accentText: "var(--accent-text)",
|
|
73
|
+
danger: "var(--danger)",
|
|
74
|
+
fieldBorder: "var(--field-border)",
|
|
75
|
+
raised: "color-mix(in srgb, var(--panel) 94%, var(--text))",
|
|
76
|
+
raisedHover: "color-mix(in srgb, var(--panel) 90%, var(--text))",
|
|
77
|
+
onScrim: "#fff"
|
|
78
|
+
};
|
|
79
|
+
var sans = "Inter, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif";
|
|
80
|
+
var iconSize = {
|
|
81
|
+
sm: 12,
|
|
82
|
+
md: 14,
|
|
83
|
+
lg: 16,
|
|
84
|
+
xl: 18
|
|
85
|
+
};
|
|
86
|
+
//#endregion
|
|
87
|
+
//#region src/tags/settings-agents.css.ts
|
|
88
|
+
var agentRow = "_f0 _dX";
|
|
89
|
+
var list$3 = "_d1 _dJ _dW _dZ";
|
|
90
|
+
var metaChip = "_ee _bz _by";
|
|
91
|
+
var sectionCount = "_dG _bp _bq";
|
|
92
|
+
var usageNote = "_ko _by";
|
|
93
|
+
var pop$2 = "_hx _bN";
|
|
94
|
+
var spinner = "_hA _bD _bi";
|
|
95
|
+
var toolLead = "_hc _d_";
|
|
96
|
+
var name$4 = "_hm _d_";
|
|
97
|
+
var desc$1 = "_hn _ea";
|
|
98
|
+
//#endregion
|
|
99
|
+
//#region src/tags/lsp-add-dialog.css.ts
|
|
100
|
+
var addDlg = "_kx _bX";
|
|
101
|
+
var key$1 = "_l2 _l0";
|
|
102
|
+
var addTile = "_l4 _l0";
|
|
103
|
+
var field$2 = "_me _bA";
|
|
104
|
+
var keyField = "_mf _me _bA";
|
|
105
|
+
var labelField = "_mg _me _bA";
|
|
106
|
+
var detailsToggle = "_gq _6";
|
|
107
|
+
var themeSeg = "_fJ _bR";
|
|
108
|
+
var checkList = "_ig _dH";
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region src/tags/prompt-dialog.css.ts
|
|
111
|
+
var promptDlg = "_b1 _bX";
|
|
112
|
+
var item$1 = "_ci _D";
|
|
113
|
+
var glance = "_dT _D";
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region src/tags/side-nav.css.ts
|
|
116
|
+
var iconBtn = "_cl _D";
|
|
117
|
+
var settingsDot = "_cm _bQ";
|
|
118
|
+
var notifyBtn = "_cr _D";
|
|
119
|
+
//#endregion
|
|
120
|
+
//#region src/styles/session-pop.css.ts
|
|
121
|
+
var sessionPop = "_ct _bN";
|
|
122
|
+
var sessionPopBtn = "_cu _bk";
|
|
123
|
+
var wsBtn = "_eS _bk";
|
|
124
|
+
var rowIcon = "_eU _bF _D";
|
|
125
|
+
var prChip = "_lc _M _k7";
|
|
126
|
+
//#endregion
|
|
127
|
+
//#region src/tags/port-chip.css.ts
|
|
128
|
+
var port = "_oN _M _k7";
|
|
129
|
+
var depth = {
|
|
130
|
+
"1": "_lv",
|
|
131
|
+
"2": "_lw",
|
|
132
|
+
"3": "_lx"
|
|
133
|
+
};
|
|
134
|
+
var open = "_lD _bk";
|
|
135
|
+
var action = "_lI _bI _D";
|
|
136
|
+
var toggle = "_ej _6";
|
|
137
|
+
var fold = "_ek _dY";
|
|
138
|
+
var item = "_kF _bk";
|
|
139
|
+
var statusOf = {
|
|
140
|
+
queued: "_mZ",
|
|
141
|
+
starting: "_m0",
|
|
142
|
+
working: "_m1",
|
|
143
|
+
waiting: "_m2",
|
|
144
|
+
idle: "_m3",
|
|
145
|
+
done: "_m4",
|
|
146
|
+
closed: "_m5"
|
|
147
|
+
};
|
|
148
|
+
var menu = "_mv _ct _bN";
|
|
149
|
+
var menuItem = "_mx _bk";
|
|
150
|
+
var findBtn$1 = "_jp _ip _bG _D";
|
|
151
|
+
var tool = "_ip _bG _D";
|
|
152
|
+
var heldRefresh = "_ix _M";
|
|
153
|
+
var pop$1 = "_ni _ct _bN";
|
|
154
|
+
var fileFilter = "_oS _F";
|
|
155
|
+
var findInput = "_ex _F";
|
|
156
|
+
var keybarIconBtn = "_eG _bI _D";
|
|
157
|
+
var input = "_b4 _F";
|
|
158
|
+
var group = "_b7 _6";
|
|
159
|
+
var hint$1 = "_nD _bp _3";
|
|
160
|
+
var sheetDir = "_n6 _bP";
|
|
161
|
+
var upBtn = "_iJ _bG _D";
|
|
162
|
+
var findBtn = "_iN _ip _bG _D";
|
|
163
|
+
var goBtn = "_iO _ip _bG _D";
|
|
164
|
+
var note = "_nl _by";
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region src/tags/manage-workspace.css.ts
|
|
167
|
+
var procCmd = "_hL _d_";
|
|
168
|
+
var factCopy = "_hS _bI _D";
|
|
169
|
+
var resultRow = "_kS _bk";
|
|
170
|
+
var resultBranch = "_kT _ee _bz _by _bF _D";
|
|
171
|
+
var urlAction = "_kU _ee _bz _by _ef";
|
|
172
|
+
var curRow = "_hJ _d4";
|
|
173
|
+
//#endregion
|
|
174
|
+
//#region src/tags/join-dialog.css.ts
|
|
175
|
+
var dlg = "_lQ _bX";
|
|
176
|
+
var hint = "_lR _by";
|
|
177
|
+
var kbtn = "_c4 _bH _D";
|
|
178
|
+
var repeat = "_c7 _c6";
|
|
179
|
+
var dpadUser = "_c_ _c6";
|
|
180
|
+
var dpadEsc = "_da _c6";
|
|
181
|
+
//#endregion
|
|
182
|
+
export { field$2 as $, statusOf as A, prTone as At, wsBtn as B, fileFilter as C, chipBtn as Ct, findBtn$1 as D, iconBtnXs as Dt, tool as E, iconBtnRow as Et, depth as F, settingsDot as G, sessionPopBtn as H, open as I, promptDlg as J, glance as K, port as L, fold as M, usageFill as Mt, toggle as N, usageInk as Nt, menu as O, inputLg as Ot, action as P, addTile as Q, prChip as R, keybarIconBtn as S, btnSm as St, heldRefresh as T, iconBtnLg as Tt, iconBtn as U, sessionPop as V, notifyBtn as W, themeSeg as X, checkList as Y, detailsToggle as Z, sheetDir as _, tocDot as _t, dlg as a, name$4 as at, input as b, toastTitle as bt, resultBranch as c, spinner as ct, factCopy as d, list$3 as dt, key$1 as et, procCmd as f, metaChip as ft, upBtn as g, sans as gt, goBtn as h, iconSize as ht, repeat as i, desc$1 as it, item as j, tone as jt, menuItem as k, phaseIcon as kt, resultRow as l, usageNote as lt, findBtn as m, color as mt, dpadUser as n, labelField as nt, hint as o, toolLead as ot, note as p, agentRow as pt, item$1 as q, kbtn as r, addDlg as rt, curRow as s, pop$2 as st, dpadEsc as t, keyField as tt, urlAction as u, sectionCount as ut, hint$1 as v, toastKind as vt, pop$1 as w, glyphBadgeNum as wt, findInput as x, btnLg as xt, group as y, toastStack as yt, rowIcon as z };
|
|
@@ -500,6 +500,101 @@ var STEPS = [
|
|
|
500
500
|
|
|
501
501
|
CREATE INDEX session_messages_to ON session_messages(to_session);
|
|
502
502
|
CREATE INDEX session_messages_from ON session_messages(from_session);
|
|
503
|
+
`);
|
|
504
|
+
}
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
version: 5,
|
|
508
|
+
name: "session teams",
|
|
509
|
+
up(db) {
|
|
510
|
+
db.exec(`
|
|
511
|
+
ALTER TABLE sessions ADD COLUMN launch_dir TEXT;
|
|
512
|
+
ALTER TABLE sessions ADD COLUMN launch_mode TEXT;
|
|
513
|
+
ALTER TABLE sessions ADD COLUMN summary TEXT;
|
|
514
|
+
ALTER TABLE sessions ADD COLUMN keep INTEGER NOT NULL DEFAULT 0;
|
|
515
|
+
ALTER TABLE sessions ADD COLUMN answered_at TEXT;
|
|
516
|
+
UPDATE sessions SET answered_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
|
|
517
|
+
WHERE parent_id IS NOT NULL
|
|
518
|
+
AND id NOT IN (SELECT to_session FROM session_messages);
|
|
519
|
+
|
|
520
|
+
CREATE TABLE plans (
|
|
521
|
+
id TEXT PRIMARY KEY,
|
|
522
|
+
workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
523
|
+
owner TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
|
|
524
|
+
name TEXT NOT NULL,
|
|
525
|
+
phases TEXT NOT NULL DEFAULT '[]',
|
|
526
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
527
|
+
done_at TEXT
|
|
528
|
+
);
|
|
529
|
+
|
|
530
|
+
CREATE TABLE plan_log (
|
|
531
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
532
|
+
plan_id TEXT NOT NULL REFERENCES plans(id) ON DELETE CASCADE,
|
|
533
|
+
text TEXT NOT NULL,
|
|
534
|
+
at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
535
|
+
);
|
|
536
|
+
|
|
537
|
+
CREATE TABLE session_groups (
|
|
538
|
+
id TEXT PRIMARY KEY,
|
|
539
|
+
workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
540
|
+
owner TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
|
|
541
|
+
plan_id TEXT REFERENCES plans(id) ON DELETE SET NULL,
|
|
542
|
+
phase TEXT,
|
|
543
|
+
title TEXT NOT NULL,
|
|
544
|
+
parallel INTEGER NOT NULL DEFAULT 4,
|
|
545
|
+
fan_in INTEGER NOT NULL DEFAULT 1,
|
|
546
|
+
close_done INTEGER NOT NULL DEFAULT 0,
|
|
547
|
+
keep INTEGER NOT NULL DEFAULT 0,
|
|
548
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
549
|
+
);
|
|
550
|
+
|
|
551
|
+
CREATE TABLE group_members (
|
|
552
|
+
id TEXT PRIMARY KEY,
|
|
553
|
+
group_id TEXT NOT NULL REFERENCES session_groups(id) ON DELETE CASCADE,
|
|
554
|
+
ord INTEGER NOT NULL,
|
|
555
|
+
session_id TEXT REFERENCES sessions(id) ON DELETE SET NULL,
|
|
556
|
+
agent TEXT NOT NULL,
|
|
557
|
+
title TEXT NOT NULL,
|
|
558
|
+
prompt TEXT NOT NULL,
|
|
559
|
+
launch_dir TEXT,
|
|
560
|
+
state TEXT NOT NULL DEFAULT 'queued' CHECK (state IN ('queued', 'running', 'done', 'closed')),
|
|
561
|
+
note TEXT,
|
|
562
|
+
summary TEXT,
|
|
563
|
+
attempts INTEGER NOT NULL DEFAULT 0,
|
|
564
|
+
started_at TEXT,
|
|
565
|
+
done_at TEXT
|
|
566
|
+
);
|
|
567
|
+
|
|
568
|
+
CREATE INDEX group_members_group ON group_members(group_id);
|
|
569
|
+
CREATE INDEX group_members_session ON group_members(session_id);
|
|
570
|
+
|
|
571
|
+
ALTER TABLE session_messages ADD COLUMN group_id TEXT REFERENCES session_groups(id) ON DELETE SET NULL;
|
|
572
|
+
`);
|
|
573
|
+
}
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
version: 6,
|
|
577
|
+
name: "drop work plan",
|
|
578
|
+
up(db) {
|
|
579
|
+
db.exec(`
|
|
580
|
+
CREATE TABLE session_groups_new (
|
|
581
|
+
id TEXT PRIMARY KEY,
|
|
582
|
+
workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
583
|
+
owner TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
|
|
584
|
+
title TEXT NOT NULL,
|
|
585
|
+
parallel INTEGER NOT NULL DEFAULT 4,
|
|
586
|
+
fan_in INTEGER NOT NULL DEFAULT 1,
|
|
587
|
+
close_done INTEGER NOT NULL DEFAULT 0,
|
|
588
|
+
keep INTEGER NOT NULL DEFAULT 0,
|
|
589
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
590
|
+
);
|
|
591
|
+
INSERT INTO session_groups_new (id, workspace_id, owner, title, parallel, fan_in, close_done, keep, created_at)
|
|
592
|
+
SELECT id, workspace_id, owner, title, parallel, fan_in, close_done, keep, created_at FROM session_groups;
|
|
593
|
+
DROP TABLE session_groups;
|
|
594
|
+
ALTER TABLE session_groups_new RENAME TO session_groups;
|
|
595
|
+
|
|
596
|
+
DROP TABLE plan_log;
|
|
597
|
+
DROP TABLE plans;
|
|
503
598
|
`);
|
|
504
599
|
}
|
|
505
600
|
}
|
|
@@ -8249,6 +8344,14 @@ var lastMessages = /* @__PURE__ */ new Map();
|
|
|
8249
8344
|
var expecting = /* @__PURE__ */ new Set();
|
|
8250
8345
|
/** When someone last typed into each session's pane from a page. */
|
|
8251
8346
|
var typedAt = /* @__PURE__ */ new Map();
|
|
8347
|
+
/** What each session's turn is doing, from its last tool call ("Bash:
|
|
8348
|
+
* pnpm test"): the line a team view shows for a member at work. */
|
|
8349
|
+
var activities = /* @__PURE__ */ new Map();
|
|
8350
|
+
/** Each session's permission mode, as its hooks last reported it
|
|
8351
|
+
* (`permission_mode`): what a session it starts runs in. */
|
|
8352
|
+
var modes = /* @__PURE__ */ new Map();
|
|
8353
|
+
/** Told when a session's job is done (`onFinished`). */
|
|
8354
|
+
var finishedListeners = /* @__PURE__ */ new Set();
|
|
8252
8355
|
/** Told of each turn's end that stayed the end (`onTurnEnd`). */
|
|
8253
8356
|
var turnEndListeners = /* @__PURE__ */ new Set();
|
|
8254
8357
|
/** A turn's end is pushed once it has stayed ended this long. Stop fires
|
|
@@ -8271,13 +8374,17 @@ function setAgentPhase(sessionId, phase, reason, summary, message) {
|
|
|
8271
8374
|
if (phase === "waiting" && reason === "done") {
|
|
8272
8375
|
const failed = phases.get(sessionId) === "waiting" && reasons.get(sessionId) === "attention";
|
|
8273
8376
|
if (summary) summaries.set(sessionId, summary);
|
|
8377
|
+
activities.delete(sessionId);
|
|
8274
8378
|
if (message) lastMessages.set(sessionId, message);
|
|
8275
8379
|
else lastMessages.delete(sessionId);
|
|
8276
8380
|
if (phases.has(sessionId)) applyChange(sessionId, () => dropHook(sessionId));
|
|
8277
8381
|
if (!background.has(sessionId)) pendingDone.set(sessionId, setTimeout(() => {
|
|
8278
8382
|
pendingDone.delete(sessionId);
|
|
8279
8383
|
const answered = endTurn(sessionId);
|
|
8280
|
-
if (!failed && !answered && !expecting.has(sessionId))
|
|
8384
|
+
if (!failed && !answered && !expecting.has(sessionId)) {
|
|
8385
|
+
for (const fn of finishedListeners) fn(sessionId);
|
|
8386
|
+
notify(sessionId, "done");
|
|
8387
|
+
}
|
|
8281
8388
|
}, DONE_SETTLE_MS));
|
|
8282
8389
|
return;
|
|
8283
8390
|
}
|
|
@@ -8323,6 +8430,11 @@ function endTurn(sessionId) {
|
|
|
8323
8430
|
for (const fn of turnEndListeners) told = fn(sessionId, lastMessages.get(sessionId)) || told;
|
|
8324
8431
|
return told;
|
|
8325
8432
|
}
|
|
8433
|
+
/** A session's job is done: its turn ended and stayed ended, answering
|
|
8434
|
+
* nobody, with nothing it waits on — the moment a Finished is pushed. */
|
|
8435
|
+
function onFinished(fn) {
|
|
8436
|
+
finishedListeners.add(fn);
|
|
8437
|
+
}
|
|
8326
8438
|
/** A turn's end still waiting out `DONE_SETTLE_MS`: it may yet carry on. */
|
|
8327
8439
|
function turnSettling(sessionId) {
|
|
8328
8440
|
return pendingDone.has(sessionId);
|
|
@@ -8337,6 +8449,24 @@ function setExpecting(ids) {
|
|
|
8337
8449
|
});
|
|
8338
8450
|
}
|
|
8339
8451
|
}
|
|
8452
|
+
/** A hook's `permission_mode`: the mode the session is in now (a CLI's
|
|
8453
|
+
* own toggle can move it mid-session). */
|
|
8454
|
+
function notePermissionMode(sessionId, mode) {
|
|
8455
|
+
modes.set(sessionId, mode);
|
|
8456
|
+
}
|
|
8457
|
+
function permissionMode(sessionId) {
|
|
8458
|
+
return modes.get(sessionId);
|
|
8459
|
+
}
|
|
8460
|
+
/** The line its hooks last gave a wait or a turn's end (what a push says). */
|
|
8461
|
+
function summaryOf(sessionId) {
|
|
8462
|
+
return summaries.get(sessionId);
|
|
8463
|
+
}
|
|
8464
|
+
function noteActivity(sessionId, text) {
|
|
8465
|
+
activities.set(sessionId, text);
|
|
8466
|
+
}
|
|
8467
|
+
function activityOf(sessionId) {
|
|
8468
|
+
return activities.get(sessionId);
|
|
8469
|
+
}
|
|
8340
8470
|
/** Someone typed into the session's pane from a page. */
|
|
8341
8471
|
function noteTyped(sessionId) {
|
|
8342
8472
|
typedAt.set(sessionId, Date.now());
|
|
@@ -8424,9 +8554,13 @@ function sessionWatched(sessionId) {
|
|
|
8424
8554
|
return (viewers.get(sessionId) ?? 0) > 0;
|
|
8425
8555
|
}
|
|
8426
8556
|
async function notify(sessionId, reason) {
|
|
8427
|
-
const row = get(`SELECT s.agent, s.title, s.workspace_id, w.name
|
|
8428
|
-
|
|
8557
|
+
const row = get(`SELECT s.agent, s.title, s.workspace_id, w.name,
|
|
8558
|
+
p.agent AS parent_agent, p.title AS parent_title
|
|
8559
|
+
FROM sessions s JOIN workspaces w ON w.id = s.workspace_id
|
|
8560
|
+
LEFT JOIN sessions p ON p.id = s.parent_id WHERE s.id = ?`, sessionId);
|
|
8429
8561
|
if (!row) return;
|
|
8562
|
+
const parent = row.parent_agent ? `${row.parent_title || agentLabel(row.parent_agent)} › ` : "";
|
|
8563
|
+
if (parent && reason === "done") return;
|
|
8430
8564
|
if ((viewers.get(sessionId) ?? 0) > 0) return;
|
|
8431
8565
|
if (!notifyOn(reason)) return;
|
|
8432
8566
|
const waiting = [.../* @__PURE__ */ new Set([...phases.keys(), ...scraped.keys()])].filter((id) => agentPhase(id) === "waiting").length;
|
|
@@ -8434,7 +8568,7 @@ async function notify(sessionId, reason) {
|
|
|
8434
8568
|
const mark = reason === "done" ? "✔" : "⚠";
|
|
8435
8569
|
const inst = getInstance().name;
|
|
8436
8570
|
sendPush({
|
|
8437
|
-
title: `${mark} ${inst ? `${inst} · ` : ""}${row.name} · ${row.title || agentLabel(row.agent)}`,
|
|
8571
|
+
title: `${mark} ${inst ? `${inst} · ` : ""}${row.name} · ${parent}${row.title || agentLabel(row.agent)}`,
|
|
8438
8572
|
body: summary || (reason === "done" ? "Finished" : "Needs you"),
|
|
8439
8573
|
tag: `session-${sessionId}`,
|
|
8440
8574
|
badge: waiting,
|
|
@@ -8451,6 +8585,8 @@ function clearAgentPhase(sessionId) {
|
|
|
8451
8585
|
summaries.delete(sessionId);
|
|
8452
8586
|
lastMessages.delete(sessionId);
|
|
8453
8587
|
typedAt.delete(sessionId);
|
|
8588
|
+
modes.delete(sessionId);
|
|
8589
|
+
activities.delete(sessionId);
|
|
8454
8590
|
reportedAt.delete(sessionId);
|
|
8455
8591
|
interruptedAt.delete(sessionId);
|
|
8456
8592
|
if (!phases.has(sessionId) && !scraped.has(sessionId) && !background.has(sessionId)) return;
|
|
@@ -8488,12 +8624,53 @@ function publishChange(sessionId) {
|
|
|
8488
8624
|
const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
|
|
8489
8625
|
if (row?.workspace_id) {
|
|
8490
8626
|
const workspaceId = row.workspace_id;
|
|
8491
|
-
import("./
|
|
8627
|
+
import("./_CwRrg_5F.js").then((m) => m.notifySessionsChanged(workspaceId));
|
|
8492
8628
|
return;
|
|
8493
8629
|
}
|
|
8494
8630
|
publish("sessions.changed");
|
|
8495
8631
|
}
|
|
8496
8632
|
//#endregion
|
|
8633
|
+
//#region src/server/paths.ts
|
|
8634
|
+
/** Whether `target` is `root` or somewhere under it, by name alone. Both
|
|
8635
|
+
* are normalised first, so `..` and a trailing slash count as the
|
|
8636
|
+
* filesystem would count them, and the separator after `root` is the
|
|
8637
|
+
* whole point: a sibling `…/work-2` is not in `…/work`. A relative
|
|
8638
|
+
* `target` is in nothing — an empty one is a process cwd that could not
|
|
8639
|
+
* be read, not the root. A symlink under `root` can still lead out: what
|
|
8640
|
+
* is read through one wants `realInside`. */
|
|
8641
|
+
function inside(target, root) {
|
|
8642
|
+
if (!path.isAbsolute(target)) return false;
|
|
8643
|
+
const top = path.resolve(root);
|
|
8644
|
+
const full = path.resolve(target);
|
|
8645
|
+
return full === top || full.startsWith(top.endsWith(path.sep) ? top : top + path.sep);
|
|
8646
|
+
}
|
|
8647
|
+
/** Where `file` — named from `root`, as git and the pages name a
|
|
8648
|
+
* checkout's files, or absolute — really leads through every symlink,
|
|
8649
|
+
* when that is still `root` or under it; null when it leads out or is not
|
|
8650
|
+
* there. The check by name alone lets a symlink in a repo, which a branch
|
|
8651
|
+
* can add, point a read at any file on the machine. */
|
|
8652
|
+
async function realInside(file, root) {
|
|
8653
|
+
const full = path.resolve(root, file);
|
|
8654
|
+
if (!inside(full, root)) return null;
|
|
8655
|
+
try {
|
|
8656
|
+
const [top, real] = await Promise.all([fs$1.realpath(root), fs$1.realpath(full)]);
|
|
8657
|
+
return inside(real, top) ? real : null;
|
|
8658
|
+
} catch {
|
|
8659
|
+
return null;
|
|
8660
|
+
}
|
|
8661
|
+
}
|
|
8662
|
+
/** `realInside` for a caller that cannot wait. */
|
|
8663
|
+
function realInsideSync(file, root) {
|
|
8664
|
+
const full = path.resolve(root, file);
|
|
8665
|
+
if (!inside(full, root)) return null;
|
|
8666
|
+
try {
|
|
8667
|
+
const real = fs.realpathSync(full);
|
|
8668
|
+
return inside(real, fs.realpathSync(root)) ? real : null;
|
|
8669
|
+
} catch {
|
|
8670
|
+
return null;
|
|
8671
|
+
}
|
|
8672
|
+
}
|
|
8673
|
+
//#endregion
|
|
8497
8674
|
//#region src/agents/hooks.ts
|
|
8498
8675
|
/** Shell command a CLI hook runs to report a state: POSTs the hook's own
|
|
8499
8676
|
* stdin JSON to the app, which mines it for a notification summary. `exit 0`
|
|
@@ -9021,6 +9198,15 @@ var QUESTION_TOOL$1 = "AskUserQuestion";
|
|
|
9021
9198
|
* wait as the lead's own prompt. Claude's own notification type, beside
|
|
9022
9199
|
* the shared ones. */
|
|
9023
9200
|
var WORKER_PERMISSION = "worker_permission_prompt";
|
|
9201
|
+
/** The modes `--permission-mode` takes; `default` is no flag at all. */
|
|
9202
|
+
var MODES = /* @__PURE__ */ new Set([
|
|
9203
|
+
"acceptEdits",
|
|
9204
|
+
"auto",
|
|
9205
|
+
"bypassPermissions",
|
|
9206
|
+
"manual",
|
|
9207
|
+
"dontAsk",
|
|
9208
|
+
"plan"
|
|
9209
|
+
]);
|
|
9024
9210
|
/** How StopFailure's `error` reads on a phone. */
|
|
9025
9211
|
var FAILURES = {
|
|
9026
9212
|
authentication_failed: "Signed out",
|
|
@@ -9165,10 +9351,14 @@ var claude = {
|
|
|
9165
9351
|
]
|
|
9166
9352
|
]) })],
|
|
9167
9353
|
reportsWorking: () => true,
|
|
9354
|
+
modeFlags: (mode) => MODES.has(mode) ? ["--permission-mode", mode] : [],
|
|
9168
9355
|
envPrefixes: ["CLAUDE", "AI_AGENT"],
|
|
9169
9356
|
startupQuestions: [{
|
|
9170
9357
|
screen: /Is this a project you created or one you trust/,
|
|
9171
9358
|
asks: "whether to trust this folder"
|
|
9359
|
+
}, {
|
|
9360
|
+
screen: /running in Bypass Permissions mode[\s\S]*Yes, I accept/,
|
|
9361
|
+
asks: "whether to accept Bypass Permissions mode"
|
|
9172
9362
|
}],
|
|
9173
9363
|
readHook: readHook$6,
|
|
9174
9364
|
usage: () => Promise.all(claudeAccounts().map((account) => claudeRow(account)))
|
|
@@ -9806,47 +9996,6 @@ var cursor = {
|
|
|
9806
9996
|
usage: () => cursorRow().then((row) => [row])
|
|
9807
9997
|
};
|
|
9808
9998
|
//#endregion
|
|
9809
|
-
//#region src/server/paths.ts
|
|
9810
|
-
/** Whether `target` is `root` or somewhere under it, by name alone. Both
|
|
9811
|
-
* are normalised first, so `..` and a trailing slash count as the
|
|
9812
|
-
* filesystem would count them, and the separator after `root` is the
|
|
9813
|
-
* whole point: a sibling `…/work-2` is not in `…/work`. A relative
|
|
9814
|
-
* `target` is in nothing — an empty one is a process cwd that could not
|
|
9815
|
-
* be read, not the root. A symlink under `root` can still lead out: what
|
|
9816
|
-
* is read through one wants `realInside`. */
|
|
9817
|
-
function inside(target, root) {
|
|
9818
|
-
if (!path.isAbsolute(target)) return false;
|
|
9819
|
-
const top = path.resolve(root);
|
|
9820
|
-
const full = path.resolve(target);
|
|
9821
|
-
return full === top || full.startsWith(top.endsWith(path.sep) ? top : top + path.sep);
|
|
9822
|
-
}
|
|
9823
|
-
/** Where `file` — named from `root`, as git and the pages name a
|
|
9824
|
-
* checkout's files, or absolute — really leads through every symlink,
|
|
9825
|
-
* when that is still `root` or under it; null when it leads out or is not
|
|
9826
|
-
* there. The check by name alone lets a symlink in a repo, which a branch
|
|
9827
|
-
* can add, point a read at any file on the machine. */
|
|
9828
|
-
async function realInside(file, root) {
|
|
9829
|
-
const full = path.resolve(root, file);
|
|
9830
|
-
if (!inside(full, root)) return null;
|
|
9831
|
-
try {
|
|
9832
|
-
const [top, real] = await Promise.all([fs$1.realpath(root), fs$1.realpath(full)]);
|
|
9833
|
-
return inside(real, top) ? real : null;
|
|
9834
|
-
} catch {
|
|
9835
|
-
return null;
|
|
9836
|
-
}
|
|
9837
|
-
}
|
|
9838
|
-
/** `realInside` for a caller that cannot wait. */
|
|
9839
|
-
function realInsideSync(file, root) {
|
|
9840
|
-
const full = path.resolve(root, file);
|
|
9841
|
-
if (!inside(full, root)) return null;
|
|
9842
|
-
try {
|
|
9843
|
-
const real = fs.realpathSync(full);
|
|
9844
|
-
return inside(real, fs.realpathSync(root)) ? real : null;
|
|
9845
|
-
} catch {
|
|
9846
|
-
return null;
|
|
9847
|
-
}
|
|
9848
|
-
}
|
|
9849
|
-
//#endregion
|
|
9850
9999
|
//#region src/agents/grok/usage.ts
|
|
9851
10000
|
var AUTH = path.join(HOME, ".grok", "auth.json");
|
|
9852
10001
|
var LOG = path.join(HOME, ".grok", "logs", "unified.jsonl");
|
|
@@ -10441,6 +10590,10 @@ function agentFor(id) {
|
|
|
10441
10590
|
function agentLaunchFlags(id, ctx) {
|
|
10442
10591
|
return agentFor(id)?.launchFlags?.(ctx) ?? [];
|
|
10443
10592
|
}
|
|
10593
|
+
/** Argv that starts an instance in a permission mode (`modeFlags`). */
|
|
10594
|
+
function agentModeFlags(id, mode) {
|
|
10595
|
+
return mode ? agentFor(id)?.modeFlags?.(mode) ?? [] : [];
|
|
10596
|
+
}
|
|
10444
10597
|
/** Env for a spawned pane so the agent CLI reports state — the families
|
|
10445
10598
|
* configured by environment rather than argv. */
|
|
10446
10599
|
function agentLaunchEnv(id, ctx) {
|
|
@@ -10496,15 +10649,17 @@ function getSession(id) {
|
|
|
10496
10649
|
* workspace at once (restored tabs, a phone and a desktop) both list no
|
|
10497
10650
|
* sessions before either POST lands. The check and the insert run in one
|
|
10498
10651
|
* synchronous step, so the second gets the first one's session. */
|
|
10499
|
-
function createSession(workspaceId, agent, ifEmpty = false,
|
|
10652
|
+
function createSession(workspaceId, agent, ifEmpty = false, start = {}) {
|
|
10500
10653
|
if (!isKnownAgent(agent)) throw new Error(`unknown session kind: ${agent}`);
|
|
10501
10654
|
if (ifEmpty) {
|
|
10502
10655
|
const first = listSessions(workspaceId)[0];
|
|
10503
10656
|
if (first) return first;
|
|
10504
10657
|
}
|
|
10505
|
-
const
|
|
10658
|
+
const parent = start.parent ? getSession(start.parent) : void 0;
|
|
10659
|
+
const parentId = parent?.workspace_id === workspaceId ? parent.id : null;
|
|
10660
|
+
const mode = start.launchMode !== void 0 ? start.launchMode : parentId ? permissionMode(parentId) ?? parent?.launch_mode ?? null : null;
|
|
10506
10661
|
const id = Math.random().toString(36).slice(2, 10);
|
|
10507
|
-
db.prepare("INSERT INTO sessions (id, workspace_id, agent, parent_id) VALUES (?, ?, ?, ?)").run(id, workspaceId, agent, parentId);
|
|
10662
|
+
db.prepare("INSERT INTO sessions (id, workspace_id, agent, parent_id, launch_dir, launch_mode, keep) VALUES (?, ?, ?, ?, ?, ?, ?)").run(id, workspaceId, agent, parentId, start.launchDir ?? null, mode, start.keep ? 1 : 0);
|
|
10508
10663
|
notifySessionsChanged(workspaceId);
|
|
10509
10664
|
return getSession(id);
|
|
10510
10665
|
}
|
|
@@ -10514,11 +10669,24 @@ function renameSession(id, title) {
|
|
|
10514
10669
|
db.prepare("UPDATE sessions SET title = ? WHERE id = ?").run(title, id);
|
|
10515
10670
|
notifySessionsChanged(session.workspace_id);
|
|
10516
10671
|
}
|
|
10517
|
-
|
|
10672
|
+
/** Close a session, and with it every session it started and theirs
|
|
10673
|
+
* (`parent_id`), unless `keepChildren`: those then stand on their own.
|
|
10674
|
+
* Returns the ids closed. */
|
|
10675
|
+
async function killSession(id, keepChildren = false) {
|
|
10518
10676
|
const session = getSession(id);
|
|
10519
|
-
if (!session) return;
|
|
10520
|
-
|
|
10677
|
+
if (!session) return [];
|
|
10678
|
+
const family = keepChildren ? [id] : [id, ...descendantsOf(id)];
|
|
10679
|
+
for (const member of family) await disposeSession(member);
|
|
10521
10680
|
notifySessionsChanged(session.workspace_id);
|
|
10681
|
+
return family;
|
|
10682
|
+
}
|
|
10683
|
+
/** Every session `id` started, and theirs, nearest first. */
|
|
10684
|
+
function descendantsOf(id) {
|
|
10685
|
+
return all(`WITH RECURSIVE kids(id, depth) AS (
|
|
10686
|
+
SELECT id, 1 FROM sessions WHERE parent_id = ?
|
|
10687
|
+
UNION SELECT s.id, k.depth + 1 FROM sessions s JOIN kids k ON s.parent_id = k.id
|
|
10688
|
+
)
|
|
10689
|
+
SELECT id FROM kids GROUP BY id ORDER BY MIN(depth)`, id).map((r) => r.id);
|
|
10522
10690
|
}
|
|
10523
10691
|
/** Drop tmux + DB row with no sessions.changed — used when the workspace
|
|
10524
10692
|
* is already gone from the list (delete notifies workspaces first). */
|
|
@@ -10607,12 +10775,14 @@ function notifySessionsChanged(workspaceId) {
|
|
|
10607
10775
|
async function emitSessionsChanged(workspaceId) {
|
|
10608
10776
|
try {
|
|
10609
10777
|
const states = await sessionStates();
|
|
10778
|
+
const { teamsOf } = await import("./_D_EchrLM.js");
|
|
10610
10779
|
publish("sessions.changed", {
|
|
10611
10780
|
workspaceId,
|
|
10612
10781
|
sessions: listSessions(workspaceId).map((s) => ({
|
|
10613
10782
|
...s,
|
|
10614
10783
|
state: states[s.id] || { alive: false }
|
|
10615
|
-
}))
|
|
10784
|
+
})),
|
|
10785
|
+
teams: await teamsOf(workspaceId)
|
|
10616
10786
|
});
|
|
10617
10787
|
} catch {
|
|
10618
10788
|
publish("sessions.changed", { workspaceId });
|
|
@@ -10901,18 +11071,34 @@ function newSessionArgs(session, wsPath, mode, initialPrompt, size) {
|
|
|
10901
11071
|
"-s",
|
|
10902
11072
|
tmuxName(session.id),
|
|
10903
11073
|
"-c",
|
|
10904
|
-
wsPath,
|
|
11074
|
+
launchDir(session, wsPath),
|
|
10905
11075
|
...sessionEnvArgs(session, wsPath),
|
|
10906
|
-
...loginShellCommand(session
|
|
11076
|
+
...loginShellCommand(session, launchDir(session, wsPath), initialPrompt)
|
|
10907
11077
|
];
|
|
10908
11078
|
}
|
|
11079
|
+
/** Where a session's process starts: its `launch_dir` when that is still
|
|
11080
|
+
* a folder inside its workspace (a topic's worktree, which `topic done`
|
|
11081
|
+
* removes), else the workspace itself. */
|
|
11082
|
+
function launchDir(session, wsPath) {
|
|
11083
|
+
if (!session.launch_dir) return wsPath;
|
|
11084
|
+
const dir = realInsideSync(session.launch_dir, wsPath);
|
|
11085
|
+
try {
|
|
11086
|
+
if (dir && fs.statSync(dir).isDirectory()) return dir;
|
|
11087
|
+
} catch {}
|
|
11088
|
+
return wsPath;
|
|
11089
|
+
}
|
|
10909
11090
|
/** Run the agent through a login shell so the pane's PATH matches the
|
|
10910
11091
|
* user's interactive terminal (mise activation, cargo, custom bins) —
|
|
10911
11092
|
* a service manager's PATH is far slimmer than a login shell's. */
|
|
10912
|
-
function loginShellCommand(
|
|
11093
|
+
function loginShellCommand(session, cwd, initialPrompt) {
|
|
11094
|
+
const agent = session.agent;
|
|
10913
11095
|
const words = sessionCommand(agent);
|
|
10914
11096
|
if (!words.length) return [];
|
|
10915
|
-
const line = [
|
|
11097
|
+
const line = [
|
|
11098
|
+
...words,
|
|
11099
|
+
...agentLaunchFlags(agent, { cwd }),
|
|
11100
|
+
...agentModeFlags(agent, session.launch_mode)
|
|
11101
|
+
].map(shellQuote);
|
|
10916
11102
|
if (initialPrompt) {
|
|
10917
11103
|
const file = shellQuote(initialPrompt.file);
|
|
10918
11104
|
if (initialPrompt.text.startsWith("-")) line.push("--");
|
|
@@ -11050,4 +11236,4 @@ function sleep(ms) {
|
|
|
11050
11236
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
11051
11237
|
}
|
|
11052
11238
|
//#endregion
|
|
11053
|
-
export {
|
|
11239
|
+
export { setAgentPhase as $, DEFAULT_GITHUB_HOST as $t, blankRow as A, withLock as An, disabledAgents as At, interruptedSinceReport as B, ghKnownHosts as Bt, sendToSession as C, git as Cn, PREF_MAX as Ct, AGENTS as D, config as Dn, changePref as Dt, tmuxWasStarted as E, tmux as En, allPrefs as Et, activityOf as F, setDisabledAgents as Ft, notePermissionMode as G, tilde as Gt, noteActivity as H, miseVersions as Ht, agentPhase as I, setPref as It, notifyEventOn as J, unreachableText as Jt, noteTyped as K, which as Kt, clearAgentPhase as L, setSetting as Lt, inside as M, getSetting as Mt, realInside as N, isKnownAgent as Nt, readHookPayload as O, shared as On, deleteSetting as Ot, realInsideSync as P, preferredAgent as Pt, sessionWatched as Q, firewallProbe as Qt, hookPhase as R, discoverAgents as Rt, renameSession as S, gh as Sn, validSubscription as St, tmuxName as T, run$2 as Tn, agentChoices as Tt, noteBackground as U, setupPath as Ut, lastTypedAt as V, miseInstalls as Vt, noteInterrupt as W, stableGh as Wt, onPhaseChange as X, unsetCaches as Xt, onFinished as Y, enableUntrackedCache as Yt, onTurnEnd as Z, untrackedCacheAllowed as Zt, markTmuxStarted as _, all as _n, setInstance as _t, creationOf as a, parseAgentId as an, turnPhase as at, onSessionDispose as b, workspacePath as bn, saveSubscription as bt, ensureTmuxServer as c, FRAME_ANCESTORS as cn, agentFamily as ct, killSession as d, httpError as dn, agentMeta as dt, PROJECT_TOOLS as en, setExpecting as et, killWorkspaceSessions as f, readBody as fn, ACCENT_RE as ft, listSessions as g, subscriberCount as gn, normalizeAccent as gt, listPanesWithin as h, subscribe as hn, manifest as ht, createSession as i, catalogPin as in, summaryOf as it, cleanSummary as j, enabledAgents as jt, reportsWorking as k, swr as kn, deleteWorkspacePrefs as kt, forgetPanes as l, FRAME_HEADERS as ln, agentFromCommand as lt, listPanes as m, publishJson as mn, iconSvg as mt, cleanEnv as n, agentById as nn, setSessionViewers as nt, descendantsOf as o, toolById as on, turnSettling as ot, launchDir as p, publish as pn, getInstance as pt, noteUserAnswered as q, hostReach as qt, clearTmuxStarted as r, agentLabel$1 as rn, settleQuietWorking as rt, disposeSessions as s, applyPrefChange as sn, agentBadge as st, beginCreation as t, TOOLS as tn, setScrapedPhase as tt, getSession as u, checked as un, agentLabel as ut, newSessionArgs as v, db as vn, deleteSubscription as vt, sessionStates as w, gitEnv as wn, WORKSPACE_PREFS as wt, panePids as x, TMUX_SOCKET as xn, sendPush as xt, notifySessionsChanged as y, get as yn, pushPublicKey as yt, hookReportedAt as z, doctor as zt };
|