@dylanpiercey/work 0.2.18 → 0.2.20

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 (509) hide show
  1. package/README.md +6 -1
  2. package/bin/cli/plan.mjs +85 -0
  3. package/bin/cli/session.mjs +406 -41
  4. package/bin/cli/topic.mjs +63 -40
  5. package/bin/work.mjs +10 -1
  6. package/dist/_BHlbSSAl.js +182 -0
  7. package/dist/_C9c_BxRk.js +787 -0
  8. package/dist/_DrEeyoLF.js +2 -0
  9. package/dist/_E0fWorAK.js +2 -0
  10. package/dist/{_BlLEM8du.js → _Hb3LeA5Q.js} +321 -67
  11. package/dist/index.mjs +3447 -1913
  12. package/dist/public/assets/_-TUXzZ5j.js +1 -0
  13. package/dist/public/assets/_-TUXzZ5j.js.br +0 -0
  14. package/dist/public/assets/_0BO-2AH8.js +1 -0
  15. package/dist/public/assets/_1MkpPhCv.js +1 -0
  16. package/dist/public/assets/_2Czzn44S.js +2 -0
  17. package/dist/public/assets/_2Czzn44S.js.br +0 -0
  18. package/dist/public/assets/{_Dh9434oc.js → _2M3NjHcy.js} +1 -1
  19. package/dist/public/assets/_3J3NCTfA.js +1 -0
  20. package/dist/public/assets/_3yfaou9w.js +1 -0
  21. package/dist/public/assets/{_B-H6ABVZ.js → _6fcPfRKt.js} +1 -1
  22. package/dist/public/assets/_6fcPfRKt.js.br +0 -0
  23. package/dist/public/assets/_9kzNcuvf.js +1 -0
  24. package/dist/public/assets/_AbxeWvtk.js +1 -0
  25. package/dist/public/assets/{_DjYscMjF.js → _B1AH7m_8.js} +1 -1
  26. package/dist/public/assets/_B1AH7m_8.js.br +0 -0
  27. package/dist/public/assets/{_HpxvfbM2.js → _B2zs9J9f.js} +1 -1
  28. package/dist/public/assets/_B2zs9J9f.js.br +0 -0
  29. package/dist/public/assets/_B4Tl4g-I.js +1 -0
  30. package/dist/public/assets/_B6GPBTnX.js +1 -0
  31. package/dist/public/assets/{_w-MAJku6.js → _B7u83Fqc.js} +1 -1
  32. package/dist/public/assets/_B89z0EK7.js +1 -0
  33. package/dist/public/assets/{_Df-N1G_n.js → _BCYHTWZd.js} +1 -1
  34. package/dist/public/assets/_BCYHTWZd.js.br +0 -0
  35. package/dist/public/assets/_BD01_px3.js +1 -0
  36. package/dist/public/assets/_BDt0PKxz.js +1 -0
  37. package/dist/public/assets/{_RudCGuBM.js → _BFD3zDfn.js} +1 -1
  38. package/dist/public/assets/_BFD3zDfn.js.br +0 -0
  39. package/dist/public/assets/{_9JG-F3GR.js → _BH5TfgM7.js} +1 -1
  40. package/dist/public/assets/_BH5TfgM7.js.br +0 -0
  41. package/dist/public/assets/_BHEzkZBl.js +1 -0
  42. package/dist/public/assets/{_CPqT91JX.js → _BHxaJLxf.js} +1 -1
  43. package/dist/public/assets/_BHxaJLxf.js.br +0 -0
  44. package/dist/public/assets/{_DXvsvUmJ.js → _BJc28pt5.js} +1 -1
  45. package/dist/public/assets/_BJc28pt5.js.br +0 -0
  46. package/dist/public/assets/{_CpVeIwQ4.js → _BJpqJK9r.js} +1 -1
  47. package/dist/public/assets/_BJpqJK9r.js.br +0 -0
  48. package/dist/public/assets/_BKSNShOz.js +1 -0
  49. package/dist/public/assets/{_B-iOtMg6.js → _BKcc-iTi.js} +1 -1
  50. package/dist/public/assets/_BKcc-iTi.js.br +0 -0
  51. package/dist/public/assets/{_DG3L8-RO.js → _BMXIDoUj.js} +1 -1
  52. package/dist/public/assets/_BMXIDoUj.js.br +0 -0
  53. package/dist/public/assets/{_B3Z1kRpD.js → _BQMwlV-0.js} +1 -1
  54. package/dist/public/assets/_BQMwlV-0.js.br +0 -0
  55. package/dist/public/assets/_BUjgl28E.js +1 -0
  56. package/dist/public/assets/_BYUg95ML.js +1 -0
  57. package/dist/public/assets/{_BIUaA4Nl.js → _B_LxZatx.js} +1 -1
  58. package/dist/public/assets/_B_LxZatx.js.br +0 -0
  59. package/dist/public/assets/{_Bs_MPTBZ.js → _BeQUut65.js} +1 -1
  60. package/dist/public/assets/_BeQUut65.js.br +0 -0
  61. package/dist/public/assets/{_B4hn3NNW.js → _Bf7EsJwj.js} +1 -1
  62. package/dist/public/assets/_Bf7EsJwj.js.br +0 -0
  63. package/dist/public/assets/_BfVmvTXe.js +1 -0
  64. package/dist/public/assets/_BfqDnPV7.js +1 -0
  65. package/dist/public/assets/{_CUxBk_RE.js → _Bfuu6mAX.js} +1 -1
  66. package/dist/public/assets/_Bfuu6mAX.js.br +0 -0
  67. package/dist/public/assets/{_DNrRZhO7.js → _BgBUZElB.js} +1 -1
  68. package/dist/public/assets/_BgBUZElB.js.br +0 -0
  69. package/dist/public/assets/{_B26gPL08.js → _Bgbj7Vl5.js} +1 -1
  70. package/dist/public/assets/_Bgbj7Vl5.js.br +0 -0
  71. package/dist/public/assets/{_DRpsUHP5.js → _BhrCWDl2.js} +1 -1
  72. package/dist/public/assets/_BhrCWDl2.js.br +0 -0
  73. package/dist/public/assets/_Bjsevhjr.js +1 -0
  74. package/dist/public/assets/_BjzBYn47.js +1 -0
  75. package/dist/public/assets/_BmyB1F-C.js +1 -0
  76. package/dist/public/assets/{_BXHggM8M.js → _BpGvpggY.js} +1 -1
  77. package/dist/public/assets/_BpGvpggY.js.br +0 -0
  78. package/dist/public/assets/_BpjknrsF.js +1 -0
  79. package/dist/public/assets/{_WOU8TCkO.js → _BpunB-I_.js} +1 -1
  80. package/dist/public/assets/_BpunB-I_.js.br +0 -0
  81. package/dist/public/assets/{_CcINcTUt.js → _Bqgtb-fc.js} +1 -1
  82. package/dist/public/assets/_Bqgtb-fc.js.br +0 -0
  83. package/dist/public/assets/_BtkDWVh9.js +1 -0
  84. package/dist/public/assets/{_5tN48iuJ.js → _BvEJgNLp.js} +1 -1
  85. package/dist/public/assets/_BvEJgNLp.js.br +0 -0
  86. package/dist/public/assets/_BvYgAZl3.js +1 -0
  87. package/dist/public/assets/_C0Bfz_Is.js +1 -0
  88. package/dist/public/assets/_C1Aa6bJ9.js +1 -0
  89. package/dist/public/assets/_C3i3LRNx.js +1 -0
  90. package/dist/public/assets/_C4RHKQLq.js +1 -0
  91. package/dist/public/assets/{_Cfts4mFJ.js → _C5Wk6L8u.js} +1 -1
  92. package/dist/public/assets/_C5Wk6L8u.js.br +0 -0
  93. package/dist/public/assets/_C7N1s7w_.js +1 -0
  94. package/dist/public/assets/_C7N1s7w_.js.br +0 -0
  95. package/dist/public/assets/_C96lrIeU.js +1 -0
  96. package/dist/public/assets/{_B6VtVybz.js → _CAhkFk0k.js} +1 -1
  97. package/dist/public/assets/_CAhkFk0k.js.br +0 -0
  98. package/dist/public/assets/{_BD1SQU0V.js → _CCmHKlXX.js} +1 -1
  99. package/dist/public/assets/_CCmHKlXX.js.br +0 -0
  100. package/dist/public/assets/{_C9k00otG.js → _CEY_n10t.js} +1 -1
  101. package/dist/public/assets/_CEY_n10t.js.br +0 -0
  102. package/dist/public/assets/_CEejNMib.js +1 -0
  103. package/dist/public/assets/_CFo4GZR9.js +1 -0
  104. package/dist/public/assets/{_vG7bXn-C.js → _CGH2Busx.js} +1 -1
  105. package/dist/public/assets/_CGH2Busx.js.br +0 -0
  106. package/dist/public/assets/{_BJpBnuvv.js → _CHwp4prQ.js} +1 -1
  107. package/dist/public/assets/_CHwp4prQ.js.br +0 -0
  108. package/dist/public/assets/{_BXPUZfKX.js → _CN7Wz2eA.js} +1 -1
  109. package/dist/public/assets/_CN7Wz2eA.js.br +0 -0
  110. package/dist/public/assets/_CP58TjsV.js +1 -0
  111. package/dist/public/assets/_CP58TjsV.js.br +0 -0
  112. package/dist/public/assets/_CPruMiA4.js +1 -0
  113. package/dist/public/assets/_CQEZuOE_.js +1 -0
  114. package/dist/public/assets/_CSMoDPwM.js +16 -0
  115. package/dist/public/assets/_CSMoDPwM.js.br +0 -0
  116. package/dist/public/assets/{_GK8r-gEu.js → _CVEabnQh.js} +1 -1
  117. package/dist/public/assets/_CVEabnQh.js.br +0 -0
  118. package/dist/public/assets/{_CLV83hY7.js → _CWTelCGM.js} +1 -1
  119. package/dist/public/assets/_CWTelCGM.js.br +0 -0
  120. package/dist/public/assets/_CXpplsaj.js +1 -0
  121. package/dist/public/assets/{_C46o3wQ8.js → _CY0xLX0Y.js} +1 -1
  122. package/dist/public/assets/_CY0xLX0Y.js.br +0 -0
  123. package/dist/public/assets/{_DG_QOtsx.js → _CZNztOn6.js} +1 -1
  124. package/dist/public/assets/_CZNztOn6.js.br +0 -0
  125. package/dist/public/assets/{_Bt4cxzaP.js → _Cabq459u.js} +1 -1
  126. package/dist/public/assets/_Cb593OOX.js +1 -0
  127. package/dist/public/assets/_Cbis2WSl.js +1 -0
  128. package/dist/public/assets/{_10dZ1R0m.js → _CeZa36O-.js} +1 -1
  129. package/dist/public/assets/_CeZa36O-.js.br +0 -0
  130. package/dist/public/assets/{_DZqoQxTm.js → _ChTMXnIu.js} +1 -1
  131. package/dist/public/assets/_ChTMXnIu.js.br +0 -0
  132. package/dist/public/assets/_Cig63HLr.js +1 -0
  133. package/dist/public/assets/_CjkPh72t.js +1 -0
  134. package/dist/public/assets/_Cm6nigjK.js +1 -0
  135. package/dist/public/assets/_CnAEQUMb.js +1 -0
  136. package/dist/public/assets/{_CX5VOdNU.js → _Coroy2lI.js} +1 -1
  137. package/dist/public/assets/_Coroy2lI.js.br +0 -0
  138. package/dist/public/assets/_CpAeLnqO.js +1 -0
  139. package/dist/public/assets/_CpAeLnqO.js.br +0 -0
  140. package/dist/public/assets/_Cpkby1iI.js +1 -0
  141. package/dist/public/assets/_Cs0Q8LaN.js +1 -0
  142. package/dist/public/assets/_Ct2pbvTU.js +1 -0
  143. package/dist/public/assets/{_DUH5o_iN.js → _CtC83UyG.js} +1 -1
  144. package/dist/public/assets/_CtC83UyG.js.br +0 -0
  145. package/dist/public/assets/_CtVSUTWd.js +1 -0
  146. package/dist/public/assets/_Ctf0pL3c.js +1 -0
  147. package/dist/public/assets/_CtvMc-Fn.js +1 -0
  148. package/dist/public/assets/_Cv7TctYK.js +1 -0
  149. package/dist/public/assets/_Cv7TctYK.js.br +0 -0
  150. package/dist/public/assets/{_CIDjLk1A.js → _CvKDzuxc.js} +1 -1
  151. package/dist/public/assets/_CvKDzuxc.js.br +0 -0
  152. package/dist/public/assets/_CvxhsaLv.js +1 -0
  153. package/dist/public/assets/_CwxTh04m.js +1 -0
  154. package/dist/public/assets/_CyMRBJfa.js +1 -0
  155. package/dist/public/assets/{_DDWIDZyP.js → _D-wwbDX7.js} +1 -1
  156. package/dist/public/assets/_D-wwbDX7.js.br +0 -0
  157. package/dist/public/assets/_D02jmNge.js +1 -0
  158. package/dist/public/assets/{_DJwY_zBh.js → _D0gWUr-E.js} +1 -1
  159. package/dist/public/assets/_D0gWUr-E.js.br +0 -0
  160. package/dist/public/assets/_D2wtQpHN.js +1 -0
  161. package/dist/public/assets/_D2wtQpHN.js.br +0 -0
  162. package/dist/public/assets/_D3uCXh8z.js +2 -0
  163. package/dist/public/assets/_D3uCXh8z.js.br +0 -0
  164. package/dist/public/assets/_D5GW0gg0.js +1 -0
  165. package/dist/public/assets/_D5GW0gg0.js.br +0 -0
  166. package/dist/public/assets/{_ClHeQc6g.js → _D6YVA8vA.js} +1 -1
  167. package/dist/public/assets/_D6YVA8vA.js.br +0 -0
  168. package/dist/public/assets/_D85prZ-z.js +1 -0
  169. package/dist/public/assets/_D8QlsPTv.js +1 -0
  170. package/dist/public/assets/_D8QlsPTv.js.br +0 -0
  171. package/dist/public/assets/_D8rDqOqJ.js +1 -0
  172. package/dist/public/assets/{_B0FhzjB2.js → _DAcmaIgY.js} +1 -1
  173. package/dist/public/assets/_DAcmaIgY.js.br +0 -0
  174. package/dist/public/assets/_DBlahxfT.js +1 -0
  175. package/dist/public/assets/_DCPGqAo6.js +1 -0
  176. package/dist/public/assets/{_DUmYv8Kf.js → _DDBuDrkA.js} +1 -1
  177. package/dist/public/assets/_DDBuDrkA.js.br +0 -0
  178. package/dist/public/assets/_DDfwtidv.js +1 -0
  179. package/dist/public/assets/_DDfwtidv.js.br +0 -0
  180. package/dist/public/assets/_DEqzNO7a.js +1 -0
  181. package/dist/public/assets/_DEyhBnnd.js +1 -0
  182. package/dist/public/assets/{_CZsqsL_m.js → _DG1LpTGX.js} +1 -1
  183. package/dist/public/assets/_DG1LpTGX.js.br +0 -0
  184. package/dist/public/assets/_DJK-MioE.js +1 -0
  185. package/dist/public/assets/{_BSRsPQTe.js → _DLCgfhNS.js} +1 -1
  186. package/dist/public/assets/_DLCgfhNS.js.br +0 -0
  187. package/dist/public/assets/_DLYvRpNz.js +6 -0
  188. package/dist/public/assets/_DLYvRpNz.js.br +0 -0
  189. package/dist/public/assets/_DPzjUc1B.js +1 -0
  190. package/dist/public/assets/_DRDW7RgT.js +1 -0
  191. package/dist/public/assets/{_Cq4DpL3R.js → _DSoJ6ck3.js} +1 -1
  192. package/dist/public/assets/_DSoJ6ck3.js.br +0 -0
  193. package/dist/public/assets/{_i6YkSowH.js → _DW92UwGh.js} +1 -1
  194. package/dist/public/assets/_DW92UwGh.js.br +0 -0
  195. package/dist/public/assets/{_DYxQeog7.js → _DYIjiPYY.js} +1 -1
  196. package/dist/public/assets/_DYIjiPYY.js.br +0 -0
  197. package/dist/public/assets/_DZeeRtLs.js +1 -0
  198. package/dist/public/assets/{_CcflXOTj.js → _DZzucnmx.js} +1 -1
  199. package/dist/public/assets/_DZzucnmx.js.br +0 -0
  200. package/dist/public/assets/{_8_DzkMgB.js → _D_AjKzkm.js} +1 -1
  201. package/dist/public/assets/_D_AjKzkm.js.br +0 -0
  202. package/dist/public/assets/{_DHYIZWev.js → _DdVG8Rbg.js} +116 -116
  203. package/dist/public/assets/_DdVG8Rbg.js.br +0 -0
  204. package/dist/public/assets/{_tJgkkxOD.js → _DdcPtDZz.js} +1 -1
  205. package/dist/public/assets/_DdcPtDZz.js.br +0 -0
  206. package/dist/public/assets/{_DKlB-yMq.js → _De_msLFQ.js} +1 -1
  207. package/dist/public/assets/_De_msLFQ.js.br +0 -0
  208. package/dist/public/assets/_DeiCZJcm.js +1 -0
  209. package/dist/public/assets/_DeiCZJcm.js.br +0 -0
  210. package/dist/public/assets/{_YDyNvOET.js → _DfNM5GDo.js} +1 -1
  211. package/dist/public/assets/_DfNM5GDo.js.br +0 -0
  212. package/dist/public/assets/{_Dku55Ypt.js → _Dg6OsRrR.js} +1 -1
  213. package/dist/public/assets/_Dg6OsRrR.js.br +0 -0
  214. package/dist/public/assets/_DgrmX7cI.js +1 -0
  215. package/dist/public/assets/_DiPK_ps-.js +1 -0
  216. package/dist/public/assets/{_BI45WgW9.js → _Dow17jzJ.js} +1 -1
  217. package/dist/public/assets/_Dow17jzJ.js.br +0 -0
  218. package/dist/public/assets/{_vHqiFYsh.js → _DpSZYTyI.js} +1 -1
  219. package/dist/public/assets/_DpSZYTyI.js.br +0 -0
  220. package/dist/public/assets/_DpXO9fPK.js +1 -0
  221. package/dist/public/assets/_DpXO9fPK.js.br +0 -0
  222. package/dist/public/assets/{_XWw1j8vS.js → _DqiBcDpF.js} +1 -1
  223. package/dist/public/assets/_DqiBcDpF.js.br +0 -0
  224. package/dist/public/assets/_DqkJjiCU.js +1 -0
  225. package/dist/public/assets/{_ahCaQNeo.js → _Draa__tn.js} +1 -1
  226. package/dist/public/assets/_Draa__tn.js.br +0 -0
  227. package/dist/public/assets/_Drs3T7dh.js +1 -0
  228. package/dist/public/assets/_Drs3T7dh.js.br +0 -0
  229. package/dist/public/assets/_DtBGe4AJ.js +1 -0
  230. package/dist/public/assets/{_B8joFpf1.js → _DxSnjCPi.js} +1 -1
  231. package/dist/public/assets/_DxSnjCPi.js.br +0 -0
  232. package/dist/public/assets/{_DGRgLaG-.js → _DyEhTpVE.js} +1 -1
  233. package/dist/public/assets/_DyEhTpVE.js.br +0 -0
  234. package/dist/public/assets/{_DMCVOg7x.js → _DyFcXAXE.js} +1 -1
  235. package/dist/public/assets/_DyFcXAXE.js.br +0 -0
  236. package/dist/public/assets/_FPItrlZz.js +1 -0
  237. package/dist/public/assets/{_o8mJsMHw.js → _HGP7qpI4.js} +1 -1
  238. package/dist/public/assets/_HGP7qpI4.js.br +0 -0
  239. package/dist/public/assets/{_f8D86HXZ.js → _L-b7Vsug.js} +1 -1
  240. package/dist/public/assets/_L-b7Vsug.js.br +0 -0
  241. package/dist/public/assets/{_B5NleRC6.js → _LWpc-K1g.js} +1 -1
  242. package/dist/public/assets/_LWpc-K1g.js.br +0 -0
  243. package/dist/public/assets/{_hbXd8Ogo.js → _MwkLbzHQ.js} +1 -1
  244. package/dist/public/assets/_MwkLbzHQ.js.br +0 -0
  245. package/dist/public/assets/_O4DIriLZ.js +1 -0
  246. package/dist/public/assets/{_C-z8Ntse.js → _T0Ktx7Km.js} +1 -1
  247. package/dist/public/assets/_T0Ktx7Km.js.br +0 -0
  248. package/dist/public/assets/_T6O8KX0b.js +1 -0
  249. package/dist/public/assets/_TWZgGi12.js +1 -0
  250. package/dist/public/assets/{_BxKDE6Ct.js → _UBgRR4E9.js} +1 -1
  251. package/dist/public/assets/_UBgRR4E9.js.br +0 -0
  252. package/dist/public/assets/_X3T0JcUM.js +87 -0
  253. package/dist/public/assets/_X3T0JcUM.js.br +0 -0
  254. package/dist/public/assets/_YtP2gTmD.js +1 -0
  255. package/dist/public/assets/{_sSKEak2x.js → __1UtPhZb.js} +1 -1
  256. package/dist/public/assets/__1UtPhZb.js.br +0 -0
  257. package/dist/public/assets/__WDcLOp3.js +1 -0
  258. package/dist/public/assets/{_DnUBW0Qq.js → __cyNMcUU.js} +1 -1
  259. package/dist/public/assets/{_rv9KtZHz.js → _csFWQzWs.js} +1 -1
  260. package/dist/public/assets/_csFWQzWs.js.br +0 -0
  261. package/dist/public/assets/_eURsGF_D.js +1 -0
  262. package/dist/public/assets/_fEPizk9T.js +1 -0
  263. package/dist/public/assets/{_DB7_Yora.js → _hC5RUmrf.js} +1 -1
  264. package/dist/public/assets/_hC5RUmrf.js.br +0 -0
  265. package/dist/public/assets/_hfgYVPfe.js +1 -0
  266. package/dist/public/assets/_i51v5tw8.js +1 -0
  267. package/dist/public/assets/{_CYcgwayF.js → _k1uZxEJ-.js} +1 -1
  268. package/dist/public/assets/_k1uZxEJ-.js.br +0 -0
  269. package/dist/public/assets/_l4nNKr9o.js +1 -0
  270. package/dist/public/assets/{_l9xpLTP_.js → _lA6BOkV1.js} +1 -1
  271. package/dist/public/assets/_lA6BOkV1.js.br +0 -0
  272. package/dist/public/assets/_qyrPXpIj.js +1 -0
  273. package/dist/public/assets/{_B2DHvTZR.js → _sLUOjXIk.js} +1 -1
  274. package/dist/public/assets/{_BLeLpnYL.js → _sjeWoc5X.js} +1 -1
  275. package/dist/public/assets/_sjeWoc5X.js.br +0 -0
  276. package/dist/public/assets/_tByKwKUc.js +1 -0
  277. package/dist/public/assets/{_BkHLXMjq.js → _tFVcmmKI.js} +1 -1
  278. package/dist/public/assets/_tFVcmmKI.js.br +0 -0
  279. package/dist/public/assets/{_oVsjszGq.js → _txvO7pXr.js} +1 -1
  280. package/dist/public/assets/_txvO7pXr.js.br +0 -0
  281. package/dist/public/assets/_um7Vy7NX.js +1 -0
  282. package/dist/public/assets/_veNUvOqP.js +1 -0
  283. package/dist/public/assets/{_BkGAUdMd.js → _w8hTnp0H.js} +1 -1
  284. package/dist/public/assets/_w8hTnp0H.js.br +0 -0
  285. package/dist/public/assets/_wGWNa6Sp.js +1 -0
  286. package/dist/public/assets/_wxbEv1JK.js +1 -0
  287. package/dist/public/assets/files-view-BOE5HTrF.js +2 -0
  288. package/dist/public/assets/manage-workspace-ClwsrQ4a.js +2 -0
  289. package/dist/public/assets/new-CJ6ZElay.js +1 -0
  290. package/dist/public/assets/new-workspace-DWSBO4Vx.js +2 -0
  291. package/dist/public/assets/review-view-DffAZHOz.js +2 -0
  292. package/dist/public/assets/settings-CJ6ZElay.js +1 -0
  293. package/dist/public/assets/settings-page-CYL_T3Vf.js +2 -0
  294. package/dist/public/assets/styles-taHUfRpm.css +1 -0
  295. package/dist/public/assets/styles-taHUfRpm.css.br +0 -0
  296. package/dist/public/assets/w-CJ6ZElay.js +1 -0
  297. package/dist/public/assets/w._-CJ6ZElay.js +1 -0
  298. package/dist/public/assets/w._-ChCIRlhY.js +1 -0
  299. package/dist/public/assets/w._-WsR2-skZ.js +1 -0
  300. package/lib/preview/media.d.mts +1 -1
  301. package/lib/preview/media.mjs +15 -2
  302. package/package.json +1 -1
  303. package/dist/_BAJGOEa1.js +0 -168
  304. package/dist/_t9VsALwo.js +0 -2
  305. package/dist/public/assets/_10dZ1R0m.js.br +0 -0
  306. package/dist/public/assets/_1EPD0XJG.js +0 -1
  307. package/dist/public/assets/_1jA3fFvQ.js +0 -1
  308. package/dist/public/assets/_4Sj6a8Ya.js +0 -1
  309. package/dist/public/assets/_4Sj6a8Ya.js.br +0 -0
  310. package/dist/public/assets/_5tN48iuJ.js.br +0 -0
  311. package/dist/public/assets/_8_DzkMgB.js.br +0 -0
  312. package/dist/public/assets/_9JG-F3GR.js.br +0 -0
  313. package/dist/public/assets/_9KUM3Nch.js +0 -2
  314. package/dist/public/assets/_9KUM3Nch.js.br +0 -0
  315. package/dist/public/assets/_B-H6ABVZ.js.br +0 -0
  316. package/dist/public/assets/_B-iOtMg6.js.br +0 -0
  317. package/dist/public/assets/_B0FhzjB2.js.br +0 -0
  318. package/dist/public/assets/_B26gPL08.js.br +0 -0
  319. package/dist/public/assets/_B3Z1kRpD.js.br +0 -0
  320. package/dist/public/assets/_B3sH8Usv.js +0 -1
  321. package/dist/public/assets/_B3sH8Usv.js.br +0 -0
  322. package/dist/public/assets/_B42hLH2K.js +0 -1
  323. package/dist/public/assets/_B4hn3NNW.js.br +0 -0
  324. package/dist/public/assets/_B5NleRC6.js.br +0 -0
  325. package/dist/public/assets/_B5fRGxPQ.js +0 -1
  326. package/dist/public/assets/_B5fRGxPQ.js.br +0 -0
  327. package/dist/public/assets/_B65yR5Ej.js +0 -1
  328. package/dist/public/assets/_B6Sh9WEH.js +0 -1
  329. package/dist/public/assets/_B6VtVybz.js.br +0 -0
  330. package/dist/public/assets/_B7rJ4n9b.js +0 -1
  331. package/dist/public/assets/_B8M-AD29.js +0 -1
  332. package/dist/public/assets/_B8joFpf1.js.br +0 -0
  333. package/dist/public/assets/_B9nA-Uh1.js +0 -1
  334. package/dist/public/assets/_B9nA-Uh1.js.br +0 -0
  335. package/dist/public/assets/_BA6X_Aj6.js +0 -1
  336. package/dist/public/assets/_BBFJV2Bx.js +0 -1
  337. package/dist/public/assets/_BCW5GFMW.js +0 -1
  338. package/dist/public/assets/_BD1SQU0V.js.br +0 -0
  339. package/dist/public/assets/_BEpd9Y1R.js +0 -1
  340. package/dist/public/assets/_BEy7R4W_.js +0 -1
  341. package/dist/public/assets/_BFGJOHQb.js +0 -1
  342. package/dist/public/assets/_BI45WgW9.js.br +0 -0
  343. package/dist/public/assets/_BIKvQKWe.js +0 -1
  344. package/dist/public/assets/_BIPnL2aI.js +0 -1
  345. package/dist/public/assets/_BIUaA4Nl.js.br +0 -0
  346. package/dist/public/assets/_BJpBnuvv.js.br +0 -0
  347. package/dist/public/assets/_BLeLpnYL.js.br +0 -0
  348. package/dist/public/assets/_BMb5ANTv.js +0 -1
  349. package/dist/public/assets/_BSRsPQTe.js.br +0 -0
  350. package/dist/public/assets/_BVuerXin.js +0 -6
  351. package/dist/public/assets/_BVuerXin.js.br +0 -0
  352. package/dist/public/assets/_BWV8aSlZ.js +0 -1
  353. package/dist/public/assets/_BXHggM8M.js.br +0 -0
  354. package/dist/public/assets/_BXPUZfKX.js.br +0 -0
  355. package/dist/public/assets/_BYebhygn.js +0 -1
  356. package/dist/public/assets/_BZgCxd-U.js +0 -1
  357. package/dist/public/assets/_BZgCxd-U.js.br +0 -0
  358. package/dist/public/assets/_B_W51WxU.js +0 -1
  359. package/dist/public/assets/_B_jFFNyT.js +0 -1
  360. package/dist/public/assets/_Ba9OQzPV.js +0 -1
  361. package/dist/public/assets/_Ba9OQzPV.js.br +0 -0
  362. package/dist/public/assets/_BayiY7GU.js +0 -1
  363. package/dist/public/assets/_BcDMeS82.js +0 -1
  364. package/dist/public/assets/_BdD1sZp_.js +0 -1
  365. package/dist/public/assets/_Bg_WwlL2.js +0 -1
  366. package/dist/public/assets/_BhHzv4g0.js +0 -1
  367. package/dist/public/assets/_BjEinMEe.js +0 -1
  368. package/dist/public/assets/_BjEinMEe.js.br +0 -0
  369. package/dist/public/assets/_BkGAUdMd.js.br +0 -0
  370. package/dist/public/assets/_BkHLXMjq.js.br +0 -0
  371. package/dist/public/assets/_BmSWsZvV.js +0 -1
  372. package/dist/public/assets/_Bn6y2_ex.js +0 -1
  373. package/dist/public/assets/_Bn6y2_ex.js.br +0 -0
  374. package/dist/public/assets/_Bp2gqUaf.js +0 -1
  375. package/dist/public/assets/_Bs6oYKkD.js +0 -1
  376. package/dist/public/assets/_Bs_MPTBZ.js.br +0 -0
  377. package/dist/public/assets/_Bt13j1ev.js +0 -1
  378. package/dist/public/assets/_BwlnYt-t.js +0 -1
  379. package/dist/public/assets/_Bx9aUXTG.js +0 -1
  380. package/dist/public/assets/_BxKDE6Ct.js.br +0 -0
  381. package/dist/public/assets/_BymFDqKj.js +0 -1
  382. package/dist/public/assets/_C-z8Ntse.js.br +0 -0
  383. package/dist/public/assets/_C0XUbqWe.js +0 -1
  384. package/dist/public/assets/_C1upDwBv.js +0 -1
  385. package/dist/public/assets/_C3f4huqn.js +0 -1
  386. package/dist/public/assets/_C46o3wQ8.js.br +0 -0
  387. package/dist/public/assets/_C4_3qKLX.js +0 -1
  388. package/dist/public/assets/_C7tG4xwv.js +0 -1
  389. package/dist/public/assets/_C8LciIOa.js +0 -1
  390. package/dist/public/assets/_C9k00otG.js.br +0 -0
  391. package/dist/public/assets/_CBG92pZO.js +0 -1
  392. package/dist/public/assets/_CBfI2lSr.js +0 -1
  393. package/dist/public/assets/_CFKwHn62.js +0 -1
  394. package/dist/public/assets/_CFKwHn62.js.br +0 -0
  395. package/dist/public/assets/_CHDvRNgn.js +0 -1
  396. package/dist/public/assets/_CIDjLk1A.js.br +0 -0
  397. package/dist/public/assets/_CLV83hY7.js.br +0 -0
  398. package/dist/public/assets/_CO8ZosDU.js +0 -1
  399. package/dist/public/assets/_CPqT91JX.js.br +0 -0
  400. package/dist/public/assets/_CRZ03hrO.js +0 -1
  401. package/dist/public/assets/_CUKvJRmi.js +0 -1
  402. package/dist/public/assets/_CU_FKEsy.js +0 -1
  403. package/dist/public/assets/_CUxBk_RE.js.br +0 -0
  404. package/dist/public/assets/_CW_vyZfo.js +0 -1
  405. package/dist/public/assets/_CX5VOdNU.js.br +0 -0
  406. package/dist/public/assets/_CYcgwayF.js.br +0 -0
  407. package/dist/public/assets/_CZsqsL_m.js.br +0 -0
  408. package/dist/public/assets/_C_a8QggH.js +0 -1
  409. package/dist/public/assets/_C_ymFHNL.js +0 -1
  410. package/dist/public/assets/_CaU4irFc.js +0 -1
  411. package/dist/public/assets/_Cb3fSi2R.js +0 -1
  412. package/dist/public/assets/_CcINcTUt.js.br +0 -0
  413. package/dist/public/assets/_CcflXOTj.js.br +0 -0
  414. package/dist/public/assets/_Cfts4mFJ.js.br +0 -0
  415. package/dist/public/assets/_ClHeQc6g.js.br +0 -0
  416. package/dist/public/assets/_CnSlVcEh.js +0 -1
  417. package/dist/public/assets/_Co71-HWR.js +0 -1
  418. package/dist/public/assets/_CpEeHKyF.js +0 -1
  419. package/dist/public/assets/_CpVeIwQ4.js.br +0 -0
  420. package/dist/public/assets/_Cq4DpL3R.js.br +0 -0
  421. package/dist/public/assets/_CvxsvMFa.js +0 -1
  422. package/dist/public/assets/_Cwdn40Q2.js +0 -1
  423. package/dist/public/assets/_Cwdn40Q2.js.br +0 -0
  424. package/dist/public/assets/_CzN0wC_5.js +0 -16
  425. package/dist/public/assets/_CzN0wC_5.js.br +0 -0
  426. package/dist/public/assets/_D3ieGLoq.js +0 -1
  427. package/dist/public/assets/_D4wF26fk.js +0 -1
  428. package/dist/public/assets/_D9a9nY1Q.js +0 -1
  429. package/dist/public/assets/_DB7_Yora.js.br +0 -0
  430. package/dist/public/assets/_DDWIDZyP.js.br +0 -0
  431. package/dist/public/assets/_DG3L8-RO.js.br +0 -0
  432. package/dist/public/assets/_DGRgLaG-.js.br +0 -0
  433. package/dist/public/assets/_DG_QOtsx.js.br +0 -0
  434. package/dist/public/assets/_DHYIZWev.js.br +0 -0
  435. package/dist/public/assets/_DJwY_zBh.js.br +0 -0
  436. package/dist/public/assets/_DKlB-yMq.js.br +0 -0
  437. package/dist/public/assets/_DMCVOg7x.js.br +0 -0
  438. package/dist/public/assets/_DMXnrdYy.js +0 -1
  439. package/dist/public/assets/_DMXnrdYy.js.br +0 -0
  440. package/dist/public/assets/_DNrRZhO7.js.br +0 -0
  441. package/dist/public/assets/_DPdb5l-Z.js +0 -1
  442. package/dist/public/assets/_DRpsUHP5.js.br +0 -0
  443. package/dist/public/assets/_DUH5o_iN.js.br +0 -0
  444. package/dist/public/assets/_DUmYv8Kf.js.br +0 -0
  445. package/dist/public/assets/_DXvsvUmJ.js.br +0 -0
  446. package/dist/public/assets/_DYxQeog7.js.br +0 -0
  447. package/dist/public/assets/_DZIDdpeW.js +0 -1
  448. package/dist/public/assets/_DZqoQxTm.js.br +0 -0
  449. package/dist/public/assets/_D_4RJnk0.js +0 -2
  450. package/dist/public/assets/_D_4RJnk0.js.br +0 -0
  451. package/dist/public/assets/_DclJXqwW.js +0 -1
  452. package/dist/public/assets/_Debmjz1c.js +0 -1
  453. package/dist/public/assets/_DeiCZCO_.js +0 -1
  454. package/dist/public/assets/_Df-N1G_n.js.br +0 -0
  455. package/dist/public/assets/_Df_3rEok.js +0 -86
  456. package/dist/public/assets/_Df_3rEok.js.br +0 -0
  457. package/dist/public/assets/_DjYscMjF.js.br +0 -0
  458. package/dist/public/assets/_Dku55Ypt.js.br +0 -0
  459. package/dist/public/assets/_Dm8TVkBX.js +0 -1
  460. package/dist/public/assets/_DoOPrRIy.js +0 -1
  461. package/dist/public/assets/_DqJvxlYV.js +0 -1
  462. package/dist/public/assets/_Drle66GA.js +0 -1
  463. package/dist/public/assets/_DtrvrAfl.js +0 -1
  464. package/dist/public/assets/_DwTaEsY5.js +0 -1
  465. package/dist/public/assets/_DwTaEsY5.js.br +0 -0
  466. package/dist/public/assets/_Dypj9l-z.js +0 -1
  467. package/dist/public/assets/_DyvwMfCp.js +0 -1
  468. package/dist/public/assets/_GK8r-gEu.js.br +0 -0
  469. package/dist/public/assets/_HpxvfbM2.js.br +0 -0
  470. package/dist/public/assets/_RudCGuBM.js.br +0 -0
  471. package/dist/public/assets/_UbfI3k4y.js +0 -1
  472. package/dist/public/assets/_WOU8TCkO.js.br +0 -0
  473. package/dist/public/assets/_XWw1j8vS.js.br +0 -0
  474. package/dist/public/assets/_YDyNvOET.js.br +0 -0
  475. package/dist/public/assets/_ahCaQNeo.js.br +0 -0
  476. package/dist/public/assets/_f8D86HXZ.js.br +0 -0
  477. package/dist/public/assets/_hbXd8Ogo.js.br +0 -0
  478. package/dist/public/assets/_i6YkSowH.js.br +0 -0
  479. package/dist/public/assets/_k1ciacDf.js +0 -1
  480. package/dist/public/assets/_k6nXIP-i.js +0 -1
  481. package/dist/public/assets/_keX09TNx.js +0 -1
  482. package/dist/public/assets/_l9xpLTP_.js.br +0 -0
  483. package/dist/public/assets/_n9Rb26YX.js +0 -1
  484. package/dist/public/assets/_o8mJsMHw.js.br +0 -0
  485. package/dist/public/assets/_oVsjszGq.js.br +0 -0
  486. package/dist/public/assets/_pM8W420Q.js +0 -1
  487. package/dist/public/assets/_rv9KtZHz.js.br +0 -0
  488. package/dist/public/assets/_sSKEak2x.js.br +0 -0
  489. package/dist/public/assets/_tJgkkxOD.js.br +0 -0
  490. package/dist/public/assets/_uP3LGOtV.js +0 -1
  491. package/dist/public/assets/_vG7bXn-C.js.br +0 -0
  492. package/dist/public/assets/_vHqiFYsh.js.br +0 -0
  493. package/dist/public/assets/_vXJ7nP0d.js +0 -1
  494. package/dist/public/assets/_wvhU__5f.js +0 -1
  495. package/dist/public/assets/_xFMpRp_e.js +0 -1
  496. package/dist/public/assets/_yXimF5vw.js +0 -1
  497. package/dist/public/assets/files-view-BennlUmP.js +0 -2
  498. package/dist/public/assets/manage-workspace-CaESLJdc.js +0 -2
  499. package/dist/public/assets/new-BNH4m99d.js +0 -1
  500. package/dist/public/assets/new-workspace-CwiZjHNn.js +0 -2
  501. package/dist/public/assets/review-view-BdbMyVt7.js +0 -2
  502. package/dist/public/assets/settings-BNH4m99d.js +0 -1
  503. package/dist/public/assets/settings-page-CU3aC70Q.js +0 -2
  504. package/dist/public/assets/styles-ctr-Sxsj.css +0 -1
  505. package/dist/public/assets/styles-ctr-Sxsj.css.br +0 -0
  506. package/dist/public/assets/w-BNH4m99d.js +0 -1
  507. package/dist/public/assets/w._-BNH4m99d.js +0 -1
  508. package/dist/public/assets/w._-CLYxMMR4.js +0 -1
  509. package/dist/public/assets/w._-_w8eUYMy.js +0 -1
