@dylanpiercey/work 0.0.69 → 0.0.70

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 (245) hide show
  1. package/dist/{_BzEc7Y99.js → _AOPS87VY.js} +2 -2
  2. package/dist/{_BBDhdUuj.js → _B-dzDH9Z.js} +42 -42
  3. package/dist/{_mSrLyFdO.js → _DgDsZuoQ.js} +101 -41
  4. package/dist/_xZfpJdQE.js +2 -0
  5. package/dist/index.mjs +139 -139
  6. package/dist/public/assets/{_Bk7LZElr2.js → _2jwfRZNX2.js} +1 -1
  7. package/dist/public/assets/_2jwfRZNX2.js.br +0 -0
  8. package/dist/public/assets/{_Vyuu16Ad.js → _4Srbdaf8.js} +1 -1
  9. package/dist/public/assets/_4Srbdaf8.js.br +0 -0
  10. package/dist/public/assets/{_D3U77twm2.js → _B1dK1Qzq2.js} +1 -1
  11. package/dist/public/assets/_B1dK1Qzq2.js.br +0 -0
  12. package/dist/public/assets/{_DohOwerT.js → _B41uLDvj.js} +1 -1
  13. package/dist/public/assets/_B41uLDvj.js.br +0 -0
  14. package/dist/public/assets/{_y21Miw0G2.js → _B7R_FSi52.js} +1 -1
  15. package/dist/public/assets/_B7R_FSi52.js.br +0 -0
  16. package/dist/public/assets/{_C0gLchFg2.js → _BM3WaJrl2.js} +1 -1
  17. package/dist/public/assets/_BM3WaJrl2.js.br +0 -0
  18. package/dist/public/assets/{_B2XlFtZA.js → _BRtDdwZC.js} +1 -1
  19. package/dist/public/assets/_BRtDdwZC.js.br +0 -0
  20. package/dist/public/assets/{_QdFvZh29.js → _BUuMdUVD.js} +1 -1
  21. package/dist/public/assets/_BUuMdUVD.js.br +0 -0
  22. package/dist/public/assets/{_Dzckria-2.js → _BVOP1Gxw2.js} +1 -1
  23. package/dist/public/assets/_BVOP1Gxw2.js.br +0 -0
  24. package/dist/public/assets/{_CNjJeI_E2.js → _B_hrJVb02.js} +1 -1
  25. package/dist/public/assets/_B_hrJVb02.js.br +0 -0
  26. package/dist/public/assets/{_DdX84yEG.js → _BhaVokkI.js} +1 -1
  27. package/dist/public/assets/_BhaVokkI.js.br +0 -0
  28. package/dist/public/assets/{_DcOH-3Zl2.js → _BnGCBcwF2.js} +1 -1
  29. package/dist/public/assets/{_7eu3vqOe.js → _BpwxxOzh.js} +1 -1
  30. package/dist/public/assets/_BpwxxOzh.js.br +0 -0
  31. package/dist/public/assets/{_cuvR6O2V.js → _BqzmoFMM.js} +1 -1
  32. package/dist/public/assets/_BqzmoFMM.js.br +0 -0
  33. package/dist/public/assets/{_CyEK8RLH.js → _BriDrk1l.js} +1 -1
  34. package/dist/public/assets/_BriDrk1l.js.br +0 -0
  35. package/dist/public/assets/{_CnWPkpG6.js → _BsZkEJaX.js} +1 -1
  36. package/dist/public/assets/_BsZkEJaX.js.br +0 -0
  37. package/dist/public/assets/{_Dk90j4eO.js → _C09f6XJ4.js} +1 -1
  38. package/dist/public/assets/_C09f6XJ4.js.br +0 -0
  39. package/dist/public/assets/{_C_hrnmAR.js → _C178aaRj.js} +1 -1
  40. package/dist/public/assets/_C178aaRj.js.br +0 -0
  41. package/dist/public/assets/{_BVaiw33j.js → _C5McqdVq.js} +1 -1
  42. package/dist/public/assets/_C5McqdVq.js.br +0 -0
  43. package/dist/public/assets/{_DPBnSJ7J.js → _C8xwneiR.js} +1 -1
  44. package/dist/public/assets/_C8xwneiR.js.br +0 -0
  45. package/dist/public/assets/{_hsoShTMK.js → _CCwzIksI.js} +1 -1
  46. package/dist/public/assets/_CCwzIksI.js.br +0 -0
  47. package/dist/public/assets/{_h65AGMTQ2.js → _CDrCRgYz2.js} +1 -1
  48. package/dist/public/assets/_CDrCRgYz2.js.br +0 -0
  49. package/dist/public/assets/{_CqASoXOX.js → _CE_OuXoU.js} +1 -1
  50. package/dist/public/assets/_CE_OuXoU.js.br +0 -0
  51. package/dist/public/assets/{_nSzaoNgm2.js → _CF4WUrOg2.js} +1 -1
  52. package/dist/public/assets/_CF4WUrOg2.js.br +0 -0
  53. package/dist/public/assets/{_BG91Ur7C.js → _CN37KCcd.js} +1 -1
  54. package/dist/public/assets/{_C-zOao0B2.js → _CP9QfGt02.js} +1 -1
  55. package/dist/public/assets/_CP9QfGt02.js.br +0 -0
  56. package/dist/public/assets/{_Dn9evgOf2.js → _CX7KVAVC2.js} +1 -1
  57. package/dist/public/assets/_CX7KVAVC2.js.br +0 -0
  58. package/dist/public/assets/{_DpiQNDSt.js → _CZAtZHwK.js} +1 -1
  59. package/dist/public/assets/_CZAtZHwK.js.br +0 -0
  60. package/dist/public/assets/{_CObWod2f2.js → _CZSK2PpM2.js} +1 -1
  61. package/dist/public/assets/_CZSK2PpM2.js.br +0 -0
  62. package/dist/public/assets/{_Cn24gDaN.js → _CcaAXEPy.js} +1 -1
  63. package/dist/public/assets/_CcaAXEPy.js.br +0 -0
  64. package/dist/public/assets/{_D13hLO2N2.js → _Ce5PUr__2.js} +1 -1
  65. package/dist/public/assets/{_Yor3dkCs.js → _ChzC-M8b.js} +1 -1
  66. package/dist/public/assets/_ChzC-M8b.js.br +0 -0
  67. package/dist/public/assets/{_CQ1se5Ph.js → _CieMd70P.js} +1 -1
  68. package/dist/public/assets/_CieMd70P.js.br +0 -0
  69. package/dist/public/assets/{_CI-lBiRq.js → _CktwGNoV.js} +3 -3
  70. package/dist/public/assets/_CktwGNoV.js.br +0 -0
  71. package/dist/public/assets/{_DaYRBUL-.js → _Cnkj8G8x.js} +1 -1
  72. package/dist/public/assets/_Cnkj8G8x.js.br +0 -0
  73. package/dist/public/assets/{_CaQPDPmE.js → _CphuLRQC.js} +1 -1
  74. package/dist/public/assets/_CphuLRQC.js.br +0 -0
  75. package/dist/public/assets/{_RfX8IpFo.js → _CxfSIWfr.js} +1 -1
  76. package/dist/public/assets/_CxfSIWfr.js.br +0 -0
  77. package/dist/public/assets/{_Be6zDaw_2.js → _D1ZMPYoI2.js} +1 -1
  78. package/dist/public/assets/_D1ZMPYoI2.js.br +0 -0
  79. package/dist/public/assets/{__fELRce2.js → _D5nI5TU0.js} +1 -1
  80. package/dist/public/assets/_D5nI5TU0.js.br +0 -0
  81. package/dist/public/assets/{_AjJFGKIO.js → _D70dHsK5.js} +1 -1
  82. package/dist/public/assets/_D70dHsK5.js.br +0 -0
  83. package/dist/public/assets/{_C_KMHM_B.js → _DBKHnCnH.js} +1 -1
  84. package/dist/public/assets/_DBKHnCnH.js.br +0 -0
  85. package/dist/public/assets/{_uoCfxD-5.js → _DFXWJj8u.js} +1 -1
  86. package/dist/public/assets/_DFXWJj8u.js.br +0 -0
  87. package/dist/public/assets/{_C4cnPJZt.js → _DIIVUEO6.js} +1 -1
  88. package/dist/public/assets/_DIIVUEO6.js.br +0 -0
  89. package/dist/public/assets/{_CyUpyj0-.js → _DJSAaBeq.js} +1 -1
  90. package/dist/public/assets/_DJSAaBeq.js.br +0 -0
  91. package/dist/public/assets/{_DHJUTBX4.js → _DK9AWQX8.js} +1 -1
  92. package/dist/public/assets/_DK9AWQX8.js.br +0 -0
  93. package/dist/public/assets/{_By_xPS-p.js → _DP-0321c.js} +1 -1
  94. package/dist/public/assets/_DP-0321c.js.br +0 -0
  95. package/dist/public/assets/{_Cimq_3st2.js → _DQjgTNLT2.js} +1 -1
  96. package/dist/public/assets/_DQjgTNLT2.js.br +0 -0
  97. package/dist/public/assets/{_Cl5u4DlE.js → _DRzPr12K.js} +1 -1
  98. package/dist/public/assets/_DRzPr12K.js.br +0 -0
  99. package/dist/public/assets/{_DbKE1MvW.js → _DSW7pXqz.js} +1 -1
  100. package/dist/public/assets/_DSW7pXqz.js.br +0 -0
  101. package/dist/public/assets/{_BtnTWv2c.js → _DThR70Xq.js} +1 -1
  102. package/dist/public/assets/_DThR70Xq.js.br +0 -0
  103. package/dist/public/assets/{_B0mlTNYN.js → _De1DhN-1.js} +5 -5
  104. package/dist/public/assets/_De1DhN-1.js.br +0 -0
  105. package/dist/public/assets/{_B8QdoRxF.js → _DeFFMAX_.js} +1 -1
  106. package/dist/public/assets/_DeFFMAX_.js.br +0 -0
  107. package/dist/public/assets/{_eOSbQ2H52.js → _Dg2DUGem2.js} +1 -1
  108. package/dist/public/assets/_Dg2DUGem2.js.br +0 -0
  109. package/dist/public/assets/{_CGxB7jfP2.js → _DgW7RRes2.js} +1 -1
  110. package/dist/public/assets/_DgW7RRes2.js.br +0 -0
  111. package/dist/public/assets/{_z9xnkyG0.js → _DhRqr_Rq.js} +1 -1
  112. package/dist/public/assets/_DhRqr_Rq.js.br +0 -0
  113. package/dist/public/assets/{_DNT9FflM.js → _Dig0hTtr.js} +1 -1
  114. package/dist/public/assets/_Dig0hTtr.js.br +0 -0
  115. package/dist/public/assets/{_B2Wh9q7i2.js → _DkIPVGH_2.js} +1 -1
  116. package/dist/public/assets/_DkIPVGH_2.js.br +0 -0
  117. package/dist/public/assets/{_DMbI3C312.js → _DoD7JLuh2.js} +1 -1
  118. package/dist/public/assets/_DoD7JLuh2.js.br +0 -0
  119. package/dist/public/assets/{_DIrrBSY3.js → _Dph0mXCv.js} +1 -1
  120. package/dist/public/assets/_Dph0mXCv.js.br +0 -0
  121. package/dist/public/assets/{_De2MbV4-.js → _DsU-Nm-J.js} +1 -1
  122. package/dist/public/assets/_DsU-Nm-J.js.br +0 -0
  123. package/dist/public/assets/{_Bn42mWko.js → _DsxkxJ9M.js} +1 -1
  124. package/dist/public/assets/_DsxkxJ9M.js.br +0 -0
  125. package/dist/public/assets/{_Dh4U5ZBy2.js → _DwMRIbNQ2.js} +1 -1
  126. package/dist/public/assets/_DwMRIbNQ2.js.br +0 -0
  127. package/dist/public/assets/{_xQNWoj97.js → _IoBnaDj6.js} +1 -1
  128. package/dist/public/assets/_IoBnaDj6.js.br +0 -0
  129. package/dist/public/assets/{_CN7jdIqu.js → _MFSKg2Wj.js} +1 -1
  130. package/dist/public/assets/_MFSKg2Wj.js.br +0 -0
  131. package/dist/public/assets/{_PL2w-xvr2.js → _NUfAwX-92.js} +1 -1
  132. package/dist/public/assets/_NUfAwX-92.js.br +0 -0
  133. package/dist/public/assets/{_C8JrL8ZU.js → _SYogbY_o.js} +1 -1
  134. package/dist/public/assets/_SYogbY_o.js.br +0 -0
  135. package/dist/public/assets/{_D4aBfTEq2.js → _Ve3NFPam2.js} +1 -1
  136. package/dist/public/assets/_Ve3NFPam2.js.br +0 -0
  137. package/dist/public/assets/{_D0_YGa2m.js → _astyk4W8.js} +1 -1
  138. package/dist/public/assets/_astyk4W8.js.br +0 -0
  139. package/dist/public/assets/{_BTIiA2Aj.js → _dfXi0jTI.js} +1 -1
  140. package/dist/public/assets/_dfXi0jTI.js.br +0 -0
  141. package/dist/public/assets/{_DEkiGmgs2.js → _eH0Yg3S22.js} +1 -1
  142. package/dist/public/assets/_eH0Yg3S22.js.br +0 -0
  143. package/dist/public/assets/{_9JFMnVkT.js → _okxblAux.js} +1 -1
  144. package/dist/public/assets/_okxblAux.js.br +0 -0
  145. package/dist/public/assets/{_DlipybEX.js → _sRXHGNUn.js} +1 -1
  146. package/dist/public/assets/_sRXHGNUn.js.br +0 -0
  147. package/dist/public/assets/{_BJbOGqL2.js → _uCHmU2W8.js} +1 -1
  148. package/dist/public/assets/_uCHmU2W8.js.br +0 -0
  149. package/dist/public/assets/{_BaW3VCxs2.js → _vJB03LvX2.js} +1 -1
  150. package/dist/public/assets/_vJB03LvX2.js.br +0 -0
  151. package/dist/public/assets/{_CANbMbX3.js → _vW-7Ai-v.js} +1 -1
  152. package/dist/public/assets/_vW-7Ai-v.js.br +0 -0
  153. package/dist/public/assets/{_Dqp3F2Ex.js → _yaHB4Z8B.js} +1 -1
  154. package/dist/public/assets/_yaHB4Z8B.js.br +0 -0
  155. package/dist/public/assets/{app-page-BFosX16q.css → app-page-B-QPv6NA.css} +1 -1
  156. package/dist/public/assets/app-page-B-QPv6NA.css.br +0 -0
  157. package/dist/public/assets/{diff-view-DjZg0WLz.css → diff-view-DM1slFkP.css} +1 -1
  158. package/dist/public/assets/diff-view-DM1slFkP.css.br +0 -0
  159. package/dist/public/assets/new-CxcQDhex.js +1 -0
  160. package/dist/public/assets/settings-CxcQDhex.js +1 -0
  161. package/dist/public/assets/w-CxcQDhex.js +1 -0
  162. package/dist/public/assets/w._-CuOk-xxd.js +1 -0
  163. package/dist/public/assets/w._-CxcQDhex.js +1 -0
  164. package/package.json +1 -1
  165. package/dist/_C8-SYmgW.js +0 -2
  166. package/dist/public/assets/_7eu3vqOe.js.br +0 -0
  167. package/dist/public/assets/_9JFMnVkT.js.br +0 -0
  168. package/dist/public/assets/_AjJFGKIO.js.br +0 -0
  169. package/dist/public/assets/_B0mlTNYN.js.br +0 -0
  170. package/dist/public/assets/_B2Wh9q7i2.js.br +0 -0
  171. package/dist/public/assets/_B2XlFtZA.js.br +0 -0
  172. package/dist/public/assets/_B8QdoRxF.js.br +0 -0
  173. package/dist/public/assets/_BJbOGqL2.js.br +0 -0
  174. package/dist/public/assets/_BTIiA2Aj.js.br +0 -0
  175. package/dist/public/assets/_BVaiw33j.js.br +0 -0
  176. package/dist/public/assets/_BaW3VCxs2.js.br +0 -0
  177. package/dist/public/assets/_Be6zDaw_2.js.br +0 -0
  178. package/dist/public/assets/_Bk7LZElr2.js.br +0 -0
  179. package/dist/public/assets/_Bn42mWko.js.br +0 -0
  180. package/dist/public/assets/_BtnTWv2c.js.br +0 -0
  181. package/dist/public/assets/_By_xPS-p.js.br +0 -0
  182. package/dist/public/assets/_C-zOao0B2.js.br +0 -0
  183. package/dist/public/assets/_C0gLchFg2.js.br +0 -0
  184. package/dist/public/assets/_C4cnPJZt.js.br +0 -0
  185. package/dist/public/assets/_C8JrL8ZU.js.br +0 -0
  186. package/dist/public/assets/_CANbMbX3.js.br +0 -0
  187. package/dist/public/assets/_CGxB7jfP2.js.br +0 -0
  188. package/dist/public/assets/_CI-lBiRq.js.br +0 -0
  189. package/dist/public/assets/_CN7jdIqu.js.br +0 -0
  190. package/dist/public/assets/_CNjJeI_E2.js.br +0 -0
  191. package/dist/public/assets/_CObWod2f2.js.br +0 -0
  192. package/dist/public/assets/_CQ1se5Ph.js.br +0 -0
  193. package/dist/public/assets/_C_KMHM_B.js.br +0 -0
  194. package/dist/public/assets/_C_hrnmAR.js.br +0 -0
  195. package/dist/public/assets/_CaQPDPmE.js.br +0 -0
  196. package/dist/public/assets/_Cimq_3st2.js.br +0 -0
  197. package/dist/public/assets/_Cl5u4DlE.js.br +0 -0
  198. package/dist/public/assets/_Cn24gDaN.js.br +0 -0
  199. package/dist/public/assets/_CnWPkpG6.js.br +0 -0
  200. package/dist/public/assets/_CqASoXOX.js.br +0 -0
  201. package/dist/public/assets/_CyEK8RLH.js.br +0 -0
  202. package/dist/public/assets/_CyUpyj0-.js.br +0 -0
  203. package/dist/public/assets/_D0_YGa2m.js.br +0 -0
  204. package/dist/public/assets/_D3U77twm2.js.br +0 -0
  205. package/dist/public/assets/_D4aBfTEq2.js.br +0 -0
  206. package/dist/public/assets/_DEkiGmgs2.js.br +0 -0
  207. package/dist/public/assets/_DHJUTBX4.js.br +0 -0
  208. package/dist/public/assets/_DIrrBSY3.js.br +0 -0
  209. package/dist/public/assets/_DMbI3C312.js.br +0 -0
  210. package/dist/public/assets/_DNT9FflM.js.br +0 -0
  211. package/dist/public/assets/_DPBnSJ7J.js.br +0 -0
  212. package/dist/public/assets/_DaYRBUL-.js.br +0 -0
  213. package/dist/public/assets/_DbKE1MvW.js.br +0 -0
  214. package/dist/public/assets/_DdX84yEG.js.br +0 -0
  215. package/dist/public/assets/_De2MbV4-.js.br +0 -0
  216. package/dist/public/assets/_Dh4U5ZBy2.js.br +0 -0
  217. package/dist/public/assets/_Dk90j4eO.js.br +0 -0
  218. package/dist/public/assets/_DlipybEX.js.br +0 -0
  219. package/dist/public/assets/_Dn9evgOf2.js.br +0 -0
  220. package/dist/public/assets/_DohOwerT.js.br +0 -0
  221. package/dist/public/assets/_DpiQNDSt.js.br +0 -0
  222. package/dist/public/assets/_Dqp3F2Ex.js.br +0 -0
  223. package/dist/public/assets/_Dzckria-2.js.br +0 -0
  224. package/dist/public/assets/_PL2w-xvr2.js.br +0 -0
  225. package/dist/public/assets/_QdFvZh29.js.br +0 -0
  226. package/dist/public/assets/_RfX8IpFo.js.br +0 -0
  227. package/dist/public/assets/_Vyuu16Ad.js.br +0 -0
  228. package/dist/public/assets/_Yor3dkCs.js.br +0 -0
  229. package/dist/public/assets/__fELRce2.js.br +0 -0
  230. package/dist/public/assets/_cuvR6O2V.js.br +0 -0
  231. package/dist/public/assets/_eOSbQ2H52.js.br +0 -0
  232. package/dist/public/assets/_h65AGMTQ2.js.br +0 -0
  233. package/dist/public/assets/_hsoShTMK.js.br +0 -0
  234. package/dist/public/assets/_nSzaoNgm2.js.br +0 -0
  235. package/dist/public/assets/_uoCfxD-5.js.br +0 -0
  236. package/dist/public/assets/_xQNWoj97.js.br +0 -0
  237. package/dist/public/assets/_y21Miw0G2.js.br +0 -0
  238. package/dist/public/assets/_z9xnkyG0.js.br +0 -0
  239. package/dist/public/assets/app-page-BFosX16q.css.br +0 -0
  240. package/dist/public/assets/diff-view-DjZg0WLz.css.br +0 -0
  241. package/dist/public/assets/new-CMpE7Au8.js +0 -1
  242. package/dist/public/assets/settings-CMpE7Au8.js +0 -1
  243. package/dist/public/assets/w-CMpE7Au8.js +0 -1
  244. package/dist/public/assets/w._-BaiMToPS.js +0 -1
  245. package/dist/public/assets/w._-CMpE7Au8.js +0 -1
