@dylanpiercey/work 0.2.70 → 0.2.71
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/bin/cli/session.mjs +36 -4
- package/bin/cli/topic.mjs +47 -0
- package/dist/{_CSFzm8Kj.js → _B3z3x0nb.js} +100 -11
- package/dist/_BawMVLA9.js +2 -0
- package/dist/{_COL0wji1.js → _BcuBHot2.js} +106 -106
- package/dist/_D3ixWlKr.js +2 -0
- package/dist/{_DK0sGNuL.js → _DHaRHB4s.js} +164 -32
- package/dist/index.mjs +1161 -1071
- package/dist/public/assets/{_CAUoTaA1.js → _-JtZtVz8.js} +1 -1
- package/dist/public/assets/_-JtZtVz8.js.br +0 -0
- package/dist/public/assets/{_BVOoaIUz.js → _0QJDM3NO.js} +1 -1
- package/dist/public/assets/_0QJDM3NO.js.br +0 -0
- package/dist/public/assets/{_C2Tbc73e.js → _0vqLbImj.js} +1 -1
- package/dist/public/assets/_0vqLbImj.js.br +0 -0
- package/dist/public/assets/_2W-pgjXX.js +1 -0
- package/dist/public/assets/{_COjB6Mds.js → _4ogr0vzb.js} +1 -1
- package/dist/public/assets/_4ogr0vzb.js.br +0 -0
- package/dist/public/assets/{_Mt6ebGGE.js → _5lt7STSU.js} +10 -10
- package/dist/public/assets/_5lt7STSU.js.br +0 -0
- package/dist/public/assets/{_BQvedQNA.js → _6D14OK7z.js} +1 -1
- package/dist/public/assets/_6D14OK7z.js.br +0 -0
- package/dist/public/assets/{_H1xilHgC.js → _9D7sZPkr.js} +1 -1
- package/dist/public/assets/_9D7sZPkr.js.br +0 -0
- package/dist/public/assets/{_DouCdQ99.js → _Alp3-sd6.js} +1 -1
- package/dist/public/assets/_B0CqgYFf.js +1 -0
- package/dist/public/assets/{_C0zpPwSp.js → _B0sUN2tx.js} +1 -1
- package/dist/public/assets/_B0sUN2tx.js.br +0 -0
- package/dist/public/assets/_B1KbLd5h.js +1 -0
- package/dist/public/assets/{_DORBDQxD.js → _B5SjUyop.js} +1 -1
- package/dist/public/assets/_B5SjUyop.js.br +0 -0
- package/dist/public/assets/_B7FCBIYG.js +1 -0
- package/dist/public/assets/_B7FCBIYG.js.br +0 -0
- package/dist/public/assets/_B9G7-El7.js +1 -0
- package/dist/public/assets/_BDNW7Ugd.js +1 -0
- package/dist/public/assets/{_BC1pxNUd.js → _BGXJVx0k.js} +1 -1
- package/dist/public/assets/_BGXJVx0k.js.br +0 -0
- package/dist/public/assets/{_jFGgKTYj.js → _BHypHLzv.js} +1 -1
- package/dist/public/assets/_BHypHLzv.js.br +0 -0
- package/dist/public/assets/{_CI8Dmpt-.js → _BJ0RWeiG.js} +1 -1
- package/dist/public/assets/_BJ0RWeiG.js.br +0 -0
- package/dist/public/assets/{_CXLLGxAE.js → _BLALkhiZ.js} +4 -4
- package/dist/public/assets/_BLALkhiZ.js.br +0 -0
- package/dist/public/assets/_BMNhhqEV.js +1 -0
- package/dist/public/assets/{_JMrxKBGN.js → _BPHBcrYh.js} +1 -1
- package/dist/public/assets/_BPHBcrYh.js.br +0 -0
- package/dist/public/assets/{_DO7dqRyj.js → _BPoePslg.js} +1 -1
- package/dist/public/assets/_BPoePslg.js.br +0 -0
- package/dist/public/assets/{_REcALhmt.js → _BQuf46P2.js} +1 -1
- package/dist/public/assets/_BQuf46P2.js.br +0 -0
- package/dist/public/assets/_BTydwZJh.js +1 -0
- package/dist/public/assets/{_BCgm7As-.js → _BUbGYrKa.js} +1 -1
- package/dist/public/assets/_BUbGYrKa.js.br +0 -0
- package/dist/public/assets/{_DWCS2CFQ.js → _BUh4HTF3.js} +1 -1
- package/dist/public/assets/_BUh4HTF3.js.br +0 -0
- package/dist/public/assets/{_tGE7SNww.js → _BVXZCAXs.js} +1 -1
- package/dist/public/assets/_BVXZCAXs.js.br +0 -0
- package/dist/public/assets/_BWBW2sE5.js +1 -0
- package/dist/public/assets/_BXgfsaug.js +1 -0
- package/dist/public/assets/_BXgfsaug.js.br +0 -0
- package/dist/public/assets/_BZycN9ye.js +1 -0
- package/dist/public/assets/_BaQeAF-B.js +1 -0
- package/dist/public/assets/_BhA6H8WQ.js +1 -0
- package/dist/public/assets/_BikFQJva.js +1 -0
- package/dist/public/assets/_Bk0YJ7b1.js +1 -0
- package/dist/public/assets/{_CHuWNcjJ.js → _BlSH3TRK.js} +1 -1
- package/dist/public/assets/_BlSH3TRK.js.br +0 -0
- package/dist/public/assets/_BqSnw21E.js +1 -0
- package/dist/public/assets/{_CGSo9tnY.js → _BtWMgvvl.js} +2 -2
- package/dist/public/assets/_BtWMgvvl.js.br +0 -0
- package/dist/public/assets/{_B-ItC5A4.js → _BvskbvTW.js} +1 -1
- package/dist/public/assets/_BvskbvTW.js.br +0 -0
- package/dist/public/assets/{__favRwtg.js → _Bx8oVkmQ.js} +1 -1
- package/dist/public/assets/_Bx8oVkmQ.js.br +0 -0
- package/dist/public/assets/_BxPoJO_L.js +1 -0
- package/dist/public/assets/{_DZ0rqa0h.js → _C09HUxcS.js} +1 -1
- package/dist/public/assets/_C09HUxcS.js.br +0 -0
- package/dist/public/assets/_C14PL76N.js +1 -0
- package/dist/public/assets/{_DuuP0rKI.js → _C15TsQVx.js} +1 -1
- package/dist/public/assets/_C15TsQVx.js.br +0 -0
- package/dist/public/assets/_C1bNeWUD.js +1 -0
- package/dist/public/assets/{_L2f5JNlj.js → _C2IlBo8e.js} +1 -1
- package/dist/public/assets/_C2IlBo8e.js.br +0 -0
- package/dist/public/assets/{_Cu31pL3p.js → _C3F6fdUB.js} +1 -1
- package/dist/public/assets/_C5KZ0ozw.js +1 -0
- package/dist/public/assets/_C5KZ0ozw.js.br +0 -0
- package/dist/public/assets/_C94IJ4uX.js +1 -0
- package/dist/public/assets/_CCRiWfSo.js +1 -0
- package/dist/public/assets/{_Cznq4Aee.js → _CCl1txGr.js} +1 -1
- package/dist/public/assets/{_BNlAaEUI.js → _CDHWB_us.js} +1 -1
- package/dist/public/assets/_CDHWB_us.js.br +0 -0
- package/dist/public/assets/_CE-UlWde.js +1 -0
- package/dist/public/assets/{_kkbInDpy.js → _CEgYI4gj.js} +1 -1
- package/dist/public/assets/_CEgYI4gj.js.br +0 -0
- package/dist/public/assets/_CI9y5SMD.js +1 -0
- package/dist/public/assets/_CLrYkY55.js +1 -0
- package/dist/public/assets/{_CcbgX86v.js → _CPTaxuJG.js} +1 -1
- package/dist/public/assets/_CPTaxuJG.js.br +0 -0
- package/dist/public/assets/_CQKcBCsl.js +1 -0
- package/dist/public/assets/{_Ck0GxYNQ.js → _CQuARfyY.js} +1 -1
- package/dist/public/assets/_CQuARfyY.js.br +0 -0
- package/dist/public/assets/_CRdqojLF.js +1 -0
- package/dist/public/assets/{_BzDLIQE5.js → _CRew7lgJ.js} +1 -1
- package/dist/public/assets/_CRew7lgJ.js.br +0 -0
- package/dist/public/assets/_CS11TygF.js +1 -0
- package/dist/public/assets/{_CdDgM-x6.js → _CS9qmTkt.js} +1 -1
- package/dist/public/assets/_CS9qmTkt.js.br +0 -0
- package/dist/public/assets/_CSSixb56.js +1 -0
- package/dist/public/assets/_CSa_w7tA.js +86 -0
- package/dist/public/assets/_CSa_w7tA.js.br +0 -0
- package/dist/public/assets/{_Bwl5RU7m.js → _CTbIErzd.js} +1 -1
- package/dist/public/assets/_CTbIErzd.js.br +0 -0
- package/dist/public/assets/_CXf2VxeD.js +1 -0
- package/dist/public/assets/{_HlactPnQ.js → _CYHURCb7.js} +1 -1
- package/dist/public/assets/_CYHURCb7.js.br +0 -0
- package/dist/public/assets/_C_vPuVhA.js +1 -0
- package/dist/public/assets/_Cajx7i0I.js +1 -0
- package/dist/public/assets/{_D_TuAhnN.js → _Cb-D3ERI.js} +1 -1
- package/dist/public/assets/_Cb-D3ERI.js.br +0 -0
- package/dist/public/assets/_Cc8Hhqep.js +1 -0
- package/dist/public/assets/{_DGyB0J_Z.js → _Ce6hwXny.js} +1 -1
- package/dist/public/assets/_Ce6hwXny.js.br +0 -0
- package/dist/public/assets/_CeSD_6xP.js +1 -0
- package/dist/public/assets/_CfFIePkk.js +1 -0
- package/dist/public/assets/_CfUhSwyu.js +1 -0
- package/dist/public/assets/_CfziTCiN.js +1 -0
- package/dist/public/assets/_Ci7l0V_h.js +1 -0
- package/dist/public/assets/{_6R8pHfHu.js → _Cif8YVIW.js} +1 -1
- package/dist/public/assets/_Cif8YVIW.js.br +0 -0
- package/dist/public/assets/_CjI_b19m.js +1 -0
- package/dist/public/assets/{_BVN5lLXw.js → _CjT2-NNY.js} +1 -1
- package/dist/public/assets/_CjT2-NNY.js.br +0 -0
- package/dist/public/assets/_Cjromvor.js +1 -0
- package/dist/public/assets/{_BjJMzhJj.js → _CmcVar5g.js} +1 -1
- package/dist/public/assets/_CmcVar5g.js.br +0 -0
- package/dist/public/assets/_Cof8T6gT.js +1 -0
- package/dist/public/assets/{_DuaSYpQG.js → _CreV-6z6.js} +1 -1
- package/dist/public/assets/_CreV-6z6.js.br +0 -0
- package/dist/public/assets/_CsKkccjn.js +1 -0
- package/dist/public/assets/{_BJHD6sFy.js → _CsnlIPmX.js} +1 -1
- package/dist/public/assets/_CsnlIPmX.js.br +0 -0
- package/dist/public/assets/_CsxBH5UX.js +1 -0
- package/dist/public/assets/{_BaULj7kH.js → _CvrDFzmP.js} +1 -1
- package/dist/public/assets/_CvrDFzmP.js.br +0 -0
- package/dist/public/assets/{_C3RYgw_5.js → _CwAvlnWz.js} +1 -1
- package/dist/public/assets/_CwAvlnWz.js.br +0 -0
- package/dist/public/assets/{_sTT2iThd.js → _CwBNy_7k.js} +1 -1
- package/dist/public/assets/_CwBNy_7k.js.br +0 -0
- package/dist/public/assets/{_JSiyuxRJ.js → _Cx0sSSLJ.js} +1 -1
- package/dist/public/assets/_Cx0sSSLJ.js.br +0 -0
- package/dist/public/assets/_CxyaZiJz.js +1 -0
- package/dist/public/assets/{_CzBug9-x.js → _D-4UJozU.js} +1 -1
- package/dist/public/assets/_D-4UJozU.js.br +0 -0
- package/dist/public/assets/{_BC7rcYFE.js → _D0PrCOmg.js} +1 -1
- package/dist/public/assets/_D0PrCOmg.js.br +0 -0
- package/dist/public/assets/{_CDXnpAfh.js → _D0n_5okc.js} +1 -1
- package/dist/public/assets/_D0n_5okc.js.br +0 -0
- package/dist/public/assets/{_YATrYiFD.js → _D1ZTqBtg.js} +1 -1
- package/dist/public/assets/_D1ZTqBtg.js.br +0 -0
- package/dist/public/assets/_D2m31-DG.js +1 -0
- package/dist/public/assets/_D2vTqjKk.js +1 -0
- package/dist/public/assets/{_BOmZO9bQ.js → _D2zuXOi5.js} +1 -1
- package/dist/public/assets/_D2zuXOi5.js.br +0 -0
- package/dist/public/assets/{_Bo5sqml-.js → _D3mGPwaD.js} +1 -1
- package/dist/public/assets/{_HNyiv6zs.js → _D4SspWzi.js} +1 -1
- package/dist/public/assets/_D4SspWzi.js.br +0 -0
- package/dist/public/assets/_D8BYyk4L.js +1 -0
- package/dist/public/assets/_D8c2vqae.js +1 -0
- package/dist/public/assets/{_C8l-PMHJ.js → _D93e76eJ.js} +1 -1
- package/dist/public/assets/_D93e76eJ.js.br +0 -0
- package/dist/public/assets/{_B9_Lal-7.js → _DB0x3S_V.js} +1 -1
- package/dist/public/assets/_DB0x3S_V.js.br +0 -0
- package/dist/public/assets/{_D-6O7MKA.js → _DBqiCvB3.js} +1 -1
- package/dist/public/assets/_DBqiCvB3.js.br +0 -0
- package/dist/public/assets/_DDPfcBYW.js +1 -0
- package/dist/public/assets/_DE7f6G-4.js +1 -0
- package/dist/public/assets/_DFc8nVyA.js +1 -0
- package/dist/public/assets/_DGNNG6hE.js +1 -0
- package/dist/public/assets/{_BmAd0-4z.js → _DI_3CxxT.js} +1 -1
- package/dist/public/assets/_DKaZoJEU.js +1 -0
- package/dist/public/assets/_DPCcVPqS.js +1 -0
- package/dist/public/assets/{_DM2ZsY5Z.js → _DPO20UhE.js} +1 -1
- package/dist/public/assets/_DPO20UhE.js.br +0 -0
- package/dist/public/assets/_DQ9KMZkg.js +1 -0
- package/dist/public/assets/_DQfR4nGA.js +1 -0
- package/dist/public/assets/_DRl7_NsH.js +1 -0
- package/dist/public/assets/_DSjKT54G.js +1 -0
- package/dist/public/assets/{_BDmhvLCs.js → _DUQ4-DAq.js} +1 -1
- package/dist/public/assets/_DUQ4-DAq.js.br +0 -0
- package/dist/public/assets/{_B7THbxch.js → _DVUACl-0.js} +1 -1
- package/dist/public/assets/_DVUACl-0.js.br +0 -0
- package/dist/public/assets/_DVaVJl4U.js +1 -0
- package/dist/public/assets/{_CCTE_j9L.js → _DWJFJSQt.js} +1 -1
- package/dist/public/assets/_DWJFJSQt.js.br +0 -0
- package/dist/public/assets/{_DKgv7Cyq.js → _DW_3eCmy.js} +1 -1
- package/dist/public/assets/_DW_3eCmy.js.br +0 -0
- package/dist/public/assets/_DWcr4WT2.js +1 -0
- package/dist/public/assets/_D_uqbH0s.js +1 -0
- package/dist/public/assets/_Db3LFxDp.js +1 -0
- package/dist/public/assets/{_D-XHmBJj.js → _DcKVJllO.js} +1 -1
- package/dist/public/assets/_DcKVJllO.js.br +0 -0
- package/dist/public/assets/_De55CP4F.js +1 -0
- package/dist/public/assets/{_CcLifUnb.js → _DglTnOtH.js} +1 -1
- package/dist/public/assets/_DglTnOtH.js.br +0 -0
- package/dist/public/assets/_DhyrSLt_.js +1 -0
- package/dist/public/assets/_DishjoMc.js +1 -0
- package/dist/public/assets/_DlHs_b1x.js +1 -0
- package/dist/public/assets/{_BM9h7XBb.js → _DmlL12SP.js} +1 -1
- package/dist/public/assets/_DmlL12SP.js.br +0 -0
- package/dist/public/assets/{_BTJ4QNYJ.js → _Dnj7y5O6.js} +1 -1
- package/dist/public/assets/_Dnj7y5O6.js.br +0 -0
- package/dist/public/assets/_DqB9AEIR.js +1 -0
- package/dist/public/assets/_DqmZjpyA.js +1 -0
- package/dist/public/assets/_DrC0PHwd.js +1 -0
- package/dist/public/assets/_DrtDlCCB.js +1 -0
- package/dist/public/assets/{_CWmrlUIL.js → _DsxZHqAt.js} +1 -1
- package/dist/public/assets/_DsxZHqAt.js.br +0 -0
- package/dist/public/assets/{_Dml0472r.js → _DucELdm1.js} +1 -1
- package/dist/public/assets/_DucELdm1.js.br +0 -0
- package/dist/public/assets/{_TZpNJCj6.js → _Dw2w_cI1.js} +1 -1
- package/dist/public/assets/_Dw2w_cI1.js.br +0 -0
- package/dist/public/assets/{_CrEFB_dj.js → _Dx2nYKAs.js} +1 -1
- package/dist/public/assets/_Dx2nYKAs.js.br +0 -0
- package/dist/public/assets/{_B3B2tRvZ.js → _DxZFU6SY.js} +1 -1
- package/dist/public/assets/_DxZFU6SY.js.br +0 -0
- package/dist/public/assets/_DyztCqYX.js +1 -0
- package/dist/public/assets/_Dz42MOZj.js +1 -0
- package/dist/public/assets/{_B9BZLh7B.js → _DzSNrU-9.js} +1 -1
- package/dist/public/assets/_DzSNrU-9.js.br +0 -0
- package/dist/public/assets/{_BEO7OuGG.js → _HnLpRxna.js} +2 -2
- package/dist/public/assets/_HnLpRxna.js.br +0 -0
- package/dist/public/assets/{_BvDvgf2D.js → _Im1dFxR8.js} +1 -1
- package/dist/public/assets/_Im1dFxR8.js.br +0 -0
- package/dist/public/assets/_ImlHzwYY.js +1 -0
- package/dist/public/assets/_J-P8YHmV.js +1 -0
- package/dist/public/assets/_KsdD4dsM.js +1 -0
- package/dist/public/assets/_KsdD4dsM.js.br +0 -0
- package/dist/public/assets/{_B-IuONfT.js → _LRjlRqrU.js} +5 -5
- package/dist/public/assets/_LRjlRqrU.js.br +0 -0
- package/dist/public/assets/_LTl-SYyD.js +1 -0
- package/dist/public/assets/{_BEg-5EkS.js → _LniUny_a.js} +1 -1
- package/dist/public/assets/_LniUny_a.js.br +0 -0
- package/dist/public/assets/_Oup4mCuX.js +1 -0
- package/dist/public/assets/{_YC0QGp9j.js → _R3Kvmve2.js} +1 -1
- package/dist/public/assets/_R3Kvmve2.js.br +0 -0
- package/dist/public/assets/{_Cp-ZKt1Y.js → _R7YbF1yw.js} +1 -1
- package/dist/public/assets/_R7YbF1yw.js.br +0 -0
- package/dist/public/assets/{_0NYkT7Ka.js → _S9Qy4Cmi.js} +1 -1
- package/dist/public/assets/_S9Qy4Cmi.js.br +0 -0
- package/dist/public/assets/{_DyFziHLM.js → _ShiWFlWr.js} +1 -1
- package/dist/public/assets/_ShiWFlWr.js.br +0 -0
- package/dist/public/assets/{_BC-QJfsn.js → _TLB-Nq6Z.js} +1 -1
- package/dist/public/assets/_TLB-Nq6Z.js.br +0 -0
- package/dist/public/assets/_YcOZiOZ4.js +2 -0
- package/dist/public/assets/_YcOZiOZ4.js.br +0 -0
- package/dist/public/assets/_YjSW_ahw.js +1 -0
- package/dist/public/assets/_c9iXcb5V.js +1 -0
- package/dist/public/assets/{_CbzlAKJK.js → _dSWMMogH.js} +1 -1
- package/dist/public/assets/_dSWMMogH.js.br +0 -0
- package/dist/public/assets/_dp0lBRTw.js +1 -0
- package/dist/public/assets/_etOTb_Um.js +1 -0
- package/dist/public/assets/{_DA6CNMAS.js → _fZ9Nn0aY.js} +1 -1
- package/dist/public/assets/_fZ9Nn0aY.js.br +0 -0
- package/dist/public/assets/_h3o298tf.js +1 -0
- package/dist/public/assets/_iTnQEpuR.js +1 -0
- package/dist/public/assets/{_DU8DeX60.js → _ii--A0F-.js} +1 -1
- package/dist/public/assets/_ii--A0F-.js.br +0 -0
- package/dist/public/assets/{_BVIQdL1e.js → _ixsF2ttz.js} +1 -1
- package/dist/public/assets/_ixsF2ttz.js.br +0 -0
- package/dist/public/assets/_kQ2OAVME.js +1 -0
- package/dist/public/assets/{_DJNoam7G.js → _l71VhzhS.js} +1 -1
- package/dist/public/assets/_l71VhzhS.js.br +0 -0
- package/dist/public/assets/{_vfD02BWU.js → _ptpihSzL.js} +1 -1
- package/dist/public/assets/_ptpihSzL.js.br +0 -0
- package/dist/public/assets/{_VgS7WPcA.js → _suQAT3jW.js} +1 -1
- package/dist/public/assets/_suQAT3jW.js.br +0 -0
- package/dist/public/assets/{_BUpeVCdC.js → _t5-hsdI5.js} +1 -1
- package/dist/public/assets/_t5-hsdI5.js.br +0 -0
- package/dist/public/assets/{_Bwj1cG6Z.js → _tEBqbfOJ.js} +1 -1
- package/dist/public/assets/_tEBqbfOJ.js.br +0 -0
- package/dist/public/assets/{_JcvJ5ACW.js → _vy4Y1hd_.js} +1 -1
- package/dist/public/assets/_vy4Y1hd_.js.br +0 -0
- package/dist/public/assets/{_DroY8_no.js → _x7Lebeio.js} +1 -1
- package/dist/public/assets/_x7Lebeio.js.br +0 -0
- package/dist/public/assets/_z3J861v3.js +1 -0
- package/dist/public/assets/files-view-DyuIyBwJ.js +2 -0
- package/dist/public/assets/manage-workspace-CtSdSPLU.js +2 -0
- package/dist/public/assets/new-ClUAGfpX.js +1 -0
- package/dist/public/assets/new-workspace-BLb55_cv.js +2 -0
- package/dist/public/assets/review-view-BhRXZEwU.js +2 -0
- package/dist/public/assets/settings-ClUAGfpX.js +1 -0
- package/dist/public/assets/settings-page-CTit2PgC.js +2 -0
- package/dist/public/assets/styles-C4hTgteh.css +1 -0
- package/dist/public/assets/styles-C4hTgteh.css.br +0 -0
- package/dist/public/assets/w-ClUAGfpX.js +1 -0
- package/dist/public/assets/w._-ClUAGfpX.js +1 -0
- package/dist/public/assets/w._-CtbjyBu3.js +1 -0
- package/dist/public/assets/w._-D5ZiKvyZ.js +1 -0
- package/package.json +1 -1
- package/dist/_B25P__C4.js +0 -2
- package/dist/_wbrwjNyW.js +0 -2
- package/dist/public/assets/_0NYkT7Ka.js.br +0 -0
- package/dist/public/assets/_18ckOF7L.js +0 -1
- package/dist/public/assets/_25qbKqTG.js +0 -1
- package/dist/public/assets/_6R8pHfHu.js.br +0 -0
- package/dist/public/assets/_8cC5eK8l.js +0 -1
- package/dist/public/assets/_8eN6y624.js +0 -1
- package/dist/public/assets/_8eN6y624.js.br +0 -0
- package/dist/public/assets/_9-vCfD1H.js +0 -1
- package/dist/public/assets/_9PSE1hBd.js +0 -1
- package/dist/public/assets/_B-ItC5A4.js.br +0 -0
- package/dist/public/assets/_B-IuONfT.js.br +0 -0
- package/dist/public/assets/_B-Nak9W-.js +0 -1
- package/dist/public/assets/_B-Nak9W-.js.br +0 -0
- package/dist/public/assets/_B0vuJGqQ.js +0 -1
- package/dist/public/assets/_B24stjuF.js +0 -86
- package/dist/public/assets/_B24stjuF.js.br +0 -0
- package/dist/public/assets/_B2HaD9d5.js +0 -1
- package/dist/public/assets/_B3B2tRvZ.js.br +0 -0
- package/dist/public/assets/_B4oiI3_4.js +0 -1
- package/dist/public/assets/_B5CpgKE4.js +0 -1
- package/dist/public/assets/_B7Rpwq9e.js +0 -1
- package/dist/public/assets/_B7THbxch.js.br +0 -0
- package/dist/public/assets/_B9BZLh7B.js.br +0 -0
- package/dist/public/assets/_B9_Lal-7.js.br +0 -0
- package/dist/public/assets/_BC-QJfsn.js.br +0 -0
- package/dist/public/assets/_BC1pxNUd.js.br +0 -0
- package/dist/public/assets/_BC7rcYFE.js.br +0 -0
- package/dist/public/assets/_BCgm7As-.js.br +0 -0
- package/dist/public/assets/_BDmhvLCs.js.br +0 -0
- package/dist/public/assets/_BEO7OuGG.js.br +0 -0
- package/dist/public/assets/_BEg-5EkS.js.br +0 -0
- package/dist/public/assets/_BFTxeP-D.js +0 -1
- package/dist/public/assets/_BGCoTA5R.js +0 -1
- package/dist/public/assets/_BJHD6sFy.js.br +0 -0
- package/dist/public/assets/_BJeQROi4.js +0 -1
- package/dist/public/assets/_BJeQROi4.js.br +0 -0
- package/dist/public/assets/_BKDJIaLf.js +0 -1
- package/dist/public/assets/_BM9h7XBb.js.br +0 -0
- package/dist/public/assets/_BNlAaEUI.js.br +0 -0
- package/dist/public/assets/_BOmZO9bQ.js.br +0 -0
- package/dist/public/assets/_BQvedQNA.js.br +0 -0
- package/dist/public/assets/_BTJ4QNYJ.js.br +0 -0
- package/dist/public/assets/_BUnVFLfD.js +0 -1
- package/dist/public/assets/_BUpeVCdC.js.br +0 -0
- package/dist/public/assets/_BVIQdL1e.js.br +0 -0
- package/dist/public/assets/_BVN5lLXw.js.br +0 -0
- package/dist/public/assets/_BVOoaIUz.js.br +0 -0
- package/dist/public/assets/_BYd6ll6G.js +0 -1
- package/dist/public/assets/_BZnPwq2i.js +0 -1
- package/dist/public/assets/_BaULj7kH.js.br +0 -0
- package/dist/public/assets/_BbdvSQaN.js +0 -1
- package/dist/public/assets/_BjJMzhJj.js.br +0 -0
- package/dist/public/assets/_BkFty1Oi.js +0 -1
- package/dist/public/assets/_BryOeCV4.js +0 -1
- package/dist/public/assets/_BtAYOnhU.js +0 -1
- package/dist/public/assets/_BvDvgf2D.js.br +0 -0
- package/dist/public/assets/_Bwj1cG6Z.js.br +0 -0
- package/dist/public/assets/_Bwl5RU7m.js.br +0 -0
- package/dist/public/assets/_Bx7eXUeM.js +0 -1
- package/dist/public/assets/_Bxw4J8BV.js +0 -1
- package/dist/public/assets/_BzDLIQE5.js.br +0 -0
- package/dist/public/assets/_BzvCB8DB.js +0 -1
- package/dist/public/assets/_C-9WWLQ3.js +0 -1
- package/dist/public/assets/_C-_bdY5V.js +0 -1
- package/dist/public/assets/_C0zpPwSp.js.br +0 -0
- package/dist/public/assets/_C2Tbc73e.js.br +0 -0
- package/dist/public/assets/_C3RYgw_5.js.br +0 -0
- package/dist/public/assets/_C7P0cxfL.js +0 -1
- package/dist/public/assets/_C81AvAMk.js +0 -1
- package/dist/public/assets/_C8l-PMHJ.js.br +0 -0
- package/dist/public/assets/_CAUoTaA1.js.br +0 -0
- package/dist/public/assets/_CCTE_j9L.js.br +0 -0
- package/dist/public/assets/_CDXnpAfh.js.br +0 -0
- package/dist/public/assets/_CEWoPra5.js +0 -1
- package/dist/public/assets/_CGSo9tnY.js.br +0 -0
- package/dist/public/assets/_CGsbbcpE.js +0 -1
- package/dist/public/assets/_CHuWNcjJ.js.br +0 -0
- package/dist/public/assets/_CI0KXyAu.js +0 -1
- package/dist/public/assets/_CI8Dmpt-.js.br +0 -0
- package/dist/public/assets/_CKmnCHzt.js +0 -1
- package/dist/public/assets/_CNY02rQP.js +0 -1
- package/dist/public/assets/_COjB6Mds.js.br +0 -0
- package/dist/public/assets/_CPGWIVjG.js +0 -1
- package/dist/public/assets/_CQ0SDG17.js +0 -1
- package/dist/public/assets/_CWmrlUIL.js.br +0 -0
- package/dist/public/assets/_CXLLGxAE.js.br +0 -0
- package/dist/public/assets/_CXciWQH3.js +0 -1
- package/dist/public/assets/_CXjFOElm.js +0 -1
- package/dist/public/assets/_CbzlAKJK.js.br +0 -0
- package/dist/public/assets/_CcLifUnb.js.br +0 -0
- package/dist/public/assets/_CcbgX86v.js.br +0 -0
- package/dist/public/assets/_CdDgM-x6.js.br +0 -0
- package/dist/public/assets/_Ce53vsUM.js +0 -1
- package/dist/public/assets/_CgdBa1Kb.js +0 -1
- package/dist/public/assets/_ChxOfm1L.js +0 -1
- package/dist/public/assets/_Ck0GxYNQ.js.br +0 -0
- package/dist/public/assets/_CmIuIy4h.js +0 -1
- package/dist/public/assets/_Cp-ZKt1Y.js.br +0 -0
- package/dist/public/assets/_CrEFB_dj.js.br +0 -0
- package/dist/public/assets/_CwaUSclh.js +0 -1
- package/dist/public/assets/_Cy9eBufF.js +0 -1
- package/dist/public/assets/_CynmXPn2.js +0 -1
- package/dist/public/assets/_CzBug9-x.js.br +0 -0
- package/dist/public/assets/_D-6O7MKA.js.br +0 -0
- package/dist/public/assets/_D-JhJZ2C.js +0 -1
- package/dist/public/assets/_D-XHmBJj.js.br +0 -0
- package/dist/public/assets/_D-neGx47.js +0 -1
- package/dist/public/assets/_D5VJGdAr.js +0 -1
- package/dist/public/assets/_D6u72i8c.js +0 -1
- package/dist/public/assets/_D8tbv6WM.js +0 -1
- package/dist/public/assets/_DA6CNMAS.js.br +0 -0
- package/dist/public/assets/_DDD7aRxr.js +0 -1
- package/dist/public/assets/_DFCbdJTU.js +0 -1
- package/dist/public/assets/_DGyB0J_Z.js.br +0 -0
- package/dist/public/assets/_DJNoam7G.js.br +0 -0
- package/dist/public/assets/_DKgv7Cyq.js.br +0 -0
- package/dist/public/assets/_DM2ZsY5Z.js.br +0 -0
- package/dist/public/assets/_DO7dqRyj.js.br +0 -0
- package/dist/public/assets/_DORBDQxD.js.br +0 -0
- package/dist/public/assets/_DOsfhfso.js +0 -1
- package/dist/public/assets/_DRC6uiX0.js +0 -1
- package/dist/public/assets/_DSWmTo1L.js +0 -1
- package/dist/public/assets/_DU8DeX60.js.br +0 -0
- package/dist/public/assets/_DUKZkilh.js +0 -1
- package/dist/public/assets/_DWCS2CFQ.js.br +0 -0
- package/dist/public/assets/_DWnX1Z3a.js +0 -1
- package/dist/public/assets/_DX71QHMR.js +0 -1
- package/dist/public/assets/_DZ0rqa0h.js.br +0 -0
- package/dist/public/assets/_D_TuAhnN.js.br +0 -0
- package/dist/public/assets/_D_rLfkXR.js +0 -1
- package/dist/public/assets/_DeBbHTQf.js +0 -1
- package/dist/public/assets/_Dkm85KJF.js +0 -1
- package/dist/public/assets/_Dml0472r.js.br +0 -0
- package/dist/public/assets/_DroY8_no.js.br +0 -0
- package/dist/public/assets/_DtYahvpQ.js +0 -1
- package/dist/public/assets/_DuaSYpQG.js.br +0 -0
- package/dist/public/assets/_DuuP0rKI.js.br +0 -0
- package/dist/public/assets/_DyFziHLM.js.br +0 -0
- package/dist/public/assets/_Dz3s4MY0.js +0 -1
- package/dist/public/assets/_Dz3s4MY0.js.br +0 -0
- package/dist/public/assets/_DzZaUh6D.js +0 -1
- package/dist/public/assets/_DzhUXE8_.js +0 -1
- package/dist/public/assets/_GWc0eYhN.js +0 -1
- package/dist/public/assets/_H1xilHgC.js.br +0 -0
- package/dist/public/assets/_HNyiv6zs.js.br +0 -0
- package/dist/public/assets/_HlactPnQ.js.br +0 -0
- package/dist/public/assets/_JMrxKBGN.js.br +0 -0
- package/dist/public/assets/_JSiyuxRJ.js.br +0 -0
- package/dist/public/assets/_JcvJ5ACW.js.br +0 -0
- package/dist/public/assets/_L2f5JNlj.js.br +0 -0
- package/dist/public/assets/_LrU9RmZE.js +0 -1
- package/dist/public/assets/_Mt6ebGGE.js.br +0 -0
- package/dist/public/assets/_Owc9jhpW.js +0 -2
- package/dist/public/assets/_Owc9jhpW.js.br +0 -0
- package/dist/public/assets/_PevhFQ5V.js +0 -1
- package/dist/public/assets/_R1tJA-Qg.js +0 -1
- package/dist/public/assets/_REcALhmt.js.br +0 -0
- package/dist/public/assets/_TZpNJCj6.js.br +0 -0
- package/dist/public/assets/_VDsjaeWW.js +0 -1
- package/dist/public/assets/_VgS7WPcA.js.br +0 -0
- package/dist/public/assets/_WekB6aHl.js +0 -1
- package/dist/public/assets/_X4dvLi1w.js +0 -1
- package/dist/public/assets/_XXcCKG6W.js +0 -1
- package/dist/public/assets/_Y4miPos6.js +0 -1
- package/dist/public/assets/_YATrYiFD.js.br +0 -0
- package/dist/public/assets/_YC0QGp9j.js.br +0 -0
- package/dist/public/assets/_YG1qePV2.js +0 -1
- package/dist/public/assets/_Yiwgrm_C.js +0 -1
- package/dist/public/assets/__favRwtg.js.br +0 -0
- package/dist/public/assets/_b0whjSZe.js +0 -1
- package/dist/public/assets/_cw5fHxTz.js +0 -1
- package/dist/public/assets/_gSyGU-mq.js +0 -1
- package/dist/public/assets/_j5nRBBVa.js +0 -1
- package/dist/public/assets/_jFGgKTYj.js.br +0 -0
- package/dist/public/assets/_kkbInDpy.js.br +0 -0
- package/dist/public/assets/_mrvWutef.js +0 -1
- package/dist/public/assets/_nCxsopgT.js +0 -1
- package/dist/public/assets/_pwbytP5z.js +0 -1
- package/dist/public/assets/_sTT2iThd.js.br +0 -0
- package/dist/public/assets/_tGE7SNww.js.br +0 -0
- package/dist/public/assets/_veyGCfhb.js +0 -1
- package/dist/public/assets/_vfD02BWU.js.br +0 -0
- package/dist/public/assets/files-view-_b8IktQV.js +0 -2
- package/dist/public/assets/manage-workspace-Bu8_bkKy.js +0 -2
- package/dist/public/assets/new-CGbC3Rki.js +0 -1
- package/dist/public/assets/new-workspace-BPq4RG6p.js +0 -2
- package/dist/public/assets/review-view-Dwph1tIy.js +0 -2
- package/dist/public/assets/settings-CGbC3Rki.js +0 -1
- package/dist/public/assets/settings-page-DfjJBEV4.js +0 -2
- package/dist/public/assets/styles-DmUe5O9c.css +0 -1
- package/dist/public/assets/styles-DmUe5O9c.css.br +0 -0
- package/dist/public/assets/w-CGbC3Rki.js +0 -1
- package/dist/public/assets/w._-BdlGa_yr.js +0 -1
- package/dist/public/assets/w._-CGbC3Rki.js +0 -1
- package/dist/public/assets/w._-Cq1MaRMF.js +0 -1
|
@@ -839,6 +839,13 @@ var STEPS = [
|
|
|
839
839
|
ALTER TABLE sessions ADD COLUMN typed_at INTEGER;
|
|
840
840
|
`);
|
|
841
841
|
}
|
|
842
|
+
},
|
|
843
|
+
{
|
|
844
|
+
version: 16,
|
|
845
|
+
name: "switching sessions",
|
|
846
|
+
up(db) {
|
|
847
|
+
db.exec("ALTER TABLE sessions ADD COLUMN switch_to TEXT;");
|
|
848
|
+
}
|
|
842
849
|
}
|
|
843
850
|
];
|
|
844
851
|
var LATEST = STEPS.at(-1).version;
|
|
@@ -9667,7 +9674,7 @@ function publishChange(sessionId) {
|
|
|
9667
9674
|
const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
|
|
9668
9675
|
if (row?.workspace_id) {
|
|
9669
9676
|
const workspaceId = row.workspace_id;
|
|
9670
|
-
import("./
|
|
9677
|
+
import("./_BawMVLA9.js").then((m) => m.notifySessionsChanged(workspaceId));
|
|
9671
9678
|
return;
|
|
9672
9679
|
}
|
|
9673
9680
|
publish("sessions.changed");
|
|
@@ -12060,6 +12067,46 @@ var branchPrs = swr(TTL_MS, async (key, refresh) => {
|
|
|
12060
12067
|
async function workspacePrs(fullName, branch, foreign, refresh = false, since) {
|
|
12061
12068
|
return prsForBranchPrefix(await branchPrs(branchKey(fullName, branch), refresh).catch(() => []), branch, foreign).filter((pr) => !since || pr.state === "OPEN" || !pr.updatedAt || pr.updatedAt >= since);
|
|
12062
12069
|
}
|
|
12070
|
+
/** Each branch's own PRs, however long ago they finished, by
|
|
12071
|
+
* `fullName#branch`: what `prsForHeads` last found, kept an hour. */
|
|
12072
|
+
var HEADS_TTL_MS = 36e5;
|
|
12073
|
+
var headsFound = /* @__PURE__ */ new Map();
|
|
12074
|
+
/** GitHub refuses a search query past 256 characters; the rest of the
|
|
12075
|
+
* query (`is:pr is:closed sort:updated-desc repo:…`) takes its share. */
|
|
12076
|
+
var HEAD_TERMS_MAX = 160;
|
|
12077
|
+
/** These branches' PRs in one workspace repo, open or finished however
|
|
12078
|
+
* long ago. The workspace's own search keeps only its latest finished PRs
|
|
12079
|
+
* (`CLOSED_FIRST`), so a topic whose squash-merged PR had aged out of it
|
|
12080
|
+
* read as unmerged work for good. Asked for by name, only for the branches
|
|
12081
|
+
* `work topic` cannot otherwise account for: as few searches as the query
|
|
12082
|
+
* length allows (one per branch, run side by side, took GitHub 19 s for
|
|
12083
|
+
* three), and each branch's answer kept an hour. None of it rides the
|
|
12084
|
+
* status tick. */
|
|
12085
|
+
async function prsForHeads(fullName, heads) {
|
|
12086
|
+
const now = Date.now();
|
|
12087
|
+
const stale = heads.filter((h) => {
|
|
12088
|
+
const seen = headsFound.get(branchKey(fullName, h));
|
|
12089
|
+
return !seen || now - seen.at > HEADS_TTL_MS;
|
|
12090
|
+
});
|
|
12091
|
+
if (stale.length) try {
|
|
12092
|
+
const { host, name } = splitRepo(fullName);
|
|
12093
|
+
const upstream = await repoParent(fullName);
|
|
12094
|
+
const repos = upstream ? [name, splitRepo(upstream).name] : [name];
|
|
12095
|
+
const found = new Map(stale.map((h) => [h, []]));
|
|
12096
|
+
const batches = [[]];
|
|
12097
|
+
for (const h of stale) {
|
|
12098
|
+
const batch = batches[batches.length - 1];
|
|
12099
|
+
if (batch.length && [...batch, h].join(" head:").length > HEAD_TERMS_MAX) batches.push([h]);
|
|
12100
|
+
else batch.push(h);
|
|
12101
|
+
}
|
|
12102
|
+
for (const batch of batches) for (const n of await searchPrs(host, repos, batch)) if (ownsNode(n, fullName, upstream)) found.get(n.headRefName)?.push(n);
|
|
12103
|
+
for (const [h, prs] of found) headsFound.set(branchKey(fullName, h), {
|
|
12104
|
+
at: now,
|
|
12105
|
+
prs
|
|
12106
|
+
});
|
|
12107
|
+
} catch {}
|
|
12108
|
+
return heads.flatMap((h) => headsFound.get(branchKey(fullName, h))?.prs ?? []);
|
|
12109
|
+
}
|
|
12063
12110
|
/** Refresh many repos' PRs with one GraphQL request (vs one `gh pr list`
|
|
12064
12111
|
* process per repo) — called from the status watcher for active
|
|
12065
12112
|
* workspaces so open/merge/close flips surface in ~watch-tick time
|
|
@@ -17793,13 +17840,25 @@ async function killSession(id, keepChildren = false, how = "closed") {
|
|
|
17793
17840
|
if (!session) return [];
|
|
17794
17841
|
const family = keepChildren ? [id] : [id, ...descendantsOf(id)];
|
|
17795
17842
|
db.prepare(`DELETE FROM closed_sessions WHERE closed_at < strftime('%Y-%m-%dT%H:%M:%fZ', 'now', '${REOPEN_WITHIN}')`).run();
|
|
17796
|
-
|
|
17797
|
-
|
|
17798
|
-
await disposeSession(member);
|
|
17799
|
-
}
|
|
17843
|
+
linkPastUnkept(family, new Map(family.map((m) => [m, getSession(m)?.parent_id ?? null])), new Set(family.filter((m) => keepClosed(m, m === id ? how : "closed"))));
|
|
17844
|
+
for (const member of family) await disposeSession(member);
|
|
17800
17845
|
notifySessionsChanged(session.workspace_id);
|
|
17801
17846
|
return family;
|
|
17802
17847
|
}
|
|
17848
|
+
/** A member kept under one that was not (a shell, a session whose
|
|
17849
|
+
* conversation work never learned) is linked to the nearest member above
|
|
17850
|
+
* it that was, so `reopenTeam` still reaches it: under a parent that never
|
|
17851
|
+
* comes back it would stand alone. */
|
|
17852
|
+
function linkPastUnkept(family, parents, kept) {
|
|
17853
|
+
const inFamily = new Set(family);
|
|
17854
|
+
for (const member of kept) {
|
|
17855
|
+
const own = parents.get(member);
|
|
17856
|
+
if (!own || !inFamily.has(own) || kept.has(own)) continue;
|
|
17857
|
+
let up = parents.get(own) ?? null;
|
|
17858
|
+
while (up && inFamily.has(up) && !kept.has(up)) up = parents.get(up) ?? null;
|
|
17859
|
+
if (up && kept.has(up)) db.prepare("UPDATE closed_sessions SET parent_id = ? WHERE id = ?").run(up, member);
|
|
17860
|
+
}
|
|
17861
|
+
}
|
|
17803
17862
|
/** How long a closed session can be started again: a lead's follow-ups
|
|
17804
17863
|
* come as the user reviews its result, the same day or so. */
|
|
17805
17864
|
var REOPEN_WITHIN = "-7 days";
|
|
@@ -17807,6 +17866,28 @@ var REOPEN_WITHIN = "-7 days";
|
|
|
17807
17866
|
function noteConversation(id, conversation) {
|
|
17808
17867
|
db.prepare("UPDATE sessions SET conversation = ? WHERE id = ? AND conversation IS NOT ?").run(conversation, id, conversation);
|
|
17809
17868
|
}
|
|
17869
|
+
/** The sessions closed with `id` and still kept (`reopenTeam`): down its
|
|
17870
|
+
* parent links, each closed no earlier than it — one closed on its own
|
|
17871
|
+
* before its lead went is not part of that close — parents before their
|
|
17872
|
+
* children. */
|
|
17873
|
+
function closedTeam(id) {
|
|
17874
|
+
const lead = closedSession(id);
|
|
17875
|
+
if (!lead) return [];
|
|
17876
|
+
const rows = all(`SELECT * FROM closed_sessions WHERE workspace_id = ? AND id != ? AND closed_at >= ?
|
|
17877
|
+
AND closed_at >= strftime('%Y-%m-%dT%H:%M:%fZ', 'now', '${REOPEN_WITHIN}')
|
|
17878
|
+
ORDER BY closed_at, created_at`, lead.workspace_id, id, lead.closed_at);
|
|
17879
|
+
const team = [];
|
|
17880
|
+
const reached = /* @__PURE__ */ new Set([id]);
|
|
17881
|
+
for (let grew = true; grew;) {
|
|
17882
|
+
grew = false;
|
|
17883
|
+
for (const r of rows) if (!reached.has(r.id) && r.parent_id && reached.has(r.parent_id)) {
|
|
17884
|
+
reached.add(r.id);
|
|
17885
|
+
team.push(r);
|
|
17886
|
+
grew = true;
|
|
17887
|
+
}
|
|
17888
|
+
}
|
|
17889
|
+
return team;
|
|
17890
|
+
}
|
|
17810
17891
|
/** A closed session that can still be started again (`reopenSession`). */
|
|
17811
17892
|
function closedSession(id) {
|
|
17812
17893
|
return get(`SELECT * FROM closed_sessions WHERE id = ?
|
|
@@ -17819,12 +17900,14 @@ function reopenable(s) {
|
|
|
17819
17900
|
}
|
|
17820
17901
|
/** Keep `id` as it is in closed_sessions, about to close. One closed for
|
|
17821
17902
|
* being done is kept whatever it is, so a message to it can say why it
|
|
17822
|
-
* does not reopen; any other only if it can be started again.
|
|
17903
|
+
* does not reopen; any other only if it can be started again. Whether it
|
|
17904
|
+
* was kept. */
|
|
17823
17905
|
function keepClosed(id, how) {
|
|
17824
17906
|
const s = getSession(id);
|
|
17825
|
-
if (!s?.workspace_id || how === "closed" && !reopenable(s)) return;
|
|
17907
|
+
if (!s?.workspace_id || how === "closed" && !reopenable(s)) return false;
|
|
17826
17908
|
db.prepare(`INSERT OR REPLACE INTO closed_sessions (id, workspace_id, agent, title, parent_id, launch_dir, launch_mode, summary, conversation, created_at, how)
|
|
17827
17909
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(s.id, s.workspace_id, s.agent, s.title, s.parent_id, s.launch_dir, s.launch_mode, s.summary, s.conversation, s.created_at, how);
|
|
17910
|
+
return true;
|
|
17828
17911
|
}
|
|
17829
17912
|
/** Close a session work is done with (server/team), keeping what starts
|
|
17830
17913
|
* it again on its own conversation (`reopenSession`): the lead that
|
|
@@ -17874,11 +17957,20 @@ async function reopenSession(id, opts = {}) {
|
|
|
17874
17957
|
notifySessionsChanged(closed.workspace_id);
|
|
17875
17958
|
return session;
|
|
17876
17959
|
}
|
|
17877
|
-
/**
|
|
17878
|
-
*
|
|
17879
|
-
*
|
|
17880
|
-
*
|
|
17881
|
-
|
|
17960
|
+
/** Restarts in flight, by session (`restartOf`): an attach that ends
|
|
17961
|
+
* meanwhile was ended by the restart, not by its agent, so term-ws tells
|
|
17962
|
+
* its page to come back rather than that the session ended, and a page
|
|
17963
|
+
* that connects meanwhile waits for the new pane. Kept a beat past the
|
|
17964
|
+
* restart, since an old attach hears its end only as tmux gets to it. */
|
|
17965
|
+
var restarts = /* @__PURE__ */ new Map();
|
|
17966
|
+
var RESTART_LINGER_MS = 3e3;
|
|
17967
|
+
function restartOf(id) {
|
|
17968
|
+
return restarts.get(id);
|
|
17969
|
+
}
|
|
17970
|
+
/** What `restartSession` would start `id` as, or why it cannot: asked
|
|
17971
|
+
* before a switch is scheduled (server/messages `reopen`), so a request
|
|
17972
|
+
* that cannot work fails as it is made, not when it comes due. */
|
|
17973
|
+
function restartPlan(id, agent) {
|
|
17882
17974
|
const s = getSession(id);
|
|
17883
17975
|
if (!s) throw httpError(404, `no session ${id}`);
|
|
17884
17976
|
if (!reopenable(s)) throw httpError(409, `${id} cannot start again on its conversation: ${canResume(s.agent) ? "work has not learned it yet (it comes with the first prompt's hook)" : `${agentLabel(s.agent)} cannot resume one`}`);
|
|
@@ -17886,26 +17978,61 @@ async function restartSession(id, agent) {
|
|
|
17886
17978
|
const wsPath = workspacePath(s.workspace_id);
|
|
17887
17979
|
if (!wsPath) throw httpError(409, `${id}'s workspace is gone`);
|
|
17888
17980
|
if (s.launch_dir && launchDir(s, wsPath) === wsPath) throw httpError(409, `${id} ran in ${s.launch_dir}, which is gone, and its conversation with it: ${START_AGAIN}`);
|
|
17889
|
-
|
|
17890
|
-
|
|
17891
|
-
|
|
17892
|
-
|
|
17893
|
-
|
|
17894
|
-
|
|
17895
|
-
|
|
17896
|
-
|
|
17897
|
-
|
|
17898
|
-
|
|
17899
|
-
|
|
17900
|
-
|
|
17901
|
-
|
|
17902
|
-
|
|
17903
|
-
|
|
17981
|
+
return {
|
|
17982
|
+
s,
|
|
17983
|
+
next,
|
|
17984
|
+
wsPath
|
|
17985
|
+
};
|
|
17986
|
+
}
|
|
17987
|
+
/** Start a running session's CLI again on its own conversation, as
|
|
17988
|
+
* `agent` if given (`resumeAs`): one stuck at its prompt because its
|
|
17989
|
+
* account hit a limit goes on as another account's. Its row, what is
|
|
17990
|
+
* queued for it and what it owes stay (server/messages keeps them), and a
|
|
17991
|
+
* switch it was waiting on is done. */
|
|
17992
|
+
async function restartSession(id, agent) {
|
|
17993
|
+
const { s, next, wsPath } = restartPlan(id, agent);
|
|
17994
|
+
let finish;
|
|
17995
|
+
const pending = new Promise((resolve) => finish = resolve);
|
|
17996
|
+
restarts.set(id, pending);
|
|
17997
|
+
try {
|
|
17998
|
+
const env = cleanEnv();
|
|
17999
|
+
await tmux([
|
|
18000
|
+
"kill-session",
|
|
18001
|
+
"-t",
|
|
18002
|
+
tmuxName(id)
|
|
18003
|
+
], env).catch(() => {});
|
|
18004
|
+
forgetPanes();
|
|
18005
|
+
clearTmuxStarted(id);
|
|
18006
|
+
clearAgentPhase(id);
|
|
18007
|
+
db.prepare("UPDATE sessions SET agent = ?, switch_to = NULL WHERE id = ?").run(next, id);
|
|
18008
|
+
const session = getSession(id);
|
|
18009
|
+
await ensureTmuxServer();
|
|
18010
|
+
await launchDetached(session, wsPath, env, { resume: s.conversation });
|
|
18011
|
+
if (!await paneAlive(id, env)) {
|
|
18012
|
+
db.prepare("UPDATE sessions SET agent = ? WHERE id = ?").run(s.agent, id);
|
|
18013
|
+
notifySessionsChanged(s.workspace_id);
|
|
18014
|
+
throw httpError(409, `${id}'s ${agentLabel(next)} could not resume its conversation (${s.conversation})${next === s.agent ? "" : `: ${next} may keep its conversations apart from ${s.agent}'s`}, and its pane has closed: \`work session reopen ${id}\` tries again`);
|
|
18015
|
+
}
|
|
17904
18016
|
notifySessionsChanged(s.workspace_id);
|
|
17905
|
-
|
|
18017
|
+
return session;
|
|
18018
|
+
} finally {
|
|
18019
|
+
finish();
|
|
18020
|
+
setTimeout(() => {
|
|
18021
|
+
if (restarts.get(id) === pending) restarts.delete(id);
|
|
18022
|
+
}, RESTART_LINGER_MS).unref?.();
|
|
17906
18023
|
}
|
|
18024
|
+
}
|
|
18025
|
+
/** Ask for `id` to move to `agent` once it is idle (server/messages
|
|
18026
|
+
* `switchWhenIdle`), or take that ask back (`agent` null). */
|
|
18027
|
+
function setSwitch(id, agent) {
|
|
18028
|
+
const s = getSession(id);
|
|
18029
|
+
if (!s) return;
|
|
18030
|
+
db.prepare("UPDATE sessions SET switch_to = ? WHERE id = ?").run(agent, id);
|
|
17907
18031
|
notifySessionsChanged(s.workspace_id);
|
|
17908
|
-
|
|
18032
|
+
}
|
|
18033
|
+
/** Sessions waiting to move to another instance once idle. */
|
|
18034
|
+
function pendingSwitches() {
|
|
18035
|
+
return all("SELECT id, switch_to FROM sessions WHERE switch_to IS NOT NULL");
|
|
17909
18036
|
}
|
|
17910
18037
|
/** What a session is, open or closed (`work session list <id>`, `log`):
|
|
17911
18038
|
* undefined for one work does not know, or no longer keeps. */
|
|
@@ -17925,6 +18052,8 @@ function sessionInfo(id) {
|
|
|
17925
18052
|
kept: !!live?.keep,
|
|
17926
18053
|
/** Since when it is to close once nothing is lost by it (`retire`). */
|
|
17927
18054
|
retiring: live?.retire_at ?? null,
|
|
18055
|
+
/** The instance it moves to once it is idle (`reopen --agent`). */
|
|
18056
|
+
switching: live?.switch_to ?? null,
|
|
17928
18057
|
/** How and when it closed; null while open. */
|
|
17929
18058
|
closed: closed ? {
|
|
17930
18059
|
how: closed.how,
|
|
@@ -18069,7 +18198,7 @@ function notifySessionsChanged(workspaceId) {
|
|
|
18069
18198
|
async function emitSessionsChanged(workspaceId) {
|
|
18070
18199
|
try {
|
|
18071
18200
|
const states = await sessionStates();
|
|
18072
|
-
const { teamsOf } = await import("./
|
|
18201
|
+
const { teamsOf } = await import("./_D3ixWlKr.js");
|
|
18073
18202
|
publish("sessions.changed", {
|
|
18074
18203
|
workspaceId,
|
|
18075
18204
|
sessions: listSessions(workspaceId).map((s) => ({
|
|
@@ -20074,7 +20203,10 @@ ${repoLines}
|
|
|
20074
20203
|
Claude or Codex one reopens it on its own conversation; one closed
|
|
20075
20204
|
otherwise (with its lead, by the user), or stuck on its account's limit,
|
|
20076
20205
|
\`work session reopen <id> [--agent <another instance>]\` starts again
|
|
20077
|
-
on it,
|
|
20206
|
+
on it, a busy one once it is idle. To move yourself to another account
|
|
20207
|
+
(\`reopen $WORK_SESSION_ID --agent claude2\`), it happens as this turn
|
|
20208
|
+
ends, your conversation, team and queue kept: say where you are, then
|
|
20209
|
+
end the turn. \`work session log [<id>]\` shows what went to and from
|
|
20078
20210
|
one and how each message went. \`kill\` and \`skip\` end the turn under
|
|
20079
20211
|
way and what its pane runs; to lose nothing, \`forget <id>\` stops
|
|
20080
20212
|
waiting on a reply, \`unsend <id>\` takes back a message not yet typed
|
|
@@ -20098,4 +20230,4 @@ ${repoLines}
|
|
|
20098
20230
|
`;
|
|
20099
20231
|
}
|
|
20100
20232
|
//#endregion
|
|
20101
|
-
export {
|
|
20233
|
+
export { ownWorkspaceOnly as $, setScrapedPhase as $n, miseInstalls as $r, readFileAt as $t, clearTmuxStarted as A, tmux as Ai, realInside as An, ensureGitCredentials as Ar, allServers as At, interruptSession as B, noteInterrupt as Bn, changePref as Br, whileInstalling as Bt, workspaceBranches as C, get as Ci, steerKeys as Cn, pendingSsoOrgs as Cr, lspQueryOf as Ct, agentCaller as D, SCRATCH_TMUX as Di, writeCache as Dn, DEFAULT_HOST as Dr, stopAllServers as Dt, hookToken as E, ensureAllCacheConfig as Ei, readCache as En, repoDefaultBranch as Er, runningServers as Et, descendantsOf as F, hookReportedAt as Fn, unreachableRepos as Fr, lspEnabled as Ft, listPanesWithin as G, notifyEventOn as Gn, isKnownAgent as Gr, logoutGithub as Gt, killWorkspaceSessions as H, noteTurnFailed as Hn, disabledAgents as Hr, installAgent as Ht, disposeSessions as I, interruptedSinceReport as In, PREF_MAX as Ir, removeServer as It, moveSession as J, onTurnEnd as Jn, setPref as Jr, runStreaming as Jt, listSessions as K, onFinished as Kn, preferredAgent as Kr, refreshGithub as Kt, ensureTmuxServer as L, lastTypedAt as Ln, WORKSPACE_PREFS as Lr, serverById as Lt, closedTeam as M, swr as Mi, agentPhase as Mn, isValidHost as Mr, forgetProbes as Mt, createSession as N, withLock as Ni, clearAgentPhase as Nn, normalizeHost as Nr, installKey as Nt, beginCreation as O, TMUX_SOCKET as Oi, cleanSummary as On, addHost as Or, stopServers as Ot, creationOf as P, hookPhase as Pn, removeHost as Pr, installServer as Pt, onSessionDispose as Q, setExpecting as Qn, ghKnownHosts as Qr, readBlobAt as Qt, forgetPanes as R, noteActivity$1 as Rn, agentChoices as Rr, serverList as Rt, withProgressOp as S, db as Si, reportsWorking as Sn, headOid as Sr, lspQuery as St, ensureAllPushHooks as T, ownsBranchOf as Ti, credentialStamp as Tn, repoCatalog as Tr, lspWarm as Tt, launchDir as U, noteTyped as Un, enabledAgents as Ur, installMise as Ut, killSession as V, notePermissionMode as Vn, deleteSetting as Vr, authGithub as Vt, listPanes as W, noteUserAnswered as Wn, getSetting as Wr, installTool as Wt, noteConversation as X, sessionWatched as Xn, discoverAgents as Xr, fileChanges as Xt, newSessionArgs as Y, onTurnFailed as Yn, setSetting as Yr, updateTool as Yt, notifySessionsChanged as Z, setAgentPhase as Zn, doctor as Zr, patchIn as Zt, retryMaterialize as _, publish as _i, noteActivity as _n, deleteSubscription as _r, killWorkspaceProc as _t, ensureUntrackedCache as a, TOOLS as ai, startSnapSweep as an, turnSince as ar, reopenSession as at, sweepTrash as b, subscriberCount as bi, quotesPastes as bn, sendPush as br, killServers as bt, insertPendingWorkspace as c, catalogPin as ci, markBranch as cn, agentFromCommand as cr, restartPlan as ct, progress as d, applyPrefChange as di, hotBatchMinMs as dn, ACCENT_RE as dr, sendToSession as dt, miseVersions as ei, reviewWaiting as en, setSessionViewers as er, paneJobs as et, progressSince as f, FRAME_ANCESTORS as fi, notePushActivity as fn, getInstance as fr, sessionInfo as ft, resumePendingWorkspaces as g, readBody as gi, workspacePrs as gn, setInstance as gr, tmuxWasStarted as gt, removeRepo as h, httpError as hi, withoutDismissed as hn, normalizeAccent as hr, tmuxName as ht, deleteWorkspace as i, PROJECT_TOOLS as ii, setPoints as in, turnSettling as ir, renameSession as it, closedSession as j, config as ji, activityOf as jn, forgetToken as jr, forgetCustomServer as jt, cleanEnv as k, git as ki, inside as kn, configuredHosts as kr, addCustomServer as kt, listWorkspaces as l, parseAgentId as li, sectionFor as ln, agentLabel as lr, restartSession as lt, queueMaterialize as m, checked as mi, refreshPrsBatch as mn, manifest as mr, setSwitch as mt, barePath as n, bornOut as ni, workspaceDiff as nn, summaryOf as nr, pasteToSession as nt, gcBares as o, agentById as oi, diffStamp as on, agentBadge as or, reopenable as ot, pruneLaneBranch as p, FRAME_HEADERS as pi, prsForHeads as pn, iconSvg as pr, sessionStates as pt, markTmuxStarted as q, onPhaseChange as qn, setDisabledAgents as qr, removeTool as qt, createWorkspace as r, firewallProbe as ri, workspaceSections as rn, turnPhase as rr, pendingSwitches as rt, getWorkspace as s, agentLabel$1 as si, commentFolder as sn, agentFamily as sr, restartOf as st, addRepo as t, which as ti, withinBudget as tn, settleQuietWorking as tr, panePids as tt, otherWorkspaceBranches as u, toolById as ui, dismissPr as un, agentMeta as ur, retireSession as ut, revParse as v, publishJson as vi, AGENTS as vn, pushPublicKey as vr, portsByWorkspace as vt, startTmpSweep as w, workspacePath as wi, blankRow as wn, repoBranches as wr, lspUses as wt, syncAgentsMd as x, all as xi, readHookPayload as xn, validSubscription as xr, lspDiagnostics as xt, setWorkspaceStatus as y, subscribe as yi, interruptKeys as yn, saveSubscription as yr, workspaceProcs as yt, getSession as z, noteBackground as zn, allPrefs as zr, sharing as zt };
|