@dylanpiercey/work 0.0.139 → 0.0.141

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 (249) hide show
  1. package/dist/{_B9jB3eUh.js → _CZz7Wyts.js} +17 -17
  2. package/dist/{_BlEiBDGk.js → _CgMVRC4h.js} +182 -48
  3. package/dist/_CwAYWKgO.js +2 -0
  4. package/dist/{_Dkhw1NHC.js → _jYLlSG8J.js} +69 -69
  5. package/dist/index.mjs +350 -344
  6. package/dist/public/assets/{_CuS5H1zc.js → _B1B7SsmR.js} +1 -1
  7. package/dist/public/assets/_B1B7SsmR.js.br +0 -0
  8. package/dist/public/assets/{_D1VBE8Ni.js → _B1nEnOeR.js} +1 -1
  9. package/dist/public/assets/_B1nEnOeR.js.br +0 -0
  10. package/dist/public/assets/{_DzkQ59tO2.js → _B2vPwdLW2.js} +1 -1
  11. package/dist/public/assets/_B2vPwdLW2.js.br +0 -0
  12. package/dist/public/assets/{_BaPmPjXa.js → _B2zlBhgP.js} +1 -1
  13. package/dist/public/assets/_B2zlBhgP.js.br +0 -0
  14. package/dist/public/assets/{_BGQP06_w.js → _B3-rUIWu.js} +1 -1
  15. package/dist/public/assets/_B3-rUIWu.js.br +0 -0
  16. package/dist/public/assets/{_Cy053Jd0.js → _B3v2Mxg9.js} +1 -1
  17. package/dist/public/assets/_B3v2Mxg9.js.br +0 -0
  18. package/dist/public/assets/{_B6VbLzOa.js → _B4zQcDgs.js} +1 -1
  19. package/dist/public/assets/_B4zQcDgs.js.br +0 -0
  20. package/dist/public/assets/{_BhN1afwu.js → _B7g6vstf.js} +1 -1
  21. package/dist/public/assets/_B7g6vstf.js.br +0 -0
  22. package/dist/public/assets/{_aT-vIKyZ.js → _B8bLTrAR.js} +1 -1
  23. package/dist/public/assets/_B8bLTrAR.js.br +0 -0
  24. package/dist/public/assets/{_DMtHQg6p.js → _BERiWLR2.js} +1 -1
  25. package/dist/public/assets/_BERiWLR2.js.br +0 -0
  26. package/dist/public/assets/{_Bhn5BezI.js → _BG6eCCtD.js} +1 -1
  27. package/dist/public/assets/_BG6eCCtD.js.br +0 -0
  28. package/dist/public/assets/{_DCyA_kCN2.js → _BIGq6NLW2.js} +1 -1
  29. package/dist/public/assets/_BIGq6NLW2.js.br +0 -0
  30. package/dist/public/assets/{_DxbZoYq92.js → _BJL8EzDT2.js} +1 -1
  31. package/dist/public/assets/_BJL8EzDT2.js.br +0 -0
  32. package/dist/public/assets/{_DEwoT19i.js → _BMjuOAQ4.js} +1 -1
  33. package/dist/public/assets/_BMjuOAQ4.js.br +0 -0
  34. package/dist/public/assets/{_wWYYdpzZ2.js → _BNv3fPjT2.js} +1 -1
  35. package/dist/public/assets/_BNv3fPjT2.js.br +0 -0
  36. package/dist/public/assets/{_DsUtXotp.js → _BQazGBwX.js} +1 -1
  37. package/dist/public/assets/_BQazGBwX.js.br +0 -0
  38. package/dist/public/assets/{_PaKRa2cB.js → _BY-WvMhs.js} +1 -1
  39. package/dist/public/assets/_BY-WvMhs.js.br +0 -0
  40. package/dist/public/assets/{_BZb7VTF_.js → _BZJVwhA5.js} +1 -1
  41. package/dist/public/assets/_BZJVwhA5.js.br +0 -0
  42. package/dist/public/assets/{_Dh6dMgTO2.js → _B_wawL6J2.js} +1 -1
  43. package/dist/public/assets/_B_wawL6J2.js.br +0 -0
  44. package/dist/public/assets/{_wPGOV0BF2.js → _Ba8vUCRv2.js} +1 -1
  45. package/dist/public/assets/_Ba8vUCRv2.js.br +0 -0
  46. package/dist/public/assets/{_dIGPKWvv.js → _BcTQMZit.js} +1 -1
  47. package/dist/public/assets/_BcTQMZit.js.br +0 -0
  48. package/dist/public/assets/{_DYl8DmZ32.js → _Blhy_Vd12.js} +1 -1
  49. package/dist/public/assets/_Blhy_Vd12.js.br +0 -0
  50. package/dist/public/assets/{_CL5pEkPF2.js → _BuLSZuTT2.js} +1 -1
  51. package/dist/public/assets/{_diJBCZr0.js → _BuNhyEVe.js} +1 -1
  52. package/dist/public/assets/_BuNhyEVe.js.br +0 -0
  53. package/dist/public/assets/{_Cch7T0VL.js → _C2WEo047.js} +1 -1
  54. package/dist/public/assets/_C2WEo047.js.br +0 -0
  55. package/dist/public/assets/{_HGe5zAKn.js → _C5QblKM6.js} +1 -1
  56. package/dist/public/assets/_C5QblKM6.js.br +0 -0
  57. package/dist/public/assets/{_CVH-iW95.js → _CBHyOOZB.js} +1 -1
  58. package/dist/public/assets/_CBHyOOZB.js.br +0 -0
  59. package/dist/public/assets/{_D-bpXh2X.js → _CFGDp3Sw.js} +1 -1
  60. package/dist/public/assets/_CFGDp3Sw.js.br +0 -0
  61. package/dist/public/assets/{_DLatqs0j2.js → _CNPgjl1-2.js} +1 -1
  62. package/dist/public/assets/_CNPgjl1-2.js.br +0 -0
  63. package/dist/public/assets/{_Dva2q_M42.js → _CSJQogH62.js} +1 -1
  64. package/dist/public/assets/_CSJQogH62.js.br +0 -0
  65. package/dist/public/assets/{_DQ_V1iRl.js → _CUjz6cMW.js} +1 -1
  66. package/dist/public/assets/_CUjz6cMW.js.br +0 -0
  67. package/dist/public/assets/{_BB_Fnyr12.js → _CWHyYnLM2.js} +1 -1
  68. package/dist/public/assets/_CWHyYnLM2.js.br +0 -0
  69. package/dist/public/assets/{_ChYdBfr12.js → _CWzOnDwF2.js} +1 -1
  70. package/dist/public/assets/_CWzOnDwF2.js.br +0 -0
  71. package/dist/public/assets/{_D6jIULmr.js → _CXcrI0KH.js} +1 -1
  72. package/dist/public/assets/_CXcrI0KH.js.br +0 -0
  73. package/dist/public/assets/{_C0q1PWW32.js → _CYK6BCWH2.js} +1 -1
  74. package/dist/public/assets/_CYK6BCWH2.js.br +0 -0
  75. package/dist/public/assets/{_ZCuYNM1I.js → _CYSMKo7F.js} +1 -1
  76. package/dist/public/assets/_CYSMKo7F.js.br +0 -0
  77. package/dist/public/assets/{_DIho-aMJ.js → _CfpVtrZd.js} +1 -1
  78. package/dist/public/assets/_CfpVtrZd.js.br +0 -0
  79. package/dist/public/assets/{_aldud3NO.js → _CftRvTVW.js} +1 -1
  80. package/dist/public/assets/_CftRvTVW.js.br +0 -0
  81. package/dist/public/assets/{_DSdwFJ0A2.js → _ClSO8TOE2.js} +1 -1
  82. package/dist/public/assets/_ClSO8TOE2.js.br +0 -0
  83. package/dist/public/assets/{_ZDvJObO5.js → _CoIipOdm.js} +1 -1
  84. package/dist/public/assets/_CoIipOdm.js.br +0 -0
  85. package/dist/public/assets/{_TdrV18MH2.js → _CpqV5nOZ2.js} +1 -1
  86. package/dist/public/assets/_CpqV5nOZ2.js.br +0 -0
  87. package/dist/public/assets/{_DxbJYPG-.js → _Cs_1C06H.js} +1 -1
  88. package/dist/public/assets/_Cs_1C06H.js.br +0 -0
  89. package/dist/public/assets/{_Ds18FW1c2.js → _CxrdJ7hp2.js} +1 -1
  90. package/dist/public/assets/_CxrdJ7hp2.js.br +0 -0
  91. package/dist/public/assets/{_xB1z2QtX.js → _CygMTO1C.js} +1 -1
  92. package/dist/public/assets/_CygMTO1C.js.br +0 -0
  93. package/dist/public/assets/{_CFuHFLFa.js → _CznrmqM4.js} +1 -1
  94. package/dist/public/assets/_CznrmqM4.js.br +0 -0
  95. package/dist/public/assets/{_BeLud53W.js → _DA_VGkH6.js} +1 -1
  96. package/dist/public/assets/_DA_VGkH6.js.br +0 -0
  97. package/dist/public/assets/{_BsJV1REp.js → _DFGJGEpB.js} +1 -1
  98. package/dist/public/assets/_DFGJGEpB.js.br +0 -0
  99. package/dist/public/assets/{_CmuVbspY.js → _DLzJNX7C.js} +1 -1
  100. package/dist/public/assets/_DLzJNX7C.js.br +0 -0
  101. package/dist/public/assets/{_B8H0uW8P2.js → _DMc_yyoD2.js} +1 -1
  102. package/dist/public/assets/_DMc_yyoD2.js.br +0 -0
  103. package/dist/public/assets/{_DNr5neqU.js → _DMi37Owt.js} +1 -1
  104. package/dist/public/assets/_DMi37Owt.js.br +0 -0
  105. package/dist/public/assets/{_92PbBTGk.js → _DRT4_m9d.js} +1 -1
  106. package/dist/public/assets/_DRT4_m9d.js.br +0 -0
  107. package/dist/public/assets/{_CpJVAK8n.js → _DV6VXtzH.js} +5 -5
  108. package/dist/public/assets/_DV6VXtzH.js.br +0 -0
  109. package/dist/public/assets/{_DhAV7qp1.js → _DVIdvZ6L.js} +1 -1
  110. package/dist/public/assets/_DVIdvZ6L.js.br +0 -0
  111. package/dist/public/assets/{_BGNNvIXK.js → _DXOGRSbq.js} +1 -1
  112. package/dist/public/assets/_DXOGRSbq.js.br +0 -0
  113. package/dist/public/assets/{_B5v9Fbq22.js → _Da8gt_F52.js} +1 -1
  114. package/dist/public/assets/_Da8gt_F52.js.br +0 -0
  115. package/dist/public/assets/{_LhXY5_qe.js → _DbTEN3Co.js} +1 -1
  116. package/dist/public/assets/_DbTEN3Co.js.br +0 -0
  117. package/dist/public/assets/{_Cu02oWXx2.js → _Dbp391kL2.js} +1 -1
  118. package/dist/public/assets/{_XQS1q-bq.js → _DcfWOyup.js} +1 -1
  119. package/dist/public/assets/_DcfWOyup.js.br +0 -0
  120. package/dist/public/assets/{_D_FvYbxf2.js → _Dd4lKEYp2.js} +1 -1
  121. package/dist/public/assets/_Dd4lKEYp2.js.br +0 -0
  122. package/dist/public/assets/{_CehEzybz.js → _DgCQT80U.js} +1 -1
  123. package/dist/public/assets/_DgCQT80U.js.br +0 -0
  124. package/dist/public/assets/{_D5pc6mWE.js → _DhEdWcLh.js} +1 -1
  125. package/dist/public/assets/_DhEdWcLh.js.br +0 -0
  126. package/dist/public/assets/{_DIh7WZ2F.js → _DiHWQ-Ew.js} +1 -1
  127. package/dist/public/assets/_DiHWQ-Ew.js.br +0 -0
  128. package/dist/public/assets/{_DkWy_Ueq2.js → _DjcyEwVn2.js} +1 -1
  129. package/dist/public/assets/_DjcyEwVn2.js.br +0 -0
  130. package/dist/public/assets/{_-ZAbZMp6.js → _Dm-zlffy.js} +6 -6
  131. package/dist/public/assets/_Dm-zlffy.js.br +0 -0
  132. package/dist/public/assets/{_CyoDpMQK.js → _DnhKP7pH.js} +1 -1
  133. package/dist/public/assets/_DnhKP7pH.js.br +0 -0
  134. package/dist/public/assets/{_F7htPBBT.js → _DpJdqIrj.js} +1 -1
  135. package/dist/public/assets/_DpJdqIrj.js.br +0 -0
  136. package/dist/public/assets/{_DPdZCztx.js → _DqxT_h3w.js} +1 -1
  137. package/dist/public/assets/_DqxT_h3w.js.br +0 -0
  138. package/dist/public/assets/{_WSGgcdni.js → _Dt461FGT.js} +1 -1
  139. package/dist/public/assets/_Dt461FGT.js.br +0 -0
  140. package/dist/public/assets/{_CsDtf7Ry.js → _DvHOWoGF.js} +1 -1
  141. package/dist/public/assets/_DvHOWoGF.js.br +0 -0
  142. package/dist/public/assets/{_C3S9wfaW2.js → _N8vS2ulD2.js} +1 -1
  143. package/dist/public/assets/_N8vS2ulD2.js.br +0 -0
  144. package/dist/public/assets/{_CJFNHs4a2.js → _ToAhQlpQ2.js} +1 -1
  145. package/dist/public/assets/_ToAhQlpQ2.js.br +0 -0
  146. package/dist/public/assets/{_CiUgu93c.js → _TsHAzFfC.js} +1 -1
  147. package/dist/public/assets/_TsHAzFfC.js.br +0 -0
  148. package/dist/public/assets/{_DMRjmpFD2.js → _ZVf0cDT12.js} +1 -1
  149. package/dist/public/assets/_ZVf0cDT12.js.br +0 -0
  150. package/dist/public/assets/{_Y2b8aPrG.js → __g_2CBHN.js} +1 -1
  151. package/dist/public/assets/__g_2CBHN.js.br +0 -0
  152. package/dist/public/assets/{_Ctew4jWT.js → _hN1-RJcA.js} +1 -1
  153. package/dist/public/assets/{_CEjnOCam.js → _p1qRbXAM.js} +1 -1
  154. package/dist/public/assets/_p1qRbXAM.js.br +0 -0
  155. package/dist/public/assets/app-page-B-xb0lEG.css +1 -0
  156. package/dist/public/assets/app-page-B-xb0lEG.css.br +0 -0
  157. package/dist/public/assets/diff-view-CPZTgZs3.css +1 -0
  158. package/dist/public/assets/diff-view-CPZTgZs3.css.br +0 -0
  159. package/dist/public/assets/new-BMnZANmK.js +1 -0
  160. package/dist/public/assets/settings-BMnZANmK.js +1 -0
  161. package/dist/public/assets/w-BMnZANmK.js +1 -0
  162. package/dist/public/assets/w._-BMnZANmK.js +1 -0
  163. package/dist/public/assets/w._-C_I4x7J1.js +1 -0
  164. package/lib/setup/catalog.mjs +3 -2
  165. package/lib/share/manifest.mjs +3 -3
  166. package/package.json +1 -1
  167. package/dist/_BNGMa45b.js +0 -2
  168. package/dist/public/assets/_-ZAbZMp6.js.br +0 -0
  169. package/dist/public/assets/_92PbBTGk.js.br +0 -0
  170. package/dist/public/assets/_B5v9Fbq22.js.br +0 -0
  171. package/dist/public/assets/_B6VbLzOa.js.br +0 -0
  172. package/dist/public/assets/_B8H0uW8P2.js.br +0 -0
  173. package/dist/public/assets/_BB_Fnyr12.js.br +0 -0
  174. package/dist/public/assets/_BGNNvIXK.js.br +0 -0
  175. package/dist/public/assets/_BGQP06_w.js.br +0 -0
  176. package/dist/public/assets/_BZb7VTF_.js.br +0 -0
  177. package/dist/public/assets/_BaPmPjXa.js.br +0 -0
  178. package/dist/public/assets/_BeLud53W.js.br +0 -0
  179. package/dist/public/assets/_BhN1afwu.js.br +0 -0
  180. package/dist/public/assets/_Bhn5BezI.js.br +0 -0
  181. package/dist/public/assets/_BsJV1REp.js.br +0 -0
  182. package/dist/public/assets/_C0q1PWW32.js.br +0 -0
  183. package/dist/public/assets/_C3S9wfaW2.js.br +0 -0
  184. package/dist/public/assets/_CEjnOCam.js.br +0 -0
  185. package/dist/public/assets/_CFuHFLFa.js.br +0 -0
  186. package/dist/public/assets/_CJFNHs4a2.js.br +0 -0
  187. package/dist/public/assets/_CVH-iW95.js.br +0 -0
  188. package/dist/public/assets/_Cch7T0VL.js.br +0 -0
  189. package/dist/public/assets/_CehEzybz.js.br +0 -0
  190. package/dist/public/assets/_ChYdBfr12.js.br +0 -0
  191. package/dist/public/assets/_CiUgu93c.js.br +0 -0
  192. package/dist/public/assets/_CmuVbspY.js.br +0 -0
  193. package/dist/public/assets/_CpJVAK8n.js.br +0 -0
  194. package/dist/public/assets/_CsDtf7Ry.js.br +0 -0
  195. package/dist/public/assets/_CuS5H1zc.js.br +0 -0
  196. package/dist/public/assets/_Cy053Jd0.js.br +0 -0
  197. package/dist/public/assets/_CyoDpMQK.js.br +0 -0
  198. package/dist/public/assets/_D-bpXh2X.js.br +0 -0
  199. package/dist/public/assets/_D1VBE8Ni.js.br +0 -0
  200. package/dist/public/assets/_D5pc6mWE.js.br +0 -0
  201. package/dist/public/assets/_D6jIULmr.js.br +0 -0
  202. package/dist/public/assets/_DCyA_kCN2.js.br +0 -0
  203. package/dist/public/assets/_DEwoT19i.js.br +0 -0
  204. package/dist/public/assets/_DIh7WZ2F.js.br +0 -0
  205. package/dist/public/assets/_DIho-aMJ.js.br +0 -0
  206. package/dist/public/assets/_DLatqs0j2.js.br +0 -0
  207. package/dist/public/assets/_DMRjmpFD2.js.br +0 -0
  208. package/dist/public/assets/_DMtHQg6p.js.br +0 -0
  209. package/dist/public/assets/_DNr5neqU.js.br +0 -0
  210. package/dist/public/assets/_DPdZCztx.js.br +0 -0
  211. package/dist/public/assets/_DQ_V1iRl.js.br +0 -0
  212. package/dist/public/assets/_DSdwFJ0A2.js.br +0 -0
  213. package/dist/public/assets/_DYl8DmZ32.js.br +0 -0
  214. package/dist/public/assets/_D_FvYbxf2.js.br +0 -0
  215. package/dist/public/assets/_Dh6dMgTO2.js.br +0 -0
  216. package/dist/public/assets/_DhAV7qp1.js.br +0 -0
  217. package/dist/public/assets/_DkWy_Ueq2.js.br +0 -0
  218. package/dist/public/assets/_Ds18FW1c2.js.br +0 -0
  219. package/dist/public/assets/_DsUtXotp.js.br +0 -0
  220. package/dist/public/assets/_Dva2q_M42.js.br +0 -0
  221. package/dist/public/assets/_DxbJYPG-.js.br +0 -0
  222. package/dist/public/assets/_DxbZoYq92.js.br +0 -0
  223. package/dist/public/assets/_DzkQ59tO2.js.br +0 -0
  224. package/dist/public/assets/_F7htPBBT.js.br +0 -0
  225. package/dist/public/assets/_HGe5zAKn.js.br +0 -0
  226. package/dist/public/assets/_LhXY5_qe.js.br +0 -0
  227. package/dist/public/assets/_PaKRa2cB.js.br +0 -0
  228. package/dist/public/assets/_TdrV18MH2.js.br +0 -0
  229. package/dist/public/assets/_WSGgcdni.js.br +0 -0
  230. package/dist/public/assets/_XQS1q-bq.js.br +0 -0
  231. package/dist/public/assets/_Y2b8aPrG.js.br +0 -0
  232. package/dist/public/assets/_ZCuYNM1I.js.br +0 -0
  233. package/dist/public/assets/_ZDvJObO5.js.br +0 -0
  234. package/dist/public/assets/_aT-vIKyZ.js.br +0 -0
  235. package/dist/public/assets/_aldud3NO.js.br +0 -0
  236. package/dist/public/assets/_dIGPKWvv.js.br +0 -0
  237. package/dist/public/assets/_diJBCZr0.js.br +0 -0
  238. package/dist/public/assets/_wPGOV0BF2.js.br +0 -0
  239. package/dist/public/assets/_wWYYdpzZ2.js.br +0 -0
  240. package/dist/public/assets/_xB1z2QtX.js.br +0 -0
  241. package/dist/public/assets/app-page-DhekpIyo.css +0 -1
  242. package/dist/public/assets/app-page-DhekpIyo.css.br +0 -0
  243. package/dist/public/assets/diff-view-B6mpGFZy.css +0 -1
  244. package/dist/public/assets/diff-view-B6mpGFZy.css.br +0 -0
  245. package/dist/public/assets/new-DAfon2Hw.js +0 -1
  246. package/dist/public/assets/settings-DAfon2Hw.js +0 -1
  247. package/dist/public/assets/w-DAfon2Hw.js +0 -1
  248. package/dist/public/assets/w._-C05PxvAg.js +0 -1
  249. package/dist/public/assets/w._-DAfon2Hw.js +0 -1
