@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.
Files changed (496) hide show
  1. package/bin/cli/session.mjs +28 -4
  2. package/bin/work.mjs +71 -23
  3. package/dist/{_DN2yXOe-.js → _B1mzUx3g.js} +113 -113
  4. package/dist/{_Cv5RrCSW.js → _B_Wl8EDh.js} +12 -2
  5. package/dist/{_DuwPQCOE.js → _B_YHcR6n.js} +122 -21
  6. package/dist/_COxuRDjJ.js +2 -0
  7. package/dist/_CXys7J6U.js +2 -0
  8. package/dist/index.mjs +1266 -1237
  9. package/dist/public/assets/{_NxnEqCRC.js → _0PcaxMcN.js} +1 -1
  10. package/dist/public/assets/_0PcaxMcN.js.br +0 -0
  11. package/dist/public/assets/_28SfjYgU.js +1 -0
  12. package/dist/public/assets/_2WH9dVsM.js +1 -0
  13. package/dist/public/assets/{_B0mwj6Ev.js → _443uXxaQ.js} +1 -1
  14. package/dist/public/assets/_443uXxaQ.js.br +0 -0
  15. package/dist/public/assets/_68km9uDS.js +1 -0
  16. package/dist/public/assets/{_C7vQHCek.js → _7B3Of6n2.js} +1 -1
  17. package/dist/public/assets/_7B3Of6n2.js.br +0 -0
  18. package/dist/public/assets/{_DAqrKmCA.js → _7iaLwNp7.js} +1 -1
  19. package/dist/public/assets/_7iaLwNp7.js.br +0 -0
  20. package/dist/public/assets/{_Cug-hxky.js → _8wVpL9UU.js} +1 -1
  21. package/dist/public/assets/_8wVpL9UU.js.br +0 -0
  22. package/dist/public/assets/{_CN_q8cW8.js → _AUQC7bLf.js} +1 -1
  23. package/dist/public/assets/{_D7_Ub5eD.js → _Aeu0g-vv.js} +1 -1
  24. package/dist/public/assets/_Aeu0g-vv.js.br +0 -0
  25. package/dist/public/assets/_B2SYqcWM.js +1 -0
  26. package/dist/public/assets/_B2_pv4me.js +1 -0
  27. package/dist/public/assets/_B5kGyDQX.js +1 -0
  28. package/dist/public/assets/_B6kIB1WU.js +1 -0
  29. package/dist/public/assets/_BCTgJnmO.js +1 -0
  30. package/dist/public/assets/_BDyFN6kT.js +1 -0
  31. package/dist/public/assets/_BESQfGBB.js +1 -0
  32. package/dist/public/assets/_BJT3RWev.js +1 -0
  33. package/dist/public/assets/{_KHMfdBQI.js → _BLn8LlL6.js} +1 -1
  34. package/dist/public/assets/_BLn8LlL6.js.br +0 -0
  35. package/dist/public/assets/_BM43k9pz.js +2 -0
  36. package/dist/public/assets/_BM43k9pz.js.br +0 -0
  37. package/dist/public/assets/_BMTkhA17.js +1 -0
  38. package/dist/public/assets/{_D5bv6LQl.js → _BT-IZ4E6.js} +1 -1
  39. package/dist/public/assets/_BT-IZ4E6.js.br +0 -0
  40. package/dist/public/assets/_BTaFZW2H.js +1 -0
  41. package/dist/public/assets/{_DA4mq6lj.js → _BVLYkVz3.js} +1 -1
  42. package/dist/public/assets/_BVLYkVz3.js.br +0 -0
  43. package/dist/public/assets/_BWciqKkD.js +1 -0
  44. package/dist/public/assets/_BXQkwCAJ.js +1 -0
  45. package/dist/public/assets/_BXQkwCAJ.js.br +0 -0
  46. package/dist/public/assets/_BXgSb_aq.js +1 -0
  47. package/dist/public/assets/{_C-fnxBxJ.js → _BZKc5vLY.js} +2 -2
  48. package/dist/public/assets/_BZKc5vLY.js.br +0 -0
  49. package/dist/public/assets/{_DWlBFpSS.js → _B_q-wGcA.js} +1 -1
  50. package/dist/public/assets/_B_q-wGcA.js.br +0 -0
  51. package/dist/public/assets/{_DVPR8Gc6.js → _BaKP3ezJ.js} +4 -4
  52. package/dist/public/assets/_BaKP3ezJ.js.br +0 -0
  53. package/dist/public/assets/{_CCjVMkO3.js → _Bb8Fj9pO.js} +1 -1
  54. package/dist/public/assets/_Bb8Fj9pO.js.br +0 -0
  55. package/dist/public/assets/{_Ciq72Yaz.js → _BfBmJfms.js} +1 -1
  56. package/dist/public/assets/_BfBmJfms.js.br +0 -0
  57. package/dist/public/assets/_Bg-eUBF7.js +1 -0
  58. package/dist/public/assets/{_DdkaLWU-.js → _Bh0u8Y5M.js} +1 -1
  59. package/dist/public/assets/_Bh0u8Y5M.js.br +0 -0
  60. package/dist/public/assets/_BiQCjxZj.js +1 -0
  61. package/dist/public/assets/{_o0VQYCUE.js → _BmaGQeEm.js} +1 -1
  62. package/dist/public/assets/_BmaGQeEm.js.br +0 -0
  63. package/dist/public/assets/_BnUTLXVz.js +1 -0
  64. package/dist/public/assets/_BndOGaT4.js +1 -0
  65. package/dist/public/assets/{_DTfOovOq.js → _BqDvnSDS.js} +4 -4
  66. package/dist/public/assets/_BqDvnSDS.js.br +0 -0
  67. package/dist/public/assets/{_BQjfwReN.js → _BqQM_YrX.js} +1 -1
  68. package/dist/public/assets/_BqQM_YrX.js.br +0 -0
  69. package/dist/public/assets/_Bqs-BrmJ.js +1 -0
  70. package/dist/public/assets/_BrwUEaSq.js +1 -0
  71. package/dist/public/assets/{_BOw__Q2y.js → _Bx2KENYX.js} +1 -1
  72. package/dist/public/assets/_Bx2KENYX.js.br +0 -0
  73. package/dist/public/assets/_BxRp18VM.js +1 -0
  74. package/dist/public/assets/_BxlrR0IC.js +1 -0
  75. package/dist/public/assets/{_DPoG38YC.js → _By6YMirT.js} +1 -1
  76. package/dist/public/assets/{_DUuqR8Il.js → _Bz-jbG_f.js} +1 -1
  77. package/dist/public/assets/_Bz-jbG_f.js.br +0 -0
  78. package/dist/public/assets/_BzcR0Zt6.js +1 -0
  79. package/dist/public/assets/_C0SfB0cf.js +1 -0
  80. package/dist/public/assets/{_B0pMH4yO.js → _C1M0CPmH.js} +1 -1
  81. package/dist/public/assets/_C1M0CPmH.js.br +0 -0
  82. package/dist/public/assets/_C1mwVqve.js +1 -0
  83. package/dist/public/assets/_C1wcIoe9.js +1 -0
  84. package/dist/public/assets/_C31F97wV.js +1 -0
  85. package/dist/public/assets/{_D4egTrfn.js → _C3SxaNO4.js} +1 -1
  86. package/dist/public/assets/_C3SxaNO4.js.br +0 -0
  87. package/dist/public/assets/{_lSk10m1w.js → _C4ZArw31.js} +1 -1
  88. package/dist/public/assets/_C4ZArw31.js.br +0 -0
  89. package/dist/public/assets/_C5pTVHzg.js +1 -0
  90. package/dist/public/assets/_C5rhtJO0.js +1 -0
  91. package/dist/public/assets/{_DeI8ro0m.js → _C6AlRRbl.js} +1 -1
  92. package/dist/public/assets/_C6AlRRbl.js.br +0 -0
  93. package/dist/public/assets/{_CzIpBjJM.js → _C6mwHnpf.js} +1 -1
  94. package/dist/public/assets/_C6mwHnpf.js.br +0 -0
  95. package/dist/public/assets/_C6turck0.js +1 -0
  96. package/dist/public/assets/_C76cxE8X.js +1 -0
  97. package/dist/public/assets/_C76cxE8X.js.br +0 -0
  98. package/dist/public/assets/_C8aorIbv.js +1 -0
  99. package/dist/public/assets/{_DbEZe7yb.js → _C8wlTNi9.js} +1 -1
  100. package/dist/public/assets/_C8wlTNi9.js.br +0 -0
  101. package/dist/public/assets/_CENMamKt.js +1 -0
  102. package/dist/public/assets/_CFJC7t7o.js +1 -0
  103. package/dist/public/assets/_CG2smhmA.js +1 -0
  104. package/dist/public/assets/_CHskY2wz.js +1 -0
  105. package/dist/public/assets/{_Dy7h2yOQ.js → _CJe7L_kJ.js} +1 -1
  106. package/dist/public/assets/_CJe7L_kJ.js.br +0 -0
  107. package/dist/public/assets/{_D1L3UHX3.js → _CMMSb5BE.js} +1 -1
  108. package/dist/public/assets/_CMMSb5BE.js.br +0 -0
  109. package/dist/public/assets/{_DUUWYhg_.js → _CNbmwWUc.js} +1 -1
  110. package/dist/public/assets/_CNbmwWUc.js.br +0 -0
  111. package/dist/public/assets/_CNsQ6bMz.js +1 -0
  112. package/dist/public/assets/{_CGb1Cnwy.js → _CQNm4xYL.js} +1 -1
  113. package/dist/public/assets/_CQNm4xYL.js.br +0 -0
  114. package/dist/public/assets/_CQyXJju1.js +1 -0
  115. package/dist/public/assets/_CTtU_TUT.js +1 -0
  116. package/dist/public/assets/{_C6f-hgTe.js → _CUeqPIqe.js} +1 -1
  117. package/dist/public/assets/_CUeqPIqe.js.br +0 -0
  118. package/dist/public/assets/{_DZYDOMkl.js → _CUo3f46j.js} +1 -1
  119. package/dist/public/assets/_CUo3f46j.js.br +0 -0
  120. package/dist/public/assets/{_CNBA4JfC.js → _CUv3-o1m.js} +1 -1
  121. package/dist/public/assets/_CUv3-o1m.js.br +0 -0
  122. package/dist/public/assets/_CVUH7tCy.js +1 -0
  123. package/dist/public/assets/{_DkTAnqm3.js → _CXBP_1Ow.js} +1 -1
  124. package/dist/public/assets/_CXBP_1Ow.js.br +0 -0
  125. package/dist/public/assets/_CXxqgKhP.js +1 -0
  126. package/dist/public/assets/{_Cas9R6tf.js → _CZxfZ1HN.js} +1 -1
  127. package/dist/public/assets/_CZxfZ1HN.js.br +0 -0
  128. package/dist/public/assets/{_CyYvm4rW.js → _C_wg7jRf.js} +1 -1
  129. package/dist/public/assets/_C_wg7jRf.js.br +0 -0
  130. package/dist/public/assets/_CaDWv7_h.js +1 -0
  131. package/dist/public/assets/{_BLtle8N9.js → _CcpbjaP3.js} +1 -1
  132. package/dist/public/assets/_CcpbjaP3.js.br +0 -0
  133. package/dist/public/assets/{_BcEm_iyy.js → _Cd6L7sJx.js} +1 -1
  134. package/dist/public/assets/_Cd6L7sJx.js.br +0 -0
  135. package/dist/public/assets/_CeKIXver.js +1 -0
  136. package/dist/public/assets/_CfSTeslv.js +1 -0
  137. package/dist/public/assets/_CfSTeslv.js.br +0 -0
  138. package/dist/public/assets/{_BPbGGRrT.js → _CgFmGgE6.js} +1 -1
  139. package/dist/public/assets/_CgFmGgE6.js.br +0 -0
  140. package/dist/public/assets/_CgX7YjFn.js +1 -0
  141. package/dist/public/assets/_CiIHOUYm.js +1 -0
  142. package/dist/public/assets/_CjTkhQjt.js +1 -0
  143. package/dist/public/assets/{_CjnfvQG7.js → _CrUnCdJm.js} +1 -1
  144. package/dist/public/assets/_CrUnCdJm.js.br +0 -0
  145. package/dist/public/assets/_CsZpCxM3.js +1 -0
  146. package/dist/public/assets/{_TMRapgLW.js → _CtPUJlv8.js} +1 -1
  147. package/dist/public/assets/_CtPUJlv8.js.br +0 -0
  148. package/dist/public/assets/{_q330tDWb.js → _Cv4lGi_U.js} +1 -1
  149. package/dist/public/assets/_Cv4lGi_U.js.br +0 -0
  150. package/dist/public/assets/{_CS9jx04A.js → _CvkKORgC.js} +1 -1
  151. package/dist/public/assets/_CvkKORgC.js.br +0 -0
  152. package/dist/public/assets/_CwtgMFMx.js +1 -0
  153. package/dist/public/assets/{_7NOeJZ7O.js → _CyvC1e4R.js} +1 -1
  154. package/dist/public/assets/_CyvC1e4R.js.br +0 -0
  155. package/dist/public/assets/{__2D61bRv.js → _CzviDOIH.js} +1 -1
  156. package/dist/public/assets/_D1qVomTm.js +1 -0
  157. package/dist/public/assets/_D1ytbfGt.js +1 -0
  158. package/dist/public/assets/_D3PMnsje.js +1 -0
  159. package/dist/public/assets/{_DbadYlan.js → _D5YTVkD4.js} +1 -1
  160. package/dist/public/assets/_D5YTVkD4.js.br +0 -0
  161. package/dist/public/assets/{_C_YGsTAD.js → _D5eVjSZv.js} +1 -1
  162. package/dist/public/assets/_D5eVjSZv.js.br +0 -0
  163. package/dist/public/assets/{_b1QkEZO6.js → _D5syJ3TB.js} +1 -1
  164. package/dist/public/assets/_D5syJ3TB.js.br +0 -0
  165. package/dist/public/assets/{_B73Eh-N_.js → _D7W9YXev.js} +1 -1
  166. package/dist/public/assets/_D7W9YXev.js.br +0 -0
  167. package/dist/public/assets/_DBSuvRRR.js +1 -0
  168. package/dist/public/assets/_DBSuvRRR.js.br +0 -0
  169. package/dist/public/assets/_DD3XoWQU.js +1 -0
  170. package/dist/public/assets/{_DgTOYvd6.js → _DDluED7n.js} +1 -1
  171. package/dist/public/assets/_DDluED7n.js.br +0 -0
  172. package/dist/public/assets/_DDmdn81K.js +1 -0
  173. package/dist/public/assets/{_czNfyPen.js → _DDx3ZLLY.js} +1 -1
  174. package/dist/public/assets/_DDx3ZLLY.js.br +0 -0
  175. package/dist/public/assets/_DELYfCxS.js +1 -0
  176. package/dist/public/assets/{_CPPSSISM.js → _DG1ykDHz.js} +1 -1
  177. package/dist/public/assets/_DG1ykDHz.js.br +0 -0
  178. package/dist/public/assets/{_D_JHfJs4.js → _DH-Zfxr9.js} +1 -1
  179. package/dist/public/assets/_DH-Zfxr9.js.br +0 -0
  180. package/dist/public/assets/{_l0hDq-K2.js → _DJjMgG8U.js} +1 -1
  181. package/dist/public/assets/_DJjMgG8U.js.br +0 -0
  182. package/dist/public/assets/{_DFf4Rzl8.js → _DJuouelh.js} +1 -1
  183. package/dist/public/assets/_DJuouelh.js.br +0 -0
  184. package/dist/public/assets/{_Buv7nRCW.js → _DKTHLXMM.js} +1 -1
  185. package/dist/public/assets/_DKTHLXMM.js.br +0 -0
  186. package/dist/public/assets/_DKZDTErM.js +1 -0
  187. package/dist/public/assets/_DLMANRcu.js +1 -0
  188. package/dist/public/assets/{_8fMkhL-V.js → _DLQ5a6Ki.js} +1 -1
  189. package/dist/public/assets/_DLQ5a6Ki.js.br +0 -0
  190. package/dist/public/assets/_DMssEVcp.js +1 -0
  191. package/dist/public/assets/{_DXipSiI1.js → _DPnx99Mr.js} +1 -1
  192. package/dist/public/assets/_DPnx99Mr.js.br +0 -0
  193. package/dist/public/assets/{_g5AR9tpA.js → _DQIdfKkP.js} +1 -1
  194. package/dist/public/assets/_DQIdfKkP.js.br +0 -0
  195. package/dist/public/assets/{_COOlu3UX.js → _DQvQsSbL.js} +1 -1
  196. package/dist/public/assets/_DQvQsSbL.js.br +0 -0
  197. package/dist/public/assets/{_DXV62Cae.js → _DSJ7G2_B.js} +1 -1
  198. package/dist/public/assets/_DSJ7G2_B.js.br +0 -0
  199. package/dist/public/assets/{_De56Kzes.js → _DV9DmK5V.js} +1 -1
  200. package/dist/public/assets/_DV9DmK5V.js.br +0 -0
  201. package/dist/public/assets/{_xXNz6TCM.js → _Dami2S44.js} +1 -1
  202. package/dist/public/assets/_Dami2S44.js.br +0 -0
  203. package/dist/public/assets/_DbI1CtJs.js +1 -0
  204. package/dist/public/assets/_DbsxTvoE.js +1 -0
  205. package/dist/public/assets/_DdDI5P8m.js +1 -0
  206. package/dist/public/assets/_DdDnkNsg.js +1 -0
  207. package/dist/public/assets/{_BCXa70Fh.js → _DdMgsOf_.js} +1 -1
  208. package/dist/public/assets/_DdMgsOf_.js.br +0 -0
  209. package/dist/public/assets/{_COk-n7hZ.js → _Dfm_6oJ1.js} +1 -1
  210. package/dist/public/assets/_Dfm_6oJ1.js.br +0 -0
  211. package/dist/public/assets/_DgDBo4e6.js +1 -0
  212. package/dist/public/assets/{_C_2Poz1k.js → _Dh4OkJ-I.js} +1 -1
  213. package/dist/public/assets/_Dh4OkJ-I.js.br +0 -0
  214. package/dist/public/assets/_Dh5C70YE.js +1 -0
  215. package/dist/public/assets/{_AUDK9Grt.js → _Dj6kDNs2.js} +1 -1
  216. package/dist/public/assets/_Dj6kDNs2.js.br +0 -0
  217. package/dist/public/assets/{_D_9gKfZY.js → _DjbB_Tid.js} +1 -1
  218. package/dist/public/assets/_DjbB_Tid.js.br +0 -0
  219. package/dist/public/assets/_DlEnI_hw.js +1 -0
  220. package/dist/public/assets/{_D4uw28j2.js → _Dm_k20_p.js} +1 -1
  221. package/dist/public/assets/_Dm_k20_p.js.br +0 -0
  222. package/dist/public/assets/_Dp1u8fV0.js +1 -0
  223. package/dist/public/assets/{_DeYwNUUu.js → _DpCB6eEn.js} +2 -2
  224. package/dist/public/assets/_DpCB6eEn.js.br +0 -0
  225. package/dist/public/assets/{_CkwFvNTM.js → _Dsx1c_ka.js} +1 -1
  226. package/dist/public/assets/_Dsx1c_ka.js.br +0 -0
  227. package/dist/public/assets/_DsxQ6ZlL.js +1 -0
  228. package/dist/public/assets/{_BgpmFeeP.js → _DtVSojrY.js} +1 -1
  229. package/dist/public/assets/_DtVSojrY.js.br +0 -0
  230. package/dist/public/assets/_DyGy6Md-.js +1 -0
  231. package/dist/public/assets/_DynU4mag.js +1 -0
  232. package/dist/public/assets/{_FChy8Jml.js → _E2FbIudO.js} +1 -1
  233. package/dist/public/assets/_E2FbIudO.js.br +0 -0
  234. package/dist/public/assets/_F2Lj0YJ9.js +1 -0
  235. package/dist/public/assets/{_uP13C5Wl.js → _IaZwRxjC.js} +1 -1
  236. package/dist/public/assets/_IaZwRxjC.js.br +0 -0
  237. package/dist/public/assets/{_oR0LYfq3.js → _K6IkdyTi.js} +1 -1
  238. package/dist/public/assets/_K6IkdyTi.js.br +0 -0
  239. package/dist/public/assets/_Kuy196Nc.js +1 -0
  240. package/dist/public/assets/_L1Td4IcZ.js +1 -0
  241. package/dist/public/assets/{_CbLcjKPG.js → _NcJbZtQc.js} +1 -1
  242. package/dist/public/assets/_NcJbZtQc.js.br +0 -0
  243. package/dist/public/assets/{_Cucb4Tjg.js → _O0XVVQh2.js} +1 -1
  244. package/dist/public/assets/_O0XVVQh2.js.br +0 -0
  245. package/dist/public/assets/_OkTdYQkN.js +1 -0
  246. package/dist/public/assets/{_B8-o-AZv.js → _OpeUTyoe.js} +1 -1
  247. package/dist/public/assets/_QqSSyz8h.js +1 -0
  248. package/dist/public/assets/_RtsHqLAU.js +1 -0
  249. package/dist/public/assets/_TEFPWNgQ.js +1 -0
  250. package/dist/public/assets/_TfXWQcxR.js +7 -0
  251. package/dist/public/assets/_TfXWQcxR.js.br +0 -0
  252. package/dist/public/assets/{_DuOaoYJs.js → _VE58ThY1.js} +1 -1
  253. package/dist/public/assets/_VE58ThY1.js.br +0 -0
  254. package/dist/public/assets/_XKDjMlFF.js +1 -0
  255. package/dist/public/assets/{_CWfDZOTS.js → _XmA9VOx7.js} +1 -1
  256. package/dist/public/assets/_XmA9VOx7.js.br +0 -0
  257. package/dist/public/assets/{_BUHolEsT.js → _ZJXcokd7.js} +1 -1
  258. package/dist/public/assets/_ZJXcokd7.js.br +0 -0
  259. package/dist/public/assets/{_xSVMCoQJ.js → _ZVG7VKZV.js} +1 -1
  260. package/dist/public/assets/_ZVG7VKZV.js.br +0 -0
  261. package/dist/public/assets/{_DbH0P--6.js → __9PGdE5L.js} +1 -1
  262. package/dist/public/assets/__9PGdE5L.js.br +0 -0
  263. package/dist/public/assets/{_CHy9xaEn.js → _bISSWjWW.js} +1 -1
  264. package/dist/public/assets/_bISSWjWW.js.br +0 -0
  265. package/dist/public/assets/{_KkDXvfqJ.js → _cPNv1ej4.js} +1 -1
  266. package/dist/public/assets/_cPNv1ej4.js.br +0 -0
  267. package/dist/public/assets/_f-53KH6a.js +1 -0
  268. package/dist/public/assets/{_BPHYSdej.js → _i13VtQet.js} +1 -1
  269. package/dist/public/assets/_i13VtQet.js.br +0 -0
  270. package/dist/public/assets/_kwRB-xea.js +1 -0
  271. package/dist/public/assets/_mDbdlh67.js +1 -0
  272. package/dist/public/assets/{_BQ0Wpc1b.js → _pISJGfjv.js} +1 -1
  273. package/dist/public/assets/_qe8eSrX5.js +1 -0
  274. package/dist/public/assets/{_DqJfOZRO.js → _rec-40kD.js} +1 -1
  275. package/dist/public/assets/_rec-40kD.js.br +0 -0
  276. package/dist/public/assets/{_B92ZvzMb.js → _w9dqYkUz.js} +10 -10
  277. package/dist/public/assets/_w9dqYkUz.js.br +0 -0
  278. package/dist/public/assets/_xd-TT2D6.js +1 -0
  279. package/dist/public/assets/{_BKI2XK6i.js → _xxtp9YpJ.js} +1 -1
  280. package/dist/public/assets/_xxtp9YpJ.js.br +0 -0
  281. package/dist/public/assets/{_CqD6fuWN.js → _yTW8pyW-.js} +1 -1
  282. package/dist/public/assets/_yTW8pyW-.js.br +0 -0
  283. package/dist/public/assets/_zdLLLV2x.js +1 -0
  284. package/dist/public/assets/_zdLLLV2x.js.br +0 -0
  285. package/dist/public/assets/files-view-CdM2m5Rw.js +2 -0
  286. package/dist/public/assets/manage-workspace-C2Igs4OZ.js +2 -0
  287. package/dist/public/assets/new-Jxc3Yfpl.js +1 -0
  288. package/dist/public/assets/new-workspace-SKGZDJt6.js +2 -0
  289. package/dist/public/assets/review-view-WvZ8HElz.js +2 -0
  290. package/dist/public/assets/settings-Jxc3Yfpl.js +1 -0
  291. package/dist/public/assets/settings-page-BmFANHYh.js +2 -0
  292. package/dist/public/assets/styles-h1l0VgQa.css +1 -0
  293. package/dist/public/assets/styles-h1l0VgQa.css.br +0 -0
  294. package/dist/public/assets/w-Jxc3Yfpl.js +1 -0
  295. package/dist/public/assets/w._-Bj3TWEgr.js +1 -0
  296. package/dist/public/assets/w._-CxbRBt3v.js +1 -0
  297. package/dist/public/assets/w._-Jxc3Yfpl.js +1 -0
  298. package/package.json +1 -1
  299. package/dist/_BKkT73fv.js +0 -2
  300. package/dist/_BviTiVOB.js +0 -2
  301. package/dist/public/assets/_4jzUxBl1.js +0 -1
  302. package/dist/public/assets/_6Gfbsj34.js +0 -1
  303. package/dist/public/assets/_7NOeJZ7O.js.br +0 -0
  304. package/dist/public/assets/_8fMkhL-V.js.br +0 -0
  305. package/dist/public/assets/_ACxWQrF_.js +0 -1
  306. package/dist/public/assets/_AUDK9Grt.js.br +0 -0
  307. package/dist/public/assets/_B0mwj6Ev.js.br +0 -0
  308. package/dist/public/assets/_B0pMH4yO.js.br +0 -0
  309. package/dist/public/assets/_B1G63IYo.js +0 -1
  310. package/dist/public/assets/_B1qkzWnd.js +0 -1
  311. package/dist/public/assets/_B56RiWbN.js +0 -1
  312. package/dist/public/assets/_B6ZXN5aU.js +0 -1
  313. package/dist/public/assets/_B6_r9iYg.js +0 -1
  314. package/dist/public/assets/_B73Eh-N_.js.br +0 -0
  315. package/dist/public/assets/_B92ZvzMb.js.br +0 -0
  316. package/dist/public/assets/_B9iGefG4.js +0 -1
  317. package/dist/public/assets/_BAb8sJtB.js +0 -1
  318. package/dist/public/assets/_BCXa70Fh.js.br +0 -0
  319. package/dist/public/assets/_BEw6aufk.js +0 -1
  320. package/dist/public/assets/_BKI2XK6i.js.br +0 -0
  321. package/dist/public/assets/_BL6T7K5F.js +0 -1
  322. package/dist/public/assets/_BLtle8N9.js.br +0 -0
  323. package/dist/public/assets/_BMhAJhx_.js +0 -1
  324. package/dist/public/assets/_BNC-BdhL.js +0 -1
  325. package/dist/public/assets/_BOw__Q2y.js.br +0 -0
  326. package/dist/public/assets/_BPHYSdej.js.br +0 -0
  327. package/dist/public/assets/_BPbGGRrT.js.br +0 -0
  328. package/dist/public/assets/_BQjfwReN.js.br +0 -0
  329. package/dist/public/assets/_BSOQpNL6.js +0 -1
  330. package/dist/public/assets/_BU076YIw.js +0 -1
  331. package/dist/public/assets/_BUHolEsT.js.br +0 -0
  332. package/dist/public/assets/_BW0CTcZj.js +0 -1
  333. package/dist/public/assets/_BWaDSzqN.js +0 -1
  334. package/dist/public/assets/_BXFUBIN4.js +0 -1
  335. package/dist/public/assets/_BaZLe1km.js +0 -1
  336. package/dist/public/assets/_BcEm_iyy.js.br +0 -0
  337. package/dist/public/assets/_BdTFZA5g.js +0 -1
  338. package/dist/public/assets/_BgpmFeeP.js.br +0 -0
  339. package/dist/public/assets/_BhtG3O1x.js +0 -2
  340. package/dist/public/assets/_BhtG3O1x.js.br +0 -0
  341. package/dist/public/assets/_BiYkTvg2.js +0 -1
  342. package/dist/public/assets/_BjTD5VbW.js +0 -1
  343. package/dist/public/assets/_Bl1FCUd6.js +0 -1
  344. package/dist/public/assets/_BtuZvkEt.js +0 -1
  345. package/dist/public/assets/_Buv7nRCW.js.br +0 -0
  346. package/dist/public/assets/_Buv99kaT.js +0 -1
  347. package/dist/public/assets/_ByfZnU2c.js +0 -1
  348. package/dist/public/assets/_C-fnxBxJ.js.br +0 -0
  349. package/dist/public/assets/_C05YW868.js +0 -1
  350. package/dist/public/assets/_C6f-hgTe.js.br +0 -0
  351. package/dist/public/assets/_C7Y0TA82.js +0 -1
  352. package/dist/public/assets/_C7vQHCek.js.br +0 -0
  353. package/dist/public/assets/_C8bV43Ih.js +0 -1
  354. package/dist/public/assets/_CCjVMkO3.js.br +0 -0
  355. package/dist/public/assets/_CGIbExeK.js +0 -1
  356. package/dist/public/assets/_CGb1Cnwy.js.br +0 -0
  357. package/dist/public/assets/_CHy9xaEn.js.br +0 -0
  358. package/dist/public/assets/_CKyHmOht.js +0 -1
  359. package/dist/public/assets/_CL-ckoH5.js +0 -1
  360. package/dist/public/assets/_CNBA4JfC.js.br +0 -0
  361. package/dist/public/assets/_COOlu3UX.js.br +0 -0
  362. package/dist/public/assets/_COk-n7hZ.js.br +0 -0
  363. package/dist/public/assets/_CPPSSISM.js.br +0 -0
  364. package/dist/public/assets/_CQftYh9Z.js +0 -1
  365. package/dist/public/assets/_CQmdU2jo.js +0 -1
  366. package/dist/public/assets/_CS9jx04A.js.br +0 -0
  367. package/dist/public/assets/_CSdtDfvR.js +0 -1
  368. package/dist/public/assets/_CU0zS2tF.js +0 -1
  369. package/dist/public/assets/_CVs4BgJ8.js +0 -1
  370. package/dist/public/assets/_CWfDZOTS.js.br +0 -0
  371. package/dist/public/assets/_CXTPeLVy.js +0 -1
  372. package/dist/public/assets/_C_2Poz1k.js.br +0 -0
  373. package/dist/public/assets/_C_YGsTAD.js.br +0 -0
  374. package/dist/public/assets/_Cas9R6tf.js.br +0 -0
  375. package/dist/public/assets/_CbLcjKPG.js.br +0 -0
  376. package/dist/public/assets/_CbwHAX50.js +0 -1
  377. package/dist/public/assets/_CcKHitbd.js +0 -1
  378. package/dist/public/assets/_CdPw4LUm.js +0 -1
  379. package/dist/public/assets/_CdPw4LUm.js.br +0 -0
  380. package/dist/public/assets/_CfDehMkg.js +0 -1
  381. package/dist/public/assets/_Ciq72Yaz.js.br +0 -0
  382. package/dist/public/assets/_CjnfvQG7.js.br +0 -0
  383. package/dist/public/assets/_Ck80YJf-.js +0 -1
  384. package/dist/public/assets/_CkwFvNTM.js.br +0 -0
  385. package/dist/public/assets/_CmrqyF2X.js +0 -1
  386. package/dist/public/assets/_Coq56wZh.js +0 -1
  387. package/dist/public/assets/_CqD6fuWN.js.br +0 -0
  388. package/dist/public/assets/_Cucb4Tjg.js.br +0 -0
  389. package/dist/public/assets/_Cug-hxky.js.br +0 -0
  390. package/dist/public/assets/_Cw7W1tiO.js +0 -1
  391. package/dist/public/assets/_CwE97-yW.js +0 -1
  392. package/dist/public/assets/_CwuZ_5cX.js +0 -1
  393. package/dist/public/assets/_CyYvm4rW.js.br +0 -0
  394. package/dist/public/assets/_CzIpBjJM.js.br +0 -0
  395. package/dist/public/assets/_D1L3UHX3.js.br +0 -0
  396. package/dist/public/assets/_D4egTrfn.js.br +0 -0
  397. package/dist/public/assets/_D4uw28j2.js.br +0 -0
  398. package/dist/public/assets/_D5bv6LQl.js.br +0 -0
  399. package/dist/public/assets/_D7_Ub5eD.js.br +0 -0
  400. package/dist/public/assets/_DA4mq6lj.js.br +0 -0
  401. package/dist/public/assets/_DAqrKmCA.js.br +0 -0
  402. package/dist/public/assets/_DAuw68_p.js +0 -1
  403. package/dist/public/assets/_DCVr8Tb2.js +0 -1
  404. package/dist/public/assets/_DFf4Rzl8.js.br +0 -0
  405. package/dist/public/assets/_DGvpitpZ.js +0 -1
  406. package/dist/public/assets/_DIZG1G-Z.js +0 -1
  407. package/dist/public/assets/_DJ-_BqNL.js +0 -1
  408. package/dist/public/assets/_DMEqEv_T.js +0 -1
  409. package/dist/public/assets/_DTfOovOq.js.br +0 -0
  410. package/dist/public/assets/_DUUWYhg_.js.br +0 -0
  411. package/dist/public/assets/_DUuqR8Il.js.br +0 -0
  412. package/dist/public/assets/_DVHVPPDm.js +0 -1
  413. package/dist/public/assets/_DVPR8Gc6.js.br +0 -0
  414. package/dist/public/assets/_DWlBFpSS.js.br +0 -0
  415. package/dist/public/assets/_DWum7no_.js +0 -1
  416. package/dist/public/assets/_DXV62Cae.js.br +0 -0
  417. package/dist/public/assets/_DXipSiI1.js.br +0 -0
  418. package/dist/public/assets/_DZYDOMkl.js.br +0 -0
  419. package/dist/public/assets/_D_701Hlg.js +0 -1
  420. package/dist/public/assets/_D_9gKfZY.js.br +0 -0
  421. package/dist/public/assets/_D_JHfJs4.js.br +0 -0
  422. package/dist/public/assets/_DbEZe7yb.js.br +0 -0
  423. package/dist/public/assets/_DbH0P--6.js.br +0 -0
  424. package/dist/public/assets/_DbadYlan.js.br +0 -0
  425. package/dist/public/assets/_DcZGtx9M.js +0 -1
  426. package/dist/public/assets/_DdkaLWU-.js.br +0 -0
  427. package/dist/public/assets/_De56Kzes.js.br +0 -0
  428. package/dist/public/assets/_DeI8ro0m.js.br +0 -0
  429. package/dist/public/assets/_DeW8reMC.js +0 -1
  430. package/dist/public/assets/_DeYwNUUu.js.br +0 -0
  431. package/dist/public/assets/_DgTOYvd6.js.br +0 -0
  432. package/dist/public/assets/_DiSCjU2A.js +0 -1
  433. package/dist/public/assets/_DkTAnqm3.js.br +0 -0
  434. package/dist/public/assets/_Dmm830TH.js +0 -1
  435. package/dist/public/assets/_DpjdDKK2.js +0 -7
  436. package/dist/public/assets/_DpjdDKK2.js.br +0 -0
  437. package/dist/public/assets/_DqJfOZRO.js.br +0 -0
  438. package/dist/public/assets/_DqjxsMkL.js +0 -1
  439. package/dist/public/assets/_DuA45JvH.js +0 -1
  440. package/dist/public/assets/_DuA45JvH.js.br +0 -0
  441. package/dist/public/assets/_DuOaoYJs.js.br +0 -0
  442. package/dist/public/assets/_Duzf7BCj.js +0 -1
  443. package/dist/public/assets/_Duzf7BCj.js.br +0 -0
  444. package/dist/public/assets/_DvLPq_1f.js +0 -1
  445. package/dist/public/assets/_Dy7h2yOQ.js.br +0 -0
  446. package/dist/public/assets/_FChy8Jml.js.br +0 -0
  447. package/dist/public/assets/_Hg8ZWlxs.js +0 -1
  448. package/dist/public/assets/_IGL38N54.js +0 -1
  449. package/dist/public/assets/_KHMfdBQI.js.br +0 -0
  450. package/dist/public/assets/_KkDXvfqJ.js.br +0 -0
  451. package/dist/public/assets/_MNAHC8bw.js +0 -1
  452. package/dist/public/assets/_MaR9Opge.js +0 -1
  453. package/dist/public/assets/_NxnEqCRC.js.br +0 -0
  454. package/dist/public/assets/_OUf-pT7F.js +0 -1
  455. package/dist/public/assets/_QCvY_0EH.js +0 -1
  456. package/dist/public/assets/_TMRapgLW.js.br +0 -0
  457. package/dist/public/assets/_a3v9VRGR.js +0 -1
  458. package/dist/public/assets/_b1QkEZO6.js.br +0 -0
  459. package/dist/public/assets/_czNfyPen.js.br +0 -0
  460. package/dist/public/assets/_dubh06MD.js +0 -1
  461. package/dist/public/assets/_e7F7m2AO.js +0 -1
  462. package/dist/public/assets/_e7F7m2AO.js.br +0 -0
  463. package/dist/public/assets/_ep6TpAZh.js +0 -1
  464. package/dist/public/assets/_g5AR9tpA.js.br +0 -0
  465. package/dist/public/assets/_gZV0em2r.js +0 -1
  466. package/dist/public/assets/_jiqsGnyP.js +0 -1
  467. package/dist/public/assets/_l0hDq-K2.js.br +0 -0
  468. package/dist/public/assets/_lSk10m1w.js.br +0 -0
  469. package/dist/public/assets/_lhsz8w9h.js +0 -1
  470. package/dist/public/assets/_nI9u4LRb.js +0 -1
  471. package/dist/public/assets/_n_zJ-LqK.js +0 -1
  472. package/dist/public/assets/_n_zJ-LqK.js.br +0 -0
  473. package/dist/public/assets/_o0VQYCUE.js.br +0 -0
  474. package/dist/public/assets/_oR0LYfq3.js.br +0 -0
  475. package/dist/public/assets/_q330tDWb.js.br +0 -0
  476. package/dist/public/assets/_qHB7bu0-.js +0 -1
  477. package/dist/public/assets/_so_VJkr5.js +0 -1
  478. package/dist/public/assets/_toCsz2cL.js +0 -1
  479. package/dist/public/assets/_u7bZ6UkK.js +0 -1
  480. package/dist/public/assets/_uP13C5Wl.js.br +0 -0
  481. package/dist/public/assets/_xSVMCoQJ.js.br +0 -0
  482. package/dist/public/assets/_xXNz6TCM.js.br +0 -0
  483. package/dist/public/assets/_zmjyTuaK.js +0 -1
  484. package/dist/public/assets/files-view-XjUBLNCX.js +0 -2
  485. package/dist/public/assets/manage-workspace-DdpHBJIX.js +0 -2
  486. package/dist/public/assets/new-4NSZeknb.js +0 -1
  487. package/dist/public/assets/new-workspace-LRUvrRNr.js +0 -2
  488. package/dist/public/assets/review-view-AXkF7DUG.js +0 -2
  489. package/dist/public/assets/settings-4NSZeknb.js +0 -1
  490. package/dist/public/assets/settings-page-DhMS0VeA.js +0 -2
  491. package/dist/public/assets/styles-CJbPDDVA.css +0 -1
  492. package/dist/public/assets/styles-CJbPDDVA.css.br +0 -0
  493. package/dist/public/assets/w-4NSZeknb.js +0 -1
  494. package/dist/public/assets/w._-4NSZeknb.js +0 -1
  495. package/dist/public/assets/w._-BXrd0YFM.js +0 -1
  496. 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 "./_Cv5RrCSW.js";
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 message as a reply names it: when it was sent, and how it begins. */
80
- function excerpt(row) {
81
- const time = new Date(row.created_at).toLocaleTimeString("en-GB", {
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
- db.prepare("UPDATE sessions SET answered_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now') WHERE id = ?").run(from.id);
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 false;
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
- let told = false;
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 answers = group ? null : yours(owed.filter((r) => r.from_session === asker));
477
- insert(to.id, session, "reply", body, false, group, answers);
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
- deleteIds(owed.map((r) => r.id));
481
- if (told) db.prepare("UPDATE sessions SET answered_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now') WHERE id = ?").run(id);
482
- if (group) team.memberAnswered(id, message);
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 told;
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 { takeReplies as _, keepSession as a, retryMember as c, teamOf as d, teamsOf as f, startMessages as g, sessionGone as h, createGroup as i, skipMember as l, sendMessage as m, closeDone as n, kickPool as o, messageStates as p, closeFinished as r, memberWorkspace as s, clearGroup as t, startTeam as u };
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 };
@@ -0,0 +1,2 @@
1
+ import { J as notifySessionsChanged } from "./_B_Wl8EDh.js";
2
+ export { notifySessionsChanged };
@@ -0,0 +1,2 @@
1
+ import { f as teamsOf } from "./_B_YHcR6n.js";
2
+ export { teamsOf };