@dylanpiercey/work 0.2.29 → 0.2.31
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 +65 -20
- package/dist/{_Dgcl4IXI.js → _CA77e0SL.js} +74 -74
- package/dist/_CeTAKoPH.js +2 -0
- package/dist/{_DQbVrULO.js → _Chg81Eud.js} +102 -15
- package/dist/{_cvaVxDgR.js → _DAiB3S3K.js} +110 -20
- package/dist/_ENzyVrzA.js +2 -0
- package/dist/index.mjs +708 -702
- package/dist/public/assets/{_C3t6vaz9.js → _0rnsYyHI.js} +1 -1
- package/dist/public/assets/_0rnsYyHI.js.br +0 -0
- package/dist/public/assets/_1eDP5ScE.js +1 -0
- package/dist/public/assets/{_CGMMMRN0.js → _1uK9Q0wK.js} +1 -1
- package/dist/public/assets/_1uK9Q0wK.js.br +0 -0
- package/dist/public/assets/_2peNM1Yj.js +1 -0
- package/dist/public/assets/{_Ccllh0vX.js → _2ruYWNaq.js} +1 -1
- package/dist/public/assets/_2ruYWNaq.js.br +0 -0
- package/dist/public/assets/_3f3osMee.js +1 -0
- package/dist/public/assets/_4kSAouhv.js +1 -0
- package/dist/public/assets/{_Dy30P2NB.js → _5Brh_Zvr.js} +1 -1
- package/dist/public/assets/_5Brh_Zvr.js.br +0 -0
- package/dist/public/assets/{_B6s4hDj-.js → _7pBUqbhd.js} +1 -1
- package/dist/public/assets/_7pBUqbhd.js.br +0 -0
- package/dist/public/assets/{_CBaoo_Ot.js → _B-SN89sj.js} +1 -1
- package/dist/public/assets/_B-SN89sj.js.br +0 -0
- package/dist/public/assets/{_BoyCK8R8.js → _B-VWoq1V.js} +1 -1
- package/dist/public/assets/_B-VWoq1V.js.br +0 -0
- package/dist/public/assets/{_BaFjyZ6N.js → _B-hClvma.js} +1 -1
- package/dist/public/assets/_B-hClvma.js.br +0 -0
- package/dist/public/assets/{_09V6rMXz.js → _B4IcwtuQ.js} +1 -1
- package/dist/public/assets/_B4IcwtuQ.js.br +0 -0
- package/dist/public/assets/{_Ckl0EUD5.js → _B59ZdJKm.js} +6 -6
- package/dist/public/assets/_B59ZdJKm.js.br +0 -0
- package/dist/public/assets/_B5khveul.js +1 -0
- package/dist/public/assets/_B6FEkYOr.js +1 -0
- package/dist/public/assets/_B7NvboO3.js +1 -0
- package/dist/public/assets/_B8EMl0L3.js +1 -0
- package/dist/public/assets/{_DiJwfnvW.js → _BAf76HH-.js} +1 -1
- package/dist/public/assets/_BAf76HH-.js.br +0 -0
- package/dist/public/assets/{_DyZ2PJ8P.js → _BBatSKft.js} +1 -1
- package/dist/public/assets/_BBatSKft.js.br +0 -0
- package/dist/public/assets/_BCZxwRvm.js +1 -0
- package/dist/public/assets/{_CKX1CX1X.js → _BFfJAyhC.js} +1 -1
- package/dist/public/assets/_BFfJAyhC.js.br +0 -0
- package/dist/public/assets/{_CN9dOhkR.js → _BJ8djIKJ.js} +1 -1
- package/dist/public/assets/_BJ8djIKJ.js.br +0 -0
- package/dist/public/assets/{_r2-rm8jK.js → _BJrNQH9o.js} +1 -1
- package/dist/public/assets/_BJrNQH9o.js.br +0 -0
- package/dist/public/assets/{_DB4Nu6U4.js → _BMviJ0DM.js} +1 -1
- package/dist/public/assets/_BMviJ0DM.js.br +0 -0
- package/dist/public/assets/_BNt-6zu7.js +1 -0
- package/dist/public/assets/{_BNfVk7Ln.js → _BQB3Z-QZ.js} +7 -7
- package/dist/public/assets/_BQB3Z-QZ.js.br +0 -0
- package/dist/public/assets/{_DQPvHSlR.js → _BTRpsI2L.js} +1 -1
- package/dist/public/assets/_BTRpsI2L.js.br +0 -0
- package/dist/public/assets/{_BIxNqHBZ.js → _BTltsvZf.js} +1 -1
- package/dist/public/assets/_BV8SbpAo.js +1 -0
- package/dist/public/assets/_BVHm9EAP.js +1 -0
- package/dist/public/assets/{_Cel834Vg.js → _BXEDcE2U.js} +1 -1
- package/dist/public/assets/_BXEDcE2U.js.br +0 -0
- package/dist/public/assets/_BY8bAaOw.js +1 -0
- package/dist/public/assets/_BYRnv9Je.js +1 -0
- package/dist/public/assets/{_D9D7iaPq.js → _BYjUw_Ai.js} +1 -1
- package/dist/public/assets/_BYjUw_Ai.js.br +0 -0
- package/dist/public/assets/{_BSL42K7X.js → _BZMjGBO4.js} +1 -1
- package/dist/public/assets/_BZMjGBO4.js.br +0 -0
- package/dist/public/assets/_Beix8mGH.js +1 -0
- package/dist/public/assets/{_C2DZFbPd.js → _BejKM778.js} +1 -1
- package/dist/public/assets/_BejKM778.js.br +0 -0
- package/dist/public/assets/{_DHp283GE.js → _BgeOkNxm.js} +1 -1
- package/dist/public/assets/_BgeOkNxm.js.br +0 -0
- package/dist/public/assets/{_C-QoG-Y1.js → _BhzXC219.js} +1 -1
- package/dist/public/assets/_BhzXC219.js.br +0 -0
- package/dist/public/assets/_BkCea_EM.js +1 -0
- package/dist/public/assets/{_BvaDtac_.js → _Bl-Pp_G_.js} +1 -1
- package/dist/public/assets/_Bl-Pp_G_.js.br +0 -0
- package/dist/public/assets/_BnksHAq4.js +1 -0
- package/dist/public/assets/{_D_Ap1bE6.js → _BoNDFwmR.js} +1 -1
- package/dist/public/assets/_BoNDFwmR.js.br +0 -0
- package/dist/public/assets/_BopwbsBr.js +1 -0
- package/dist/public/assets/{_CvdRYJ_c.js → _BqW1-XCK.js} +1 -1
- package/dist/public/assets/_BqW1-XCK.js.br +0 -0
- package/dist/public/assets/{_BD7vc-oj.js → _Bt6N184Q.js} +1 -1
- package/dist/public/assets/_Bt6N184Q.js.br +0 -0
- package/dist/public/assets/{_D85Y7a83.js → _BvS-s-Ak.js} +1 -1
- package/dist/public/assets/_BvS-s-Ak.js.br +0 -0
- package/dist/public/assets/_Bwe3-rHW.js +1 -0
- package/dist/public/assets/_BwfX93ne.js +1 -0
- package/dist/public/assets/{_DTQjjI0s.js → _BwrGwOtQ.js} +1 -1
- package/dist/public/assets/_BwrGwOtQ.js.br +0 -0
- package/dist/public/assets/{_LSN-vb5h.js → _ByHMLHd2.js} +1 -1
- package/dist/public/assets/_ByHMLHd2.js.br +0 -0
- package/dist/public/assets/{_C5Zx8Wi7.js → _BysHejwU.js} +1 -1
- package/dist/public/assets/_BysHejwU.js.br +0 -0
- package/dist/public/assets/{_BKXsx3Mt.js → _C0AbI0Il.js} +1 -1
- package/dist/public/assets/_C0fY9kwL.js +1 -0
- package/dist/public/assets/_C1S6MokH.js +1 -0
- package/dist/public/assets/{_JNKEmcfY.js → _C2lFkReD.js} +1 -1
- package/dist/public/assets/_C2lFkReD.js.br +0 -0
- package/dist/public/assets/{_DuH-y6JT.js → _C3WUC9vT.js} +2 -2
- package/dist/public/assets/_C3WUC9vT.js.br +0 -0
- package/dist/public/assets/_C4weUVYB.js +1 -0
- package/dist/public/assets/{_C9xqB77n.js → _C4wrw-v3.js} +2 -2
- package/dist/public/assets/_C4wrw-v3.js.br +0 -0
- package/dist/public/assets/{_CC8X6sBL.js → _C79dBOr8.js} +1 -1
- package/dist/public/assets/_C79dBOr8.js.br +0 -0
- package/dist/public/assets/{_XaX4L8DJ.js → _C9SpOt0M.js} +1 -1
- package/dist/public/assets/_C9SpOt0M.js.br +0 -0
- package/dist/public/assets/_CA21SvG4.js +1 -0
- package/dist/public/assets/_CBOI_e-y.js +1 -0
- package/dist/public/assets/{_DkyjqG9e.js → _CCpU69yd.js} +1 -1
- package/dist/public/assets/_CCpU69yd.js.br +0 -0
- package/dist/public/assets/_CDZQJZ0K.js +1 -0
- package/dist/public/assets/_CFyLnS9R.js +1 -0
- package/dist/public/assets/{_BVtrvOSe.js → _CHlAgoCR.js} +1 -1
- package/dist/public/assets/_CHlAgoCR.js.br +0 -0
- package/dist/public/assets/_CKkrzL50.js +1 -0
- package/dist/public/assets/_CMoQIkwL.js +1 -0
- package/dist/public/assets/_CNGQVe3D.js +1 -0
- package/dist/public/assets/{_BXUvWr3-.js → _CNYvV0qf.js} +1 -1
- package/dist/public/assets/_CNYvV0qf.js.br +0 -0
- package/dist/public/assets/_CNwPidub.js +1 -0
- package/dist/public/assets/_CQPb5V54.js +1 -0
- package/dist/public/assets/{_RMFadXyd.js → _CQ_0m9ig.js} +1 -1
- package/dist/public/assets/_CT-h8XVG.js +1 -0
- package/dist/public/assets/{_EqF1UvUW.js → _CXhTpNMq.js} +1 -1
- package/dist/public/assets/_CXhTpNMq.js.br +0 -0
- package/dist/public/assets/_CXqTBYmH.js +1 -0
- package/dist/public/assets/_CZKoEEqo.js +1 -0
- package/dist/public/assets/{_D6GoSbE9.js → _CZbUQw9C.js} +1 -1
- package/dist/public/assets/_CZbUQw9C.js.br +0 -0
- package/dist/public/assets/{_DQ3w0yT_.js → _C_UWrVF7.js} +1 -1
- package/dist/public/assets/_C_UWrVF7.js.br +0 -0
- package/dist/public/assets/{_CZf-29Hc.js → _Cb58DeV_.js} +1 -1
- package/dist/public/assets/_Cb58DeV_.js.br +0 -0
- package/dist/public/assets/{_DekTDKVM.js → _CbfTm4zs.js} +1 -1
- package/dist/public/assets/_CbfTm4zs.js.br +0 -0
- package/dist/public/assets/_CbpJq7Cx.js +1 -0
- package/dist/public/assets/_CcbWawiw.js +1 -0
- package/dist/public/assets/_CjBg7wda.js +1 -0
- package/dist/public/assets/_CmboD-Ri.js +1 -0
- package/dist/public/assets/{_kjnvW1ca.js → _CpBXqtOP.js} +1 -1
- package/dist/public/assets/_CpBXqtOP.js.br +0 -0
- package/dist/public/assets/_CpOIuBE_.js +1 -0
- package/dist/public/assets/{_DTyNE-ha.js → _CwSQdBS6.js} +1 -1
- package/dist/public/assets/_CwSQdBS6.js.br +0 -0
- package/dist/public/assets/{_B7yMFKTT.js → _CwfNvFGG.js} +1 -1
- package/dist/public/assets/_CwfNvFGG.js.br +0 -0
- package/dist/public/assets/{_Bg1HbBGf.js → _Cx4rIgNV.js} +1 -1
- package/dist/public/assets/_Cx4rIgNV.js.br +0 -0
- package/dist/public/assets/_CysaEUU6.js +1 -0
- package/dist/public/assets/{_De44Kinm.js → _Cz0ftG76.js} +1 -1
- package/dist/public/assets/_Cz0ftG76.js.br +0 -0
- package/dist/public/assets/_D-uJogtY.js +1 -0
- package/dist/public/assets/{_B4KqC7bv.js → _D07U4iNq.js} +1 -1
- package/dist/public/assets/_D07U4iNq.js.br +0 -0
- package/dist/public/assets/{_uFhCDdP2.js → _D093UEmp.js} +1 -1
- package/dist/public/assets/_D093UEmp.js.br +0 -0
- package/dist/public/assets/_D2DhJdG9.js +1 -0
- package/dist/public/assets/{_CmY_mO0I.js → _D40L3OPU.js} +2 -2
- package/dist/public/assets/_D40L3OPU.js.br +0 -0
- package/dist/public/assets/{_CWDRfuqt.js → _D4pDHMa2.js} +1 -1
- package/dist/public/assets/_D5he3BaK.js +1 -0
- package/dist/public/assets/_D6k6GKOI.js +1 -0
- package/dist/public/assets/{_C87fJHBJ.js → _D717kl7o.js} +1 -1
- package/dist/public/assets/_D717kl7o.js.br +0 -0
- package/dist/public/assets/{_DwlEN8jO.js → _D7ltmBLR.js} +1 -1
- package/dist/public/assets/_D7ltmBLR.js.br +0 -0
- package/dist/public/assets/_D9di9kDH.js +1 -0
- package/dist/public/assets/{_BWzBkN65.js → _DBe2W8-O.js} +4 -4
- package/dist/public/assets/_DBe2W8-O.js.br +0 -0
- package/dist/public/assets/_DC-iy23x.js +1 -0
- package/dist/public/assets/{_D4DvnfU9.js → _DDeOuJD-.js} +1 -1
- package/dist/public/assets/_DDeOuJD-.js.br +0 -0
- package/dist/public/assets/{_BjRK-O6i.js → _DHJWYH74.js} +1 -1
- package/dist/public/assets/_DHJWYH74.js.br +0 -0
- package/dist/public/assets/_DMAw4Lyi.js +1 -0
- package/dist/public/assets/_DMBLy2HH.js +1 -0
- package/dist/public/assets/_DMSFJWVb.js +1 -0
- package/dist/public/assets/_DNg-_1M2.js +1 -0
- package/dist/public/assets/{_qeC-hkqh.js → _DNzM33BM.js} +1 -1
- package/dist/public/assets/_DNzM33BM.js.br +0 -0
- package/dist/public/assets/_DO4NrBF9.js +1 -0
- package/dist/public/assets/_DPpLQ4tE.js +1 -0
- package/dist/public/assets/{_BdJZauO_.js → _DQgff4Gn.js} +1 -1
- package/dist/public/assets/_DQgff4Gn.js.br +0 -0
- package/dist/public/assets/{_o3VAcp92.js → _DRc6m4XZ.js} +1 -1
- package/dist/public/assets/_DRwc_MVx.js +1 -0
- package/dist/public/assets/{_B-59fc2G.js → _DSLhLFM7.js} +1 -1
- package/dist/public/assets/_DSLhLFM7.js.br +0 -0
- package/dist/public/assets/{_CdD9d7LB.js → _DU7mFuzr.js} +1 -1
- package/dist/public/assets/{_DT1q_BOi.js → _DUkq3Fkh.js} +1 -1
- package/dist/public/assets/_DUkq3Fkh.js.br +0 -0
- package/dist/public/assets/{_BDN1BqyL.js → _DVS06ITa.js} +1 -1
- package/dist/public/assets/_DVS06ITa.js.br +0 -0
- package/dist/public/assets/{_DBG97rtR.js → _DXd4ss_4.js} +1 -1
- package/dist/public/assets/_DXd4ss_4.js.br +0 -0
- package/dist/public/assets/_D_CTCMDm.js +1 -0
- package/dist/public/assets/{_Drdi4buU.js → _DahC-ZMx.js} +1 -1
- package/dist/public/assets/_DahC-ZMx.js.br +0 -0
- package/dist/public/assets/{_C2P0Gj8t.js → _DbYh-rH_.js} +1 -1
- package/dist/public/assets/_DbYh-rH_.js.br +0 -0
- package/dist/public/assets/_Dboomn9r.js +1 -0
- package/dist/public/assets/{_C0lGfwfH.js → _DcGXfbHB.js} +5 -5
- package/dist/public/assets/_DcGXfbHB.js.br +0 -0
- package/dist/public/assets/{_BPQN8Ed2.js → _DcKg5DLB.js} +1 -1
- package/dist/public/assets/_DcKg5DLB.js.br +0 -0
- package/dist/public/assets/_Ddc3OS7T.js +1 -0
- package/dist/public/assets/{_DFctnKCK.js → _De5m6VLY.js} +1 -1
- package/dist/public/assets/_De5m6VLY.js.br +0 -0
- package/dist/public/assets/{_BVJXx_5V.js → _DfLuwyDz.js} +1 -1
- package/dist/public/assets/_DfLuwyDz.js.br +0 -0
- package/dist/public/assets/{_uE7Xqg1n.js → _DhFNhsxd.js} +1 -1
- package/dist/public/assets/_DhFNhsxd.js.br +0 -0
- package/dist/public/assets/_Dhb1mD6_.js +1 -0
- package/dist/public/assets/_Dhs1e9m3.js +1 -0
- package/dist/public/assets/_DiE_PBz4.js +1 -0
- package/dist/public/assets/_DmxLjCSy.js +1 -0
- package/dist/public/assets/{_B_pf4NNB.js → _DnWJ85Qh.js} +1 -1
- package/dist/public/assets/_DnWJ85Qh.js.br +0 -0
- package/dist/public/assets/{_BrqSK6iK.js → _DqMwDw7h.js} +1 -1
- package/dist/public/assets/_DqMwDw7h.js.br +0 -0
- package/dist/public/assets/{_C-rpsEQE.js → _DrBJzq6u.js} +1 -1
- package/dist/public/assets/_DrBJzq6u.js.br +0 -0
- package/dist/public/assets/_DsRzKIR4.js +1 -0
- package/dist/public/assets/{_BfAMUYPz.js → _Ds_0MUdn.js} +1 -1
- package/dist/public/assets/_Ds_0MUdn.js.br +0 -0
- package/dist/public/assets/{_AZkH5VDi.js → _DtIYwSAu.js} +1 -1
- package/dist/public/assets/_DtIYwSAu.js.br +0 -0
- package/dist/public/assets/{_Ds_EvdLA.js → _Dtdu-SAW.js} +1 -1
- package/dist/public/assets/_Dua4o0_Y.js +1 -0
- package/dist/public/assets/_Dv9heYev.js +1 -0
- package/dist/public/assets/{_DchWCM-2.js → _DvAZuKBH.js} +1 -1
- package/dist/public/assets/_DvAZuKBH.js.br +0 -0
- package/dist/public/assets/{_BnZnTECI.js → _DvRVdiY2.js} +1 -1
- package/dist/public/assets/_DvRVdiY2.js.br +0 -0
- package/dist/public/assets/_Dvx8paDR.js +1 -0
- package/dist/public/assets/_Dz-RbnJ-.js +1 -0
- package/dist/public/assets/_DzQMQGLT.js +1 -0
- package/dist/public/assets/{_M9dxfvST.js → _Flt76pNp.js} +1 -1
- package/dist/public/assets/_Flt76pNp.js.br +0 -0
- package/dist/public/assets/{_CBUtRm7T.js → _GthSLQSo.js} +1 -1
- package/dist/public/assets/_GthSLQSo.js.br +0 -0
- package/dist/public/assets/{_C87psbTs.js → _HycvIJcc.js} +1 -1
- package/dist/public/assets/_HycvIJcc.js.br +0 -0
- package/dist/public/assets/{_BD3-fcAh.js → _INIMTDcC.js} +1 -1
- package/dist/public/assets/_INIMTDcC.js.br +0 -0
- package/dist/public/assets/{_Bm7BEDP4.js → _Jg3g4d5X.js} +1 -1
- package/dist/public/assets/_Jg3g4d5X.js.br +0 -0
- package/dist/public/assets/_JjzRaTO-.js +1 -0
- package/dist/public/assets/{_BdOW7TD_.js → _Knh-KlPr.js} +1 -1
- package/dist/public/assets/_Knh-KlPr.js.br +0 -0
- package/dist/public/assets/_L8HQUaGv.js +1 -0
- package/dist/public/assets/{_BjzxTDQt.js → _OfXrZfDI.js} +1 -1
- package/dist/public/assets/_OfXrZfDI.js.br +0 -0
- package/dist/public/assets/_PP45mXV2.js +1 -0
- package/dist/public/assets/{_CIVJt8rO.js → _SOXpla4p.js} +1 -1
- package/dist/public/assets/_SOXpla4p.js.br +0 -0
- package/dist/public/assets/_Sm7SsPE5.js +1 -0
- package/dist/public/assets/_WPgXPz4-.js +1 -0
- package/dist/public/assets/{_B3d0-ivx.js → _XM8Yiy8r.js} +1 -1
- package/dist/public/assets/_XM8Yiy8r.js.br +0 -0
- package/dist/public/assets/{_2Ldh8N3j.js → _XvkPKj7K.js} +1 -1
- package/dist/public/assets/_XvkPKj7K.js.br +0 -0
- package/dist/public/assets/{_BBxz-nlp.js → _ZhcjtX1A.js} +1 -1
- package/dist/public/assets/_ZhcjtX1A.js.br +0 -0
- package/dist/public/assets/{_DwsOEzgx.js → _ZsoPLh_l.js} +1 -1
- package/dist/public/assets/_ZsoPLh_l.js.br +0 -0
- package/dist/public/assets/_cdbntAOz.js +1 -0
- package/dist/public/assets/{_BFad43cs.js → _eKTKTYSv.js} +1 -1
- package/dist/public/assets/_eKTKTYSv.js.br +0 -0
- package/dist/public/assets/{_Bq350ccz.js → _ed-UR7ra.js} +1 -1
- package/dist/public/assets/_ed-UR7ra.js.br +0 -0
- package/dist/public/assets/_fTBA9st4.js +1 -0
- package/dist/public/assets/{_BTnRX2Ox.js → _gSnJYqUy.js} +1 -1
- package/dist/public/assets/_gSnJYqUy.js.br +0 -0
- package/dist/public/assets/{_IV6gVZT0.js → _jFdvo4ox.js} +1 -1
- package/dist/public/assets/_jFdvo4ox.js.br +0 -0
- package/dist/public/assets/_jIxOGbpS.js +1 -0
- package/dist/public/assets/_k24A354F.js +1 -0
- package/dist/public/assets/{_ClTlJPX-.js → _mB2U_1Ib.js} +1 -1
- package/dist/public/assets/_mB2U_1Ib.js.br +0 -0
- package/dist/public/assets/_rOPBCe78.js +1 -0
- package/dist/public/assets/{_CI51OPmm.js → _wj-zTHgJ.js} +1 -1
- package/dist/public/assets/_wv5FpqDc.js +1 -0
- package/dist/public/assets/files-view-B_w60r7K.js +2 -0
- package/dist/public/assets/manage-workspace-Dcg1m2-X.js +2 -0
- package/dist/public/assets/new-CVjGWgNu.js +1 -0
- package/dist/public/assets/new-workspace-Bd07N_1Y.js +2 -0
- package/dist/public/assets/review-view-DR9QJ-Zm.js +2 -0
- package/dist/public/assets/settings-CVjGWgNu.js +1 -0
- package/dist/public/assets/settings-page-BRbir9Kz.js +2 -0
- package/dist/public/assets/styles-BnX1HRpx.css +1 -0
- package/dist/public/assets/styles-BnX1HRpx.css.br +0 -0
- package/dist/public/assets/w-CVjGWgNu.js +1 -0
- package/dist/public/assets/w._-BcgbfmH9.js +1 -0
- package/dist/public/assets/w._-CSpClMZD.js +1 -0
- package/dist/public/assets/w._-CVjGWgNu.js +1 -0
- package/package.json +1 -1
- package/dist/_Cg63x2E_.js +0 -2
- package/dist/_CkGqrA7b.js +0 -2
- package/dist/public/assets/_-mNGJDx4.js +0 -1
- package/dist/public/assets/_09V6rMXz.js.br +0 -0
- package/dist/public/assets/_1-M5HrxV.js +0 -1
- package/dist/public/assets/_2Ldh8N3j.js.br +0 -0
- package/dist/public/assets/_4dOGSUKj.js +0 -1
- package/dist/public/assets/_5JtCQAFW.js +0 -1
- package/dist/public/assets/_86ozSMcA.js +0 -1
- package/dist/public/assets/_8N3YzExI.js +0 -1
- package/dist/public/assets/_9_X4R12k.js +0 -1
- package/dist/public/assets/_AVe1cYkq.js +0 -1
- package/dist/public/assets/_AZkH5VDi.js.br +0 -0
- package/dist/public/assets/_B-59fc2G.js.br +0 -0
- package/dist/public/assets/_B3d0-ivx.js.br +0 -0
- package/dist/public/assets/_B3wqVlOb.js +0 -1
- package/dist/public/assets/_B4KqC7bv.js.br +0 -0
- package/dist/public/assets/_B6s4hDj-.js.br +0 -0
- package/dist/public/assets/_B7yMFKTT.js.br +0 -0
- package/dist/public/assets/_B9oI_ZQw.js +0 -1
- package/dist/public/assets/_BBxz-nlp.js.br +0 -0
- package/dist/public/assets/_BD3-fcAh.js.br +0 -0
- package/dist/public/assets/_BD7vc-oj.js.br +0 -0
- package/dist/public/assets/_BDN1BqyL.js.br +0 -0
- package/dist/public/assets/_BFad43cs.js.br +0 -0
- package/dist/public/assets/_BHSB0a9y.js +0 -1
- package/dist/public/assets/_BIfepPX7.js +0 -1
- package/dist/public/assets/_BLg2_OPP.js +0 -1
- package/dist/public/assets/_BNfVk7Ln.js.br +0 -0
- package/dist/public/assets/_BPQN8Ed2.js.br +0 -0
- package/dist/public/assets/_BSL42K7X.js.br +0 -0
- package/dist/public/assets/_BTnRX2Ox.js.br +0 -0
- package/dist/public/assets/_BUwEFTQs.js +0 -1
- package/dist/public/assets/_BVJXx_5V.js.br +0 -0
- package/dist/public/assets/_BViN8UkI.js +0 -1
- package/dist/public/assets/_BVtrvOSe.js.br +0 -0
- package/dist/public/assets/_BWzBkN65.js.br +0 -0
- package/dist/public/assets/_BXUvWr3-.js.br +0 -0
- package/dist/public/assets/_B_pf4NNB.js.br +0 -0
- package/dist/public/assets/_BaFjyZ6N.js.br +0 -0
- package/dist/public/assets/_BdJZauO_.js.br +0 -0
- package/dist/public/assets/_BdOW7TD_.js.br +0 -0
- package/dist/public/assets/_Bej55pMc.js +0 -1
- package/dist/public/assets/_BfAMUYPz.js.br +0 -0
- package/dist/public/assets/_Bg1HbBGf.js.br +0 -0
- package/dist/public/assets/_Bh1p4tTQ.js +0 -1
- package/dist/public/assets/_BjRK-O6i.js.br +0 -0
- package/dist/public/assets/_BjzxTDQt.js.br +0 -0
- package/dist/public/assets/_Bm7BEDP4.js.br +0 -0
- package/dist/public/assets/_BnZnTECI.js.br +0 -0
- package/dist/public/assets/_BnkQB613.js +0 -1
- package/dist/public/assets/_BoyCK8R8.js.br +0 -0
- package/dist/public/assets/_BpKfCptj.js +0 -1
- package/dist/public/assets/_BpkQvAkB.js +0 -1
- package/dist/public/assets/_Bq350ccz.js.br +0 -0
- package/dist/public/assets/_BrqSK6iK.js.br +0 -0
- package/dist/public/assets/_BtMw49fh.js +0 -1
- package/dist/public/assets/_Bu5TbdOg.js +0 -1
- package/dist/public/assets/_BvaDtac_.js.br +0 -0
- package/dist/public/assets/_BxOI22Z9.js +0 -1
- package/dist/public/assets/_C-QoG-Y1.js.br +0 -0
- package/dist/public/assets/_C-rpsEQE.js.br +0 -0
- package/dist/public/assets/_C0lGfwfH.js.br +0 -0
- package/dist/public/assets/_C1j8Notv.js +0 -1
- package/dist/public/assets/_C2DZFbPd.js.br +0 -0
- package/dist/public/assets/_C2P0Gj8t.js.br +0 -0
- package/dist/public/assets/_C3t6vaz9.js.br +0 -0
- package/dist/public/assets/_C5Zx8Wi7.js.br +0 -0
- package/dist/public/assets/_C87fJHBJ.js.br +0 -0
- package/dist/public/assets/_C87psbTs.js.br +0 -0
- package/dist/public/assets/_C8Otjsq6.js +0 -1
- package/dist/public/assets/_C9Pkf7Dy.js +0 -1
- package/dist/public/assets/_C9xqB77n.js.br +0 -0
- package/dist/public/assets/_CBUtRm7T.js.br +0 -0
- package/dist/public/assets/_CBaoo_Ot.js.br +0 -0
- package/dist/public/assets/_CC8X6sBL.js.br +0 -0
- package/dist/public/assets/_CD-Nyy0q.js +0 -1
- package/dist/public/assets/_CELA8vjH.js +0 -1
- package/dist/public/assets/_CF7xvoR9.js +0 -1
- package/dist/public/assets/_CGMMMRN0.js.br +0 -0
- package/dist/public/assets/_CHH0_fAt.js +0 -1
- package/dist/public/assets/_CIVJt8rO.js.br +0 -0
- package/dist/public/assets/_CKX1CX1X.js.br +0 -0
- package/dist/public/assets/_CL5PEIcw.js +0 -1
- package/dist/public/assets/_CMnOnjht.js +0 -1
- package/dist/public/assets/_CN9dOhkR.js.br +0 -0
- package/dist/public/assets/_COH8-2hR.js +0 -1
- package/dist/public/assets/_CV1LYZzU.js +0 -1
- package/dist/public/assets/_CVntBfh0.js +0 -1
- package/dist/public/assets/_CWNpXddk.js +0 -1
- package/dist/public/assets/_CZf-29Hc.js.br +0 -0
- package/dist/public/assets/_CcaIHYPh.js +0 -1
- package/dist/public/assets/_Ccllh0vX.js.br +0 -0
- package/dist/public/assets/_CeZQKzig.js +0 -1
- package/dist/public/assets/_Cel834Vg.js.br +0 -0
- package/dist/public/assets/_Chry46hi.js +0 -1
- package/dist/public/assets/_Ckl0EUD5.js.br +0 -0
- package/dist/public/assets/_ClTlJPX-.js.br +0 -0
- package/dist/public/assets/_CmY_mO0I.js.br +0 -0
- package/dist/public/assets/_CoQcFQgw.js +0 -1
- package/dist/public/assets/_CpGueDAK.js +0 -1
- package/dist/public/assets/_CpvhcOw6.js +0 -1
- package/dist/public/assets/_Cqldd767.js +0 -1
- package/dist/public/assets/_CtusPhfQ.js +0 -1
- package/dist/public/assets/_CvdRYJ_c.js.br +0 -0
- package/dist/public/assets/_D01rLnA8.js +0 -1
- package/dist/public/assets/_D0fowFEW.js +0 -1
- package/dist/public/assets/_D4DvnfU9.js.br +0 -0
- package/dist/public/assets/_D6GoSbE9.js.br +0 -0
- package/dist/public/assets/_D85Y7a83.js.br +0 -0
- package/dist/public/assets/_D9D7iaPq.js.br +0 -0
- package/dist/public/assets/_DB4Nu6U4.js.br +0 -0
- package/dist/public/assets/_DBG97rtR.js.br +0 -0
- package/dist/public/assets/_DBlBjpmH.js +0 -1
- package/dist/public/assets/_DFctnKCK.js.br +0 -0
- package/dist/public/assets/_DGkd7WRH.js +0 -1
- package/dist/public/assets/_DHp283GE.js.br +0 -0
- package/dist/public/assets/_DOnJm8qx.js +0 -1
- package/dist/public/assets/_DPuqmI_y.js +0 -1
- package/dist/public/assets/_DQ3w0yT_.js.br +0 -0
- package/dist/public/assets/_DQPvHSlR.js.br +0 -0
- package/dist/public/assets/_DT1q_BOi.js.br +0 -0
- package/dist/public/assets/_DTQjjI0s.js.br +0 -0
- package/dist/public/assets/_DTyNE-ha.js.br +0 -0
- package/dist/public/assets/_DUPmd4_a.js +0 -1
- package/dist/public/assets/_DW5mYwY1.js +0 -1
- package/dist/public/assets/_DW68RPud.js +0 -1
- package/dist/public/assets/_DZm9X-7i.js +0 -1
- package/dist/public/assets/_D_Ap1bE6.js.br +0 -0
- package/dist/public/assets/_DchWCM-2.js.br +0 -0
- package/dist/public/assets/_DcuDxJqD.js +0 -1
- package/dist/public/assets/_De44Kinm.js.br +0 -0
- package/dist/public/assets/_Debax-3a.js +0 -1
- package/dist/public/assets/_DekTDKVM.js.br +0 -0
- package/dist/public/assets/_DiJwfnvW.js.br +0 -0
- package/dist/public/assets/_DkyjqG9e.js.br +0 -0
- package/dist/public/assets/_DlRteSPN.js +0 -1
- package/dist/public/assets/_Drdi4buU.js.br +0 -0
- package/dist/public/assets/_DuH-y6JT.js.br +0 -0
- package/dist/public/assets/_DvVBrYcq.js +0 -1
- package/dist/public/assets/_DvsqIVpn.js +0 -1
- package/dist/public/assets/_DwlEN8jO.js.br +0 -0
- package/dist/public/assets/_DwsOEzgx.js.br +0 -0
- package/dist/public/assets/_Dy30P2NB.js.br +0 -0
- package/dist/public/assets/_DyZ2PJ8P.js.br +0 -0
- package/dist/public/assets/_EqF1UvUW.js.br +0 -0
- package/dist/public/assets/_IV6gVZT0.js.br +0 -0
- package/dist/public/assets/_JJlyj9UR.js +0 -1
- package/dist/public/assets/_JNKEmcfY.js.br +0 -0
- package/dist/public/assets/_K-qm51rD.js +0 -1
- package/dist/public/assets/_LSN-vb5h.js.br +0 -0
- package/dist/public/assets/_M9dxfvST.js.br +0 -0
- package/dist/public/assets/_O16UBaq5.js +0 -1
- package/dist/public/assets/_OvEzz7e1.js +0 -1
- package/dist/public/assets/_Qq3oTKHZ.js +0 -1
- package/dist/public/assets/_XaX4L8DJ.js.br +0 -0
- package/dist/public/assets/_YjB7hD5x.js +0 -1
- package/dist/public/assets/_atbUayxf.js +0 -1
- package/dist/public/assets/_bhq40nJh.js +0 -1
- package/dist/public/assets/_fQx1DX5s.js +0 -1
- package/dist/public/assets/_jUcId35c.js +0 -1
- package/dist/public/assets/_kiUqt4qT.js +0 -1
- package/dist/public/assets/_kjnvW1ca.js.br +0 -0
- package/dist/public/assets/_prTeknmq.js +0 -1
- package/dist/public/assets/_qeC-hkqh.js.br +0 -0
- package/dist/public/assets/_r2-rm8jK.js.br +0 -0
- package/dist/public/assets/_r97JbCoa.js +0 -1
- package/dist/public/assets/_rOZZD8kn.js +0 -1
- package/dist/public/assets/_sqn4FW-F.js +0 -1
- package/dist/public/assets/_uE7Xqg1n.js.br +0 -0
- package/dist/public/assets/_uFhCDdP2.js.br +0 -0
- package/dist/public/assets/_wKB6E3bj.js +0 -1
- package/dist/public/assets/_wP4Qkv_P.js +0 -1
- package/dist/public/assets/_y1KeDZoR.js +0 -1
- package/dist/public/assets/_yT-Qf3uW.js +0 -1
- package/dist/public/assets/files-view-CbbvsHoj.js +0 -2
- package/dist/public/assets/manage-workspace-BssaPJK3.js +0 -2
- package/dist/public/assets/new-NMPkd8J_.js +0 -1
- package/dist/public/assets/new-workspace-DoYdfl6L.js +0 -2
- package/dist/public/assets/review-view-CGDvPz9J.js +0 -2
- package/dist/public/assets/settings-NMPkd8J_.js +0 -1
- package/dist/public/assets/settings-page-CLB0rFFP.js +0 -2
- package/dist/public/assets/styles-C7h1Fupr.css +0 -1
- package/dist/public/assets/styles-C7h1Fupr.css.br +0 -0
- package/dist/public/assets/w-NMPkd8J_.js +0 -1
- package/dist/public/assets/w._-BooPCAra.js +0 -1
- package/dist/public/assets/w._-DOlOuaiC.js +0 -1
- package/dist/public/assets/w._-NMPkd8J_.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as reopenSession, A as closedSession, Bn as summaryOf, Cn as lastTypedAt, Hn as turnSettling, In as setExpecting, J as notifySessionsChanged, L as getSession, Mn as onPhaseChange, Nn as onTurnEnd, Or as getSetting, Pn as sessionWatched, Q as renameSession, Qr as httpError, R as interruptSession, U as listPanesWithin, Un as turnSince, Vn as turnPhase, Y as onSessionDispose, _n as activityOf, ai as db, et as reopenable, ii as all, j as createSession, jn as onFinished, kr as isKnownAgent, ln as steerKeys, mn as cleanSummary, nt as sendToSession, oi as get, on as interruptKeys, qn as agentLabel, tt as retireSession, vn as agentPhase, xn as hookReportedAt, z as killSession } from "./_Chg81Eud.js";
|
|
2
2
|
//#region src/server/messages.ts
|
|
3
3
|
var team = {
|
|
4
4
|
memberGroup: () => null,
|
|
@@ -24,6 +24,14 @@ var RETRY_MS = 3e3;
|
|
|
24
24
|
var MAX_BODY = 5e4;
|
|
25
25
|
/** A reply past this is cut, pointing at the rest. */
|
|
26
26
|
var MAX_REPLY = 2e4;
|
|
27
|
+
/** A pane that has written nothing for this long is a CLI at its prompt:
|
|
28
|
+
* every agent's screen animates while it works (scraper.ts). */
|
|
29
|
+
var PANE_STILL_MS = 4e3;
|
|
30
|
+
/** How often a held answer looks at the pane again. */
|
|
31
|
+
var HOLD_POLL_MS = 1e3;
|
|
32
|
+
/** A held answer goes after this however its pane looks: a CLI that
|
|
33
|
+
* paints at its prompt would otherwise hold it forever. */
|
|
34
|
+
var HOLD_MAX_MS = 6e5;
|
|
27
35
|
/** How much of a message's first line a reply quotes to name it. */
|
|
28
36
|
var EXCERPT = 40;
|
|
29
37
|
/** A pane just started for a message can be missing from a pane list
|
|
@@ -37,6 +45,10 @@ var sends = /* @__PURE__ */ new Map();
|
|
|
37
45
|
/** Recipients a delivery is typing into right now. */
|
|
38
46
|
var delivering = /* @__PURE__ */ new Set();
|
|
39
47
|
var deliveredAt = /* @__PURE__ */ new Map();
|
|
48
|
+
/** Sessions a message went into mid-turn, until a turn's end answers it. */
|
|
49
|
+
var steered = /* @__PURE__ */ new Set();
|
|
50
|
+
/** Turn ends held back from answering (`holdAnswer`), by session. */
|
|
51
|
+
var held = /* @__PURE__ */ new Map();
|
|
40
52
|
/** Sessions any row is addressed to: the scraper asks about every session
|
|
41
53
|
* without a pane on every tick, so the answer for one with none is a set
|
|
42
54
|
* lookup rather than a query. */
|
|
@@ -144,9 +156,9 @@ function senderLabel(from, to) {
|
|
|
144
156
|
const ws = get("SELECT name FROM workspaces WHERE id = ?", from.workspace_id);
|
|
145
157
|
return `${labelOf(from)} in workspace ${ws?.name ?? from.workspace_id}`;
|
|
146
158
|
}
|
|
147
|
-
function insert(to, from, kind, body, wantsReply = false, groupId = null, answers = null) {
|
|
148
|
-
return Number(db.prepare(`INSERT INTO session_messages (to_session, from_session, from_label, kind, body, wants_reply, group_id, answers)
|
|
149
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(to, from?.id ?? null, from ? senderLabel(from, to) : null, kind, body, wantsReply ? 1 : 0, groupId, answers).lastInsertRowid);
|
|
159
|
+
function insert(to, from, kind, body, wantsReply = false, groupId = null, answers = null, urgent = false) {
|
|
160
|
+
return Number(db.prepare(`INSERT INTO session_messages (to_session, from_session, from_label, kind, body, wants_reply, group_id, answers, urgent)
|
|
161
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(to, from?.id ?? null, from ? senderLabel(from, to) : null, kind, body, wantsReply ? 1 : 0, groupId, answers, urgent ? 1 : 0).lastInsertRowid);
|
|
150
162
|
}
|
|
151
163
|
function deleteIds(ids) {
|
|
152
164
|
if (!ids.length) return;
|
|
@@ -174,30 +186,36 @@ function admit(sender) {
|
|
|
174
186
|
function deliverable(id) {
|
|
175
187
|
return all("SELECT * FROM session_messages WHERE to_session = ? AND delivered_at IS NULL ORDER BY id", id).filter((r) => !r.group_id || team.groupReleased(r.group_id));
|
|
176
188
|
}
|
|
177
|
-
/** Type what is queued for `id` into it, if it is at its prompt
|
|
178
|
-
*
|
|
189
|
+
/** Type what is queued for `id` into it, if it is at its prompt, or into
|
|
190
|
+
* its turn under way if any of it is to go now and its CLI takes that.
|
|
191
|
+
* Returns why not (`waits`), or nothing once it is typed in (or there was
|
|
192
|
+
* nothing), and whether that was mid-turn. */
|
|
179
193
|
async function deliver(id) {
|
|
180
|
-
if (delivering.has(id)) return "another message is being typed in";
|
|
194
|
+
if (delivering.has(id)) return { waits: "another message is being typed in" };
|
|
181
195
|
const phase = turnPhase(id);
|
|
182
|
-
if (phase === "waiting") return "it is waiting on the user";
|
|
183
|
-
if (
|
|
184
|
-
if (Date.now() - lastTypedAt(id) < TYPING_QUIET_MS) return "someone is typing in its terminal";
|
|
196
|
+
if (phase === "waiting") return { waits: "it is waiting on the user" };
|
|
197
|
+
if (turnSettling(id)) return { waits: "it is working" };
|
|
185
198
|
const rows = deliverable(id);
|
|
186
|
-
|
|
199
|
+
const keys = phase === "working" && rows.some((r) => r.urgent) ? steerKeys(getSession(id)?.agent) : void 0;
|
|
200
|
+
if (phase === "working" && !keys) return { waits: "it is working" };
|
|
201
|
+
if (Date.now() - lastTypedAt(id) < TYPING_QUIET_MS) return { waits: "someone is typing in its terminal" };
|
|
202
|
+
if (!rows.length) return {};
|
|
187
203
|
delivering.add(id);
|
|
188
204
|
try {
|
|
189
|
-
await sendToSession(id, renderAll(rows));
|
|
205
|
+
await sendToSession(id, renderAll(rows), void 0, keys);
|
|
190
206
|
} catch (err) {
|
|
191
|
-
return err.message;
|
|
207
|
+
return { waits: err.message };
|
|
192
208
|
} finally {
|
|
193
209
|
delivering.delete(id);
|
|
194
210
|
}
|
|
211
|
+
if (keys) steered.add(id);
|
|
195
212
|
deliveredAt.set(id, Date.now());
|
|
196
213
|
deleteIds(rows.filter((r) => !r.wants_reply).map((r) => r.id));
|
|
197
214
|
const owed = rows.filter((r) => r.wants_reply).map((r) => r.id);
|
|
198
215
|
if (owed.length) db.prepare(`UPDATE session_messages SET delivered_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
|
|
199
216
|
WHERE id IN (${owed.map(() => "?").join(",")})`).run(...owed);
|
|
200
217
|
recompute();
|
|
218
|
+
return { midTurn: !!keys };
|
|
201
219
|
}
|
|
202
220
|
var pumping = false;
|
|
203
221
|
var again = false;
|
|
@@ -241,6 +259,9 @@ function kick() {
|
|
|
241
259
|
* terminal) to session `to`, typed in now if it is at its prompt, else
|
|
242
260
|
* queued until it is. From an agent's session it wants a reply unless
|
|
243
261
|
* `reply` is false: the recipient's last message as that turn ends.
|
|
262
|
+
* `opts.now` sends it into the turn under way where its CLI takes one
|
|
263
|
+
* there, and `opts.interrupt` stops that turn first (never a wait on the
|
|
264
|
+
* user: theirs is the answer it waits for).
|
|
244
265
|
* `opts.member` is a fan-out starting a member (server/team): its group's
|
|
245
266
|
* own caps bound it, not the sender's. */
|
|
246
267
|
async function sendMessage(to, text, opts = {}) {
|
|
@@ -267,19 +288,35 @@ async function sendMessage(to, text, opts = {}) {
|
|
|
267
288
|
}
|
|
268
289
|
if (!from && target.parent_id) db.prepare("UPDATE sessions SET keep = 1 WHERE id = ?").run(to);
|
|
269
290
|
const wantsReply = !!from && opts.reply !== false;
|
|
270
|
-
const
|
|
291
|
+
const ahead = get("SELECT COUNT(*) AS n FROM session_messages WHERE to_session = ? AND delivered_at IS NULL", to)?.n ?? 0;
|
|
292
|
+
const id = insert(to, from, "message", text, wantsReply, null, null, !!(opts.now || opts.interrupt));
|
|
271
293
|
recompute();
|
|
272
|
-
const
|
|
294
|
+
const interrupted = !!opts.interrupt && !!live && turnPhase(to) === "working" && !delivering.has(to) && await interruptSession(to);
|
|
295
|
+
const sent = await deliver(to);
|
|
273
296
|
const row = get("SELECT delivered_at FROM session_messages WHERE id = ?", id);
|
|
274
|
-
|
|
297
|
+
const waits = !!row && !row.delivered_at;
|
|
298
|
+
if (waits) kick();
|
|
299
|
+
const since = waits ? turnSince(to) : void 0;
|
|
275
300
|
return {
|
|
276
301
|
to: {
|
|
277
302
|
id: target.id,
|
|
278
303
|
agent: target.agent,
|
|
279
304
|
title: target.title
|
|
280
305
|
},
|
|
281
|
-
delivered: !
|
|
282
|
-
queued:
|
|
306
|
+
delivered: !waits,
|
|
307
|
+
queued: waits ? sent.waits ?? "queued" : null,
|
|
308
|
+
/** Typed into the turn under way: its CLI hands it over at the turn's
|
|
309
|
+
* next step. */
|
|
310
|
+
midTurn: !!sent.midTurn,
|
|
311
|
+
/** Its turn was stopped for it. */
|
|
312
|
+
interrupted,
|
|
313
|
+
/** While it waits: how long the turn it waits out has run (ms), and
|
|
314
|
+
* how many messages sent before it wait with it. */
|
|
315
|
+
turnMs: since === void 0 ? null : Date.now() - since,
|
|
316
|
+
ahead: waits ? ahead : 0,
|
|
317
|
+
/** What `now` and `interrupt` can do with this session's CLI. */
|
|
318
|
+
steers: !!steerKeys(target.agent),
|
|
319
|
+
interrupts: !!interruptKeys(target.agent),
|
|
283
320
|
wantsReply,
|
|
284
321
|
/** It had closed, and is back on its conversation. */
|
|
285
322
|
reopened: !live
|
|
@@ -340,9 +377,60 @@ function messageStates() {
|
|
|
340
377
|
}
|
|
341
378
|
/** A turn's end answers what the session was asked: its last message
|
|
342
379
|
* goes to each session that asked, as a reply — a member's held for its
|
|
343
|
-
* group.
|
|
344
|
-
|
|
380
|
+
* group. Once a message went in mid-turn, not at once (`holdAnswer`), and
|
|
381
|
+
* with what the turns folded into this end said before it. */
|
|
382
|
+
function answer(id, message, earlier = []) {
|
|
345
383
|
if (!mailboxes.has(id)) return false;
|
|
384
|
+
if (!steered.has(id)) return answerNow(id, message);
|
|
385
|
+
if (!get("SELECT 1 FROM session_messages WHERE to_session = ? AND wants_reply = 1 AND delivered_at IS NOT NULL", id)) {
|
|
386
|
+
steered.delete(id);
|
|
387
|
+
return false;
|
|
388
|
+
}
|
|
389
|
+
for (const said of earlier) holdAnswer(id, said);
|
|
390
|
+
holdAnswer(id, message);
|
|
391
|
+
return true;
|
|
392
|
+
}
|
|
393
|
+
/** A message that goes in mid-turn as the agent writes its answer is, to
|
|
394
|
+
* some CLIs (Claude, opencode, Copilot), not that turn's: it runs as a
|
|
395
|
+
* turn of its own straight after, which no hook announces, and that
|
|
396
|
+
* turn's end is the answer to it. A CLI at work keeps painting and one at
|
|
397
|
+
* its prompt goes still, so a turn's end answers once its pane has gone
|
|
398
|
+
* still with no turn begun. A turn that begins takes it over: its end
|
|
399
|
+
* answers, after the held turn's message, so the asker reads what the
|
|
400
|
+
* agent said before it took the message and what it did with it. */
|
|
401
|
+
function holdAnswer(id, message) {
|
|
402
|
+
const hold = held.get(id) ?? {
|
|
403
|
+
messages: [],
|
|
404
|
+
look: 0
|
|
405
|
+
};
|
|
406
|
+
held.set(id, hold);
|
|
407
|
+
hold.messages.push(message);
|
|
408
|
+
const since = Date.now();
|
|
409
|
+
const schedule = (ms) => {
|
|
410
|
+
clearTimeout(hold.timer);
|
|
411
|
+
const n = ++hold.look;
|
|
412
|
+
hold.timer = setTimeout(() => void look(n), ms);
|
|
413
|
+
hold.timer.unref?.();
|
|
414
|
+
};
|
|
415
|
+
const look = async (n) => {
|
|
416
|
+
if (held.get(id) !== hold || hold.look !== n) return;
|
|
417
|
+
if (turnPhase(id) || turnSettling(id)) return;
|
|
418
|
+
const panes = await listPanesWithin(HOLD_POLL_MS);
|
|
419
|
+
if (held.get(id) !== hold || hold.look !== n) return;
|
|
420
|
+
const pane = panes?.find((p) => p.id === id);
|
|
421
|
+
if ((pane ? Date.now() - pane.activityAt : Infinity) < PANE_STILL_MS && Date.now() - since < HOLD_MAX_MS) return schedule(HOLD_POLL_MS);
|
|
422
|
+
held.delete(id);
|
|
423
|
+
const said = hold.messages.filter((m) => !!m);
|
|
424
|
+
answerNow(id, said.length ? said.join("\n\n") : void 0);
|
|
425
|
+
};
|
|
426
|
+
schedule(PANE_STILL_MS);
|
|
427
|
+
}
|
|
428
|
+
function dropHold(id) {
|
|
429
|
+
clearTimeout(held.get(id)?.timer);
|
|
430
|
+
held.delete(id);
|
|
431
|
+
}
|
|
432
|
+
function answerNow(id, message) {
|
|
433
|
+
steered.delete(id);
|
|
346
434
|
const owed = all("SELECT * FROM session_messages WHERE to_session = ? AND wants_reply = 1 AND delivered_at IS NOT NULL", id);
|
|
347
435
|
const session = getSession(id);
|
|
348
436
|
if (!owed.length || !session) return false;
|
|
@@ -367,6 +455,8 @@ function answer(id, message) {
|
|
|
367
455
|
* for a reply is told none is coming, and what was queued for it goes —
|
|
368
456
|
* a reply means nothing to the process that next runs there. */
|
|
369
457
|
function settle(id, why) {
|
|
458
|
+
dropHold(id);
|
|
459
|
+
steered.delete(id);
|
|
370
460
|
const session = getSession(id);
|
|
371
461
|
const label = session ? labelOf(session) : id;
|
|
372
462
|
const group = team.memberGroup(id);
|