@@ -2149,8 +2149,8 @@ var toast_default = _template("y", (input) => {
2149
2149
  });
2150
2150
  _resume_branch($scope0_id);
2151
2151
  });
2152
- var sectionCount = "_bi _F _G";
2153
- var row = "_bt _bl";
2152
+ var sectionCount = "_br _F _G";
2153
+ var row = "_bC _bu";
2154
2154
  var iconBtn = "_X _g";
2155
2155
  //#endregion
2156
2156
  //#region src/tags/icons/icon-refresh.marko
@@ -1,4 +1,4 @@
1
- import { B as _attr_select_value, D as iconBtnRow, Dt as writeScope, E as iconBtnLg, F as _attr_class, I as _attr_details_or_dialog_open, J as _el, K as _content_resume, L as _attr_input_value, M as tone, P as _attr, Q as _existing_scope, R as _attr_option_value, V as _attr_style, X as _el_resume, Y as _el_read_error, Z as _escape, _t as _show_end, a as diffTreeOpen, at as _if, bt as _template, ct as _resume_branch, dt as _scope_with_id, et as _for_of, f as icon_search_default, ft as _script, gt as _set_serialize_reason, ht as _serialize_if, i as diffScope, lt as _scope_id, m as icon_refresh_default, mt as _serialize_guard, n as findInput, o as setDiffScope, ot as _peek_scope_id, p as icon_back_default, pt as _sep, r as icon_sidebar_default, rt as _html, st as _resume, t as findIconBtn, u as fuzzy, ut as _scope_reason, v as toast_default, vt as _show_start, x as repoLabel, y as icon_xmark_default, yt as _subscribe } from "./_BzEc7Y99.js";
1
+ import { B as _attr_select_value, D as iconBtnRow, Dt as writeScope, E as iconBtnLg, F as _attr_class, I as _attr_details_or_dialog_open, J as _el, K as _content_resume, L as _attr_input_value, M as tone, P as _attr, Q as _existing_scope, R as _attr_option_value, V as _attr_style, X as _el_resume, Y as _el_read_error, Z as _escape, _t as _show_end, a as diffTreeOpen, at as _if, bt as _template, ct as _resume_branch, dt as _scope_with_id, et as _for_of, f as icon_search_default, ft as _script, gt as _set_serialize_reason, ht as _serialize_if, i as diffScope, lt as _scope_id, m as icon_refresh_default, mt as _serialize_guard, n as findInput, o as setDiffScope, ot as _peek_scope_id, p as icon_back_default, pt as _sep, r as icon_sidebar_default, rt as _html, st as _resume, t as findIconBtn, u as fuzzy, ut as _scope_reason, v as toast_default, vt as _show_start, x as repoLabel, y as icon_xmark_default, yt as _subscribe } from "./_AOPS87VY.js";
2
2
  //#region src/client/router.ts