@@ -1968,14 +1968,14 @@ function repoLabel(fullName) {
1968
1968
  return fullName;
1969
1969
  }
1970
1970
  var toastKind = {
1971
- error: "_bi",
1972
- warn: "_bj",
1973
- info: "_bk"
1971
+ error: "_bA",
1972
+ warn: "_bB",
1973
+ info: "_bC"
1974
1974
  };
1975
1975
  var toastTitle = {
1976
- error: "_bl",
1977
- warn: "_bm",
1978
- info: "_bn"
1976
+ error: "_bD",
1977
+ warn: "_bE",
1978
+ info: "_bF"
1979
1979
  };
1980
1980
  //#endregion
1981
1981
  //#region src/styles/tokens.css.ts
@@ -2021,18 +2021,18 @@ var toast_default = _template("F", (input) => {
2021
2021
  const kind = inputKind || "error";
2022
2022
  const placement = inputPlacement || "float";
2023
2023
  const placementClass = {
2024
- float: "_bg",
2025
- inline: "_bh"
2024
+ float: "_by",
2025
+ inline: "_bz"
2026
2026
  }[placement];
2027
2027
  _html(`<div${_attr_class([
2028
- "_bf",
2028
+ "_bx",
2029
2029
  toastKind[kind],
2030
2030
  placementClass,
2031
2031
  inputClass
2032
2032
  ])} role=${kind === "error" ? "alert" : "status"}${_attrs_partial(htmlInput, {
2033
2033
  class: 1,
2034
2034
  role: 1
2035
- }, "a", $scope0_id, "div")}><div${_attr_class("_bo")}>`);
2035
+ }, "a", $scope0_id, "div")}><div${_attr_class("_bG")}>`);
2036
2036
  _if(() => {
2037
2037
  if (title) {
2038
2038
  const $scope1_id = _scope_id();
@@ -2044,7 +2044,7 @@ var toast_default = _template("F", (input) => {
2044
2044
  _if(() => {
2045
2045
  if (content) {
2046
2046
  const $scope2_id = _scope_id();
2047
- _html(`<div${_attr_class("_bp")}>`);
2047
+ _html(`<div${_attr_class("_bH")}>`);
2048
2048
  _dynamic_tag($scope2_id, "b", content, {}, 0, 0, $sg__input_content);
2049
2049
  _html("</div>");
2050
2050
  $si__input_content && writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
@@ -2055,7 +2055,7 @@ var toast_default = _template("F", (input) => {
2055
2055
  _if(() => {
2056
2056
  if (action || onDismiss) {
2057
2057
  const $scope3_id = _scope_id();
2058
- _html(`<div${_attr_class(["_bq", action && "_br"])}>`);
2058
+ _html(`<div${_attr_class(["_bI", action && "_bJ"])}>`);
2059
2059
  _if(() => {
2060
2060
  if (action) {
2061
2061
  const $scope4_id = _scope_id();
@@ -2067,7 +2067,7 @@ var toast_default = _template("F", (input) => {
2067
2067
  _if(() => {
2068
2068
  if (onDismiss) {
2069
2069
  const $scope5_id = _scope_id();
2070
- _html(`<button${_attr_class([iconBtnRow, "_bs"])} type=button title=Dismiss aria-label=Dismiss>`);
2070
+ _html(`<button${_attr_class([iconBtnRow, "_bK"])} type=button title=Dismiss aria-label=Dismiss>`);
2071
2071
  icon_xmark_default({ size: 14 });
2072
2072
  _html(`</button>${_el_resume($scope5_id, "a")}`);
2073
2073
  _script($scope5_id, "F0");
@@ -2182,8 +2182,8 @@ function theme() {
2182
2182
  function setTheme(mode) {
2183
2183
  set("theme", mode === "system" ? null : mode);
2184
2184
  }
2185
- var sectionCount = "_bH _L _M";
2186
- var row = "_bS _bK";
2185
+ var sectionCount = "_bk _L _M";
2186
+ var row = "_bv _bn";
2187
2187
  var iconBtn = "_3 _j";
2188
2188
  //#endregion
2189
2189
  //#region src/tags/icons/icon-refresh.marko
@@ -2329,8 +2329,8 @@ var icon_sidebar_default = _template("mb", (input) => {
2329
2329
  });
2330
2330
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
2331
2331
  });
2332
- var findInput = "_gI _l";
2333
- var findIconBtn = "_gL _j";
2332
+ var findInput = "_gC _l";
2333
+ var findIconBtn = "_gF _j";
2334
2334
  //#endregion
2335
2335
  //#region src/tags/icons/icon-arrow-down.marko
2336
2336
  var icon_arrow_down_default = _template("K", (input) => {
@@ -266,8 +266,9 @@ var agents_default = [
266
266
  //#endregion
267
267
  //#region lib/setup/catalog.mjs
268
268
  /** Machine tools. `required` ones gate readiness; the rest are the utilities
269
- * agents reach for constantly (mirrors DylanPiercey/start). Static binaries via
270
- * mise, except the system packages the installer provides (git, tmux). */
269
+ * agents reach for constantly (search, JSON, HTTP, process tools). Static
270
+ * binaries via mise, except the system packages the installer provides
271
+ * (git, tmux). */
271
272
  var TOOLS = [
272
273
  {
273
274
  id: "git",
@@ -6500,21 +6501,24 @@ var viewers = /* @__PURE__ */ new Map();
6500
6501
  function setAgentPhase(sessionId, phase, reason, summary) {
6501
6502
  if (phase === "waiting" && reason === "done") {
6502
6503
  if (summary) summaries.set(sessionId, summary);
6503
- if (Date.now() - bootedAt > BOOT_GRACE_MS) notify(sessionId, "done");
6504
+ notify(sessionId, "done");
6504
6505
  if (phases.has(sessionId)) applyChange(sessionId, () => {
6505
6506
  phases.delete(sessionId);
6506
6507
  reasons.delete(sessionId);
6507
- });
6508
+ }, true);
6508
6509
  return;
6509
6510
  }
6510
6511
  if (phase === "waiting" && summary) summaries.set(sessionId, summary);
6511
- else if (phase === "working") summaries.delete(sessionId);
6512
+ else if (phase === "working") {
6513
+ summaries.delete(sessionId);
6514
+ reasons.delete(sessionId);
6515
+ }
6512
6516
  const next = phase === "waiting" && reason ? reason : reasons.get(sessionId);
6513
6517
  if (phases.get(sessionId) === phase && reasons.get(sessionId) === next) return;
6514
6518
  applyChange(sessionId, () => {
6515
6519
  phases.set(sessionId, phase);
6516
6520
  if (phase === "waiting" && reason) reasons.set(sessionId, reason);
6517
- });
6521
+ }, true);
6518
6522
  }
6519
6523
  /** Live visible-terminal count per session, reported by the term server;
6520
6524
  * a session someone is watching does not push notifications. */
@@ -6563,23 +6567,26 @@ function clearAgentPhase(sessionId) {
6563
6567
  function agentPhase(sessionId) {
6564
6568
  return phases.get(sessionId) ?? scraped.get(sessionId);
6565
6569
  }
6566
- /** Freshly booted servers re-discover already-waiting sessions on the
6567
- * first scan — that must not re-buzz every device after a deploy. */
6570
+ /** A freshly booted server's first scans re-derive scraped state from
6571
+ * panes that were already that way — that must not re-buzz every device
6572
+ * after a deploy. Hook reports are exempt: each is a real transition the
6573
+ * agent just made, and one that lands right after a restart (the turn
6574
+ * that was running through it) is exactly the one worth hearing about. */
6568
6575
  var BOOT_GRACE_MS = 15e3;
6569
6576
  var bootedAt = Date.now();
6570
- function applyChange(sessionId, mutate) {
6577
+ function applyChange(sessionId, mutate, fromHook = false) {
6571
6578
  const before = agentPhase(sessionId);
6572
6579
  mutate();
6573
6580
  const after = agentPhase(sessionId);
6574
6581
  if (before === after) return;
6575
6582
  publishChange(sessionId);
6576
- if (after === "waiting" && before !== "waiting" && Date.now() - bootedAt > BOOT_GRACE_MS) notify(sessionId, reasons.get(sessionId) ?? "attention");
6583
+ if (after === "waiting" && before !== "waiting" && (fromHook || Date.now() - bootedAt > BOOT_GRACE_MS)) notify(sessionId, reasons.get(sessionId) ?? "attention");
6577
6584
  }
6578
6585
  function publishChange(sessionId) {
6579
6586
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
6580
6587
  if (row?.workspace_id) {
6581
6588
  const workspaceId = row.workspace_id;
6582
- import("./_BNGMa45b.js").then((m) => m.notifySessionsChanged(workspaceId));
6589
+ import("./_CwAYWKgO.js").then((m) => m.notifySessionsChanged(workspaceId));
6583
6590
  return;
6584
6591
  }
6585
6592
  publish("sessions.changed");
@@ -6592,33 +6599,33 @@ function publishChange(sessionId) {
6592
6599
  * come from the env tmux gave the pane (see sessions.ts). */
6593
6600
  function stateCurl(state, reason) {
6594
6601
  const qs = `session=$WORK_SESSION_ID&state=${state}` + (reason ? `&reason=${reason}` : "");
6595
- 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`;
6602
+ return `[ -n "$WORK_SESSION_ID" ] && curl -sf -m 2 --retry 2 --retry-delay 1 --retry-connrefused -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`;
6596
6603
  }