@@ -0,0 +1,2 @@
1
+ import { y as notifySessionsChanged } from "./_Hb3LeA5Q.js";
2
+ export { notifySessionsChanged };
@@ -0,0 +1,2 @@
1
+ import { p as teamsOf } from "./_C9c_BxRk.js";
2
+ export { teamsOf };
@@ -478,6 +478,99 @@ var STEPS = [
478
478
  up(db) {
479
479
  db.exec("DELETE FROM settings WHERE key = 'ui.term-predict'");
480
480
  }
481
+ },
482
+ {
483
+ version: 4,
484
+ name: "session messages",
485
+ up(db) {
486
+ db.exec(`
487
+ ALTER TABLE sessions ADD COLUMN parent_id TEXT REFERENCES sessions(id) ON DELETE SET NULL;
488
+
489
+ CREATE TABLE session_messages (
490
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
491
+ to_session TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
492
+ from_session TEXT,
493
+ from_label TEXT,
494
+ kind TEXT NOT NULL CHECK (kind IN ('message', 'reply', 'closed')),
495
+ body TEXT NOT NULL,
496
+ wants_reply INTEGER NOT NULL DEFAULT 0,
497
+ created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
498
+ delivered_at TEXT
499
+ );
500
+
501
+ CREATE INDEX session_messages_to ON session_messages(to_session);
502
+ CREATE INDEX session_messages_from ON session_messages(from_session);
503
+ `);
504
+ }
505
+ },
506
+ {
507
+ version: 5,
508
+ name: "session teams",
509
+ up(db) {
510
+ db.exec(`
511
+ ALTER TABLE sessions ADD COLUMN launch_dir TEXT;
512
+ ALTER TABLE sessions ADD COLUMN launch_mode TEXT;
513
+ ALTER TABLE sessions ADD COLUMN summary TEXT;
514
+ ALTER TABLE sessions ADD COLUMN keep INTEGER NOT NULL DEFAULT 0;
515
+ ALTER TABLE sessions ADD COLUMN answered_at TEXT;
516
+ UPDATE sessions SET answered_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
517
+ WHERE parent_id IS NOT NULL
518
+ AND id NOT IN (SELECT to_session FROM session_messages);
519
+
520
+ CREATE TABLE plans (
521
+ id TEXT PRIMARY KEY,
522
+ workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
523
+ owner TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
524
+ name TEXT NOT NULL,
525
+ phases TEXT NOT NULL DEFAULT '[]',
526
+ created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
527
+ done_at TEXT
528
+ );
529
+
530
+ CREATE TABLE plan_log (
531
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
532
+ plan_id TEXT NOT NULL REFERENCES plans(id) ON DELETE CASCADE,
533
+ text TEXT NOT NULL,
534
+ at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
535
+ );
536
+
537
+ CREATE TABLE session_groups (
538
+ id TEXT PRIMARY KEY,
539
+ workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
540
+ owner TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
541
+ plan_id TEXT REFERENCES plans(id) ON DELETE SET NULL,
542
+ phase TEXT,
543
+ title TEXT NOT NULL,
544
+ parallel INTEGER NOT NULL DEFAULT 4,
545
+ fan_in INTEGER NOT NULL DEFAULT 1,
546
+ close_done INTEGER NOT NULL DEFAULT 0,
547
+ keep INTEGER NOT NULL DEFAULT 0,
548
+ created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
549
+ );
550
+
551
+ CREATE TABLE group_members (
552
+ id TEXT PRIMARY KEY,
553
+ group_id TEXT NOT NULL REFERENCES session_groups(id) ON DELETE CASCADE,
554
+ ord INTEGER NOT NULL,
555
+ session_id TEXT REFERENCES sessions(id) ON DELETE SET NULL,
556
+ agent TEXT NOT NULL,
557
+ title TEXT NOT NULL,
558
+ prompt TEXT NOT NULL,
559
+ launch_dir TEXT,
560
+ state TEXT NOT NULL DEFAULT 'queued' CHECK (state IN ('queued', 'running', 'done', 'closed')),
561
+ note TEXT,
562
+ summary TEXT,
563
+ attempts INTEGER NOT NULL DEFAULT 0,
564
+ started_at TEXT,
565
+ done_at TEXT
566
+ );
567
+
568
+ CREATE INDEX group_members_group ON group_members(group_id);
569
+ CREATE INDEX group_members_session ON group_members(session_id);
570
+
571
+ ALTER TABLE session_messages ADD COLUMN group_id TEXT REFERENCES session_groups(id) ON DELETE SET NULL;
572
+ `);
573
+ }
481
574
  }