3
3
  function urlFor(r) {
4
4
  if (r.view === "settings") return "/settings";
@@ -1906,14 +1906,14 @@ function shortBranch(name, wsBranch = "", wsName = "") {
1906
1906
  }
1907
1907
  return shortHeadFallback(head);
1908
1908
  }
1909
- var repoWorktree = "_f2 _u";
1910
- var repoTitle = "_f8 _t";
1909
+ var repoWorktree = "_fB _u";
1910
+ var repoTitle = "_fH _t";
1911
1911
  tone.warn;
1912
1912
  var diff_file_default = _template("f", (input) => {
1913
1913
  _scope_reason();
1914
1914
  const $scope0_id = _scope_id();
1915
1915
  _el($scope0_id, "f0");
1916
- _html(`<div${_attr_class(["_gE", input.class])}></div>${_el_resume($scope0_id, "a")}`);
1916
+ _html(`<div${_attr_class(["_gs", input.class])}></div>${_el_resume($scope0_id, "a")}`);
1917
1917
  _script($scope0_id, "f1");
1918
1918
  writeScope($scope0_id, {
1919
1919
  e: input.file,
@@ -1968,14 +1968,14 @@ var review_section_default = _template("r", (input) => {
1968
1968
  const newCount = input.files.filter((f) => f.changedSince).length;
1969
1969
  const compare$1 = reviewCompareLabel(repo.pr?.baseRefName || repo.base, repo.pr?.headRefName || repo.branch, input.workspaceBranch, input.workspaceName);
1970
1970
  const prTitle = repo.pr ? `${repo.pr.title}: ${repo.pr.headRefName} ${repo.head} vs ${repo.base} ${repo.baseSha}` : "";
1971
- _html(`<section${_attr_class("_fY")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownCount && !repo.pr && input.findHit?.repo !== repo.id)}><div${_attr_class(["_fZ", { ["_f0"]: input.collapsible && input.collapsed }])}>`);
1971
+ _html(`<section${_attr_class("_fx")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownCount && !repo.pr && input.findHit?.repo !== repo.id)}><div${_attr_class(["_fy", { ["_fz"]: input.collapsible && input.collapsed }])}>`);
1972
1972
  _if(() => {
1973
1973
  if (input.collapsible) {
1974
1974
  const $scope1_id = _scope_id();
1975
- _html(`<button type=button${_attr_class("_f1")} aria-expanded=${!input.collapsed ? "true" : "false"} aria-busy=${input.expanding ? "true" : "false"}${input.collapsed ? _attr("title", `Show ${countLabel} files`) : " title=\"Hide files\""}><span${_attr_class([
1976
- "_gk",
1977
- !input.collapsed && "_gl",
1978
- input.expanding && "_gm"
1975
+ _html(`<button type=button${_attr_class("_fA")} aria-expanded=${!input.collapsed ? "true" : "false"} aria-busy=${input.expanding ? "true" : "false"}${input.collapsed ? _attr("title", `Show ${countLabel} files`) : " title=\"Hide files\""}><span${_attr_class([
1976
+ "_fU",
1977
+ !input.collapsed && "_fV",
1978
+ input.expanding && "_fW"
1979
1979
  ])} aria-hidden=true>${input.collapsed ? "▸" : "▾"}${_el_resume($scope1_id, "c", _serialize_guard($scope0_reason, 35))}</span>${_el_resume($scope1_id, "b", _serialize_guard($scope0_reason, 9))}<span${_attr_class(repoWorktree)}>${_escape(repo.worktree)}${_el_resume($scope1_id, "e", $sg__input_repo)}</span></button>${_el_resume($scope1_id, "a")}`);
1980
1980
  _script($scope1_id, "r7");
1981
1981
  writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
@@ -2000,14 +2000,14 @@ var review_section_default = _template("r", (input) => {
2000
2000
  return 1;
2001
2001
  }
2002
2002
  }, $scope0_id, "d", $sg__input_repo, $sg__input_repo, $sg__input_repo__OR__input_files__OR__input_shownKeys__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_collapsible__OR__input_collapsed__OR__input_localDiffers__OR__input_onlyNew__OR__input_opened);
2003
- _html(`<span${_attr_class("_f9")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_F", "_f_"])}>${_escape(compare$1.base)}${_el_resume($scope0_id, "g", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_H", "_gb"])} aria-hidden=true>vs</span><span${_attr_class(["_F", "_ga"])}>${_escape(compare$1.head)}${_el_resume($scope0_id, "j", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2003
+ _html(`<span${_attr_class("_fI")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_F", "_fJ"])}>${_escape(compare$1.base)}${_el_resume($scope0_id, "g", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_H", "_fL"])} aria-hidden=true>vs</span><span${_attr_class(["_F", "_fK"])}>${_escape(compare$1.head)}${_el_resume($scope0_id, "j", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2004
2004
  _if(() => {
2005
2005
  if (compare$1.topic) {
2006
2006
  const $scope15_id = _scope_id();
2007
2007
  _html(`<span${_attr_class([
2008
2008
  "_F",
2009
2009
  tone.accent,
2010
- "_gc"
2010
+ "_fM"
2011
2011
  ])}>${_escape(compare$1.topic)}${_el_resume($scope15_id, "b", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2012
2012
  $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName && writeScope($scope15_id, { _: _scope_with_id($scope0_id) });
2013
2013
  return 0;
@@ -2020,7 +2020,7 @@ var review_section_default = _template("r", (input) => {
2020
2020
  _html(`<button type=button${_attr_class([
2021
2021
  "_F",
2022
2022
  tone.warn,
2023
- "_gd"
2023
+ "_fN"
2024
2024
  ])}${_attr("title", `origin/${repo.pr.headRefName} ${repo.head} · GitHub ${repo.pr.headRefOid}. Reload to re-ask GitHub`)}${_attr("disabled", input.loading)}>behind GitHub ${_sep($sg__input_repo)}${_escape(shortSha(repo.head, 7))}${_el_resume($scope2_id, "b", $sg__input_repo)} → ${_sep($sg__input_repo)}${_escape(shortSha(repo.pr.headRefOid, 7))}${_el_resume($scope2_id, "c", $sg__input_repo)}</button>${_el_resume($scope2_id, "a")}`);
2025
2025
  _script($scope2_id, "r8");
2026
2026
  writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
@@ -2030,7 +2030,7 @@ var review_section_default = _template("r", (input) => {
2030
2030
  _if(() => {
2031
2031
  if (repo.contained && input.files.length) {
2032
2032
  const $scope13_id = _scope_id();
2033
- _html(`<span${_attr_class(["_F", "_gd"])}${_attr("title", `${repo.pr ? `#${repo.pr.number}` : repo.branch} is already in ${repo.base}; showing the working tree only`)}>already in ${_sep($sg__input_repo)}${_escape(repo.base)}${_el_resume($scope13_id, "b", $sg__input_repo)}</span>${_el_resume($scope13_id, "a", $sg__input_repo)}`);
2033
+ _html(`<span${_attr_class(["_F", "_fN"])}${_attr("title", `${repo.pr ? `#${repo.pr.number}` : repo.branch} is already in ${repo.base}; showing the working tree only`)}>already in ${_sep($sg__input_repo)}${_escape(repo.base)}${_el_resume($scope13_id, "b", $sg__input_repo)}</span>${_el_resume($scope13_id, "a", $sg__input_repo)}`);
2034
2034
  _serialize_if($scope0_reason, 0) && writeScope($scope13_id, { _: $si__input_repo && _scope_with_id($scope0_id) });
2035
2035
  return 0;
2036
2036
  }
@@ -2038,16 +2038,16 @@ var review_section_default = _template("r", (input) => {
2038
2038
  _if(() => {
2039
2039
  if (input.localDiffers) {
2040
2040
  const $scope3_id = _scope_id();
2041
- _html(`<span${_attr_class(["_F", "_gd"])}${_attr("title", `This view is ${shortSha(repo.head)} (${repo.pr.headRefName}); checked out is ${shortSha(repo.localHead)} (${repo.branch})`)}>local ${_sep($sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}${_escape(shortBranch(repo.branch, input.workspaceBranch, input.workspaceName))}${_el_resume($scope3_id, "b", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)} ${_sep($sg__input_repo)}${_escape(shortSha(repo.localHead, 7))}${_el_resume($scope3_id, "c", $sg__input_repo)}</span>${_el_resume($scope3_id, "a", $sg__input_repo)}`);
2041
+ _html(`<span${_attr_class(["_F", "_fN"])}${_attr("title", `This view is ${shortSha(repo.head)} (${repo.pr.headRefName}); checked out is ${shortSha(repo.localHead)} (${repo.branch})`)}>local ${_sep($sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}${_escape(shortBranch(repo.branch, input.workspaceBranch, input.workspaceName))}${_el_resume($scope3_id, "b", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)} ${_sep($sg__input_repo)}${_escape(shortSha(repo.localHead, 7))}${_el_resume($scope3_id, "c", $sg__input_repo)}</span>${_el_resume($scope3_id, "a", $sg__input_repo)}`);
2042
2042
  $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_localDiffers && writeScope($scope3_id, { _: $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName && _scope_with_id($scope0_id) });
2043
2043
  return 0;
2044
2044
  }
2045
2045
  }, $scope0_id, "n", _serialize_guard($scope0_reason, 20), _serialize_guard($scope0_reason, 36), $sg__input_repo__OR__input_files__OR__input_shownKeys__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_collapsible__OR__input_collapsed__OR__input_localDiffers__OR__input_onlyNew__OR__input_opened, 0, 1);
2046
- _html(`<span${_attr_class("_f3")}><span>${_escape(countLabel)}${_el_resume($scope0_id, "p", $sg__input_files__OR__input_shownKeys)} file${_sep($sg__input_files__OR__input_shownKeys)}${countLabel === 1 ? "" : "s"}${_el_resume($scope0_id, "q", $sg__input_files__OR__input_shownKeys)}</span>`);
2046
+ _html(`<span${_attr_class("_fC")}><span>${_escape(countLabel)}${_el_resume($scope0_id, "p", $sg__input_files__OR__input_shownKeys)} file${_sep($sg__input_files__OR__input_shownKeys)}${countLabel === 1 ? "" : "s"}${_el_resume($scope0_id, "q", $sg__input_files__OR__input_shownKeys)}</span>`);
2047
2047
  _if(() => {
2048
2048
  if (stats.additions || stats.deletions) {
2049
2049
  const $scope14_id = _scope_id();
2050
- _html(`<span${_attr_class("_f4")}>+${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.additions)}${_el_resume($scope14_id, "b", $sg__input_files__OR__input_shownKeys)}</span><span${_attr_class("_f5")}>−${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.deletions)}${_el_resume($scope14_id, "d", $sg__input_files__OR__input_shownKeys)}</span>`);
2050
+ _html(`<span${_attr_class("_fD")}>+${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.additions)}${_el_resume($scope14_id, "b", $sg__input_files__OR__input_shownKeys)}</span><span${_attr_class("_fE")}>−${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.deletions)}${_el_resume($scope14_id, "d", $sg__input_files__OR__input_shownKeys)}</span>`);
2051
2051
  $si__input_files__OR__input_shownKeys && writeScope($scope14_id, { _: _scope_with_id($scope0_id) });
2052
2052
  return 0;
2053
2053
  }
@@ -2055,7 +2055,7 @@ var review_section_default = _template("r", (input) => {
2055
2055
  _if(() => {
2056
2056
  if (newCount || input.onlyNew) {
2057
2057
  const $scope4_id = _scope_id();
2058
- _html(`<button type=button${_attr_class(["_f7", { ["_f6"]: input.onlyNew }])} aria-pressed=${input.onlyNew ? "true" : "false"} title=${input.onlyNew ? "\"Show every file\"" : "\"Show only files changed since your last visit\""}>${_escape(newCount)}${_el_resume($scope4_id, "b", $sg__input_files)} new</button>${_el_resume($scope4_id, "a")}`);
2058
+ _html(`<button type=button${_attr_class(["_fG", { ["_fF"]: input.onlyNew }])} aria-pressed=${input.onlyNew ? "true" : "false"} title=${input.onlyNew ? "\"Show every file\"" : "\"Show only files changed since your last visit\""}>${_escape(newCount)}${_el_resume($scope4_id, "b", $sg__input_files)} new</button>${_el_resume($scope4_id, "a")}`);
2059
2059
  _script($scope4_id, "r9");
2060
2060
  writeScope($scope4_id, { _: _scope_with_id($scope0_id) });
2061
2061
  return 0;
@@ -2067,7 +2067,7 @@ var review_section_default = _template("r", (input) => {
2067
2067
  const $scope5_id = _scope_id();
2068
2068
  const $show = !input.collapsible || !input.collapsed;
2069
2069
  _show_start($show);
2070
- _html(`<div${_attr_class("_gf")}>`);
2070
+ _html(`<div${_attr_class("_fP")}>`);
2071
2071
  _for_of(input.files, (file$1) => {
2072
2072
  const $scope6_id = _scope_id();
2073
2073
  const $for_content__file__closures = /* @__PURE__ */ new Set();
@@ -2075,11 +2075,11 @@ var review_section_default = _template("r", (input) => {
2075
2075
  const $for_content__fileComments__closures = /* @__PURE__ */ new Set();
2076
2076
  const fileComments = input.commentsByFile.get(file$1.key) || [];
2077
2077
  let expanded = true;
2078
- _html(`<details${_attr_details_or_dialog_open($scope6_id, "a", expanded)}${_attr_class(["_gg", input.findHit?.key === file$1.key && "_fW"])}${_attr("data-key", file$1.key)}${_attr("hidden", !input.shownKeys.has(file$1.key))}><summary${_attr_class("_gi")}><span${_attr_class("_gn")}${_attr("data-status", file$1.status)}>${_escape(file$1.status)}${_el_resume($scope6_id, "d", $sg__input_files)}</span>${_el_resume($scope6_id, "c", $sg__input_files)}<span${_attr_class(["_go", input.findHit?.key === file$1.key && input.findHit.line < 1 && "_fX"])}${_attr("title", file$1.path)}><bdi>${_escape(file$1.path)}${_el_resume($scope6_id, "f", $sg__input_files)}</bdi></span>${_el_resume($scope6_id, "e", _serialize_guard($scope0_reason, 16))}`);
2078
+ _html(`<details${_attr_details_or_dialog_open($scope6_id, "a", expanded)}${_attr_class(["_fQ", input.findHit?.key === file$1.key && "_fv"])}${_attr("data-key", file$1.key)}${_attr("hidden", !input.shownKeys.has(file$1.key))}><summary${_attr_class("_fS")}><span${_attr_class("_fX")}${_attr("data-status", file$1.status)}>${_escape(file$1.status)}${_el_resume($scope6_id, "d", $sg__input_files)}</span>${_el_resume($scope6_id, "c", $sg__input_files)}<span${_attr_class(["_fY", input.findHit?.key === file$1.key && input.findHit.line < 1 && "_fw"])}${_attr("title", file$1.path)}><bdi>${_escape(file$1.path)}${_el_resume($scope6_id, "f", $sg__input_files)}</bdi></span>${_el_resume($scope6_id, "e", _serialize_guard($scope0_reason, 16))}`);
2079
2079
  _if(() => {
2080
2080
  if (file$1.changedSince) {
2081
2081
  const $scope17_id = _scope_id();
2082
- _html(`<span${_attr_class(["_w", "_ge"])} title="Changed since your last visit"></span>`);
2082
+ _html(`<span${_attr_class(["_w", "_fO"])} title="Changed since your last visit"></span>`);
2083
2083
  $si__input_files && writeScope($scope17_id, {});
2084
2084
  return 0;
2085
2085
  }
@@ -2096,17 +2096,17 @@ var review_section_default = _template("r", (input) => {
2096
2096
  _if(() => {
2097
2097
  if (file$1.binary) {
2098
2098
  const $scope18_id = _scope_id();
2099
- _html(`<p${_attr_class(["_gp", "_gh"])}>binary file</p>`);
2099
+ _html(`<p${_attr_class(["_fZ", "_fR"])}>binary file</p>`);
2100
2100
  writeScope($scope18_id, {});
2101
2101
  return 0;
2102
2102
  } else if (file$1.tooLarge) {
2103
2103
  const $scope19_id = _scope_id();
2104
- _html(`<p${_attr_class(["_gp", "_gh"])}>file too large to display</p>`);
2104
+ _html(`<p${_attr_class(["_fZ", "_fR"])}>file too large to display</p>`);
2105
2105
  writeScope($scope19_id, {});
2106
2106
  return 1;
2107
2107
  } else if (file$1.old == null && file$1.new == null) {
2108
2108
  const $scope20_id = _scope_id();
2109
- _html(`<p${_attr_class(["_gp", "_gh"])}>file could not be read</p>`);
2109
+ _html(`<p${_attr_class(["_fZ", "_fR"])}>file could not be read</p>`);
2110
2110
  writeScope($scope20_id, {});
2111
2111
  return 2;
2112
2112
  } else {
@@ -2116,7 +2116,7 @@ var review_section_default = _template("r", (input) => {
2116
2116
  _if(() => {
2117
2117
  if (!forceNear) {
2118
2118
  const $scope8_id = _scope_id();
2119
- _html(`<div${_attr_class(["_gj", "_gh"])}></div>${_el_resume($scope8_id, "a")}`);
2119
+ _html(`<div${_attr_class(["_fT", "_fR"])}></div>${_el_resume($scope8_id, "a")}`);
2120
2120
  _script($scope8_id, "r10");
2121
2121
  _subscribe($si__input && $input__closures, writeScope($scope8_id, {}));
2122
2122
  return 0;
@@ -2124,7 +2124,7 @@ var review_section_default = _template("r", (input) => {
2124
2124
  const $scope9_id = _scope_id();
2125
2125
  const $childScope = _peek_scope_id();
2126
2126
  diff_file_default({
2127
- class: "_gh",
2127
+ class: "_fR",
2128
2128
  file: file$1,
2129
2129
  comments: fileComments,
2130
2130
  draft: input.draft && input.draft.key === file$1.key ? input.draft : null,
@@ -2324,7 +2324,7 @@ var diff_tree_default = _template("i", (input) => {
2324
2324
  scope: input.scope ?? null,
2325
2325
  file: key
2326
2326
  }), "i0", $scope0_id);
2327
- _html(`<aside${_attr_class(["_eS", { ["_eR"]: input.open === false }])}><div${_attr_class("_eT")}>`);
2327
+ _html(`<aside${_attr_class(["_fh", { ["_fg"]: input.open === false }])}><div${_attr_class("_fi")}>`);
2328
2328
  _set_serialize_reason(2);
2329
2329
  const $childScope = _peek_scope_id();
2330
2330
  file_filter_default({
@@ -2337,14 +2337,14 @@ var diff_tree_default = _template("i", (input) => {
2337
2337
  _if(() => {
2338
2338
  if (!input.sections.length && filter) {
2339
2339
  const $scope6_id = _scope_id();
2340
- _html(`<p${_attr_class("_eU")}>No files match.</p>`);
2340
+ _html(`<p${_attr_class("_fj")}>No files match.</p>`);
2341
2341
  writeScope($scope6_id, {});
2342
2342
  return 0;
2343
2343
  }
2344
2344
  }, $scope0_id, "d", 1, 1, 1, 0, 1);
2345
2345
  _for_of(input.sections, (section) => {
2346
2346
  const $scope1_id = _scope_id();
2347
- _html(`<div${_attr_class("_eV")}><button type=button${_attr_class(["_eW", { ["_eR"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_e2")}>${collapsedRepos.has(section.id) ? "▸" : "▾"}${_el_resume($scope1_id, "d")}</span>${_sep($sg__input_sections)}${_escape(section.label)}${_el_resume($scope1_id, "e", $sg__input_sections)}</button>${_el_resume($scope1_id, "b")}`);
2347
+ _html(`<div${_attr_class("_fk")}><button type=button${_attr_class(["_fl", { ["_fg"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fr")}>${collapsedRepos.has(section.id) ? "▸" : "▾"}${_el_resume($scope1_id, "d")}</span>${_sep($sg__input_sections)}${_escape(section.label)}${_el_resume($scope1_id, "e", $sg__input_sections)}</button>${_el_resume($scope1_id, "b")}`);
2348
2348
  _if(() => {
2349
2349
  if (!collapsedRepos.has(section.id) || openedRepos.has(section.id)) {
2350
2350
  const $scope2_id = _scope_id();
@@ -2371,17 +2371,17 @@ var diff_tree_default = _template("i", (input) => {
2371
2371
  _if(() => {
2372
2372
  if (!hiddenByCollapse(row) && row.kind === "dir") {
2373
2373
  const $scope4_id = _scope_id();
2374
- _html(`<button type=button${_attr_class(["_eX", { ["_eR"]: collapsedDirs.has(dirKey(row.path)) }])}${_attr("title", row.path)}${_attr_style(`padding-left:${.35 + row.depth * .75}rem`)}><span${_attr_class("_e2")}>${collapsedDirs.has(dirKey(row.path)) ? "▸" : "▾"}${_el_resume($scope4_id, "c")}</span>${_escape(row.label)}${_el_resume($scope4_id, "d", $sg__input_sections)}/</button>${_el_resume($scope4_id, "a")}`);
2374
+ _html(`<button type=button${_attr_class(["_fm", { ["_fg"]: collapsedDirs.has(dirKey(row.path)) }])}${_attr("title", row.path)}${_attr_style(`padding-left:${.35 + row.depth * .75}rem`)}><span${_attr_class("_fr")}>${collapsedDirs.has(dirKey(row.path)) ? "▸" : "▾"}${_el_resume($scope4_id, "c")}</span>${_escape(row.label)}${_el_resume($scope4_id, "d", $sg__input_sections)}/</button>${_el_resume($scope4_id, "a")}`);
2375
2375
  _script($scope4_id, "i5");
2376
2376
  _subscribe($si__input_sections && $if_content__dirKey__closures, _subscribe($collapsedDirs__closures, writeScope($scope4_id, { Cab: 1 })));
2377
2377
  return 0;
2378
2378
  } else if (!hiddenByCollapse(row) && row.kind !== "dir") {
2379
2379
  const $scope5_id = _scope_id();
2380
- _html(`<a${_attr("href", hrefFor(row.file.key))}${_attr_class("_eY")}${_attr("title", row.file.path)}${_attr_style(`padding-left:${.5 + row.depth * .75}rem`)}><span${_attr_class("_e3")}${_attr("data-status", row.file.status)}>${_escape(row.file.status)}${_el_resume($scope5_id, "c", $sg__input_sections)}</span>${_el_resume($scope5_id, "b", $sg__input_sections)}<span${_attr_class("_eZ")}>${_escape(row.name)}${_el_resume($scope5_id, "e", $sg__input_sections)}</span>`);
2380
+ _html(`<a${_attr("href", hrefFor(row.file.key))}${_attr_class("_fn")}${_attr("title", row.file.path)}${_attr_style(`padding-left:${.5 + row.depth * .75}rem`)}><span${_attr_class("_fs")}${_attr("data-status", row.file.status)}>${_escape(row.file.status)}${_el_resume($scope5_id, "c", $sg__input_sections)}</span>${_el_resume($scope5_id, "b", $sg__input_sections)}<span${_attr_class("_fo")}>${_escape(row.name)}${_el_resume($scope5_id, "e", $sg__input_sections)}</span>`);
2381
2381
  _if(() => {
2382
2382
  if (newKeys.has(row.file.key)) {
2383
2383
  const $scope7_id = _scope_id();
2384
- _html(`<span${_attr_class(["_w", "_e0"])} title="Changed since your last visit"></span>`);
2384
+ _html(`<span${_attr_class(["_w", "_fp"])} title="Changed since your last visit"></span>`);
2385
2385
  _serialize_if($scope0_reason, 1) && writeScope($scope7_id, {});
2386
2386
  return 0;
2387
2387
  }
@@ -2389,7 +2389,7 @@ var diff_tree_default = _template("i", (input) => {
2389
2389
  _if(() => {
2390
2390
  if (commentKeys.has(row.file.key)) {
2391
2391
  const $scope8_id = _scope_id();
2392
- _html(`<span${_attr_class("_e1")}>💬</span>`);
2392
+ _html(`<span${_attr_class("_fq")}>💬</span>`);
2393
2393
  _serialize_if($scope0_reason, 0) && writeScope($scope8_id, {});
2394
2394
  return 0;
2395
2395
  }
@@ -2491,9 +2491,9 @@ var diff_file_sheet_default = _template("e", (input) => {
2491
2491
  _if(() => {
2492
2492
  if (open) {
2493
2493
  const $scope1_id = _scope_id();
2494
- _html(`<div${_attr_class("_fi")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_fj")} role=dialog aria-label="Jump to file"><div${_attr_class("_fk")}><strong${_attr_class("_fh")}>Files</strong><span${_attr_class("_fl")}>${_escape(input.files.length)}${_el_resume($scope1_id, "f", $sg__input_files_length)}${_sep($sg__input_total__OR__input_files_length)}${input.files.length !== total ? ` / ${_escape(`${total}`)}` : ""}${_el_resume($scope1_id, "g", $sg__input_total__OR__input_files_length)}</span><button type=button${_attr_class([iconBtnLg, "_fg"])} title=Close aria-label=Close>`);
2494
+ _html(`<div${_attr_class("_eR")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_eS")} role=dialog aria-label="Jump to file"><div${_attr_class("_eT")}><strong${_attr_class("_eQ")}>Files</strong><span${_attr_class("_eU")}>${_escape(input.files.length)}${_el_resume($scope1_id, "f", $sg__input_files_length)}${_sep($sg__input_total__OR__input_files_length)}${input.files.length !== total ? ` / ${_escape(`${total}`)}` : ""}${_el_resume($scope1_id, "g", $sg__input_total__OR__input_files_length)}</span><button type=button${_attr_class([iconBtnLg, "_eP"])} title=Close aria-label=Close>`);
2495
2495
  icon_xmark_default({ size: 16 });
2496
- _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_fr")}>`);
2496
+ _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_e0")}>`);
2497
2497
  _set_serialize_reason(2);
2498
2498
  const $childScope = _peek_scope_id();
2499
2499
  file_filter_default({
@@ -2502,24 +2502,24 @@ var diff_file_sheet_default = _template("e", (input) => {
2502
2502
  filter = _new_filter;
2503
2503
  }, "e2", $scope1_id)
2504
2504
  });
2505
- _html(`</div><div${_attr_class("_fm")}>`);
2505
+ _html(`</div><div${_attr_class("_eV")}>`);
2506
2506
  _for_of(input.files, (file) => {
2507
2507
  const $scope2_id = _scope_id();
2508
2508
  const parts = splitKey(file.key);
2509
- _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_fn", "_u"])}><span${_attr_class("_fu")}${_attr("data-status", file.status)}>${_escape(file.status)}${_el_resume($scope2_id, "c", $sg__input_files)}</span>${_el_resume($scope2_id, "b", $sg__input_files)}<span${_attr_class("_fo")}>`);
2509
+ _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_eW", "_u"])}><span${_attr_class("_e3")}${_attr("data-status", file.status)}>${_escape(file.status)}${_el_resume($scope2_id, "c", $sg__input_files)}</span>${_el_resume($scope2_id, "b", $sg__input_files)}<span${_attr_class("_eX")}>`);
2510
2510
  _if(() => {
2511
2511
  if (parts.dir) {
2512
2512
  const $scope3_id = _scope_id();
2513
- _html(`<span${_attr_class("_fp")}><bdi>${_escape(parts.dir)}${_el_resume($scope3_id, "b", $sg__input_files)}/</bdi></span>`);
2513
+ _html(`<span${_attr_class("_eY")}><bdi>${_escape(parts.dir)}${_el_resume($scope3_id, "b", $sg__input_files)}/</bdi></span>`);
2514
2514
  $si__input_files && writeScope($scope3_id, { _: _scope_with_id($scope2_id) });
2515
2515
  return 0;
2516
2516
  }
2517
2517
  }, $scope2_id, "e", $sg__input_files, $sg__input_files, $sg__input_commentKeys__OR__input_newKeys__OR__input_files, 0, 1);
2518
- _html(`<span${_attr_class("_fq")}><bdi>${_escape(parts.name)}${_el_resume($scope2_id, "g", $sg__input_files)}</bdi></span></span>`);
2518
+ _html(`<span${_attr_class("_eZ")}><bdi>${_escape(parts.name)}${_el_resume($scope2_id, "g", $sg__input_files)}</bdi></span></span>`);
2519
2519
  _if(() => {
2520
2520
  if (newKeys.has(file.key)) {
2521
2521
  const $scope4_id = _scope_id();
2522
- _html(`<span${_attr_class(["_w", "_ft"])} title="Changed since your last visit"></span>`);
2522
+ _html(`<span${_attr_class(["_w", "_e2"])} title="Changed since your last visit"></span>`);
2523
2523
  _serialize_if($scope0_reason, 1) && writeScope($scope4_id, {});
2524
2524
  return 0;
2525
2525
  }
@@ -2543,7 +2543,7 @@ var diff_file_sheet_default = _template("e", (input) => {
2543
2543
  _if(() => {
2544
2544
  if (!input.files.length) {
2545
2545
  const $scope6_id = _scope_id();
2546
- _html(`<p${_attr_class("_fs")}>No files match.</p>`);
2546
+ _html(`<p${_attr_class("_e1")}>No files match.</p>`);
2547
2547
  $si__input_files_length && writeScope($scope6_id, {});
2548
2548
  return 0;
2549
2549
  }
@@ -3141,12 +3141,12 @@ var diff_view_default = _template("j", (input) => {
3141
3141
  _if(() => {
3142
3142
  if (repos && !allFiles.length) {
3143
3143
  const $scope11_id = _scope_id();
3144
- _html(`<p${_attr_class("_bs")}>${scope$1 === "dirty" ? "Nothing uncommitted." : repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base."}${_el_resume($scope11_id, "b")}</p>`);
3144
+ _html(`<p${_attr_class("_bB")}>${scope$1 === "dirty" ? "Nothing uncommitted." : repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base."}${_el_resume($scope11_id, "b")}</p>`);
3145
3145
  writeScope($scope11_id, {});
3146
3146
  return 0;
3147
3147
  } else if (repos && !shownFiles.length && !findState.hit) {
3148
3148
  const $scope8_id = _scope_id();
3149
- _html(`<p${_attr_class("_bs")}>${findState.query.trim() ? "No matches in review." : onlyNew && !fileFilter ? "Nothing changed since your last visit." : `No files match "${_escape(`${fileFilter}`)}".`}${_el_resume($scope8_id, "b")}</p>`);
3149
+ _html(`<p${_attr_class("_bB")}>${findState.query.trim() ? "No matches in review." : onlyNew && !fileFilter ? "Nothing changed since your last visit." : `No files match "${_escape(`${fileFilter}`)}".`}${_el_resume($scope8_id, "b")}</p>`);
3150
3150
  writeScope($scope8_id, {});
3151
3151
  return 1;
3152
3152
  }
@@ -7,6 +7,7 @@ import os from "node:os";
7
7
  import { execFile } from "node:child_process";
8
8
  import { promisify } from "node:util";
9
9
  import { DatabaseSync } from "node:sqlite";
10
+ import { createHash } from "node:crypto";
10
11
  //#region src/server/config.ts
11
12
  var home$1 = os.homedir();
12
13
  var config = {
@@ -4585,14 +4586,14 @@ var require_buffer_equal_constant_time = /* @__PURE__ */ __commonJSMin(((exports
4585
4586
  //#region node_modules/.pnpm/jwa@2.0.1/node_modules/jwa/index.js
4586
4587
  var require_jwa = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4587
4588
  var Buffer = require_safe_buffer().Buffer;
4588
- var crypto$3 = __require("crypto");
4589
+ var crypto$4 = __require("crypto");
4589
4590
  var formatEcdsa = require_ecdsa_sig_formatter();
4590
4591
  var util$2 = __require("util");
4591
4592
  var MSG_INVALID_ALGORITHM = "\"%s\" is not a valid algorithm.\n Supported algorithms are:\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".";
4592
4593
  var MSG_INVALID_SECRET = "secret must be a string or buffer";
4593
4594
  var MSG_INVALID_VERIFIER_KEY = "key must be a string or a buffer";
4594
4595
  var MSG_INVALID_SIGNER_KEY = "key must be a string, a buffer or an object";
4595
- var supportsKeyObjects = typeof crypto$3.createPublicKey === "function";
4596
+ var supportsKeyObjects = typeof crypto$4.createPublicKey === "function";
4596
4597
  if (supportsKeyObjects) {
4597
4598
  MSG_INVALID_VERIFIER_KEY += " or a KeyObject";
4598
4599
  MSG_INVALID_SECRET += "or a KeyObject";
@@ -4645,14 +4646,14 @@ var require_jwa = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4645
4646
  return function sign(thing, secret) {
4646
4647
  checkIsSecretKey(secret);
4647
4648
  thing = normalizeInput(thing);
4648
- var hmac = crypto$3.createHmac("sha" + bits, secret);
4649
+ var hmac = crypto$4.createHmac("sha" + bits, secret);
4649
4650
  return fromBase64((hmac.update(thing), hmac.digest("base64")));
4650
4651
  };
4651
4652
  }
4652
4653
  var bufferEqual;
4653
- var timingSafeEqual = "timingSafeEqual" in crypto$3 ? function timingSafeEqual(a, b) {
4654
+ var timingSafeEqual = "timingSafeEqual" in crypto$4 ? function timingSafeEqual(a, b) {
4654
4655
  if (a.byteLength !== b.byteLength) return false;
4655
- return crypto$3.timingSafeEqual(a, b);
4656
+ return crypto$4.timingSafeEqual(a, b);
4656
4657
  } : function timingSafeEqual(a, b) {
4657
4658
  if (!bufferEqual) bufferEqual = require_buffer_equal_constant_time();
4658
4659
  return bufferEqual(a, b);
@@ -4667,7 +4668,7 @@ var require_jwa = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4667
4668
  return function sign(thing, privateKey) {
4668
4669
  checkIsPrivateKey(privateKey);
4669
4670
  thing = normalizeInput(thing);
4670
- var signer = crypto$3.createSign("RSA-SHA" + bits);
4671
+ var signer = crypto$4.createSign("RSA-SHA" + bits);
4671
4672
  return fromBase64((signer.update(thing), signer.sign(privateKey, "base64")));
4672
4673
  };
4673
4674
  }
@@ -4676,7 +4677,7 @@ var require_jwa = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4676
4677
  checkIsPublicKey(publicKey);
4677
4678
  thing = normalizeInput(thing);
4678
4679
  signature = toBase64(signature);
4679
- var verifier = crypto$3.createVerify("RSA-SHA" + bits);
4680
+ var verifier = crypto$4.createVerify("RSA-SHA" + bits);
4680
4681
  verifier.update(thing);
4681
4682
  return verifier.verify(publicKey, signature, "base64");
4682
4683
  };
@@ -4685,11 +4686,11 @@ var require_jwa = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4685
4686
  return function sign(thing, privateKey) {
4686
4687
  checkIsPrivateKey(privateKey);
4687
4688
  thing = normalizeInput(thing);
4688
- var signer = crypto$3.createSign("RSA-SHA" + bits);
4689
+ var signer = crypto$4.createSign("RSA-SHA" + bits);
4689
4690
  return fromBase64((signer.update(thing), signer.sign({
4690
4691
  key: privateKey,
4691
- padding: crypto$3.constants.RSA_PKCS1_PSS_PADDING,
4692
- saltLength: crypto$3.constants.RSA_PSS_SALTLEN_DIGEST
4692
+ padding: crypto$4.constants.RSA_PKCS1_PSS_PADDING,
4693
+ saltLength: crypto$4.constants.RSA_PSS_SALTLEN_DIGEST
4693
4694
  }, "base64")));
4694
4695
  };
4695
4696
  }
@@ -4698,12 +4699,12 @@ var require_jwa = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4698
4699
  checkIsPublicKey(publicKey);
4699
4700
  thing = normalizeInput(thing);
4700
4701
  signature = toBase64(signature);
4701
- var verifier = crypto$3.createVerify("RSA-SHA" + bits);
4702
+ var verifier = crypto$4.createVerify("RSA-SHA" + bits);
4702
4703
  verifier.update(thing);
4703
4704
  return verifier.verify({
4704
4705
  key: publicKey,
4705
- padding: crypto$3.constants.RSA_PKCS1_PSS_PADDING,
4706
- saltLength: crypto$3.constants.RSA_PSS_SALTLEN_DIGEST
4706
+ padding: crypto$4.constants.RSA_PKCS1_PSS_PADDING,
4707
+ saltLength: crypto$4.constants.RSA_PSS_SALTLEN_DIGEST
4707
4708
  }, signature, "base64");
4708
4709
  };
4709
4710
  }
@@ -5001,7 +5002,7 @@ var require_urlsafe_base64_helper = /* @__PURE__ */ __commonJSMin(((exports, mod
5001
5002
  //#endregion
5002
5003
  //#region node_modules/.pnpm/web-push@3.6.7_supports-color@10.2.2/node_modules/web-push/src/vapid-helper.js
5003
5004
  var require_vapid_helper = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5004
- var crypto$2 = __require("crypto");
5005
+ var crypto$3 = __require("crypto");
5005
5006
  var asn1 = require_asn1();
5006
5007
  var jws = require_jws();
5007
5008
  var { URL } = __require("url");
@@ -5031,7 +5032,7 @@ var require_vapid_helper = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5031
5032
  }, "pem", { label: "EC PRIVATE KEY" });
5032
5033
  }
5033
5034
  function generateVAPIDKeys() {
5034
- const curve = crypto$2.createECDH("prime256v1");
5035
+ const curve = crypto$3.createECDH("prime256v1");
5035
5036
  curve.generateKeys();
5036
5037
  let publicKeyBuffer = curve.getPublicKey();
5037
5038
  let privateKeyBuffer = curve.getPrivateKey();
@@ -5161,7 +5162,7 @@ var require_vapid_helper = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5161
5162
  //#endregion
5162
5163
  //#region node_modules/.pnpm/http_ece@1.2.0/node_modules/http_ece/ece.js
5163
5164
  var require_ece = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5164
- var crypto$1 = __require("crypto");
5165
+ var crypto$2 = __require("crypto");
5165
5166
  var AES_GCM = "aes-128-gcm";
5166
5167
  var PAD_SIZE = {
5167
5168
  "aes128gcm": 1,
@@ -5186,7 +5187,7 @@ var require_ece = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5186
5187
  return b;
5187
5188
  }
5188
5189
  function HMAC_hash(key, input) {
5189
- var hmac = crypto$1.createHmac("sha256", key);
5190
+ var hmac = crypto$2.createHmac("sha256", key);
5190
5191
  hmac.update(input);
5191
5192
  return hmac.digest();
5192
5193
  }
@@ -5390,7 +5391,7 @@ var require_ece = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5390
5391
  function decryptRecord(key, counter, buffer, header, last) {
5391
5392
  keylog("decrypt", buffer);
5392
5393
  var nonce = generateNonce(key.nonce, counter);
5393
- var gcm = crypto$1.createDecipheriv(AES_GCM, key.key, nonce);
5394
+ var gcm = crypto$2.createDecipheriv(AES_GCM, key.key, nonce);
5394
5395
  gcm.setAuthTag(buffer.slice(buffer.length - TAG_LENGTH));
5395
5396
  var data = gcm.update(buffer.slice(0, buffer.length - TAG_LENGTH));
5396
5397
  data = Buffer.concat([data, gcm.final()]);
@@ -5440,7 +5441,7 @@ var require_ece = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5440
5441
  keylog("encrypt", buffer);
5441
5442
  pad = pad || 0;
5442
5443
  var nonce = generateNonce(key.nonce, counter);
5443
- var gcm = crypto$1.createCipheriv(AES_GCM, key.key, nonce);
5444
+ var gcm = crypto$2.createCipheriv(AES_GCM, key.key, nonce);
5444
5445
  var ciphertext = [];
5445
5446
  var padSize = PAD_SIZE[header.version];
5446
5447
  var padding = Buffer.alloc(pad + padSize);
@@ -5492,7 +5493,7 @@ var require_ece = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5492
5493
  function encrypt(buffer, params, keyLookupCallback) {
5493
5494
  if (!Buffer.isBuffer(buffer)) throw new Error("buffer argument must be a Buffer");
5494
5495
  var header = parseParams(params);
5495
- if (!header.salt) header.salt = crypto$1.randomBytes(KEY_LENGTH);
5496
+ if (!header.salt) header.salt = crypto$2.randomBytes(KEY_LENGTH);
5496
5497
  var result;
5497
5498
  if (header.version === "aes128gcm") {
5498
5499
  if (header.privateKey && !header.keyid) header.keyid = header.privateKey.getPublicKey();
@@ -5533,7 +5534,7 @@ var require_ece = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5533
5534
  //#endregion
5534
5535
  //#region node_modules/.pnpm/web-push@3.6.7_supports-color@10.2.2/node_modules/web-push/src/encryption-helper.js
5535
5536
  var require_encryption_helper = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5536
- var crypto = __require("crypto");
5537
+ var crypto$1 = __require("crypto");
5537
5538
  var ece = require_ece();
5538
5539
  var encrypt = function(userPublicKey, userAuth, payload, contentEncoding) {
5539
5540
  if (!userPublicKey) throw new Error("No user public key provided for encryption.");
@@ -5544,9 +5545,9 @@ var require_encryption_helper = /* @__PURE__ */ __commonJSMin(((exports, module)
5544
5545
  if (Buffer.from(userAuth, "base64url").length < 16) throw new Error("The subscription auth key should be at least 16 bytes long");
5545
5546
  if (typeof payload !== "string" && !Buffer.isBuffer(payload)) throw new Error("Payload must be either a string or a Node Buffer.");
5546
5547
  if (typeof payload === "string" || payload instanceof String) payload = Buffer.from(payload);
5547
- const localCurve = crypto.createECDH("prime256v1");
5548
+ const localCurve = crypto$1.createECDH("prime256v1");
5548
5549
  const localPublicKey = localCurve.generateKeys();
5549
- const salt = crypto.randomBytes(16).toString("base64url");
5550
+ const salt = crypto$1.randomBytes(16).toString("base64url");
5550
5551
  return {
5551
5552
  localPublicKey,
5552
5553
  salt,
@@ -6325,7 +6326,7 @@ var summaries = /* @__PURE__ */ new Map();
6325
6326
  var viewers = /* @__PURE__ */ new Map();
6326
6327
  /** Human-readable one-liner mined from an agent CLI's hook payload.
6327
6328
  * Claude's Stop hook carries the agent's actual final message
6328
- * (last_assistant_message); Codex's notify payload spells it
6329
+ * (last_assistant_message), as does Codex's Stop hook; the legacy notify payload spells it
6329
6330
  * last-assistant-message; Claude Notifications carry a type. Anything
6330
6331
  * else falls back to terminal scraping. */
6331
6332
  function summaryFromHookPayload(payload) {
@@ -6334,6 +6335,11 @@ function summaryFromHookPayload(payload) {
6334
6335
  const text = typeof p.last_assistant_message === "string" && p.last_assistant_message || typeof p["last-assistant-message"] === "string" && p["last-assistant-message"] || typeof p.agent_message === "string" && p.agent_message || "";
6335
6336
  if (text) return cleanSummary(text);
6336
6337
  if (typeof p.notification_type === "string") return NOTIFICATION_LABELS[p.notification_type];
6338
+ if (p.hook_event_name === "PermissionRequest") {
6339
+ const input = p.tool_input;
6340
+ const what = (input && typeof input.command === "string" ? input.command : "") || (typeof p.tool_name === "string" ? p.tool_name : "");
6341
+ return what ? cleanSummary(`Approve: ${what}`) : "Waiting for permission";
6342
+ }
6337
6343
  }
6338
6344
  var NOTIFICATION_LABELS = {
6339
6345
  permission_prompt: "Waiting for permission",
@@ -6442,7 +6448,7 @@ function publishChange(sessionId) {
6442
6448
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
6443
6449
  if (row?.workspace_id) {
6444
6450
  const workspaceId = row.workspace_id;
6445
- import("./_C8-SYmgW.js").then((m) => m.notifySessionsChanged(workspaceId));
6451
+ import("./_xZfpJdQE.js").then((m) => m.notifySessionsChanged(workspaceId));
6446
6452
  return;
6447
6453
  }
6448
6454
  publish("sessions.changed");
@@ -6451,22 +6457,81 @@ function publishChange(sessionId) {
6451
6457
  //#region src/server/agent-flags.ts
6452
6458
  /** Agent-state reporting via launch-time flags — nothing is written to the
6453
6459
  * workspace or the user's global config. Claude takes an inline settings
6454
- * JSON (--settings accepts a JSON string); Codex takes its notify command
6455
- * via `-c` (its turn-complete payload carries last-assistant-message).
6456
- * Grok, Cursor and Copilot expose no file-free hook mechanism, so their
6457
- * sessions get working/idle from pane activity (see scraper.ts) and
6458
- * nothing else — a stopped turn and a question look the same. */
6460
+ * JSON (--settings accepts a JSON string); Codex takes lifecycle hooks via
6461
+ * `-c` overrides, trusted through a `hooks.state` entry in the same
6462
+ * override layer (see codexHookFlags). Grok, Cursor and Copilot expose no
6463
+ * file-free hook mechanism, so their sessions get working/idle from pane
6464
+ * activity (see scraper.ts) and nothing else — a stopped turn and a
6465
+ * question look the same. */
6459
6466
  function stateCurl(state, reason) {
6460
6467
  const qs = `session=$WORK_SESSION_ID&state=${state}` + (reason ? `&reason=${reason}` : "");
6461
6468
  return `[ -n "$WORK_SESSION_ID" ] && curl -sf -m 3 -X POST "http://127.0.0.1:\${WORK_APP_PORT:-${config.appPort}}/api/agent-state?${qs}" -H 'content-type: application/json' --data-binary @- >/dev/null 2>&1; exit 0`;
6462
6469
  }
6463
6470
  /** Whether the agent says when it *starts* working, not just when it stops.
6464
- * Codex's notify only fires on turn-complete, so the screen is the only
6465
- * thing that can tell us it picked up again; Claude announces it, and
6466
- * believing the screen over that costs it the state its own hook just
6467
- * reported. */
6471
+ * Claude and Codex announce it through hooks; believing the screen over that
6472
+ * costs them the state their own hook just reported. */
6468
6473
  function reportsWorking(agent) {
6469
- return agentFamily(agent) === "claude";
6474
+ const family = agentFamily(agent);
6475
+ return family === "claude" || family === "codex";
6476
+ }
6477
+ /** Codex hook events → the state each reports. Same shape as Claude's:
6478
+ * a prompt or a tool call means working, Stop means the turn is done,
6479
+ * PermissionRequest means it is about to ask (fires just before the
6480
+ * approval prompt; PostToolUse clears it once the approved call has run,
6481
+ * or the next PreToolUse does if a reviewer auto-decided). */
6482
+ var CODEX_HOOKS = [
6483
+ ["UserPromptSubmit", "working"],
6484
+ ["PreToolUse", "working"],
6485
+ ["PostToolUse", "working"],
6486
+ [
6487
+ "PermissionRequest",
6488
+ "waiting",
6489
+ "attention"
6490
+ ],
6491
+ [
6492
+ "Stop",
6493
+ "waiting",
6494
+ "done"
6495
+ ]
6496
+ ];
6497
+ /** Codex only runs hooks it trusts. Trust is a hash of the normalized hook
6498
+ * kept in config (`hooks.state.<key>.trusted_hash`), and both the hooks and
6499
+ * that state are read from the `-c` override layer too — so the launch flags
6500
+ * can carry their own trust without touching ~/.codex/config.toml.
6501
+ * Mirrors codex-rs/hooks/src/engine/discovery.rs (hook_hash, hook_key,
6502
+ * normalized Command config: timeout defaults to 600, async false, None
6503
+ * fields omitted) and codex-rs/config/src/fingerprint.rs (sha256 of
6504
+ * key-sorted JSON). Verified against real trusted_hash entries. */
6505
+ function codexHookTrustHash(event, command) {
6506
+ const identity = {
6507
+ event_name: codexHookKeyLabel(event),
6508
+ hooks: [{
6509
+ async: false,
6510
+ command,
6511
+ timeout: 600,
6512
+ type: "command"
6513
+ }]
6514
+ };
6515
+ return "sha256:" + createHash("sha256").update(JSON.stringify(identity)).digest("hex");
6516
+ }
6517
+ /** `PermissionRequest` → `permission_request` (codex-rs/hooks/src/lib.rs). */
6518
+ function codexHookKeyLabel(event) {
6519
+ return event.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
6520
+ }
6521
+ /** Synthetic path Codex gives the `-c` override layer when keying hook state. */
6522
+ var CODEX_SESSION_FLAGS_PATH = "/<session-flags>/config.toml";
6523
+ /** `-c` overrides that install work's state hooks in a Codex session. */
6524
+ function codexHookFlags() {
6525
+ const flags = [];
6526
+ const state = [];
6527
+ for (const [event, st, reason] of CODEX_HOOKS) {
6528
+ const command = stateCurl(st, reason);
6529
+ flags.push("-c", `hooks.${event}=[{hooks=[{type="command",command=${JSON.stringify(command)}}]}]`);
6530
+ const key = `${CODEX_SESSION_FLAGS_PATH}:${codexHookKeyLabel(event)}:0:0`;
6531
+ state.push(`${JSON.stringify(key)}={trusted_hash=${JSON.stringify(codexHookTrustHash(event, command))}}`);
6532
+ }
6533
+ flags.push("-c", `hooks.state={${state.join(",")}}`);
6534
+ return flags;
6470
6535
  }
6471
6536
  /** Family of an instance id (`claude2` → `claude`); flags and hooks are
6472
6537
  * per family, every numbered copy behaves the same. */
@@ -6488,12 +6553,7 @@ function agentLaunchFlags(agent) {
6488
6553
  Notification: hook("waiting", "attention")
6489
6554
  } })];
6490
6555
  }
6491
- if (family === "codex") return ["-c", `notify=[${[
6492
- "sh",
6493
- "-c",
6494
- `[ -n "$WORK_SESSION_ID" ] && curl -sf -m 3 -X POST "http://127.0.0.1:\${WORK_APP_PORT:-${config.appPort}}/api/agent-state?session=$WORK_SESSION_ID&state=waiting&reason=done" -H 'content-type: application/json' --data "$1" >/dev/null 2>&1; exit 0`,
6495
- "work-notify"
6496
- ].map((w) => JSON.stringify(w)).join(",")}]`];
6556
+ if (family === "codex") return codexHookFlags();
6497
6557
  return [];
6498
6558
  }
6499
6559
  //#endregion
@@ -0,0 +1,2 @@
1
+ import { f as notifySessionsChanged } from "./_DgDsZuoQ.js";
2
+ export { notifySessionsChanged };