6597
6604
  /** Claude-format hook groups (`{matcher?, hooks:[{type:"command",command}]}`)
6598
6605
  * for a hook map — the JSON shape Claude, Copilot plugins and Grok all read. */
6599
6606
  function claudeStyleHooks(map, extra = {}) {
6600
6607
  const hooks = {};
6601
- for (const [event, state, reason, matcher] of map) hooks[event] = [{
6608
+ for (const [event, state, reason, matcher] of map) (hooks[event] ??= []).push({
6602
6609
  ...matcher ? { matcher } : {},
6603
6610
  hooks: [{
6604
6611
  type: "command",
6605
6612
  command: stateCurl(state, reason),
6606
6613
  ...extra
6607
6614
  }]
6608
- }];
6615
+ });
6609
6616
  return hooks;
6610
6617
  }
6611
6618
  var NOTIFICATION_LABELS = {
6612
6619
  permission_prompt: "Waiting for permission",
6613
- idle_prompt: "Waiting for your reply",
6614
6620
  agent_needs_input: "Waiting for input",
6615
6621
  elicitation_dialog: "Asking a question",
6616
6622
  elicitation_url_dialog: "Needs a browser sign-in"
6617
6623
  };
6618
6624
  /** Notifications that mean the agent is nudging about an idle session
6619
- * rather than blocking on one: the hook reports every notification the
6620
- * same way, so the kind has to come out of the payload, or a session that
6621
- * merely sat there reads as stuck and paints the nav red. */
6625
+ * rather than blocking on one. Stop already said the turn ended and
6626
+ * pushed for it; reporting the nudge too painted the nav red for a
6627
+ * session that merely sat there, and — read as "done" — buzzed a second
6628
+ * time a minute after every finish. Dropped entirely. */
6622
6629
  var NUDGE_NOTIFICATIONS = /* @__PURE__ */ new Set(["idle_prompt"]);