482
575
  ];
483
576
  var LATEST = STEPS.at(-1).version;
@@ -8215,6 +8308,26 @@ var interruptedAt = /* @__PURE__ */ new Map();
8215
8308
  * finished: the session is working until a turn ends with none left, and
8216
8309
  * that end is the one pushed. */
8217
8310
  var background = /* @__PURE__ */ new Map();
8311
+ /** Each session's last finished turn's message, whole: what a session
8312
+ * that messaged it gets back (server/messages). */
8313
+ var lastMessages = /* @__PURE__ */ new Map();
8314
+ /** Sessions a message is still to wake (server/messages keeps the set):
8315
+ * each asked another something not yet answered, or has one waiting to
8316
+ * be typed in. Like background work, that makes the session working, and
8317
+ * a turn of it that ends meanwhile has handed off rather than finished. */
8318
+ var expecting = /* @__PURE__ */ new Set();
8319
+ /** When someone last typed into each session's pane from a page. */
8320
+ var typedAt = /* @__PURE__ */ new Map();
8321
+ /** What each session's turn is doing, from its last tool call ("Bash:
8322
+ * pnpm test"): the line a team view shows for a member at work. */
8323
+ var activities = /* @__PURE__ */ new Map();
8324
+ /** Each session's permission mode, as its hooks last reported it
8325
+ * (`permission_mode`): what a session it starts runs in. */
8326
+ var modes = /* @__PURE__ */ new Map();
8327
+ /** Told when a session's job is done (`onFinished`). */
8328
+ var finishedListeners = /* @__PURE__ */ new Set();
8329
+ /** Told of each turn's end that stayed the end (`onTurnEnd`). */
8330
+ var turnEndListeners = /* @__PURE__ */ new Set();
8218
8331
  /** A turn's end is pushed once it has stayed ended this long. Stop fires
8219
8332
  * again each time something sends the agent back to work (a stop hook
8220
8333
  * that continues it, a goal loop, background subagents reporting in), and
@@ -8225,7 +8338,7 @@ var listeners = /* @__PURE__ */ new Set();
8225
8338
  function onPhaseChange(fn) {
8226
8339
  listeners.add(fn);
8227
8340
  }
