@dylanpiercey/work 0.2.43 → 0.2.45
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 +28 -4
- package/bin/work.mjs +71 -23
- package/dist/{_DN2yXOe-.js → _B1mzUx3g.js} +113 -113
- package/dist/{_Cv5RrCSW.js → _B_Wl8EDh.js} +12 -2
- package/dist/{_DuwPQCOE.js → _B_YHcR6n.js} +122 -21
- package/dist/_COxuRDjJ.js +2 -0
- package/dist/_CXys7J6U.js +2 -0
- package/dist/index.mjs +1266 -1237
- package/dist/public/assets/{_NxnEqCRC.js → _0PcaxMcN.js} +1 -1
- package/dist/public/assets/_0PcaxMcN.js.br +0 -0
- package/dist/public/assets/_28SfjYgU.js +1 -0
- package/dist/public/assets/_2WH9dVsM.js +1 -0
- package/dist/public/assets/{_B0mwj6Ev.js → _443uXxaQ.js} +1 -1
- package/dist/public/assets/_443uXxaQ.js.br +0 -0
- package/dist/public/assets/_68km9uDS.js +1 -0
- package/dist/public/assets/{_C7vQHCek.js → _7B3Of6n2.js} +1 -1
- package/dist/public/assets/_7B3Of6n2.js.br +0 -0
- package/dist/public/assets/{_DAqrKmCA.js → _7iaLwNp7.js} +1 -1
- package/dist/public/assets/_7iaLwNp7.js.br +0 -0
- package/dist/public/assets/{_Cug-hxky.js → _8wVpL9UU.js} +1 -1
- package/dist/public/assets/_8wVpL9UU.js.br +0 -0
- package/dist/public/assets/{_CN_q8cW8.js → _AUQC7bLf.js} +1 -1
- package/dist/public/assets/{_D7_Ub5eD.js → _Aeu0g-vv.js} +1 -1
- package/dist/public/assets/_Aeu0g-vv.js.br +0 -0
- package/dist/public/assets/_B2SYqcWM.js +1 -0
- package/dist/public/assets/_B2_pv4me.js +1 -0
- package/dist/public/assets/_B5kGyDQX.js +1 -0
- package/dist/public/assets/_B6kIB1WU.js +1 -0
- package/dist/public/assets/_BCTgJnmO.js +1 -0
- package/dist/public/assets/_BDyFN6kT.js +1 -0
- package/dist/public/assets/_BESQfGBB.js +1 -0
- package/dist/public/assets/_BJT3RWev.js +1 -0
- package/dist/public/assets/{_KHMfdBQI.js → _BLn8LlL6.js} +1 -1
- package/dist/public/assets/_BLn8LlL6.js.br +0 -0
- package/dist/public/assets/_BM43k9pz.js +2 -0
- package/dist/public/assets/_BM43k9pz.js.br +0 -0
- package/dist/public/assets/_BMTkhA17.js +1 -0
- package/dist/public/assets/{_D5bv6LQl.js → _BT-IZ4E6.js} +1 -1
- package/dist/public/assets/_BT-IZ4E6.js.br +0 -0
- package/dist/public/assets/_BTaFZW2H.js +1 -0
- package/dist/public/assets/{_DA4mq6lj.js → _BVLYkVz3.js} +1 -1
- package/dist/public/assets/_BVLYkVz3.js.br +0 -0
- package/dist/public/assets/_BWciqKkD.js +1 -0
- package/dist/public/assets/_BXQkwCAJ.js +1 -0
- package/dist/public/assets/_BXQkwCAJ.js.br +0 -0
- package/dist/public/assets/_BXgSb_aq.js +1 -0
- package/dist/public/assets/{_C-fnxBxJ.js → _BZKc5vLY.js} +2 -2
- package/dist/public/assets/_BZKc5vLY.js.br +0 -0
- package/dist/public/assets/{_DWlBFpSS.js → _B_q-wGcA.js} +1 -1
- package/dist/public/assets/_B_q-wGcA.js.br +0 -0
- package/dist/public/assets/{_DVPR8Gc6.js → _BaKP3ezJ.js} +4 -4
- package/dist/public/assets/_BaKP3ezJ.js.br +0 -0
- package/dist/public/assets/{_CCjVMkO3.js → _Bb8Fj9pO.js} +1 -1
- package/dist/public/assets/_Bb8Fj9pO.js.br +0 -0
- package/dist/public/assets/{_Ciq72Yaz.js → _BfBmJfms.js} +1 -1
- package/dist/public/assets/_BfBmJfms.js.br +0 -0
- package/dist/public/assets/_Bg-eUBF7.js +1 -0
- package/dist/public/assets/{_DdkaLWU-.js → _Bh0u8Y5M.js} +1 -1
- package/dist/public/assets/_Bh0u8Y5M.js.br +0 -0
- package/dist/public/assets/_BiQCjxZj.js +1 -0
- package/dist/public/assets/{_o0VQYCUE.js → _BmaGQeEm.js} +1 -1
- package/dist/public/assets/_BmaGQeEm.js.br +0 -0
- package/dist/public/assets/_BnUTLXVz.js +1 -0
- package/dist/public/assets/_BndOGaT4.js +1 -0
- package/dist/public/assets/{_DTfOovOq.js → _BqDvnSDS.js} +4 -4
- package/dist/public/assets/_BqDvnSDS.js.br +0 -0
- package/dist/public/assets/{_BQjfwReN.js → _BqQM_YrX.js} +1 -1
- package/dist/public/assets/_BqQM_YrX.js.br +0 -0
- package/dist/public/assets/_Bqs-BrmJ.js +1 -0
- package/dist/public/assets/_BrwUEaSq.js +1 -0
- package/dist/public/assets/{_BOw__Q2y.js → _Bx2KENYX.js} +1 -1
- package/dist/public/assets/_Bx2KENYX.js.br +0 -0
- package/dist/public/assets/_BxRp18VM.js +1 -0
- package/dist/public/assets/_BxlrR0IC.js +1 -0
- package/dist/public/assets/{_DPoG38YC.js → _By6YMirT.js} +1 -1
- package/dist/public/assets/{_DUuqR8Il.js → _Bz-jbG_f.js} +1 -1
- package/dist/public/assets/_Bz-jbG_f.js.br +0 -0
- package/dist/public/assets/_BzcR0Zt6.js +1 -0
- package/dist/public/assets/_C0SfB0cf.js +1 -0
- package/dist/public/assets/{_B0pMH4yO.js → _C1M0CPmH.js} +1 -1
- package/dist/public/assets/_C1M0CPmH.js.br +0 -0
- package/dist/public/assets/_C1mwVqve.js +1 -0
- package/dist/public/assets/_C1wcIoe9.js +1 -0
- package/dist/public/assets/_C31F97wV.js +1 -0
- package/dist/public/assets/{_D4egTrfn.js → _C3SxaNO4.js} +1 -1
- package/dist/public/assets/_C3SxaNO4.js.br +0 -0
- package/dist/public/assets/{_lSk10m1w.js → _C4ZArw31.js} +1 -1
- package/dist/public/assets/_C4ZArw31.js.br +0 -0
- package/dist/public/assets/_C5pTVHzg.js +1 -0
- package/dist/public/assets/_C5rhtJO0.js +1 -0
- package/dist/public/assets/{_DeI8ro0m.js → _C6AlRRbl.js} +1 -1
- package/dist/public/assets/_C6AlRRbl.js.br +0 -0
- package/dist/public/assets/{_CzIpBjJM.js → _C6mwHnpf.js} +1 -1
- package/dist/public/assets/_C6mwHnpf.js.br +0 -0
- package/dist/public/assets/_C6turck0.js +1 -0
- package/dist/public/assets/_C76cxE8X.js +1 -0
- package/dist/public/assets/_C76cxE8X.js.br +0 -0
- package/dist/public/assets/_C8aorIbv.js +1 -0
- package/dist/public/assets/{_DbEZe7yb.js → _C8wlTNi9.js} +1 -1
- package/dist/public/assets/_C8wlTNi9.js.br +0 -0
- package/dist/public/assets/_CENMamKt.js +1 -0
- package/dist/public/assets/_CFJC7t7o.js +1 -0
- package/dist/public/assets/_CG2smhmA.js +1 -0
- package/dist/public/assets/_CHskY2wz.js +1 -0
- package/dist/public/assets/{_Dy7h2yOQ.js → _CJe7L_kJ.js} +1 -1
- package/dist/public/assets/_CJe7L_kJ.js.br +0 -0
- package/dist/public/assets/{_D1L3UHX3.js → _CMMSb5BE.js} +1 -1
- package/dist/public/assets/_CMMSb5BE.js.br +0 -0
- package/dist/public/assets/{_DUUWYhg_.js → _CNbmwWUc.js} +1 -1
- package/dist/public/assets/_CNbmwWUc.js.br +0 -0
- package/dist/public/assets/_CNsQ6bMz.js +1 -0
- package/dist/public/assets/{_CGb1Cnwy.js → _CQNm4xYL.js} +1 -1
- package/dist/public/assets/_CQNm4xYL.js.br +0 -0
- package/dist/public/assets/_CQyXJju1.js +1 -0
- package/dist/public/assets/_CTtU_TUT.js +1 -0
- package/dist/public/assets/{_C6f-hgTe.js → _CUeqPIqe.js} +1 -1
- package/dist/public/assets/_CUeqPIqe.js.br +0 -0
- package/dist/public/assets/{_DZYDOMkl.js → _CUo3f46j.js} +1 -1
- package/dist/public/assets/_CUo3f46j.js.br +0 -0
- package/dist/public/assets/{_CNBA4JfC.js → _CUv3-o1m.js} +1 -1
- package/dist/public/assets/_CUv3-o1m.js.br +0 -0
- package/dist/public/assets/_CVUH7tCy.js +1 -0
- package/dist/public/assets/{_DkTAnqm3.js → _CXBP_1Ow.js} +1 -1
- package/dist/public/assets/_CXBP_1Ow.js.br +0 -0
- package/dist/public/assets/_CXxqgKhP.js +1 -0
- package/dist/public/assets/{_Cas9R6tf.js → _CZxfZ1HN.js} +1 -1
- package/dist/public/assets/_CZxfZ1HN.js.br +0 -0
- package/dist/public/assets/{_CyYvm4rW.js → _C_wg7jRf.js} +1 -1
- package/dist/public/assets/_C_wg7jRf.js.br +0 -0
- package/dist/public/assets/_CaDWv7_h.js +1 -0
- package/dist/public/assets/{_BLtle8N9.js → _CcpbjaP3.js} +1 -1
- package/dist/public/assets/_CcpbjaP3.js.br +0 -0
- package/dist/public/assets/{_BcEm_iyy.js → _Cd6L7sJx.js} +1 -1
- package/dist/public/assets/_Cd6L7sJx.js.br +0 -0
- package/dist/public/assets/_CeKIXver.js +1 -0
- package/dist/public/assets/_CfSTeslv.js +1 -0
- package/dist/public/assets/_CfSTeslv.js.br +0 -0
- package/dist/public/assets/{_BPbGGRrT.js → _CgFmGgE6.js} +1 -1
- package/dist/public/assets/_CgFmGgE6.js.br +0 -0
- package/dist/public/assets/_CgX7YjFn.js +1 -0
- package/dist/public/assets/_CiIHOUYm.js +1 -0
- package/dist/public/assets/_CjTkhQjt.js +1 -0
- package/dist/public/assets/{_CjnfvQG7.js → _CrUnCdJm.js} +1 -1
- package/dist/public/assets/_CrUnCdJm.js.br +0 -0
- package/dist/public/assets/_CsZpCxM3.js +1 -0
- package/dist/public/assets/{_TMRapgLW.js → _CtPUJlv8.js} +1 -1
- package/dist/public/assets/_CtPUJlv8.js.br +0 -0
- package/dist/public/assets/{_q330tDWb.js → _Cv4lGi_U.js} +1 -1
- package/dist/public/assets/_Cv4lGi_U.js.br +0 -0
- package/dist/public/assets/{_CS9jx04A.js → _CvkKORgC.js} +1 -1
- package/dist/public/assets/_CvkKORgC.js.br +0 -0
- package/dist/public/assets/_CwtgMFMx.js +1 -0
- package/dist/public/assets/{_7NOeJZ7O.js → _CyvC1e4R.js} +1 -1
- package/dist/public/assets/_CyvC1e4R.js.br +0 -0
- package/dist/public/assets/{__2D61bRv.js → _CzviDOIH.js} +1 -1
- package/dist/public/assets/_D1qVomTm.js +1 -0
- package/dist/public/assets/_D1ytbfGt.js +1 -0
- package/dist/public/assets/_D3PMnsje.js +1 -0
- package/dist/public/assets/{_DbadYlan.js → _D5YTVkD4.js} +1 -1
- package/dist/public/assets/_D5YTVkD4.js.br +0 -0
- package/dist/public/assets/{_C_YGsTAD.js → _D5eVjSZv.js} +1 -1
- package/dist/public/assets/_D5eVjSZv.js.br +0 -0
- package/dist/public/assets/{_b1QkEZO6.js → _D5syJ3TB.js} +1 -1
- package/dist/public/assets/_D5syJ3TB.js.br +0 -0
- package/dist/public/assets/{_B73Eh-N_.js → _D7W9YXev.js} +1 -1
- package/dist/public/assets/_D7W9YXev.js.br +0 -0
- package/dist/public/assets/_DBSuvRRR.js +1 -0
- package/dist/public/assets/_DBSuvRRR.js.br +0 -0
- package/dist/public/assets/_DD3XoWQU.js +1 -0
- package/dist/public/assets/{_DgTOYvd6.js → _DDluED7n.js} +1 -1
- package/dist/public/assets/_DDluED7n.js.br +0 -0
- package/dist/public/assets/_DDmdn81K.js +1 -0
- package/dist/public/assets/{_czNfyPen.js → _DDx3ZLLY.js} +1 -1
- package/dist/public/assets/_DDx3ZLLY.js.br +0 -0
- package/dist/public/assets/_DELYfCxS.js +1 -0
- package/dist/public/assets/{_CPPSSISM.js → _DG1ykDHz.js} +1 -1
- package/dist/public/assets/_DG1ykDHz.js.br +0 -0
- package/dist/public/assets/{_D_JHfJs4.js → _DH-Zfxr9.js} +1 -1
- package/dist/public/assets/_DH-Zfxr9.js.br +0 -0
- package/dist/public/assets/{_l0hDq-K2.js → _DJjMgG8U.js} +1 -1
- package/dist/public/assets/_DJjMgG8U.js.br +0 -0
- package/dist/public/assets/{_DFf4Rzl8.js → _DJuouelh.js} +1 -1
- package/dist/public/assets/_DJuouelh.js.br +0 -0
- package/dist/public/assets/{_Buv7nRCW.js → _DKTHLXMM.js} +1 -1
- package/dist/public/assets/_DKTHLXMM.js.br +0 -0
- package/dist/public/assets/_DKZDTErM.js +1 -0
- package/dist/public/assets/_DLMANRcu.js +1 -0
- package/dist/public/assets/{_8fMkhL-V.js → _DLQ5a6Ki.js} +1 -1
- package/dist/public/assets/_DLQ5a6Ki.js.br +0 -0
- package/dist/public/assets/_DMssEVcp.js +1 -0
- package/dist/public/assets/{_DXipSiI1.js → _DPnx99Mr.js} +1 -1
- package/dist/public/assets/_DPnx99Mr.js.br +0 -0
- package/dist/public/assets/{_g5AR9tpA.js → _DQIdfKkP.js} +1 -1
- package/dist/public/assets/_DQIdfKkP.js.br +0 -0
- package/dist/public/assets/{_COOlu3UX.js → _DQvQsSbL.js} +1 -1
- package/dist/public/assets/_DQvQsSbL.js.br +0 -0
- package/dist/public/assets/{_DXV62Cae.js → _DSJ7G2_B.js} +1 -1
- package/dist/public/assets/_DSJ7G2_B.js.br +0 -0
- package/dist/public/assets/{_De56Kzes.js → _DV9DmK5V.js} +1 -1
- package/dist/public/assets/_DV9DmK5V.js.br +0 -0
- package/dist/public/assets/{_xXNz6TCM.js → _Dami2S44.js} +1 -1
- package/dist/public/assets/_Dami2S44.js.br +0 -0
- package/dist/public/assets/_DbI1CtJs.js +1 -0
- package/dist/public/assets/_DbsxTvoE.js +1 -0
- package/dist/public/assets/_DdDI5P8m.js +1 -0
- package/dist/public/assets/_DdDnkNsg.js +1 -0
- package/dist/public/assets/{_BCXa70Fh.js → _DdMgsOf_.js} +1 -1
- package/dist/public/assets/_DdMgsOf_.js.br +0 -0
- package/dist/public/assets/{_COk-n7hZ.js → _Dfm_6oJ1.js} +1 -1
- package/dist/public/assets/_Dfm_6oJ1.js.br +0 -0
- package/dist/public/assets/_DgDBo4e6.js +1 -0
- package/dist/public/assets/{_C_2Poz1k.js → _Dh4OkJ-I.js} +1 -1
- package/dist/public/assets/_Dh4OkJ-I.js.br +0 -0
- package/dist/public/assets/_Dh5C70YE.js +1 -0
- package/dist/public/assets/{_AUDK9Grt.js → _Dj6kDNs2.js} +1 -1
- package/dist/public/assets/_Dj6kDNs2.js.br +0 -0
- package/dist/public/assets/{_D_9gKfZY.js → _DjbB_Tid.js} +1 -1
- package/dist/public/assets/_DjbB_Tid.js.br +0 -0
- package/dist/public/assets/_DlEnI_hw.js +1 -0
- package/dist/public/assets/{_D4uw28j2.js → _Dm_k20_p.js} +1 -1
- package/dist/public/assets/_Dm_k20_p.js.br +0 -0
- package/dist/public/assets/_Dp1u8fV0.js +1 -0
- package/dist/public/assets/{_DeYwNUUu.js → _DpCB6eEn.js} +2 -2
- package/dist/public/assets/_DpCB6eEn.js.br +0 -0
- package/dist/public/assets/{_CkwFvNTM.js → _Dsx1c_ka.js} +1 -1
- package/dist/public/assets/_Dsx1c_ka.js.br +0 -0
- package/dist/public/assets/_DsxQ6ZlL.js +1 -0
- package/dist/public/assets/{_BgpmFeeP.js → _DtVSojrY.js} +1 -1
- package/dist/public/assets/_DtVSojrY.js.br +0 -0
- package/dist/public/assets/_DyGy6Md-.js +1 -0
- package/dist/public/assets/_DynU4mag.js +1 -0
- package/dist/public/assets/{_FChy8Jml.js → _E2FbIudO.js} +1 -1
- package/dist/public/assets/_E2FbIudO.js.br +0 -0
- package/dist/public/assets/_F2Lj0YJ9.js +1 -0
- package/dist/public/assets/{_uP13C5Wl.js → _IaZwRxjC.js} +1 -1
- package/dist/public/assets/_IaZwRxjC.js.br +0 -0
- package/dist/public/assets/{_oR0LYfq3.js → _K6IkdyTi.js} +1 -1
- package/dist/public/assets/_K6IkdyTi.js.br +0 -0
- package/dist/public/assets/_Kuy196Nc.js +1 -0
- package/dist/public/assets/_L1Td4IcZ.js +1 -0
- package/dist/public/assets/{_CbLcjKPG.js → _NcJbZtQc.js} +1 -1
- package/dist/public/assets/_NcJbZtQc.js.br +0 -0
- package/dist/public/assets/{_Cucb4Tjg.js → _O0XVVQh2.js} +1 -1
- package/dist/public/assets/_O0XVVQh2.js.br +0 -0
- package/dist/public/assets/_OkTdYQkN.js +1 -0
- package/dist/public/assets/{_B8-o-AZv.js → _OpeUTyoe.js} +1 -1
- package/dist/public/assets/_QqSSyz8h.js +1 -0
- package/dist/public/assets/_RtsHqLAU.js +1 -0
- package/dist/public/assets/_TEFPWNgQ.js +1 -0
- package/dist/public/assets/_TfXWQcxR.js +7 -0
- package/dist/public/assets/_TfXWQcxR.js.br +0 -0
- package/dist/public/assets/{_DuOaoYJs.js → _VE58ThY1.js} +1 -1
- package/dist/public/assets/_VE58ThY1.js.br +0 -0
- package/dist/public/assets/_XKDjMlFF.js +1 -0
- package/dist/public/assets/{_CWfDZOTS.js → _XmA9VOx7.js} +1 -1
- package/dist/public/assets/_XmA9VOx7.js.br +0 -0
- package/dist/public/assets/{_BUHolEsT.js → _ZJXcokd7.js} +1 -1
- package/dist/public/assets/_ZJXcokd7.js.br +0 -0
- package/dist/public/assets/{_xSVMCoQJ.js → _ZVG7VKZV.js} +1 -1
- package/dist/public/assets/_ZVG7VKZV.js.br +0 -0
- package/dist/public/assets/{_DbH0P--6.js → __9PGdE5L.js} +1 -1
- package/dist/public/assets/__9PGdE5L.js.br +0 -0
- package/dist/public/assets/{_CHy9xaEn.js → _bISSWjWW.js} +1 -1
- package/dist/public/assets/_bISSWjWW.js.br +0 -0
- package/dist/public/assets/{_KkDXvfqJ.js → _cPNv1ej4.js} +1 -1
- package/dist/public/assets/_cPNv1ej4.js.br +0 -0
- package/dist/public/assets/_f-53KH6a.js +1 -0
- package/dist/public/assets/{_BPHYSdej.js → _i13VtQet.js} +1 -1
- package/dist/public/assets/_i13VtQet.js.br +0 -0
- package/dist/public/assets/_kwRB-xea.js +1 -0
- package/dist/public/assets/_mDbdlh67.js +1 -0
- package/dist/public/assets/{_BQ0Wpc1b.js → _pISJGfjv.js} +1 -1
- package/dist/public/assets/_qe8eSrX5.js +1 -0
- package/dist/public/assets/{_DqJfOZRO.js → _rec-40kD.js} +1 -1
- package/dist/public/assets/_rec-40kD.js.br +0 -0
- package/dist/public/assets/{_B92ZvzMb.js → _w9dqYkUz.js} +10 -10
- package/dist/public/assets/_w9dqYkUz.js.br +0 -0
- package/dist/public/assets/_xd-TT2D6.js +1 -0
- package/dist/public/assets/{_BKI2XK6i.js → _xxtp9YpJ.js} +1 -1
- package/dist/public/assets/_xxtp9YpJ.js.br +0 -0
- package/dist/public/assets/{_CqD6fuWN.js → _yTW8pyW-.js} +1 -1
- package/dist/public/assets/_yTW8pyW-.js.br +0 -0
- package/dist/public/assets/_zdLLLV2x.js +1 -0
- package/dist/public/assets/_zdLLLV2x.js.br +0 -0
- package/dist/public/assets/files-view-CdM2m5Rw.js +2 -0
- package/dist/public/assets/manage-workspace-C2Igs4OZ.js +2 -0
- package/dist/public/assets/new-Jxc3Yfpl.js +1 -0
- package/dist/public/assets/new-workspace-SKGZDJt6.js +2 -0
- package/dist/public/assets/review-view-WvZ8HElz.js +2 -0
- package/dist/public/assets/settings-Jxc3Yfpl.js +1 -0
- package/dist/public/assets/settings-page-BmFANHYh.js +2 -0
- package/dist/public/assets/styles-h1l0VgQa.css +1 -0
- package/dist/public/assets/styles-h1l0VgQa.css.br +0 -0
- package/dist/public/assets/w-Jxc3Yfpl.js +1 -0
- package/dist/public/assets/w._-Bj3TWEgr.js +1 -0
- package/dist/public/assets/w._-CxbRBt3v.js +1 -0
- package/dist/public/assets/w._-Jxc3Yfpl.js +1 -0
- package/package.json +1 -1
- package/dist/_BKkT73fv.js +0 -2
- package/dist/_BviTiVOB.js +0 -2
- package/dist/public/assets/_4jzUxBl1.js +0 -1
- package/dist/public/assets/_6Gfbsj34.js +0 -1
- package/dist/public/assets/_7NOeJZ7O.js.br +0 -0
- package/dist/public/assets/_8fMkhL-V.js.br +0 -0
- package/dist/public/assets/_ACxWQrF_.js +0 -1
- package/dist/public/assets/_AUDK9Grt.js.br +0 -0
- package/dist/public/assets/_B0mwj6Ev.js.br +0 -0
- package/dist/public/assets/_B0pMH4yO.js.br +0 -0
- package/dist/public/assets/_B1G63IYo.js +0 -1
- package/dist/public/assets/_B1qkzWnd.js +0 -1
- package/dist/public/assets/_B56RiWbN.js +0 -1
- package/dist/public/assets/_B6ZXN5aU.js +0 -1
- package/dist/public/assets/_B6_r9iYg.js +0 -1
- package/dist/public/assets/_B73Eh-N_.js.br +0 -0
- package/dist/public/assets/_B92ZvzMb.js.br +0 -0
- package/dist/public/assets/_B9iGefG4.js +0 -1
- package/dist/public/assets/_BAb8sJtB.js +0 -1
- package/dist/public/assets/_BCXa70Fh.js.br +0 -0
- package/dist/public/assets/_BEw6aufk.js +0 -1
- package/dist/public/assets/_BKI2XK6i.js.br +0 -0
- package/dist/public/assets/_BL6T7K5F.js +0 -1
- package/dist/public/assets/_BLtle8N9.js.br +0 -0
- package/dist/public/assets/_BMhAJhx_.js +0 -1
- package/dist/public/assets/_BNC-BdhL.js +0 -1
- package/dist/public/assets/_BOw__Q2y.js.br +0 -0
- package/dist/public/assets/_BPHYSdej.js.br +0 -0
- package/dist/public/assets/_BPbGGRrT.js.br +0 -0
- package/dist/public/assets/_BQjfwReN.js.br +0 -0
- package/dist/public/assets/_BSOQpNL6.js +0 -1
- package/dist/public/assets/_BU076YIw.js +0 -1
- package/dist/public/assets/_BUHolEsT.js.br +0 -0
- package/dist/public/assets/_BW0CTcZj.js +0 -1
- package/dist/public/assets/_BWaDSzqN.js +0 -1
- package/dist/public/assets/_BXFUBIN4.js +0 -1
- package/dist/public/assets/_BaZLe1km.js +0 -1
- package/dist/public/assets/_BcEm_iyy.js.br +0 -0
- package/dist/public/assets/_BdTFZA5g.js +0 -1
- package/dist/public/assets/_BgpmFeeP.js.br +0 -0
- package/dist/public/assets/_BhtG3O1x.js +0 -2
- package/dist/public/assets/_BhtG3O1x.js.br +0 -0
- package/dist/public/assets/_BiYkTvg2.js +0 -1
- package/dist/public/assets/_BjTD5VbW.js +0 -1
- package/dist/public/assets/_Bl1FCUd6.js +0 -1
- package/dist/public/assets/_BtuZvkEt.js +0 -1
- package/dist/public/assets/_Buv7nRCW.js.br +0 -0
- package/dist/public/assets/_Buv99kaT.js +0 -1
- package/dist/public/assets/_ByfZnU2c.js +0 -1
- package/dist/public/assets/_C-fnxBxJ.js.br +0 -0
- package/dist/public/assets/_C05YW868.js +0 -1
- package/dist/public/assets/_C6f-hgTe.js.br +0 -0
- package/dist/public/assets/_C7Y0TA82.js +0 -1
- package/dist/public/assets/_C7vQHCek.js.br +0 -0
- package/dist/public/assets/_C8bV43Ih.js +0 -1
- package/dist/public/assets/_CCjVMkO3.js.br +0 -0
- package/dist/public/assets/_CGIbExeK.js +0 -1
- package/dist/public/assets/_CGb1Cnwy.js.br +0 -0
- package/dist/public/assets/_CHy9xaEn.js.br +0 -0
- package/dist/public/assets/_CKyHmOht.js +0 -1
- package/dist/public/assets/_CL-ckoH5.js +0 -1
- package/dist/public/assets/_CNBA4JfC.js.br +0 -0
- package/dist/public/assets/_COOlu3UX.js.br +0 -0
- package/dist/public/assets/_COk-n7hZ.js.br +0 -0
- package/dist/public/assets/_CPPSSISM.js.br +0 -0
- package/dist/public/assets/_CQftYh9Z.js +0 -1
- package/dist/public/assets/_CQmdU2jo.js +0 -1
- package/dist/public/assets/_CS9jx04A.js.br +0 -0
- package/dist/public/assets/_CSdtDfvR.js +0 -1
- package/dist/public/assets/_CU0zS2tF.js +0 -1
- package/dist/public/assets/_CVs4BgJ8.js +0 -1
- package/dist/public/assets/_CWfDZOTS.js.br +0 -0
- package/dist/public/assets/_CXTPeLVy.js +0 -1
- package/dist/public/assets/_C_2Poz1k.js.br +0 -0
- package/dist/public/assets/_C_YGsTAD.js.br +0 -0
- package/dist/public/assets/_Cas9R6tf.js.br +0 -0
- package/dist/public/assets/_CbLcjKPG.js.br +0 -0
- package/dist/public/assets/_CbwHAX50.js +0 -1
- package/dist/public/assets/_CcKHitbd.js +0 -1
- package/dist/public/assets/_CdPw4LUm.js +0 -1
- package/dist/public/assets/_CdPw4LUm.js.br +0 -0
- package/dist/public/assets/_CfDehMkg.js +0 -1
- package/dist/public/assets/_Ciq72Yaz.js.br +0 -0
- package/dist/public/assets/_CjnfvQG7.js.br +0 -0
- package/dist/public/assets/_Ck80YJf-.js +0 -1
- package/dist/public/assets/_CkwFvNTM.js.br +0 -0
- package/dist/public/assets/_CmrqyF2X.js +0 -1
- package/dist/public/assets/_Coq56wZh.js +0 -1
- package/dist/public/assets/_CqD6fuWN.js.br +0 -0
- package/dist/public/assets/_Cucb4Tjg.js.br +0 -0
- package/dist/public/assets/_Cug-hxky.js.br +0 -0
- package/dist/public/assets/_Cw7W1tiO.js +0 -1
- package/dist/public/assets/_CwE97-yW.js +0 -1
- package/dist/public/assets/_CwuZ_5cX.js +0 -1
- package/dist/public/assets/_CyYvm4rW.js.br +0 -0
- package/dist/public/assets/_CzIpBjJM.js.br +0 -0
- package/dist/public/assets/_D1L3UHX3.js.br +0 -0
- package/dist/public/assets/_D4egTrfn.js.br +0 -0
- package/dist/public/assets/_D4uw28j2.js.br +0 -0
- package/dist/public/assets/_D5bv6LQl.js.br +0 -0
- package/dist/public/assets/_D7_Ub5eD.js.br +0 -0
- package/dist/public/assets/_DA4mq6lj.js.br +0 -0
- package/dist/public/assets/_DAqrKmCA.js.br +0 -0
- package/dist/public/assets/_DAuw68_p.js +0 -1
- package/dist/public/assets/_DCVr8Tb2.js +0 -1
- package/dist/public/assets/_DFf4Rzl8.js.br +0 -0
- package/dist/public/assets/_DGvpitpZ.js +0 -1
- package/dist/public/assets/_DIZG1G-Z.js +0 -1
- package/dist/public/assets/_DJ-_BqNL.js +0 -1
- package/dist/public/assets/_DMEqEv_T.js +0 -1
- package/dist/public/assets/_DTfOovOq.js.br +0 -0
- package/dist/public/assets/_DUUWYhg_.js.br +0 -0
- package/dist/public/assets/_DUuqR8Il.js.br +0 -0
- package/dist/public/assets/_DVHVPPDm.js +0 -1
- package/dist/public/assets/_DVPR8Gc6.js.br +0 -0
- package/dist/public/assets/_DWlBFpSS.js.br +0 -0
- package/dist/public/assets/_DWum7no_.js +0 -1
- package/dist/public/assets/_DXV62Cae.js.br +0 -0
- package/dist/public/assets/_DXipSiI1.js.br +0 -0
- package/dist/public/assets/_DZYDOMkl.js.br +0 -0
- package/dist/public/assets/_D_701Hlg.js +0 -1
- package/dist/public/assets/_D_9gKfZY.js.br +0 -0
- package/dist/public/assets/_D_JHfJs4.js.br +0 -0
- package/dist/public/assets/_DbEZe7yb.js.br +0 -0
- package/dist/public/assets/_DbH0P--6.js.br +0 -0
- package/dist/public/assets/_DbadYlan.js.br +0 -0
- package/dist/public/assets/_DcZGtx9M.js +0 -1
- package/dist/public/assets/_DdkaLWU-.js.br +0 -0
- package/dist/public/assets/_De56Kzes.js.br +0 -0
- package/dist/public/assets/_DeI8ro0m.js.br +0 -0
- package/dist/public/assets/_DeW8reMC.js +0 -1
- package/dist/public/assets/_DeYwNUUu.js.br +0 -0
- package/dist/public/assets/_DgTOYvd6.js.br +0 -0
- package/dist/public/assets/_DiSCjU2A.js +0 -1
- package/dist/public/assets/_DkTAnqm3.js.br +0 -0
- package/dist/public/assets/_Dmm830TH.js +0 -1
- package/dist/public/assets/_DpjdDKK2.js +0 -7
- package/dist/public/assets/_DpjdDKK2.js.br +0 -0
- package/dist/public/assets/_DqJfOZRO.js.br +0 -0
- package/dist/public/assets/_DqjxsMkL.js +0 -1
- package/dist/public/assets/_DuA45JvH.js +0 -1
- package/dist/public/assets/_DuA45JvH.js.br +0 -0
- package/dist/public/assets/_DuOaoYJs.js.br +0 -0
- package/dist/public/assets/_Duzf7BCj.js +0 -1
- package/dist/public/assets/_Duzf7BCj.js.br +0 -0
- package/dist/public/assets/_DvLPq_1f.js +0 -1
- package/dist/public/assets/_Dy7h2yOQ.js.br +0 -0
- package/dist/public/assets/_FChy8Jml.js.br +0 -0
- package/dist/public/assets/_Hg8ZWlxs.js +0 -1
- package/dist/public/assets/_IGL38N54.js +0 -1
- package/dist/public/assets/_KHMfdBQI.js.br +0 -0
- package/dist/public/assets/_KkDXvfqJ.js.br +0 -0
- package/dist/public/assets/_MNAHC8bw.js +0 -1
- package/dist/public/assets/_MaR9Opge.js +0 -1
- package/dist/public/assets/_NxnEqCRC.js.br +0 -0
- package/dist/public/assets/_OUf-pT7F.js +0 -1
- package/dist/public/assets/_QCvY_0EH.js +0 -1
- package/dist/public/assets/_TMRapgLW.js.br +0 -0
- package/dist/public/assets/_a3v9VRGR.js +0 -1
- package/dist/public/assets/_b1QkEZO6.js.br +0 -0
- package/dist/public/assets/_czNfyPen.js.br +0 -0
- package/dist/public/assets/_dubh06MD.js +0 -1
- package/dist/public/assets/_e7F7m2AO.js +0 -1
- package/dist/public/assets/_e7F7m2AO.js.br +0 -0
- package/dist/public/assets/_ep6TpAZh.js +0 -1
- package/dist/public/assets/_g5AR9tpA.js.br +0 -0
- package/dist/public/assets/_gZV0em2r.js +0 -1
- package/dist/public/assets/_jiqsGnyP.js +0 -1
- package/dist/public/assets/_l0hDq-K2.js.br +0 -0
- package/dist/public/assets/_lSk10m1w.js.br +0 -0
- package/dist/public/assets/_lhsz8w9h.js +0 -1
- package/dist/public/assets/_nI9u4LRb.js +0 -1
- package/dist/public/assets/_n_zJ-LqK.js +0 -1
- package/dist/public/assets/_n_zJ-LqK.js.br +0 -0
- package/dist/public/assets/_o0VQYCUE.js.br +0 -0
- package/dist/public/assets/_oR0LYfq3.js.br +0 -0
- package/dist/public/assets/_q330tDWb.js.br +0 -0
- package/dist/public/assets/_qHB7bu0-.js +0 -1
- package/dist/public/assets/_so_VJkr5.js +0 -1
- package/dist/public/assets/_toCsz2cL.js +0 -1
- package/dist/public/assets/_u7bZ6UkK.js +0 -1
- package/dist/public/assets/_uP13C5Wl.js.br +0 -0
- package/dist/public/assets/_xSVMCoQJ.js.br +0 -0
- package/dist/public/assets/_xXNz6TCM.js.br +0 -0
- package/dist/public/assets/_zmjyTuaK.js +0 -1
- package/dist/public/assets/files-view-XjUBLNCX.js +0 -2
- package/dist/public/assets/manage-workspace-DdpHBJIX.js +0 -2
- package/dist/public/assets/new-4NSZeknb.js +0 -1
- package/dist/public/assets/new-workspace-LRUvrRNr.js +0 -2
- package/dist/public/assets/review-view-AXkF7DUG.js +0 -2
- package/dist/public/assets/settings-4NSZeknb.js +0 -1
- package/dist/public/assets/settings-page-DhMS0VeA.js +0 -2
- package/dist/public/assets/styles-CJbPDDVA.css +0 -1
- package/dist/public/assets/styles-CJbPDDVA.css.br +0 -0
- package/dist/public/assets/w-4NSZeknb.js +0 -1
- package/dist/public/assets/w._-4NSZeknb.js +0 -1
- package/dist/public/assets/w._-BXrd0YFM.js +0 -1
- package/dist/public/assets/w._-Dwx7An1m.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as reopenSession, A as closedSession, An as onFinished, Bn as turnPhase, Dr as getSetting, Fn as setExpecting, Hn as turnSince, J as notifySessionsChanged, Kn as agentLabel, L as getSession, Mn as onTurnEnd, Nn as sessionWatched, Or as isKnownAgent, Q as renameSession, Qr as httpError, R as interruptSession, Sn as lastTypedAt, U as listPanesWithin, Vn as turnSettling, Y as onSessionDispose, _n as agentPhase, ai as db, an as interruptKeys, bn as hookReportedAt, cn as steerKeys, et as reopenable, gn as activityOf, ii as all, j as createSession, jn as onPhaseChange, nt as sendToSession, oi as get, pn as cleanSummary, tt as retireSession, z as killSession, zn as summaryOf } from "./
|
|
1
|
+
import { $ as reopenSession, A as closedSession, An as onFinished, Bn as turnPhase, Dr as getSetting, Fn as setExpecting, Hn as turnSince, J as notifySessionsChanged, Kn as agentLabel, L as getSession, Mn as onTurnEnd, Nn as sessionWatched, Or as isKnownAgent, Q as renameSession, Qr as httpError, R as interruptSession, Sn as lastTypedAt, U as listPanesWithin, Vn as turnSettling, Y as onSessionDispose, _n as agentPhase, ai as db, an as interruptKeys, bn as hookReportedAt, cn as steerKeys, et as reopenable, gn as activityOf, ii as all, j as createSession, jn as onPhaseChange, nt as sendToSession, oi as get, pn as cleanSummary, tt as retireSession, z as killSession, zn as summaryOf } from "./_B_Wl8EDh.js";
|
|
2
2
|
//#region src/server/messages.ts
|
|
3
3
|
var team = {
|
|
4
4
|
memberGroup: () => null,
|
|
@@ -24,6 +24,8 @@ 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
|
+
/** What a held reply says it waits on is a line, not a report. */
|
|
28
|
+
var MAX_HELD = 200;
|
|
27
29
|
/** A pane that has written nothing for this long is a CLI at its prompt:
|
|
28
30
|
* every agent's screen animates while it works (scraper.ts). */
|
|
29
31
|
var PANE_STILL_MS = 4e3;
|
|
@@ -49,6 +51,12 @@ var deliveredAt = /* @__PURE__ */ new Map();
|
|
|
49
51
|
var steered = /* @__PURE__ */ new Set();
|
|
50
52
|
/** Turn ends held back from answering (`holdAnswer`), by session. */
|
|
51
53
|
var held = /* @__PURE__ */ new Map();
|
|
54
|
+
/** Whom each session's turn's end last answered, and when, until a
|
|
55
|
+
* message goes into it or someone types into it: till then a turn of it
|
|
56
|
+
* is one it started on its own, still on what it was asked
|
|
57
|
+
* (`answerOwnTurn`). A restart forgets it, as agent-state forgets
|
|
58
|
+
* phases. */
|
|
59
|
+
var answered = /* @__PURE__ */ new Map();
|
|
52
60
|
/** Sessions any row is addressed to: the scraper asks about every session
|
|
53
61
|
* without a pane on every tick, so the answer for one with none is a set
|
|
54
62
|
* lookup rather than a query. */
|
|
@@ -67,21 +75,26 @@ function render(row) {
|
|
|
67
75
|
const owed = row.answers ? stillOwed(row.to_session, row.from_session) : "";
|
|
68
76
|
const head = row.answers ? `Reply from session ${from} to ${row.answers}${owed ? `; ${owed}` : ""}` : `From session ${from}`;
|
|
69
77
|
if (!row.wants_reply) return `[work] ${head}, no reply needed:\n\n${row.body}`;
|
|
70
|
-
return row.by_send ? `[work] ${head}, which waits for your answer: send it with work session send ${row.from_session} "…". Your last message here is the user's: end on a line saying what you told it.\n\n${row.body}` : `[work] ${head}: your last message this turn goes back to it as your reply, so make it the whole answer (to ask it something first: work session send ${row.from_session} "…").\n\n${row.body}`;
|
|
78
|
+
return row.by_send ? `[work] ${head}, which waits for your answer: send it with work session send ${row.from_session} "…". Your last message here is the user's: end on a line saying what you told it.\n\n${row.body}` : `[work] ${head}: your last message this turn goes back to it as your reply, so make it the whole answer (to ask it something first: work session send ${row.from_session} "…"; to end the turn while a job of yours runs on, first run work session hold "<what you wait on>": this turn's last message then goes as an interim reply, and the last message of the turn the job's end wakes you into is the reply).\n\n${row.body}`;
|
|
71
79
|
}
|
|
72
80
|
case "reply": {
|
|
81
|
+
if (row.held) return `[work] Interim reply from session ${from}${row.answers ? ` to ${row.answers}` : ""}: it is not done, it waits on ${row.held}, and its reply follows when it is (end your turn to wait for it, or run work session wait ${row.from_session}):\n\n${row.body}`;
|
|
73
82
|
const owed = row.from_session ? stillOwed(row.to_session, row.from_session) : "";
|
|
74
|
-
return `[work] Reply from session ${from}${row.answers ? ` to ${row.answers}` : ""}${owed ? `; ${owed}` : ""}. ${followUp(row.from_session ?? "<id>", row.to_session)}:\n\n${row.body}`;
|
|
83
|
+
return `[work] ${row.follows ? `Follow-up from session ${from}${row.answers ? ` on ${row.answers}` : ""}: the last message of a turn it started on its own after its reply of ${clock(row.follows)}` : `Reply from session ${from}${row.answers ? ` to ${row.answers}` : ""}`}${owed ? `; ${owed}` : ""}. ${followUp(row.from_session ?? "<id>", row.to_session)}:\n\n${row.body}`;
|
|
75
84
|
}
|
|
76
85
|
case "closed": return `[work] ${row.body}`;
|
|
77
86
|
}
|
|
78
87
|
}
|
|
79
|
-
/** A
|
|
80
|
-
function
|
|
81
|
-
|
|
88
|
+
/** A moment as a reply names it ("14:05"). */
|
|
89
|
+
function clock(at) {
|
|
90
|
+
return new Date(at).toLocaleTimeString("en-GB", {
|
|
82
91
|
hour: "2-digit",
|
|
83
92
|
minute: "2-digit"
|
|
84
93
|
});
|
|
94
|
+
}
|
|
95
|
+
/** A message as a reply names it: when it was sent, and how it begins. */
|
|
96
|
+
function excerpt(row) {
|
|
97
|
+
const time = clock(row.created_at);
|
|
85
98
|
const line = row.body.split("\n").find((l) => l.trim())?.trim() ?? "";
|
|
86
99
|
return `${time} ("${line.length > EXCERPT ? `${line.slice(0, 39)}…` : line}")`;
|
|
87
100
|
}
|
|
@@ -128,7 +141,7 @@ function groupClosing(rows) {
|
|
|
128
141
|
* under its name. */
|
|
129
142
|
function renderGroup(groupId, rows) {
|
|
130
143
|
const closed = rows.filter((r) => r.kind === "closed").length;
|
|
131
|
-
return [`[work] Group "${team.groupTitle(groupId)}" (${groupId}): ${rows.length - closed} ${rows.length - closed === 1 ? "reply" : "replies"}${closed ? `, ${closed} closed before replying` : ""}. To follow up with one: work session send <id> "…"${groupClosing(rows)}`, ...rows.map((r) => `## ${r.from_label ?? r.from_session}\n\n${r.body}`)].join("\n\n");
|
|
144
|
+
return [`[work] Group "${team.groupTitle(groupId)}" (${groupId}): ${rows.length - closed} ${rows.length - closed === 1 ? "reply" : "replies"}${closed ? `, ${closed} closed before replying` : ""}. To follow up with one: work session send <id> "…"${groupClosing(rows)}`, ...rows.map((r) => `## ${r.from_label ?? r.from_session}${r.held ? ` (interim: it waits on ${r.held})` : ""}\n\n${r.body}`)].join("\n\n");
|
|
132
145
|
}
|
|
133
146
|
/** Rows as typed in: each on its own, a group's together where its first
|
|
134
147
|
* would be. */
|
|
@@ -161,9 +174,9 @@ function senderLabel(from, to) {
|
|
|
161
174
|
const ws = get("SELECT name FROM workspaces WHERE id = ?", from.workspace_id);
|
|
162
175
|
return `${labelOf(from)} in workspace ${ws?.name ?? from.workspace_id}`;
|
|
163
176
|
}
|
|
164
|
-
function insert(to, from, kind, body, wantsReply = false, groupId = null, answers = null, urgent = false, bySend = false) {
|
|
165
|
-
return Number(db.prepare(`INSERT INTO session_messages (to_session, from_session, from_label, kind, body, wants_reply, group_id, answers, urgent, by_send)
|
|
166
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(to, from?.id ?? null, from ? senderLabel(from, to) : null, kind, body, wantsReply ? 1 : 0, groupId, answers, urgent ? 1 : 0, bySend ? 1 : 0).lastInsertRowid);
|
|
177
|
+
function insert(to, from, kind, body, wantsReply = false, groupId = null, answers = null, urgent = false, bySend = false, follows = null, held = null) {
|
|
178
|
+
return Number(db.prepare(`INSERT INTO session_messages (to_session, from_session, from_label, kind, body, wants_reply, group_id, answers, urgent, by_send, follows, held)
|
|
179
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(to, from?.id ?? null, from ? senderLabel(from, to) : null, kind, body, wantsReply ? 1 : 0, groupId, answers, urgent ? 1 : 0, bySend ? 1 : 0, follows, held).lastInsertRowid);
|
|
167
180
|
}
|
|
168
181
|
function deleteIds(ids) {
|
|
169
182
|
if (!ids.length) return;
|
|
@@ -215,6 +228,7 @@ async function deliver(id) {
|
|
|
215
228
|
}
|
|
216
229
|
if (keys) steered.add(id);
|
|
217
230
|
deliveredAt.set(id, Date.now());
|
|
231
|
+
answered.delete(id);
|
|
218
232
|
deleteIds(rows.filter((r) => !r.wants_reply).map((r) => r.id));
|
|
219
233
|
const owed = rows.filter((r) => r.wants_reply).map((r) => r.id);
|
|
220
234
|
if (owed.length) db.prepare(`UPDATE session_messages SET delivered_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
|
|
@@ -343,7 +357,7 @@ function answerBySend(from, to) {
|
|
|
343
357
|
const owed = all("SELECT * FROM session_messages WHERE to_session = ? AND from_session = ? AND kind = 'message' AND wants_reply = 1 AND by_send = 1 AND delivered_at IS NOT NULL ORDER BY id", from.id, to);
|
|
344
358
|
if (!owed.length) return owed;
|
|
345
359
|
deleteIds(owed.map((r) => r.id));
|
|
346
|
-
|
|
360
|
+
noteAnswered(from.id);
|
|
347
361
|
return owed;
|
|
348
362
|
}
|
|
349
363
|
/** The replies (and word of sessions that closed) waiting for `me`, from
|
|
@@ -383,6 +397,10 @@ function takeReplies(me, from, any = false) {
|
|
|
383
397
|
label: r.from_label,
|
|
384
398
|
kind: r.kind,
|
|
385
399
|
answers: r.answers,
|
|
400
|
+
/** A follow-up: when the reply it follows went. */
|
|
401
|
+
follows: r.follows,
|
|
402
|
+
/** An interim reply: what it waits on before it answers. */
|
|
403
|
+
held: r.held,
|
|
386
404
|
/** It asks in turn: answered by this session's turn's end, or by
|
|
387
405
|
* a send back (`send`). */
|
|
388
406
|
asks: r.wants_reply ? r.by_send ? "send" : "turn" : null,
|
|
@@ -413,8 +431,8 @@ function messageStates() {
|
|
|
413
431
|
* mid-turn, not at once (`holdAnswer`), and with what the turns folded
|
|
414
432
|
* into this end said before it. */
|
|
415
433
|
function answer(id, message, earlier = []) {
|
|
416
|
-
if (!mailboxes.has(id)) return
|
|
417
|
-
if (!steered.has(id)) return answerNow(id, message);
|
|
434
|
+
if (!mailboxes.has(id)) return answerOwnTurn(id, message);
|
|
435
|
+
if (!steered.has(id)) return answerNow(id, message) || answerOwnTurn(id, message);
|
|
418
436
|
if (!get("SELECT 1 FROM session_messages WHERE to_session = ? AND wants_reply = 1 AND by_send = 0 AND delivered_at IS NOT NULL", id)) {
|
|
419
437
|
steered.delete(id);
|
|
420
438
|
return false;
|
|
@@ -469,20 +487,102 @@ function answerNow(id, message) {
|
|
|
469
487
|
if (!owed.length || !session) return false;
|
|
470
488
|
const body = replyBody(session, message);
|
|
471
489
|
const group = team.memberGroup(id);
|
|
472
|
-
|
|
490
|
+
const held = owed.find((r) => r.held)?.held ?? null;
|
|
491
|
+
const askers = /* @__PURE__ */ new Map();
|
|
473
492
|
for (const asker of new Set(owed.map((r) => r.from_session))) {
|
|
474
493
|
const to = asker ? getSession(asker) : void 0;
|
|
475
494
|
if (!to || to.agent === "shell") continue;
|
|
476
|
-
const
|
|
477
|
-
|
|
495
|
+
const asked = owed.filter((r) => r.from_session === asker);
|
|
496
|
+
const answers = group ? null : yours(asked);
|
|
497
|
+
insert(to.id, session, "reply", body, false, group, answers, false, false, null, held);
|
|
498
|
+
askers.set(to.id, {
|
|
499
|
+
asked,
|
|
500
|
+
answers
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
if (held) db.prepare(`UPDATE session_messages SET held = NULL WHERE id IN (${owed.map(() => "?").join(",")})`).run(...owed.map((r) => r.id));
|
|
504
|
+
else {
|
|
505
|
+
deleteIds(owed.map((r) => r.id));
|
|
506
|
+
if (askers.size) {
|
|
507
|
+
answered.set(id, {
|
|
508
|
+
askers,
|
|
509
|
+
at: Date.now()
|
|
510
|
+
});
|
|
511
|
+
noteAnswered(id);
|
|
512
|
+
}
|
|
513
|
+
if (group) team.memberAnswered(id, message);
|
|
514
|
+
}
|
|
515
|
+
recompute();
|
|
516
|
+
kick();
|
|
517
|
+
return askers.size > 0;
|
|
518
|
+
}
|
|
519
|
+
/** `id` ends its turn under way before its work is done — a job of its
|
|
520
|
+
* own runs on and wakes it as it ends — and says so (`work session
|
|
521
|
+
* hold`): what it owes by its turn's end stays owed, so its askers wait
|
|
522
|
+
* on, and it is not closed for being done (server/team `doneWith`), and
|
|
523
|
+
* that end goes to them as an interim reply saying what it waits on. The
|
|
524
|
+
* turn the job's end wakes it into answers, or holds again. Held in a
|
|
525
|
+
* turn it started on its own after answering (`answerOwnTurn`), it owes
|
|
526
|
+
* its askers again what they had asked. Returns who waits on it. */
|
|
527
|
+
function holdReply(id, what) {
|
|
528
|
+
if (!getSession(id)) throw httpError(404, `no session ${id}`);
|
|
529
|
+
const waits = what.trim().replace(/\s+/g, " ").slice(0, MAX_HELD) || "a job of its own";
|
|
530
|
+
const bySend = get("SELECT 1 FROM session_messages WHERE to_session = ? AND wants_reply = 1 AND by_send = 1 AND delivered_at IS NOT NULL", id);
|
|
531
|
+
let held = db.prepare("UPDATE session_messages SET held = ? WHERE to_session = ? AND wants_reply = 1 AND by_send = 0 AND delivered_at IS NOT NULL").run(waits, id).changes;
|
|
532
|
+
const last = answered.get(id);
|
|
533
|
+
if (!held && last && lastTypedAt(id) <= last.at) {
|
|
534
|
+
for (const [asker, { asked }] of last.askers) {
|
|
535
|
+
const from = getSession(asker);
|
|
536
|
+
if (!from || from.agent === "shell") continue;
|
|
537
|
+
for (const row of asked) db.prepare(`INSERT INTO session_messages (to_session, from_session, from_label, kind, body, wants_reply, created_at, delivered_at, held)
|
|
538
|
+
VALUES (?, ?, ?, 'message', ?, 1, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), ?)`).run(id, asker, senderLabel(from, id), row.body, row.created_at, waits);
|
|
539
|
+
held++;
|
|
540
|
+
}
|
|
541
|
+
answered.delete(id);
|
|
542
|
+
}
|
|
543
|
+
if (!held) throw httpError(409, bySend ? `${id} answers by a send (\`work session send <id> "…"\`, as its header says): send it once the work is done` : `nobody waits on a reply from ${id}: there is nothing to hold`);
|
|
544
|
+
recompute();
|
|
545
|
+
return {
|
|
546
|
+
waiting: all("SELECT DISTINCT from_session AS id FROM session_messages WHERE to_session = ? AND held IS NOT NULL AND from_session IS NOT NULL", id).map((r) => r.id),
|
|
547
|
+
held: waits
|
|
548
|
+
};
|
|
549
|
+
}
|
|
550
|
+
/** A turn the session started on its own since its turn's end answered
|
|
551
|
+
* (nothing went into it, nobody typed into it): what it was asked, still
|
|
552
|
+
* — the job it ended that turn to wait on has ended, a wakeup it set has
|
|
553
|
+
* come — so its last message goes to the same askers as a follow-up, and
|
|
554
|
+
* again for each such turn after. Whatever woke it, the CLI's turn end
|
|
555
|
+
* is all this reads, so it is the same for every agent. A follow-up
|
|
556
|
+
* leaves a group alone: its member answered when its reply went. */
|
|
557
|
+
function answerOwnTurn(id, message) {
|
|
558
|
+
const last = answered.get(id);
|
|
559
|
+
const session = getSession(id);
|
|
560
|
+
if (!last || !session || !message) return false;
|
|
561
|
+
if (lastTypedAt(id) > last.at) {
|
|
562
|
+
answered.delete(id);
|
|
563
|
+
return false;
|
|
564
|
+
}
|
|
565
|
+
const body = replyBody(session, message);
|
|
566
|
+
const follows = new Date(last.at).toISOString();
|
|
567
|
+
let told = false;
|
|
568
|
+
for (const [asker, { answers }] of last.askers) {
|
|
569
|
+
const to = getSession(asker);
|
|
570
|
+
if (!to || to.agent === "shell") continue;
|
|
571
|
+
insert(to.id, session, "reply", body, false, null, answers, false, false, follows);
|
|
478
572
|
told = true;
|
|
479
573
|
}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
574
|
+
if (!told) {
|
|
575
|
+
answered.delete(id);
|
|
576
|
+
return false;
|
|
577
|
+
}
|
|
578
|
+
last.at = Date.now();
|
|
579
|
+
noteAnswered(id);
|
|
483
580
|
recompute();
|
|
484
581
|
kick();
|
|
485
|
-
return
|
|
582
|
+
return true;
|
|
583
|
+
}
|
|
584
|
+
function noteAnswered(id) {
|
|
585
|
+
db.prepare("UPDATE sessions SET answered_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now') WHERE id = ?").run(id);
|
|
486
586
|
}
|
|
487
587
|
/** The session's process is gone, or the session is: whoever waits on it
|
|
488
588
|
* for a reply is told none is coming, and what was queued for it goes —
|
|
@@ -490,6 +590,7 @@ function answerNow(id, message) {
|
|
|
490
590
|
function settle(id, why) {
|
|
491
591
|
dropHold(id);
|
|
492
592
|
steered.delete(id);
|
|
593
|
+
answered.delete(id);
|
|
493
594
|
const session = getSession(id);
|
|
494
595
|
const label = session ? labelOf(session) : id;
|
|
495
596
|
const group = team.memberGroup(id);
|
|
@@ -964,4 +1065,4 @@ function startTeam() {
|
|
|
964
1065
|
kickPool();
|
|
965
1066
|
}
|
|
966
1067
|
//#endregion
|
|
967
|
-
export {
|
|
1068
|
+
export { startMessages as _, keepSession as a, retryMember as c, teamOf as d, teamsOf as f, sessionGone as g, sendMessage as h, createGroup as i, skipMember as l, messageStates as m, closeDone as n, kickPool as o, holdReply as p, closeFinished as r, memberWorkspace as s, clearGroup as t, startTeam as u, takeReplies as v };
|