6623
6630
  function str$1(v) {
6624
6631
  return typeof v === "string" ? v.trim() : "";
@@ -6629,11 +6636,12 @@ function notificationType(p) {
6629
6636
  }
6630
6637
  /** Read a Claude-format payload: last message on Stop, the CLI's own
6631
6638
  * notification line (or a label for its type) on Notification, and the
6632
- * idle nudge downgraded to done. Families that speak this dialect start
6633
- * here and add their own quirks. */
6639
+ * idle nudge dropped. Families that speak this dialect start here and
6640
+ * add their own quirks. */
6634
6641
  function readClaudeStyle(p, reported) {
6635
6642
  const kind = notificationType(p);
6636
- const reason = reported === "attention" && NUDGE_NOTIFICATIONS.has(kind) ? "done" : reported;
6643
+ if (NUDGE_NOTIFICATIONS.has(kind)) return { ignore: true };
6644
+ const reason = reported;
6637
6645
  const text = str$1(p.last_assistant_message) || str$1(p["last-assistant-message"]) || str$1(p.lastAssistantMessage);
6638
6646
  if (text) return {
6639
6647
  reason,
@@ -7146,15 +7154,46 @@ async function claudeRow(account) {
7146
7154
  const fallback = loaded.payload ? null : claudeJsonFallback(account);
7147
7155
  return markStale(parseRow$4(account, loaded.payload ?? fallback, fallback ? "claude.json" : loaded.source), account.label, tokenExpired(account), loaded.reason);
7148
7156
  }
7157
+ //#endregion
7158
+ //#region src/agents/claude/index.ts
7159
+ var meta$6 = meta_default$6;
7160
+ /** The tool Claude asks the user a question with. Its prompt is a wait
7161
+ * like any other, but the turn has not ended, so no Stop or Notification
7162
+ * says so — PreToolUse on this tool is the only signal, and PostToolUse
7163
+ * (the answer arrived) clears it. */
7164
+ var QUESTION_TOOL = "AskUserQuestion";
7165
+ /** Claude's dialect plus the question tool's prompt text. */
7166
+ function readHook$4(p, reported) {
7167
+ const read = readClaudeStyle(p, reported);
7168
+ if (read.ignore) return read;
7169
+ if (p.hook_event_name === "PreToolUse" && p.tool_name === QUESTION_TOOL) {
7170
+ const input = p.tool_input;
7171
+ const q = str$1(input?.questions?.[0]?.question);
7172
+ read.summary = q ? cleanSummary(q) : "Asking a question";
7173
+ }
7174
+ return read;
7175
+ }
7149
7176
  /** Claude Code takes its settings inline (`--settings` accepts a JSON
7150
7177
  * string), so the hooks travel in argv and nothing is written anywhere.
7151
7178
  * Its Notification hook fires for permission prompts and questions —
7152
- * and for the idle nudge, which readClaudeStyle downgrades. */
7179
+ * and for the idle nudge, which readClaudeStyle drops. */
7153
7180
  var claude = {
7154
- meta: meta_default$6,
7181
+ meta: meta$6,
7155
7182
  launchFlags: () => ["--settings", JSON.stringify({ hooks: claudeStyleHooks([
7156
7183
  ["UserPromptSubmit", "working"],
7157
- ["PreToolUse", "working"],
7184
+ [
7185
+ "PreToolUse",
7186
+ "working",
7187
+ void 0,
7188
+ `^(?!${QUESTION_TOOL}$)`
7189
+ ],
7190
+ [
7191
+ "PreToolUse",
7192
+ "waiting",
7193
+ "attention",
7194
+ `^${QUESTION_TOOL}$`
7195
+ ],
7196
+ ["PostToolUse", "working"],
7158
7197
  [
7159
7198
  "Stop",
7160
7199
  "waiting",
@@ -7172,7 +7211,7 @@ var claude = {
7172
7211
  "CLAUDECODE",
7173
7212
  "AI_AGENT"
7174
7213
  ],
7175
- readHook: readClaudeStyle,
7214
+ readHook: readHook$4,
7176
7215
  usage: () => Promise.all(claudeAccounts().map((account) => claudeRow(account)))
7177
7216
  };
7178
7217
  //#endregion
@@ -7529,9 +7568,19 @@ function lastMessageFromTranscript(p) {
7529
7568
  }
7530
7569
  } catch {}
7531
7570
  }
7571
+ /** Two menus Copilot can draw before its input box, both of which would
7572
+ * swallow a pasted first prompt. A session work ends is killed with its
7573
+ * tmux pane, so Copilot's own registry still lists it as open and every
7574
+ * later launch offers to restore it (Esc starts fresh). A workspace it has
7575
+ * not seen gets the folder-trust prompt, with Yes preselected. */
7576
+ function startupPrompt(screen) {
7577
+ if (/Restore interrupted sessions/.test(screen)) return ["Escape"];
7578
+ if (/remember this folder for future sessions/.test(screen)) return ["Enter"];
7579
+ }
7532
7580
  var copilot = {
7533
7581
  meta: meta$4,
7534
7582
  launchFlags: () => ["--plugin-dir", pluginDir()],
7583
+ startupPrompt,
7535
7584
  reportsWorking: () => true,
7536
7585
  envPrefixes: ["COPILOT_"],
7537
7586
  readHook: readHook$2,
@@ -7650,6 +7699,7 @@ async function cursorRow() {
7650
7699
  * nothing else — a stopped turn and a question look the same. */
7651
7700
  var cursor = {
7652
7701
  meta: meta_default$3,
7702
+ readyScreen: /Plan, search, build anything|Add a follow-up/,
7653
7703
  usage: () => cursorRow().then((row) => [row])
7654
7704
  };
7655
7705
  //#endregion
@@ -7786,9 +7836,21 @@ var HOOKS = claudeStyleHooks([
7786
7836
  "attention"
7787
7837
  ]
7788
7838
  ], { timeout: 5 });
7789
- /** Whether Grok's hook registry took work's hook file — without it Grok
7790
- * reports nothing and the screen has to speak for it. */
7791
- var registered = false;
7839
+ var HOOK_FILE = () => path.join(config.dataDir, "grok-hooks.json");
7840
+ var REGISTRY = () => path.join(process.env.HOME || "", ".grok", "hooks-paths");
7841
+ /** Whether Grok's hook registry names work's hook file — without it Grok
7842
+ * reports nothing and the screen has to speak for it. Read from disk, not
7843
+ * remembered from a launch: a session that outlives the app process still
7844
+ * has its hooks, and a flag reset by the restart would put the scraper
7845
+ * back on a session that reports for itself. */
7846
+ function registered() {
7847
+ try {
7848
+ const file = HOOK_FILE();
7849
+ return fs.readFileSync(REGISTRY(), "utf8").split("\n").some((line) => line.trim() === file);
7850
+ } catch {
7851
+ return false;
7852
+ }
7853
+ }
7792
7854
  /** Grok has no flag for hooks. It discovers them from `~/.grok/hooks-paths`:
7793
7855
  * one absolute path per line, the registry its own `/hooks-add` command
7794
7856
  * appends to. work's hook file is kept in the data dir — the commands read
@@ -7796,9 +7858,9 @@ var registered = false;
7796
7858
  * once. The one line in that registry is the only thing work writes
7797
7859
  * outside its own dir for any agent. */
7798
7860
  function registerHooks() {
7799
- const file = path.join(config.dataDir, "grok-hooks.json");
7861
+ const file = HOOK_FILE();
7800
7862
  writeIfChanged(file, JSON.stringify({ hooks: HOOKS }, null, 2));
7801
- const registry = path.join(process.env.HOME || "", ".grok", "hooks-paths");
7863
+ const registry = REGISTRY();
7802
7864
  try {
7803
7865
  let current = "";
7804
7866
  try {
@@ -7808,11 +7870,7 @@ function registerHooks() {
7808
7870
  fs.mkdirSync(path.dirname(registry), { recursive: true });
7809
7871
  fs.appendFileSync(registry, `${current && !current.endsWith("\n") ? "\n" : ""}${file}\n`);
7810
7872
  }
7811
- registered = true;
7812
- } catch {
7813
- registered = false;
7814
- }
7815
- return registered;
7873
+ } catch {}
7816
7874
  }
7817
7875
  function readHook$1(p, reported) {
7818
7876
  if (str$1(p.subagentType)) return { ignore: true };
@@ -7830,7 +7888,7 @@ var grok = {
7830
7888
  registerHooks();
7831
7889
  return [];
7832
7890
  },
7833
- reportsWorking: () => registered,
7891
+ reportsWorking: registered,
7834
7892
  promptAsArgv: true,
7835
7893
  envPrefixes: ["GROK_"],
7836
7894
  readHook: readHook$1,
@@ -7918,21 +7976,23 @@ export const WorkSessionState = async () => {
7918
7976
  };
7919
7977
  };
7920
7978
  `;
7979
+ var PLUGIN_FILE = () => path.join(config.dataDir, "opencode-plugin.js");
7921
7980
  /** Whether the plugin is on disk for opencode to load — without it the
7922
- * screen has to speak for the session. */
7923
- var installed = false;
7981
+ * screen has to speak for the session. Checked on disk rather than
7982
+ * remembered from a launch, so a session that outlives the app process
7983
+ * is still known to report for itself. */
7984
+ function installed() {
7985
+ return fs.existsSync(PLUGIN_FILE());
7986
+ }
7924
7987
  /** opencode resolves a `plugin` entry that looks like a path as a local
7925
7988
  * file, and reads `OPENCODE_CONFIG_CONTENT` as one more config layer that
7926
7989
  * merges over the user's own. Together that loads work's plugin from
7927
7990
  * work's data dir without writing a line into ~/.config/opencode. */
7928
7991
  function pluginConfig() {
7929
- const file = path.join(config.dataDir, "opencode-plugin.js");
7992
+ const file = PLUGIN_FILE();
7930
7993
  try {
7931
7994
  writeIfChanged(file, PLUGIN(config.appPort));
7932
- installed = true;
7933
- } catch {
7934
- installed = false;
7935
- }
7995
+ } catch {}
7936
7996
  return JSON.stringify({ plugin: [file] });
7937
7997
  }
7938
7998
  function readHook(p, reported) {
@@ -7955,8 +8015,9 @@ var AGENTS = [
7955
8015
  grok,
7956
8016
  {
7957
8017
  meta: meta$1,
8018
+ readyScreen: /Ask anything/,
7958
8019
  launchEnv: () => ({ OPENCODE_CONFIG_CONTENT: pluginConfig() }),
7959
- reportsWorking: () => installed,
8020
+ reportsWorking: installed,
7960
8021
  envPrefixes: ["OPENCODE_"],
7961
8022
  readHook
7962
8023
  },
@@ -7985,6 +8046,14 @@ function agentLaunchEnv(id) {
7985
8046
  function reportsWorking(id) {
7986
8047
  return agentFor(id)?.reportsWorking?.() ?? false;
7987
8048
  }
8049
+ /** Keys that answer whatever startup prompt the CLI is showing, if any. */
8050
+ function startupPromptKeys(id, screen) {
8051
+ return agentFor(id)?.startupPrompt?.(screen);
8052
+ }
8053
+ /** The input-box marker for CLIs whose splash looks settled early. */
8054
+ function readyScreen(id) {
8055
+ return agentFor(id)?.readyScreen;
8056
+ }
7988
8057
  /** Cold launch takes the first prompt as argv rather than a paste. */
7989
8058
  function promptAsArgv(id) {
7990
8059
  return agentFor(id)?.promptAsArgv ?? false;
@@ -8104,7 +8173,7 @@ async function sendToSession(id, text, size) {
8104
8173
  }
8105
8174
  await tmux(newSessionArgs(session, wsPath, "-d", void 0, size), env);
8106
8175
  markTmuxStarted(id);
8107
- await sleep(AGENT_BOOT_MS);
8176
+ await waitForAgent(name, env, session.agent);
8108
8177
  }
8109
8178
  const buffer = `work-send-${Math.random().toString(36).slice(2, 8)}`;
8110
8179
  await tmux([
@@ -8122,7 +8191,7 @@ async function sendToSession(id, text, size) {
8122
8191
  "-t",
8123
8192
  name
8124
8193
  ], env);
8125
- await sleep(PASTE_SETTLE_MS);
8194
+ await waitStill(name, env, PASTE_SETTLE_MS);
8126
8195
  await tmux([
8127
8196
  "send-keys",
8128
8197
  "-t",
@@ -8350,8 +8419,73 @@ function cleanEnv() {
8350
8419
  env.PATH = [...parts, ...bins.filter((bin) => !parts.includes(bin))].join(":");
8351
8420
  return forceUtf8Locale(env);
8352
8421
  }
8353
- var AGENT_BOOT_MS = 1500;
8354
- var PASTE_SETTLE_MS = 150;
8422
+ /** Upper bound on waiting for an agent to be ready for input; past it
8423
+ * the paste goes in regardless (a TUI with a boot animation never settles). */
8424
+ var AGENT_BOOT_MS = 8e3;
8425
+ /** A drawn screen that has not changed for this long is a TUI at rest. */
8426
+ var SCREEN_STILL_MS = 600;
8427
+ /** Resolve once the agent is the pane's foreground process and has drawn
8428
+ * a screen that then held still — opencode is foreground in 0.4 s and
8429
+ * paints its prompt at 2.4 s; Claude is ready in about a second. */
8430
+ async function waitForAgent(name, env, agent) {
8431
+ const until = Date.now() + AGENT_BOOT_MS;
8432
+ while (Date.now() < until) {
8433
+ const c = (await tmux([
8434
+ "display",
8435
+ "-p",
8436
+ "-t",
8437
+ name,
8438
+ "#{pane_current_command}"
8439
+ ], env).catch(() => "")).trim();
8440
+ if (c && !/^(bash|zsh|sh|fish|login|-?\w*sh)$/.test(c)) break;
8441
+ await sleep(150);
8442
+ }
8443
+ const ready = readyScreen(agent);
8444
+ for (let i = 0; i < 3; i++) {
8445
+ await waitStill(name, env, until - Date.now(), ready);
8446
+ const keys = startupPromptKeys(agent, await tmux([
8447
+ "capture-pane",
8448
+ "-p",
8449
+ "-t",
8450
+ name
8451
+ ], env).catch(() => ""));
8452
+ if (!keys?.length) return;
8453
+ await tmux([
8454
+ "send-keys",
8455
+ "-t",
8456
+ name,
8457
+ ...keys
8458
+ ], env);
8459
+ await sleep(300);
8460
+ }
8461
+ }
8462
+ /** Resolve once the pane has drawn something and then held still for
8463
+ * SCREEN_STILL_MS, or after `maxMs` (a TUI with an animation never
8464
+ * settles; a blank pane never draws). */
8465
+ async function waitStill(name, env, maxMs, ready) {
8466
+ const until = Date.now() + Math.max(0, maxMs);
8467
+ let last = "";
8468
+ let stillSince = 0;
8469
+ while (Date.now() < until) {
8470
+ const drawn = (await tmux([
8471
+ "capture-pane",
8472
+ "-p",
8473
+ "-t",
8474
+ name
8475
+ ], env).catch(() => "")).trim();
8476
+ if (drawn && (!ready || ready.test(drawn))) {
8477
+ if (drawn === last) {
8478
+ if (Date.now() - stillSince >= SCREEN_STILL_MS) return;
8479
+ } else {
8480
+ last = drawn;
8481
+ stillSince = Date.now();
8482
+ }
8483
+ }
8484
+ await sleep(150);
8485
+ }
8486
+ }
8487
+ /** Upper bound on the pasted text settling on screen before Enter. */
8488
+ var PASTE_SETTLE_MS = 2500;
8355
8489
  /** Command for a session kind: the instance's binary (`claude2`,
8356
8490
  * `cursor-agent`), nothing for `shell`; `command.<agent>` in settings still
8357
8491
  * overrides for one-off wrappers.
@@ -0,0 +1,2 @@
1
+ import { f as notifySessionsChanged } from "./_CgMVRC4h.js";
2
+ export { notifySessionsChanged };