8228
- function setAgentPhase(sessionId, phase, reason, summary) {
8341
+ function setAgentPhase(sessionId, phase, reason, summary, message) {
8229
8342
  reportedAt.set(sessionId, Date.now());
8230
8343
  cancelDone(sessionId);
8231
8344
  if (phase === "idle") {
@@ -8235,10 +8348,17 @@ function setAgentPhase(sessionId, phase, reason, summary) {
8235
8348
  if (phase === "waiting" && reason === "done") {
8236
8349
  const failed = phases.get(sessionId) === "waiting" && reasons.get(sessionId) === "attention";
8237
8350
  if (summary) summaries.set(sessionId, summary);
8351
+ activities.delete(sessionId);
8352
+ if (message) lastMessages.set(sessionId, message);
8353
+ else lastMessages.delete(sessionId);
8238
8354
  if (phases.has(sessionId)) applyChange(sessionId, () => dropHook(sessionId));
8239
- if (!failed && !background.has(sessionId)) pendingDone.set(sessionId, setTimeout(() => {
8355
+ if (!background.has(sessionId)) pendingDone.set(sessionId, setTimeout(() => {
8240
8356
  pendingDone.delete(sessionId);
8241
- notify(sessionId, "done");
8357
+ const answered = endTurn(sessionId);
8358
+ if (!failed && !answered && !expecting.has(sessionId)) {
8359
+ for (const fn of finishedListeners) fn(sessionId);
8360
+ notify(sessionId, "done");
8361
+ }
8242
8362
  }, DONE_SETTLE_MS));
8243
8363
  return;
8244
8364
  }
@@ -8273,6 +8393,62 @@ function noteBackground(sessionId, work) {
8273
8393
  else background.delete(sessionId);
8274
8394
  });
8275
8395
  }
8396
+ /** A turn's end once it has stayed the end (`DONE_SETTLE_MS`), with its
8397
+ * last message (undefined: the CLI reports none). A listener returns
8398
+ * whether it passed the end on to another session. */
8399
+ function onTurnEnd(fn) {
8400
+ turnEndListeners.add(fn);
8401
+ }
8402
+ function endTurn(sessionId) {
8403
+ let told = false;
8404
+ for (const fn of turnEndListeners) told = fn(sessionId, lastMessages.get(sessionId)) || told;
8405
+ return told;
8406
+ }
8407
+ /** A session's job is done: its turn ended and stayed ended, answering
8408
+ * nobody, with nothing it waits on — the moment a Finished is pushed. */
8409
+ function onFinished(fn) {
8410
+ finishedListeners.add(fn);
8411
+ }
8412
+ /** A turn's end still waiting out `DONE_SETTLE_MS`: it may yet carry on. */
8413
+ function turnSettling(sessionId) {
8414
+ return pendingDone.has(sessionId);
8415
+ }
8416
+ /** The sessions a message is still to wake (server/messages). */
8417
+ function setExpecting(ids) {
8418
+ for (const id of /* @__PURE__ */ new Set([...expecting, ...ids])) {
8419
+ if (expecting.has(id) === ids.has(id)) continue;
8420
+ applyChange(id, () => {
8421
+ if (ids.has(id)) expecting.add(id);
8422
+ else expecting.delete(id);
8423
+ });
8424
+ }
8425
+ }
8426
+ /** A hook's `permission_mode`: the mode the session is in now (a CLI's
8427
+ * own toggle can move it mid-session). */
8428
+ function notePermissionMode(sessionId, mode) {
8429
+ modes.set(sessionId, mode);
8430
+ }
8431
+ function permissionMode(sessionId) {
8432
+ return modes.get(sessionId);
8433
+ }
8434
+ /** The line its hooks last gave a wait or a turn's end (what a push says). */
8435
+ function summaryOf(sessionId) {
8436
+ return summaries.get(sessionId);
8437
+ }
8438
+ function noteActivity(sessionId, text) {
8439
+ activities.set(sessionId, text);
8440
+ }
8441
+ function activityOf(sessionId) {
8442
+ return activities.get(sessionId);
8443
+ }
8444
+ /** Someone typed into the session's pane from a page. */
8445
+ function noteTyped(sessionId) {
8446
+ typedAt.set(sessionId, Date.now());
8447
+ }
8448
+ /** When someone last typed into the session's pane (0: not this run). */
8449
+ function lastTypedAt(sessionId) {
8450
+ return typedAt.get(sessionId) ?? 0;
8451
+ }
8276
8452
  function cancelDone(sessionId) {
8277
8453
  const timer = pendingDone.get(sessionId);
8278
8454
  if (!timer) return;
@@ -8352,9 +8528,13 @@ function sessionWatched(sessionId) {
8352
8528
  return (viewers.get(sessionId) ?? 0) > 0;
8353
8529
  }
8354
8530
  async function notify(sessionId, reason) {
8355
- const row = get(`SELECT s.agent, s.title, s.workspace_id, w.name FROM sessions s
8356
- JOIN workspaces w ON w.id = s.workspace_id WHERE s.id = ?`, sessionId);
8531
+ const row = get(`SELECT s.agent, s.title, s.workspace_id, w.name,
8532
+ p.agent AS parent_agent, p.title AS parent_title
8533
+ FROM sessions s JOIN workspaces w ON w.id = s.workspace_id
8534
+ LEFT JOIN sessions p ON p.id = s.parent_id WHERE s.id = ?`, sessionId);
8357
8535
  if (!row) return;
8536
+ const parent = row.parent_agent ? `${row.parent_title || agentLabel(row.parent_agent)} › ` : "";
8537
+ if (parent && reason === "done") return;
8358
8538
  if ((viewers.get(sessionId) ?? 0) > 0) return;
8359
8539
  if (!notifyOn(reason)) return;
8360
8540
  const waiting = [.../* @__PURE__ */ new Set([...phases.keys(), ...scraped.keys()])].filter((id) => agentPhase(id) === "waiting").length;
@@ -8362,7 +8542,7 @@ async function notify(sessionId, reason) {
8362
8542
  const mark = reason === "done" ? "✔" : "⚠";
8363
8543
  const inst = getInstance().name;
8364
8544
  sendPush({
8365
- title: `${mark} ${inst ? `${inst} · ` : ""}${row.name} · ${row.title || agentLabel(row.agent)}`,
8545
+ title: `${mark} ${inst ? `${inst} · ` : ""}${row.name} · ${parent}${row.title || agentLabel(row.agent)}`,
8366
8546
  body: summary || (reason === "done" ? "Finished" : "Needs you"),
8367
8547
  tag: `session-${sessionId}`,
8368
8548
  badge: waiting,
@@ -8377,6 +8557,10 @@ async function notify(sessionId, reason) {
8377
8557
  function clearAgentPhase(sessionId) {
8378
8558
  cancelDone(sessionId);
8379
8559
  summaries.delete(sessionId);
8560
+ lastMessages.delete(sessionId);
8561
+ typedAt.delete(sessionId);
8562
+ modes.delete(sessionId);
8563
+ activities.delete(sessionId);
8380
8564
  reportedAt.delete(sessionId);
8381
8565
  interruptedAt.delete(sessionId);
8382
8566
  if (!phases.has(sessionId) && !scraped.has(sessionId) && !background.has(sessionId)) return;
@@ -8387,11 +8571,17 @@ function clearAgentPhase(sessionId) {
8387
8571
  background.delete(sessionId);
8388
8572
  });
8389
8573
  }
8390
- /** What a session is doing. The hook wins where there is one: it reports
8391
- * the turn itself, where tmux only sees the pane still moving after it. */
8392
- function agentPhase(sessionId) {
8574
+ /** What a session's own turn is doing. The hook wins where there is one:
8575
+ * it reports the turn itself, where tmux only sees the pane still moving
8576
+ * after it. Undefined: at its prompt, where a message can be typed in. */
8577
+ function turnPhase(sessionId) {
8393
8578
  return hookPhase(sessionId) ?? scraped.get(sessionId);
8394
8579
  }
8580
+ /** What a session is doing: its turn, else working while a message is
8581
+ * still to wake it — a session that handed work to another is not done. */
8582
+ function agentPhase(sessionId) {
8583
+ return turnPhase(sessionId) ?? (expecting.has(sessionId) ? "working" : void 0);
8584
+ }
8395
8585
  /** Apply a mutation and broadcast when it moved the session's phase (or,
8396
8586
  * `force`, its reason: finished and blocked draw differently). Only a
8397
8587
  * hook ever reports "waiting", so a transition into it is a push. */
@@ -8408,12 +8598,53 @@ function publishChange(sessionId) {
8408
8598
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
8409
8599
  if (row?.workspace_id) {
8410
8600
  const workspaceId = row.workspace_id;
8411
- import("./_t9VsALwo.js").then((m) => m.notifySessionsChanged(workspaceId));
8601
+ import("./_DrEeyoLF.js").then((m) => m.notifySessionsChanged(workspaceId));
8412
8602
  return;
8413
8603
  }
8414
8604
  publish("sessions.changed");
8415
8605
  }
8416
8606
  //#endregion
8607
+ //#region src/server/paths.ts
8608
+ /** Whether `target` is `root` or somewhere under it, by name alone. Both
8609
+ * are normalised first, so `..` and a trailing slash count as the
8610
+ * filesystem would count them, and the separator after `root` is the
8611
+ * whole point: a sibling `…/work-2` is not in `…/work`. A relative
8612
+ * `target` is in nothing — an empty one is a process cwd that could not
8613
+ * be read, not the root. A symlink under `root` can still lead out: what
8614
+ * is read through one wants `realInside`. */
8615
+ function inside(target, root) {
8616
+ if (!path.isAbsolute(target)) return false;
8617
+ const top = path.resolve(root);
8618
+ const full = path.resolve(target);
8619
+ return full === top || full.startsWith(top.endsWith(path.sep) ? top : top + path.sep);
8620
+ }
8621
+ /** Where `file` — named from `root`, as git and the pages name a
8622
+ * checkout's files, or absolute — really leads through every symlink,
8623
+ * when that is still `root` or under it; null when it leads out or is not
8624
+ * there. The check by name alone lets a symlink in a repo, which a branch
8625
+ * can add, point a read at any file on the machine. */
8626
+ async function realInside(file, root) {
8627
+ const full = path.resolve(root, file);
8628
+ if (!inside(full, root)) return null;
8629
+ try {
8630
+ const [top, real] = await Promise.all([fs$1.realpath(root), fs$1.realpath(full)]);
8631
+ return inside(real, top) ? real : null;
8632
+ } catch {
8633
+ return null;
8634
+ }
8635
+ }
8636
+ /** `realInside` for a caller that cannot wait. */
8637
+ function realInsideSync(file, root) {
8638
+ const full = path.resolve(root, file);
8639
+ if (!inside(full, root)) return null;
8640
+ try {
8641
+ const real = fs.realpathSync(full);
8642
+ return inside(real, fs.realpathSync(root)) ? real : null;
8643
+ } catch {
8644
+ return null;
8645
+ }
8646
+ }
8647
+ //#endregion
8417
8648
  //#region src/agents/hooks.ts
8418
8649
  /** Shell command a CLI hook runs to report a state: POSTs the hook's own
8419
8650
  * stdin JSON to the app, which mines it for a notification summary. `exit 0`
@@ -8472,7 +8703,8 @@ function readClaudeStyle(p, reported) {
8472
8703
  const text = str$1(p.last_assistant_message) || str$1(p["last-assistant-message"]) || str$1(p.lastAssistantMessage);
8473
8704
  if (text) return {
8474
8705
  reason,
8475
- summary: cleanSummary(text)
8706
+ summary: cleanSummary(text),
8707
+ message: text
8476
8708
  };
8477
8709
  if (kind) return {
8478
8710
  reason,
@@ -8940,6 +9172,15 @@ var QUESTION_TOOL$1 = "AskUserQuestion";
8940
9172
  * wait as the lead's own prompt. Claude's own notification type, beside
8941
9173
  * the shared ones. */
8942
9174
  var WORKER_PERMISSION = "worker_permission_prompt";
9175
+ /** The modes `--permission-mode` takes; `default` is no flag at all. */
9176
+ var MODES = /* @__PURE__ */ new Set([
9177
+ "acceptEdits",
9178
+ "auto",
9179
+ "bypassPermissions",
9180
+ "manual",
9181
+ "dontAsk",
9182
+ "plan"
9183
+ ]);
8943
9184
  /** How StopFailure's `error` reads on a phone. */
8944
9185
  var FAILURES = {
8945
9186
  authentication_failed: "Signed out",
@@ -9084,10 +9325,14 @@ var claude = {
9084
9325
  ]
9085
9326
  ]) })],
9086
9327
  reportsWorking: () => true,
9328
+ modeFlags: (mode) => MODES.has(mode) ? ["--permission-mode", mode] : [],
9087
9329
  envPrefixes: ["CLAUDE", "AI_AGENT"],
9088
9330
  startupQuestions: [{
9089
9331
  screen: /Is this a project you created or one you trust/,
9090
9332
  asks: "whether to trust this folder"
9333
+ }, {
9334
+ screen: /running in Bypass Permissions mode[\s\S]*Yes, I accept/,
9335
+ asks: "whether to accept Bypass Permissions mode"
9091
9336
  }],
9092
9337
  readHook: readHook$6,
9093
9338
  usage: () => Promise.all(claudeAccounts().map((account) => claudeRow(account)))
@@ -9503,7 +9748,10 @@ function readHook$4(p, reported, _state) {
9503
9748
  };
9504
9749
  }
9505
9750
  const read = readClaudeStyle(p, reported);
9506
- if (!read.summary && reported === "done") read.summary = lastMessageFromTranscript(p);
9751
+ if (!read.summary && reported === "done") {
9752
+ read.message = lastMessageFromTranscript(p);
9753
+ if (read.message) read.summary = cleanSummary(read.message);
9754
+ }
9507
9755
  return read;
9508
9756
  }
9509
9757
  /** The last non-empty `assistant.message` of the turn that just ended in
@@ -9527,7 +9775,7 @@ function lastMessageFromTranscript(p) {
9527
9775
  try {
9528
9776
  const ev = JSON.parse(lines[i]);
9529
9777
  const content = ev.type === "assistant.message" ? ev.data?.content : void 0;
9530
- if (typeof content === "string" && content.trim()) return cleanSummary(content);
9778
+ if (typeof content === "string" && content.trim()) return content.trim();
9531
9779
  } catch {}
9532
9780
  }
9533
9781
  } finally {
@@ -9722,47 +9970,6 @@ var cursor = {
9722
9970
  usage: () => cursorRow().then((row) => [row])
9723
9971
  };
9724
9972
  //#endregion
9725
- //#region src/server/paths.ts
9726
- /** Whether `target` is `root` or somewhere under it, by name alone. Both
9727
- * are normalised first, so `..` and a trailing slash count as the
9728
- * filesystem would count them, and the separator after `root` is the
9729
- * whole point: a sibling `…/work-2` is not in `…/work`. A relative
9730
- * `target` is in nothing — an empty one is a process cwd that could not
9731
- * be read, not the root. A symlink under `root` can still lead out: what
9732
- * is read through one wants `realInside`. */
9733
- function inside(target, root) {
9734
- if (!path.isAbsolute(target)) return false;
9735
- const top = path.resolve(root);
9736
- const full = path.resolve(target);
9737
- return full === top || full.startsWith(top.endsWith(path.sep) ? top : top + path.sep);
9738
- }
9739
- /** Where `file` — named from `root`, as git and the pages name a
9740
- * checkout's files, or absolute — really leads through every symlink,
9741
- * when that is still `root` or under it; null when it leads out or is not
9742
- * there. The check by name alone lets a symlink in a repo, which a branch
9743
- * can add, point a read at any file on the machine. */
9744
- async function realInside(file, root) {
9745
- const full = path.resolve(root, file);
9746
- if (!inside(full, root)) return null;
9747
- try {
9748
- const [top, real] = await Promise.all([fs$1.realpath(root), fs$1.realpath(full)]);
9749
- return inside(real, top) ? real : null;
9750
- } catch {
9751
- return null;
9752
- }
9753
- }
9754
- /** `realInside` for a caller that cannot wait. */
9755
- function realInsideSync(file, root) {
9756
- const full = path.resolve(root, file);
9757
- if (!inside(full, root)) return null;
9758
- try {
9759
- const real = fs.realpathSync(full);
9760
- return inside(real, fs.realpathSync(root)) ? real : null;
9761
- } catch {
9762
- return null;
9763
- }
9764
- }
9765
- //#endregion
9766
9973
  //#region src/agents/grok/usage.ts
9767
9974
  var AUTH = path.join(HOME, ".grok", "auth.json");
9768
9975
  var LOG = path.join(HOME, ".grok", "logs", "unified.jsonl");
@@ -10215,7 +10422,8 @@ function readHook$1(p, reported) {
10215
10422
  const summary = str$1(p.summary);
10216
10423
  return {
10217
10424
  reason: reported,
10218
- summary: summary ? cleanSummary(summary) : void 0
10425
+ summary: summary ? cleanSummary(summary) : void 0,
10426
+ message: summary || void 0
10219
10427
  };
10220
10428
  }
10221
10429
  var opencode = {
@@ -10323,7 +10531,8 @@ function readHook(p, reported) {
10323
10531
  const summary = str$1(p.summary);
10324
10532
  return {
10325
10533
  reason: reported,
10326
- summary: summary ? cleanSummary(summary) : void 0
10534
+ summary: summary ? cleanSummary(summary) : void 0,
10535
+ message: summary || void 0
10327
10536
  };
10328
10537
  }
10329
10538
  //#endregion
@@ -10355,6 +10564,10 @@ function agentFor(id) {
10355
10564
  function agentLaunchFlags(id, ctx) {
10356
10565
  return agentFor(id)?.launchFlags?.(ctx) ?? [];
10357
10566
  }
10567
+ /** Argv that starts an instance in a permission mode (`modeFlags`). */
10568
+ function agentModeFlags(id, mode) {
10569
+ return mode ? agentFor(id)?.modeFlags?.(mode) ?? [] : [];
10570
+ }
10358
10571
  /** Env for a spawned pane so the agent CLI reports state — the families
10359
10572
  * configured by environment rather than argv. */
10360
10573
  function agentLaunchEnv(id, ctx) {
@@ -10410,14 +10623,17 @@ function getSession(id) {
10410
10623
  * workspace at once (restored tabs, a phone and a desktop) both list no
10411
10624
  * sessions before either POST lands. The check and the insert run in one
10412
10625
  * synchronous step, so the second gets the first one's session. */
10413
- function createSession(workspaceId, agent, ifEmpty = false) {
10626
+ function createSession(workspaceId, agent, ifEmpty = false, start = {}) {
10414
10627
  if (!isKnownAgent(agent)) throw new Error(`unknown session kind: ${agent}`);
10415
10628
  if (ifEmpty) {
10416
10629
  const first = listSessions(workspaceId)[0];
10417
10630
  if (first) return first;
10418
10631
  }
10632
+ const parent = start.parent ? getSession(start.parent) : void 0;
10633
+ const parentId = parent?.workspace_id === workspaceId ? parent.id : null;
10634
+ const mode = start.launchMode !== void 0 ? start.launchMode : parentId ? permissionMode(parentId) ?? parent?.launch_mode ?? null : null;
10419
10635
  const id = Math.random().toString(36).slice(2, 10);
10420
- db.prepare("INSERT INTO sessions (id, workspace_id, agent) VALUES (?, ?, ?)").run(id, workspaceId, agent);
10636
+ db.prepare("INSERT INTO sessions (id, workspace_id, agent, parent_id, launch_dir, launch_mode, keep) VALUES (?, ?, ?, ?, ?, ?, ?)").run(id, workspaceId, agent, parentId, start.launchDir ?? null, mode, start.keep ? 1 : 0);
10421
10637
  notifySessionsChanged(workspaceId);
10422
10638
  return getSession(id);
10423
10639
  }
@@ -10427,18 +10643,38 @@ function renameSession(id, title) {
10427
10643
  db.prepare("UPDATE sessions SET title = ? WHERE id = ?").run(title, id);
10428
10644
  notifySessionsChanged(session.workspace_id);
10429
10645
  }
10430
- async function killSession(id) {
10646
+ /** Close a session, and with it every session it started and theirs
10647
+ * (`parent_id`), unless `keepChildren`: those then stand on their own.
10648
+ * Returns the ids closed. */
10649
+ async function killSession(id, keepChildren = false) {
10431
10650
  const session = getSession(id);
10432
- if (!session) return;
10433
- await disposeSession(session.id);
10651
+ if (!session) return [];
10652
+ const family = keepChildren ? [id] : [id, ...descendantsOf(id)];
10653
+ for (const member of family) await disposeSession(member);
10434
10654
  notifySessionsChanged(session.workspace_id);
10655
+ return family;
10656
+ }
10657
+ /** Every session `id` started, and theirs, nearest first. */
10658
+ function descendantsOf(id) {
10659
+ return all(`WITH RECURSIVE kids(id, depth) AS (
10660
+ SELECT id, 1 FROM sessions WHERE parent_id = ?
10661
+ UNION SELECT s.id, k.depth + 1 FROM sessions s JOIN kids k ON s.parent_id = k.id
10662
+ )
10663
+ SELECT id FROM kids GROUP BY id ORDER BY MIN(depth)`, id).map((r) => r.id);
10435
10664
  }
10436
10665
  /** Drop tmux + DB row with no sessions.changed — used when the workspace
10437
10666
  * is already gone from the list (delete notifies workspaces first). */
10438
10667
  async function disposeSessions(sessions) {
10439
10668
  for (const session of sessions) await disposeSession(session.id);
10440
10669
  }
10670
+ /** Told of a session about to go, while its row is still there (its
10671
+ * messages go with it: server/messages answers what it owed first). */
10672
+ var disposeListeners = /* @__PURE__ */ new Set();
10673
+ function onSessionDispose(fn) {
10674
+ disposeListeners.add(fn);
10675
+ }
10441
10676
  async function disposeSession(id) {
10677
+ for (const fn of disposeListeners) fn(id);
10442
10678
  await tmux([
10443
10679
  "kill-session",
10444
10680
  "-t",
@@ -10513,12 +10749,14 @@ function notifySessionsChanged(workspaceId) {
10513
10749
  async function emitSessionsChanged(workspaceId) {
10514
10750
  try {
10515
10751
  const states = await sessionStates();
10752
+ const { teamsOf } = await import("./_E0fWorAK.js");
10516
10753
  publish("sessions.changed", {
10517
10754
  workspaceId,
10518
10755
  sessions: listSessions(workspaceId).map((s) => ({
10519
10756
  ...s,
10520
10757
  state: states[s.id] || { alive: false }
10521
- }))
10758
+ })),
10759
+ teams: await teamsOf(workspaceId)
10522
10760
  });
10523
10761
  } catch {
10524
10762
  publish("sessions.changed", { workspaceId });
@@ -10807,18 +11045,34 @@ function newSessionArgs(session, wsPath, mode, initialPrompt, size) {
10807
11045
  "-s",
10808
11046
  tmuxName(session.id),
10809
11047
  "-c",
10810
- wsPath,
11048
+ launchDir(session, wsPath),
10811
11049
  ...sessionEnvArgs(session, wsPath),
10812
- ...loginShellCommand(session.agent, wsPath, initialPrompt)
11050
+ ...loginShellCommand(session, launchDir(session, wsPath), initialPrompt)
10813
11051
  ];
10814
11052
  }
11053
+ /** Where a session's process starts: its `launch_dir` when that is still
11054
+ * a folder inside its workspace (a topic's worktree, which `topic done`
11055
+ * removes), else the workspace itself. */
11056
+ function launchDir(session, wsPath) {
11057
+ if (!session.launch_dir) return wsPath;
11058
+ const dir = realInsideSync(session.launch_dir, wsPath);
11059
+ try {
11060
+ if (dir && fs.statSync(dir).isDirectory()) return dir;
11061
+ } catch {}
11062
+ return wsPath;
11063
+ }
10815
11064
  /** Run the agent through a login shell so the pane's PATH matches the
10816
11065
  * user's interactive terminal (mise activation, cargo, custom bins) —
10817
11066
  * a service manager's PATH is far slimmer than a login shell's. */
10818
- function loginShellCommand(agent, cwd, initialPrompt) {
11067
+ function loginShellCommand(session, cwd, initialPrompt) {
11068
+ const agent = session.agent;
10819
11069
  const words = sessionCommand(agent);
10820
11070
  if (!words.length) return [];
10821
- const line = [...words, ...agentLaunchFlags(agent, { cwd })].map(shellQuote);
11071
+ const line = [
11072
+ ...words,
11073
+ ...agentLaunchFlags(agent, { cwd }),
11074
+ ...agentModeFlags(agent, session.launch_mode)
11075
+ ].map(shellQuote);
10822
11076
  if (initialPrompt) {
10823
11077
  const file = shellQuote(initialPrompt.file);
10824
11078
  if (initialPrompt.text.startsWith("-")) line.push("--");
@@ -10956,4 +11210,4 @@ function sleep(ms) {
10956
11210
  return new Promise((resolve) => setTimeout(resolve, ms));
10957
11211
  }
10958
11212
  //#endregion
10959
- export { iconSvg as $, subscribe as $t, blankRow as A, which as At, onPhaseChange as B, agentById as Bt, tmuxWasStarted as C, doctor as Ct, inside as D, setupPath as Dt, reportsWorking as E, miseVersions as Et, interruptedSinceReport as F, untrackedCacheAllowed as Ft, settleQuietWorking as G, applyPrefChange as Gt, setAgentPhase as H, catalogPin as Ht, noteBackground as I, firewallProbe as It, agentFromCommand as J, checked as Jt, agentBadge as K, FRAME_ANCESTORS as Kt, noteInterrupt as L, DEFAULT_GITHUB_HOST as Lt, clearAgentPhase as M, unreachableText as Mt, hookPhase as N, enableUntrackedCache as Nt, realInside as O, stableGh as Ot, hookReportedAt as P, unsetCaches as Pt, getInstance as Q, publishJson as Qt, noteUserAnswered as R, PROJECT_TOOLS as Rt, tmuxName as S, discoverAgents as St, readHookPayload as T, miseInstalls as Tt, setScrapedPhase as U, parseAgentId as Ut, sessionWatched as V, agentLabel$1 as Vt, setSessionViewers as W, toolById as Wt, agentMeta as X, readBody as Xt, agentLabel as Y, httpError as Yt, ACCENT_RE as Z, publish as Zt, notifySessionsChanged as _, getSetting as _t, creationOf as a, TMUX_SOCKET as an, saveSubscription as at, sendToSession as b, setPref as bt, forgetPanes as c, gitEnv as cn, PREF_MAX as ct, killWorkspaceSessions as d, config as dn, allPrefs as dt, subscriberCount as en, manifest as et, listPanes as f, shared as fn, changePref as ft, newSessionArgs as g, enabledAgents as gt, markTmuxStarted as h, disabledAgents as ht, createSession as i, workspacePath as in, pushPublicKey as it, agentPhase as j, hostReach as jt, realInsideSync as k, tilde as kt, getSession as l, run$2 as ln, WORKSPACE_PREFS as lt, listSessions as m, withLock as mn, deleteWorkspacePrefs as mt, cleanEnv as n, db as nn, setInstance as nt, disposeSessions as o, gh as on, sendPush as ot, listPanesWithin as p, swr as pn, deleteSetting as pt, agentFamily as q, FRAME_HEADERS as qt, clearTmuxStarted as r, get as rn, deleteSubscription as rt, ensureTmuxServer as s, git as sn, validSubscription as st, beginCreation as t, all as tn, normalizeAccent as tt, killSession as u, tmux as un, agentChoices as ut, panePids as v, preferredAgent as vt, AGENTS as w, ghKnownHosts as wt, sessionStates as x, setSetting as xt, renameSession as y, setDisabledAgents as yt, notifyEventOn as z, TOOLS as zt };
11213
+ export { setAgentPhase as $, DEFAULT_GITHUB_HOST as $t, blankRow as A, withLock as An, disabledAgents as At, interruptedSinceReport as B, ghKnownHosts as Bt, sendToSession as C, git as Cn, PREF_MAX as Ct, AGENTS as D, config as Dn, changePref as Dt, tmuxWasStarted as E, tmux as En, allPrefs as Et, activityOf as F, setDisabledAgents as Ft, notePermissionMode as G, tilde as Gt, noteActivity as H, miseVersions as Ht, agentPhase as I, setPref as It, notifyEventOn as J, unreachableText as Jt, noteTyped as K, which as Kt, clearAgentPhase as L, setSetting as Lt, inside as M, getSetting as Mt, realInside as N, isKnownAgent as Nt, readHookPayload as O, shared as On, deleteSetting as Ot, realInsideSync as P, preferredAgent as Pt, sessionWatched as Q, firewallProbe as Qt, hookPhase as R, discoverAgents as Rt, renameSession as S, gh as Sn, validSubscription as St, tmuxName as T, run$2 as Tn, agentChoices as Tt, noteBackground as U, setupPath as Ut, lastTypedAt as V, miseInstalls as Vt, noteInterrupt as W, stableGh as Wt, onPhaseChange as X, unsetCaches as Xt, onFinished as Y, enableUntrackedCache as Yt, onTurnEnd as Z, untrackedCacheAllowed as Zt, markTmuxStarted as _, all as _n, setInstance as _t, creationOf as a, parseAgentId as an, turnPhase as at, onSessionDispose as b, workspacePath as bn, saveSubscription as bt, ensureTmuxServer as c, FRAME_ANCESTORS as cn, agentFamily as ct, killSession as d, httpError as dn, agentMeta as dt, PROJECT_TOOLS as en, setExpecting as et, killWorkspaceSessions as f, readBody as fn, ACCENT_RE as ft, listSessions as g, subscriberCount as gn, normalizeAccent as gt, listPanesWithin as h, subscribe as hn, manifest as ht, createSession as i, catalogPin as in, summaryOf as it, cleanSummary as j, enabledAgents as jt, reportsWorking as k, swr as kn, deleteWorkspacePrefs as kt, forgetPanes as l, FRAME_HEADERS as ln, agentFromCommand as lt, listPanes as m, publishJson as mn, iconSvg as mt, cleanEnv as n, agentById as nn, setSessionViewers as nt, descendantsOf as o, toolById as on, turnSettling as ot, launchDir as p, publish as pn, getInstance as pt, noteUserAnswered as q, hostReach as qt, clearTmuxStarted as r, agentLabel$1 as rn, settleQuietWorking as rt, disposeSessions as s, applyPrefChange as sn, agentBadge as st, beginCreation as t, TOOLS as tn, setScrapedPhase as tt, getSession as u, checked as un, agentLabel as ut, newSessionArgs as v, db as vn, deleteSubscription as vt, sessionStates as w, gitEnv as wn, WORKSPACE_PREFS as wt, panePids as x, TMUX_SOCKET as xn, sendPush as xt, notifySessionsChanged as y, get as yn, pushPublicKey as yt, hookReportedAt as z, doctor as zt };