@dylanpiercey/work 0.0.204 → 0.0.205

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 (561) hide show
  1. package/bin/work.mjs +220 -63
  2. package/dist/_CWyeRc54.js +2 -0
  3. package/dist/{_B9FeLAO5.js → _C_-lYJlp.js} +394 -114
  4. package/dist/index.mjs +15316 -13911
  5. package/dist/public/assets/_-OlchSkR.js +1 -0
  6. package/dist/public/assets/_2V7v-g6H.js +1 -0
  7. package/dist/public/assets/_5FuvVnQD.js +1 -0
  8. package/dist/public/assets/_5izm_sOI.js +1 -0
  9. package/dist/public/assets/_5izm_sOI.js.br +0 -0
  10. package/dist/public/assets/_6AplNi7Z.js +1 -0
  11. package/dist/public/assets/_6AplNi7Z.js.br +0 -0
  12. package/dist/public/assets/_8YGIApOo.js +1 -0
  13. package/dist/public/assets/{_BQ6oRmZj.js → _AHFaCvQU.js} +1 -1
  14. package/dist/public/assets/_AHFaCvQU.js.br +0 -0
  15. package/dist/public/assets/_B0mn17Dk.js +1 -0
  16. package/dist/public/assets/_B0roVhqi.js +1 -0
  17. package/dist/public/assets/{_52XwXqiy.js → _B16QFqgy.js} +1 -1
  18. package/dist/public/assets/_B16QFqgy.js.br +0 -0
  19. package/dist/public/assets/{_bX1A3m6x.js → _B2f-LxUk.js} +1 -1
  20. package/dist/public/assets/_B2f-LxUk.js.br +0 -0
  21. package/dist/public/assets/_B7rzA4Vo.js +1 -0
  22. package/dist/public/assets/_B7rzA4Vo.js.br +0 -0
  23. package/dist/public/assets/_B9EmUOCA.js +1 -0
  24. package/dist/public/assets/_B9EmUOCA.js.br +0 -0
  25. package/dist/public/assets/_BD9gP_kw.js +1 -0
  26. package/dist/public/assets/_BD9gP_kw.js.br +0 -0
  27. package/dist/public/assets/_BDHG8Nmi.js +9 -0
  28. package/dist/public/assets/_BDHG8Nmi.js.br +0 -0
  29. package/dist/public/assets/{_DNQWXflz.js → _BDWKc_9X.js} +1 -1
  30. package/dist/public/assets/_BDWKc_9X.js.br +0 -0
  31. package/dist/public/assets/{_BVT8cLW8.js → _BE8KQ5PW.js} +1 -1
  32. package/dist/public/assets/_BE8KQ5PW.js.br +0 -0
  33. package/dist/public/assets/{_BPJgPGy_.js → _BFgV8m7c.js} +1 -1
  34. package/dist/public/assets/_BFgV8m7c.js.br +0 -0
  35. package/dist/public/assets/_BHZ-Cv2U.js +1 -0
  36. package/dist/public/assets/{_BDX0L_3F.js → _BHcaNOzL.js} +1 -1
  37. package/dist/public/assets/_BHcaNOzL.js.br +0 -0
  38. package/dist/public/assets/_BKM2-z0e.js +1 -0
  39. package/dist/public/assets/_BN0AE2HC.js +1 -0
  40. package/dist/public/assets/_BNORURCQ.js +1 -0
  41. package/dist/public/assets/_BNORURCQ.js.br +0 -0
  42. package/dist/public/assets/_BNm4Ae9_.js +1 -0
  43. package/dist/public/assets/_BNm4Ae9_.js.br +0 -0
  44. package/dist/public/assets/_BOm1SpkD.js +1 -0
  45. package/dist/public/assets/{_CM90yd32.js → _BPhE-idg.js} +1 -1
  46. package/dist/public/assets/_BPhE-idg.js.br +0 -0
  47. package/dist/public/assets/{_rCrnzYGa.js → _BPtQ2PEh.js} +1 -1
  48. package/dist/public/assets/_BPtQ2PEh.js.br +0 -0
  49. package/dist/public/assets/_BRGmqkNr.js +1 -0
  50. package/dist/public/assets/_BRnslEKE.js +1 -0
  51. package/dist/public/assets/{_DZRRUShG.js → _BSSQw7B1.js} +1 -1
  52. package/dist/public/assets/_BSSQw7B1.js.br +0 -0
  53. package/dist/public/assets/{_B4mrAOJe.js → _BUfLoUyd.js} +1 -1
  54. package/dist/public/assets/_BUfLoUyd.js.br +0 -0
  55. package/dist/public/assets/{_DCjHVJN2.js → _BVLWii1t.js} +1 -1
  56. package/dist/public/assets/_BVLWii1t.js.br +0 -0
  57. package/dist/public/assets/{_DCGza5jQ.js → _BWAs5afd.js} +1 -1
  58. package/dist/public/assets/_BWAs5afd.js.br +0 -0
  59. package/dist/public/assets/_BYdCKt3O.js +1 -0
  60. package/dist/public/assets/_B_JOtc1M.js +1 -0
  61. package/dist/public/assets/_BcXiRBkz.js +1 -0
  62. package/dist/public/assets/_BgKdTCD6.js +1 -0
  63. package/dist/public/assets/{_CXecCgJ4.js → _BixjwCO8.js} +1 -1
  64. package/dist/public/assets/_BixjwCO8.js.br +0 -0
  65. package/dist/public/assets/_BkQF1UOD.js +1 -0
  66. package/dist/public/assets/_BkQF1UOD.js.br +0 -0
  67. package/dist/public/assets/_BpGTzAYy.js +1 -0
  68. package/dist/public/assets/{_B99eluvQ.js → _Bpf0k8uS.js} +1 -1
  69. package/dist/public/assets/_Bpf0k8uS.js.br +0 -0
  70. package/dist/public/assets/{_OqWnNRp1.js → _BqizK7cx.js} +1 -1
  71. package/dist/public/assets/_BqizK7cx.js.br +0 -0
  72. package/dist/public/assets/{_BBCoOIOP.js → _BrWsQx9M.js} +1 -1
  73. package/dist/public/assets/_BrWsQx9M.js.br +0 -0
  74. package/dist/public/assets/_BrbA4biE.js +1 -0
  75. package/dist/public/assets/{_BHYTDkZR.js → _Bs2HUAxm.js} +1 -1
  76. package/dist/public/assets/_Bs2HUAxm.js.br +0 -0
  77. package/dist/public/assets/_BsWogZkr.js +1 -0
  78. package/dist/public/assets/_BthptJ6a.js +1 -0
  79. package/dist/public/assets/_BthptJ6a.js.br +0 -0
  80. package/dist/public/assets/_BuxlUghc.js +1 -0
  81. package/dist/public/assets/{_4tTyBCeC.js → _Bv-wpAaO.js} +1 -1
  82. package/dist/public/assets/_Bv-wpAaO.js.br +0 -0
  83. package/dist/public/assets/_BvK6PQ1z.js +1 -0
  84. package/dist/public/assets/{_DKSFLcWe.js → _BytWZ6R5.js} +1 -1
  85. package/dist/public/assets/_BytWZ6R5.js.br +0 -0
  86. package/dist/public/assets/_C-OUSTHo.js +1 -0
  87. package/dist/public/assets/{_DwnrXrJG.js → _C0Hfu_Ho.js} +1 -1
  88. package/dist/public/assets/_C0Hfu_Ho.js.br +0 -0
  89. package/dist/public/assets/_C0ztthm_.js +1 -0
  90. package/dist/public/assets/{_CyG4uyH4.js → _C2DkGqn5.js} +1 -1
  91. package/dist/public/assets/_C2DkGqn5.js.br +0 -0
  92. package/dist/public/assets/{_yJwnpW5d.js → _C33cmCxX.js} +1 -1
  93. package/dist/public/assets/_C33cmCxX.js.br +0 -0
  94. package/dist/public/assets/{_BeIfsbXf.js → _C3ShTfoQ.js} +1 -1
  95. package/dist/public/assets/_C3ShTfoQ.js.br +0 -0
  96. package/dist/public/assets/_C3tVbCBH.js +1 -0
  97. package/dist/public/assets/_C6M1hDWV.js +1 -0
  98. package/dist/public/assets/_C6P-6sWK.js +1 -0
  99. package/dist/public/assets/_C78RESm0.js +1 -0
  100. package/dist/public/assets/_C7z3JBX0.js +1 -0
  101. package/dist/public/assets/_C8-cikmx.js +1 -0
  102. package/dist/public/assets/_C9thRVyr.js +1 -0
  103. package/dist/public/assets/{_CV-Bw8FG.js → _CBBTd56s.js} +1 -1
  104. package/dist/public/assets/_CBBTd56s.js.br +0 -0
  105. package/dist/public/assets/_CEGHO2aQ.js +1 -0
  106. package/dist/public/assets/{_Gm2nKIsI.js → _CFF1bIG3.js} +1 -1
  107. package/dist/public/assets/_CFF1bIG3.js.br +0 -0
  108. package/dist/public/assets/{_CT50UdvA.js → _CGmOePAM.js} +1 -1
  109. package/dist/public/assets/_CGmOePAM.js.br +0 -0
  110. package/dist/public/assets/_CHOAR75o.js +1 -0
  111. package/dist/public/assets/_CIK0aYGO.js +1422 -0
  112. package/dist/public/assets/_CIK0aYGO.js.br +0 -0
  113. package/dist/public/assets/_CIM_QKij.js +1 -0
  114. package/dist/public/assets/_CJzM23DW.js +2 -0
  115. package/dist/public/assets/_CJzM23DW.js.br +0 -0
  116. package/dist/public/assets/_CK5CtA9f.js +1 -0
  117. package/dist/public/assets/_CLVYQ-74.js +1 -0
  118. package/dist/public/assets/_CLVYQ-74.js.br +0 -0
  119. package/dist/public/assets/{_C-CeSamd.js → _CLeF1FF3.js} +1 -1
  120. package/dist/public/assets/_CPm0qMfS.js +1 -0
  121. package/dist/public/assets/_CQWTMS1P.js +1 -0
  122. package/dist/public/assets/_CQWTMS1P.js.br +0 -0
  123. package/dist/public/assets/_CQgVf_hl.js +1 -0
  124. package/dist/public/assets/_CRzep8vQ.js +1 -0
  125. package/dist/public/assets/_CVY_H9pO.js +1 -0
  126. package/dist/public/assets/_CVlglWWP.js +1 -0
  127. package/dist/public/assets/_CYtOhTGb.js +1 -0
  128. package/dist/public/assets/_CZP-vnK2.js +1 -0
  129. package/dist/public/assets/_CZP-vnK2.js.br +0 -0
  130. package/dist/public/assets/_C_aWNVgg.js +1 -0
  131. package/dist/public/assets/_C_fU39wg.js +1 -0
  132. package/dist/public/assets/{_CGAwOmU8.js → _CaWlTbQM.js} +1 -1
  133. package/dist/public/assets/_Ca_UkEY3.js +1 -0
  134. package/dist/public/assets/_Ca_UkEY3.js.br +8 -0
  135. package/dist/public/assets/_CbKQ4tM7.js +1 -0
  136. package/dist/public/assets/_CbndvCa9.js +1 -0
  137. package/dist/public/assets/_CdgFbcw6.js +1 -0
  138. package/dist/public/assets/_Cf0kh0ya.js +1 -0
  139. package/dist/public/assets/_Cf0kh0ya.js.br +0 -0
  140. package/dist/public/assets/_CffIUDL_.js +1 -0
  141. package/dist/public/assets/_CffIUDL_.js.br +0 -0
  142. package/dist/public/assets/_CfrSfMqj.js +1 -0
  143. package/dist/public/assets/_CfrSfMqj.js.br +0 -0
  144. package/dist/public/assets/_CoHLhCNH.js +1 -0
  145. package/dist/public/assets/{_CjCClW7n.js → _CpK94htG.js} +1 -1
  146. package/dist/public/assets/_CqrXDSP9.js +1 -0
  147. package/dist/public/assets/_Csdgg-p8.js +1 -0
  148. package/dist/public/assets/_Csdgg-p8.js.br +0 -0
  149. package/dist/public/assets/{_Cm7MwWeR.js → _Csvc0jmZ.js} +1 -1
  150. package/dist/public/assets/_Csvc0jmZ.js.br +0 -0
  151. package/dist/public/assets/_CtdLytfI.js +1 -0
  152. package/dist/public/assets/{_c8sEONGc.js → _CtxNwohv.js} +1 -1
  153. package/dist/public/assets/_CtxNwohv.js.br +0 -0
  154. package/dist/public/assets/_CuApWap_.js +86 -0
  155. package/dist/public/assets/_CuApWap_.js.br +0 -0
  156. package/dist/public/assets/_CvBjVI0v.js +1 -0
  157. package/dist/public/assets/_CwZRDJQ2.js +1 -0
  158. package/dist/public/assets/_CwZRDJQ2.js.br +0 -0
  159. package/dist/public/assets/_CxyFAuJT.js +1 -0
  160. package/dist/public/assets/_CxyFAuJT.js.br +0 -0
  161. package/dist/public/assets/_D00q6XFi.js +1 -0
  162. package/dist/public/assets/_D00q6XFi.js.br +0 -0
  163. package/dist/public/assets/{_BM0HAmYi.js → _D0rv_4FK.js} +1 -1
  164. package/dist/public/assets/_D0rv_4FK.js.br +0 -0
  165. package/dist/public/assets/{_DrwRDfxo.js → _D478nKDM.js} +1 -1
  166. package/dist/public/assets/_D478nKDM.js.br +0 -0
  167. package/dist/public/assets/{_UDwcCybR.js → _D5W5ntHo.js} +1 -1
  168. package/dist/public/assets/_D5W5ntHo.js.br +0 -0
  169. package/dist/public/assets/_D5guyfCP.js +1 -0
  170. package/dist/public/assets/{_C3xkTmgg.js → _D7FiuTy-.js} +1 -1
  171. package/dist/public/assets/_D7FiuTy-.js.br +0 -0
  172. package/dist/public/assets/_DA1hU7GY.js +1 -0
  173. package/dist/public/assets/_DAGUL1Vl.js +6 -0
  174. package/dist/public/assets/_DAGUL1Vl.js.br +0 -0
  175. package/dist/public/assets/{_bXJ6rDQv.js → _DCaVKBqt.js} +1 -1
  176. package/dist/public/assets/_DCaVKBqt.js.br +0 -0
  177. package/dist/public/assets/_DFRZGT2q.js +1 -0
  178. package/dist/public/assets/_DFRZGT2q.js.br +0 -0
  179. package/dist/public/assets/_DGDoR_gX.js +1 -0
  180. package/dist/public/assets/_DGDoR_gX.js.br +0 -0
  181. package/dist/public/assets/_DJl1sf70.js +1 -0
  182. package/dist/public/assets/_DMGdwfSr.js +1 -0
  183. package/dist/public/assets/_DMGdwfSr.js.br +0 -0
  184. package/dist/public/assets/{_B7jfD4o_.js → _DMdBg_GK.js} +1 -1
  185. package/dist/public/assets/_DMdBg_GK.js.br +0 -0
  186. package/dist/public/assets/{_axB73DIG.js → _DPOlYZjX.js} +1 -1
  187. package/dist/public/assets/_DPOlYZjX.js.br +0 -0
  188. package/dist/public/assets/{_DEI3Wsc1.js → _DSCUag9O.js} +1 -1
  189. package/dist/public/assets/_DSCUag9O.js.br +0 -0
  190. package/dist/public/assets/_DUzx5eZR.js +1 -0
  191. package/dist/public/assets/_DUzx5eZR.js.br +0 -0
  192. package/dist/public/assets/{_BB8hnAFC.js → _DV0W2yTo.js} +1 -1
  193. package/dist/public/assets/_DV0W2yTo.js.br +0 -0
  194. package/dist/public/assets/_DW6rnS22.js +1 -0
  195. package/dist/public/assets/_DW6rnS22.js.br +0 -0
  196. package/dist/public/assets/_DY6s_kAl.js +1 -0
  197. package/dist/public/assets/_Da0Zcyhl.js +1 -0
  198. package/dist/public/assets/_Dbyzv-e6.js +1 -0
  199. package/dist/public/assets/_Dbyzv-e6.js.br +0 -0
  200. package/dist/public/assets/{_BKraHRf9.js → _DcFRlTYB.js} +1 -1
  201. package/dist/public/assets/_DcFRlTYB.js.br +0 -0
  202. package/dist/public/assets/_DiThv-ws.js +1 -0
  203. package/dist/public/assets/_Djho-FAH.js +1 -0
  204. package/dist/public/assets/_Djho-FAH.js.br +0 -0
  205. package/dist/public/assets/_DkfyvJLz.js +1 -0
  206. package/dist/public/assets/_DmdewGjf.js +1 -0
  207. package/dist/public/assets/{_CoSm8rGI.js → _DnhVTHg1.js} +1 -1
  208. package/dist/public/assets/_DnhVTHg1.js.br +0 -0
  209. package/dist/public/assets/_Dq4Lv0Cs.js +1 -0
  210. package/dist/public/assets/_Dq4Lv0Cs.js.br +0 -0
  211. package/dist/public/assets/_DqxOu378.js +1 -0
  212. package/dist/public/assets/{_B__t-xqQ.js → _DrpXP57c.js} +1 -1
  213. package/dist/public/assets/_DrpXP57c.js.br +0 -0
  214. package/dist/public/assets/{_C3czKCoC.js → _DsAV3t8S.js} +1 -1
  215. package/dist/public/assets/_DsAV3t8S.js.br +0 -0
  216. package/dist/public/assets/{_CnOgm_8-.js → _DvNEiAgs.js} +1 -1
  217. package/dist/public/assets/_DvNEiAgs.js.br +0 -0
  218. package/dist/public/assets/{_I5E4cOIs.js → _Dvu8aO9d.js} +1 -1
  219. package/dist/public/assets/_Dvu8aO9d.js.br +0 -0
  220. package/dist/public/assets/_DyUJCQsE.js +1 -0
  221. package/dist/public/assets/_DyUJCQsE.js.br +0 -0
  222. package/dist/public/assets/_DzJPXetd.js +1 -0
  223. package/dist/public/assets/_DzJPXetd.js.br +0 -0
  224. package/dist/public/assets/{_B7ZIrFzP.js → _DzOgre70.js} +1 -1
  225. package/dist/public/assets/_DzOgre70.js.br +0 -0
  226. package/dist/public/assets/_FXPfeF9Q.js +1 -0
  227. package/dist/public/assets/{_8OyrAmVC.js → _G6zi9_6i.js} +1 -1
  228. package/dist/public/assets/_G6zi9_6i.js.br +0 -0
  229. package/dist/public/assets/_I2leMoLk.js +1 -0
  230. package/dist/public/assets/_IWsH3JbM.js +1 -0
  231. package/dist/public/assets/{_DN0LSN_7.js → _Jsehj7rl.js} +1 -1
  232. package/dist/public/assets/_Jsehj7rl.js.br +0 -0
  233. package/dist/public/assets/_NGMwjBBG.js +1 -0
  234. package/dist/public/assets/{_yX6f-Tdd.js → _QljbgS5l.js} +1 -1
  235. package/dist/public/assets/_QljbgS5l.js.br +0 -0
  236. package/dist/public/assets/{_BmJ4HL0P.js → _Z8l8zhFZ.js} +1 -1
  237. package/dist/public/assets/_Z8l8zhFZ.js.br +0 -0
  238. package/dist/public/assets/__GnUfSxE.js +1 -0
  239. package/dist/public/assets/__GnUfSxE.js.br +0 -0
  240. package/dist/public/assets/_cD7JRpZk.js +1 -0
  241. package/dist/public/assets/_dP2ZLG1O.js +1 -0
  242. package/dist/public/assets/_dP2ZLG1O.js.br +0 -0
  243. package/dist/public/assets/_fQTAXQ2A.js +1 -0
  244. package/dist/public/assets/_fQTAXQ2A.js.br +0 -0
  245. package/dist/public/assets/_gIJHrFck.js +1 -0
  246. package/dist/public/assets/_gIJHrFck.js.br +0 -0
  247. package/dist/public/assets/{_C46wgmL5.js → _iqlUPvpu.js} +1 -1
  248. package/dist/public/assets/_iqlUPvpu.js.br +0 -0
  249. package/dist/public/assets/_m2OvafhN.js +1 -0
  250. package/dist/public/assets/_mNtBBYrx.js +1 -0
  251. package/dist/public/assets/_o4vB6uaf.js +1 -0
  252. package/dist/public/assets/{_wg_bmG9z.js → _pTRVL6_Z.js} +1 -1
  253. package/dist/public/assets/_pTRVL6_Z.js.br +0 -0
  254. package/dist/public/assets/_sayhcKVq.js +1 -0
  255. package/dist/public/assets/_sdf2KG0s.js +1 -0
  256. package/dist/public/assets/_sdf2KG0s.js.br +0 -0
  257. package/dist/public/assets/_tsg5j2Lv.js +1 -0
  258. package/dist/public/assets/_uTzPJzX0.js +1 -0
  259. package/dist/public/assets/_vIGuFBIb.js +1 -0
  260. package/dist/public/assets/_vIGuFBIb.js.br +0 -0
  261. package/dist/public/assets/_yJE0vu9j.js +1 -0
  262. package/dist/public/assets/_yJE0vu9j.js.br +0 -0
  263. package/dist/public/assets/_z9XIIgTI.js +1 -0
  264. package/dist/public/assets/{app-page-DSi27TMH.css → app-shell-8Pd1rc7u.css} +1 -1
  265. package/dist/public/assets/app-shell-8Pd1rc7u.css.br +0 -0
  266. package/dist/public/assets/command-palette-B4o6jF8Z.css +1 -0
  267. package/dist/public/assets/command-palette-B4o6jF8Z.css.br +0 -0
  268. package/dist/public/assets/files-view-BnN1VOCi.css +1 -0
  269. package/dist/public/assets/files-view-BnN1VOCi.css.br +0 -0
  270. package/dist/public/assets/files-view-cAPnyoQZ.js +2 -0
  271. package/dist/public/assets/group.css.ts-CXNej9ok.css +1 -0
  272. package/dist/public/assets/group.css.ts-CXNej9ok.css.br +0 -0
  273. package/dist/public/assets/{icon-search-Cslr912D.css → icon-search-DcAn99Uv.css} +1 -1
  274. package/dist/public/assets/icon-search-DcAn99Uv.css.br +0 -0
  275. package/dist/public/assets/manage-workspace-BMzLgYX3.css +1 -0
  276. package/dist/public/assets/manage-workspace-DhLNff0-.js +2 -0
  277. package/dist/public/assets/{modal-view-UBeCgIX7.css → modal-view-B53laKnF.css} +1 -1
  278. package/dist/public/assets/modal-view-B53laKnF.css.br +0 -0
  279. package/dist/public/assets/new-BqXHbQlu.js +1 -0
  280. package/dist/public/assets/new-workspace-B3ylje_g.css +1 -0
  281. package/dist/public/assets/new-workspace-B3ylje_g.css.br +0 -0
  282. package/dist/public/assets/new-workspace-RR8h-qIh.js +2 -0
  283. package/dist/public/assets/port-chip-Bt0w2MzG.css +1 -0
  284. package/dist/public/assets/port-chip-Bt0w2MzG.css.br +0 -0
  285. package/dist/public/assets/prompt-dialog-B_qzbXMZ.css +1 -0
  286. package/dist/public/assets/prompt-dialog-B_qzbXMZ.css.br +0 -0
  287. package/dist/public/assets/quick-open-CXyrWkbA.css +1 -0
  288. package/dist/public/assets/quick-open-CXyrWkbA.css.br +0 -0
  289. package/dist/public/assets/repo-picker-CpKpWL1n.css +1 -0
  290. package/dist/public/assets/repo-picker-CpKpWL1n.css.br +0 -0
  291. package/dist/public/assets/review-view-CTtdvipj.js +2 -0
  292. package/dist/public/assets/review-view-tq2OyY98.css +1 -0
  293. package/dist/public/assets/review-view-tq2OyY98.css.br +0 -0
  294. package/dist/public/assets/section-D7RUq5Cz.css +1 -0
  295. package/dist/public/assets/section-D7RUq5Cz.css.br +0 -0
  296. package/dist/public/assets/settings-BqXHbQlu.js +1 -0
  297. package/dist/public/assets/settings-page-Btvx32iZ.js +2 -0
  298. package/dist/public/assets/settings-page-Cnmgnr_0.css +1 -0
  299. package/dist/public/assets/settings-page-Cnmgnr_0.css.br +0 -0
  300. package/dist/public/assets/skill-row-CyviHufk.css +1 -0
  301. package/dist/public/assets/sso-auth-BRNOE7tU.css +1 -0
  302. package/dist/public/assets/sso-auth-BRNOE7tU.css.br +0 -0
  303. package/dist/public/assets/w-BqXHbQlu.js +1 -0
  304. package/dist/public/assets/w._-BqXHbQlu.js +1 -0
  305. package/dist/public/assets/w._-Nf-ixmkH.js +1 -0
  306. package/dist/public/assets/w._-cjUl7ond.js +1 -0
  307. package/dist/public/assets/worker-hkE5tvP8.js +164 -0
  308. package/dist/public/assets/worker-hkE5tvP8.js.br +0 -0
  309. package/lib/review/markdown.mjs +23 -11
  310. package/lib/setup/doctor.d.mts +5 -0
  311. package/lib/setup/doctor.mjs +31 -1
  312. package/lib/setup/install.mjs +68 -9
  313. package/lib/setup/listen.d.mts +5 -0
  314. package/lib/setup/listen.mjs +23 -0
  315. package/lib/share/manifest.mjs +8 -3
  316. package/package.json +7 -7
  317. package/scripts/migrate.mjs +169 -89
  318. package/dist/_7W8iLTql.js +0 -2
  319. package/dist/public/assets/_-Rhp4Iam.js +0 -1
  320. package/dist/public/assets/_-Rhp4Iam.js.br +0 -0
  321. package/dist/public/assets/_2PWnr0Ep.js +0 -1
  322. package/dist/public/assets/_2PWnr0Ep.js.br +0 -0
  323. package/dist/public/assets/_4tTyBCeC.js.br +0 -0
  324. package/dist/public/assets/_4x24Xtz8.js +0 -1
  325. package/dist/public/assets/_52XwXqiy.js.br +0 -0
  326. package/dist/public/assets/_5z9K39Kg.js +0 -1
  327. package/dist/public/assets/_6RP3yOfX.js +0 -1
  328. package/dist/public/assets/_6c5sWg_q.js +0 -1
  329. package/dist/public/assets/_6c5sWg_q.js.br +0 -0
  330. package/dist/public/assets/_772AjyQx.js +0 -1
  331. package/dist/public/assets/_772AjyQx.js.br +0 -0
  332. package/dist/public/assets/_7udydMs9.js +0 -1
  333. package/dist/public/assets/_7udydMs9.js.br +0 -0
  334. package/dist/public/assets/_8CN3GhrA.js +0 -1
  335. package/dist/public/assets/_8OyrAmVC.js.br +0 -0
  336. package/dist/public/assets/_9rfvDt0D.js +0 -1
  337. package/dist/public/assets/_B-oyYxP4.js +0 -1
  338. package/dist/public/assets/_B23autIT.js +0 -1
  339. package/dist/public/assets/_B4fdS_GK.js +0 -1
  340. package/dist/public/assets/_B4fdS_GK.js.br +0 -0
  341. package/dist/public/assets/_B4mrAOJe.js.br +0 -0
  342. package/dist/public/assets/_B5648bFu.js +0 -1
  343. package/dist/public/assets/_B56KWh6H.js +0 -1
  344. package/dist/public/assets/_B7ZIrFzP.js.br +0 -0
  345. package/dist/public/assets/_B7h2Q1yF.js +0 -1
  346. package/dist/public/assets/_B7h2Q1yF.js.br +0 -0
  347. package/dist/public/assets/_B7jfD4o_.js.br +0 -0
  348. package/dist/public/assets/_B8-9UU0b.js +0 -1
  349. package/dist/public/assets/_B8-9UU0b.js.br +0 -0
  350. package/dist/public/assets/_B99eluvQ.js.br +0 -0
  351. package/dist/public/assets/_BB8hnAFC.js.br +0 -0
  352. package/dist/public/assets/_BBCoOIOP.js.br +0 -0
  353. package/dist/public/assets/_BDX0L_3F.js.br +0 -0
  354. package/dist/public/assets/_BE7ERBV5.js +0 -1
  355. package/dist/public/assets/_BHYTDkZR.js.br +0 -0
  356. package/dist/public/assets/_BIknkuK7.js +0 -1
  357. package/dist/public/assets/_BIknkuK7.js.br +0 -0
  358. package/dist/public/assets/_BKXpTbJa.js +0 -1
  359. package/dist/public/assets/_BKraHRf9.js.br +0 -0
  360. package/dist/public/assets/_BM0HAmYi.js.br +0 -0
  361. package/dist/public/assets/_BPJgPGy_.js.br +0 -0
  362. package/dist/public/assets/_BPTeCwVk.js +0 -1
  363. package/dist/public/assets/_BPTeCwVk.js.br +0 -0
  364. package/dist/public/assets/_BQ6oRmZj.js.br +0 -0
  365. package/dist/public/assets/_BSGfztFB.js +0 -1
  366. package/dist/public/assets/_BSGfztFB.js.br +0 -0
  367. package/dist/public/assets/_BT1Fg9f7.js +0 -1
  368. package/dist/public/assets/_BT1Fg9f7.js.br +0 -0
  369. package/dist/public/assets/_BUc28oLW.js +0 -1
  370. package/dist/public/assets/_BVT8cLW8.js.br +0 -0
  371. package/dist/public/assets/_B__t-xqQ.js.br +0 -0
  372. package/dist/public/assets/_BaxiLRDq.js +0 -1
  373. package/dist/public/assets/_BaxiLRDq.js.br +0 -0
  374. package/dist/public/assets/_BdH6o3ne.js +0 -1
  375. package/dist/public/assets/_Be2QJJqi.js +0 -1
  376. package/dist/public/assets/_BeIfsbXf.js.br +0 -0
  377. package/dist/public/assets/_BkmCB1B7.js +0 -1
  378. package/dist/public/assets/_BlaUPzz6.js +0 -1
  379. package/dist/public/assets/_BmJ4HL0P.js.br +0 -0
  380. package/dist/public/assets/_BtmrZoMX.js +0 -1
  381. package/dist/public/assets/_BtmrZoMX.js.br +0 -0
  382. package/dist/public/assets/_Bu1O62mi.js +0 -1
  383. package/dist/public/assets/_BwsYYj35.js +0 -1
  384. package/dist/public/assets/_By9P7LBz.js +0 -1
  385. package/dist/public/assets/_Byov8m78.js +0 -1
  386. package/dist/public/assets/_C-Xu6InH.js +0 -1
  387. package/dist/public/assets/_C-pvpSFn.js +0 -1
  388. package/dist/public/assets/_C-pvpSFn.js.br +0 -0
  389. package/dist/public/assets/_C0GWE8Ws.js +0 -1
  390. package/dist/public/assets/_C0MnX7gF.js +0 -1
  391. package/dist/public/assets/_C0Ysgu0N.js +0 -1
  392. package/dist/public/assets/_C0udqXoV.js +0 -1
  393. package/dist/public/assets/_C3czKCoC.js.br +0 -0
  394. package/dist/public/assets/_C3qzGqgT.js +0 -1
  395. package/dist/public/assets/_C3xkTmgg.js.br +0 -0
  396. package/dist/public/assets/_C46wgmL5.js.br +0 -0
  397. package/dist/public/assets/_C4zXPi6Z.js +0 -1
  398. package/dist/public/assets/_C6fbnMgU.js +0 -1
  399. package/dist/public/assets/_C7NJXs7I.js +0 -1
  400. package/dist/public/assets/_C7NJXs7I.js.br +0 -0
  401. package/dist/public/assets/_C7jdZwl-.js +0 -1
  402. package/dist/public/assets/_CAx9vRB3.js +0 -1
  403. package/dist/public/assets/_CAx9vRB3.js.br +0 -0
  404. package/dist/public/assets/_CBqtZgPq.js +0 -1
  405. package/dist/public/assets/_CBqtZgPq.js.br +0 -0
  406. package/dist/public/assets/_CDL5bva3.js +0 -1
  407. package/dist/public/assets/_CDL5bva3.js.br +0 -0
  408. package/dist/public/assets/_CH7NDXYO.js +0 -1
  409. package/dist/public/assets/_CKoo1DBI.js +0 -1
  410. package/dist/public/assets/_CM90yd32.js.br +0 -0
  411. package/dist/public/assets/_CN8qwXEP.js +0 -1
  412. package/dist/public/assets/_CN8qwXEP.js.br +0 -0
  413. package/dist/public/assets/_CNBCSwDm.js +0 -1
  414. package/dist/public/assets/_CNBCSwDm.js.br +0 -0
  415. package/dist/public/assets/_COjK9IVw.js +0 -1
  416. package/dist/public/assets/_COjK9IVw.js.br +0 -0
  417. package/dist/public/assets/_COvQSj_N.js +0 -1
  418. package/dist/public/assets/_CSmTRKYC.js +0 -1
  419. package/dist/public/assets/_CSmTRKYC.js.br +0 -0
  420. package/dist/public/assets/_CT4opMDH.js +0 -86
  421. package/dist/public/assets/_CT4opMDH.js.br +0 -0
  422. package/dist/public/assets/_CT50UdvA.js.br +0 -0
  423. package/dist/public/assets/_CV-Bw8FG.js.br +0 -0
  424. package/dist/public/assets/_CXecCgJ4.js.br +0 -0
  425. package/dist/public/assets/_C__ngYHl.js +0 -1
  426. package/dist/public/assets/_CdYzXVw9.js +0 -1
  427. package/dist/public/assets/_CdYzXVw9.js.br +0 -0
  428. package/dist/public/assets/_Cf7ziBW6.js +0 -1
  429. package/dist/public/assets/_CfZpxvbA.js +0 -1
  430. package/dist/public/assets/_Cm7MwWeR.js.br +0 -0
  431. package/dist/public/assets/_CnOgm_8-.js.br +0 -0
  432. package/dist/public/assets/_CoSm8rGI.js.br +0 -0
  433. package/dist/public/assets/_CodAPaLl.js +0 -1
  434. package/dist/public/assets/_CodAPaLl.js.br +0 -0
  435. package/dist/public/assets/_Cp7bn2n4.js +0 -1
  436. package/dist/public/assets/_Cr3IENiS.js +0 -1
  437. package/dist/public/assets/_Cr8eFog_.js +0 -9
  438. package/dist/public/assets/_Cr8eFog_.js.br +0 -0
  439. package/dist/public/assets/_CsiY7_Sq.js +0 -1
  440. package/dist/public/assets/_CvUTwBtz.js +0 -1
  441. package/dist/public/assets/_CyG4uyH4.js.br +0 -0
  442. package/dist/public/assets/_Czf8lSy3.js +0 -1
  443. package/dist/public/assets/_D0h6bM9K.js +0 -1
  444. package/dist/public/assets/_D1Q-u_7m.js +0 -1
  445. package/dist/public/assets/_D1Q-u_7m.js.br +0 -0
  446. package/dist/public/assets/_DCGza5jQ.js.br +0 -0
  447. package/dist/public/assets/_DCjHVJN2.js.br +0 -0
  448. package/dist/public/assets/_DDs3rbi4.js +0 -1
  449. package/dist/public/assets/_DEI3Wsc1.js.br +0 -0
  450. package/dist/public/assets/_DFUvzjSY.js +0 -1
  451. package/dist/public/assets/_DJ4ScClm.js +0 -1
  452. package/dist/public/assets/_DJ4ScClm.js.br +0 -0
  453. package/dist/public/assets/_DKSFLcWe.js.br +0 -0
  454. package/dist/public/assets/_DN0LSN_7.js.br +0 -0
  455. package/dist/public/assets/_DNQWXflz.js.br +0 -0
  456. package/dist/public/assets/_DOr-IIYd.js +0 -1
  457. package/dist/public/assets/_DUECTykQ.js +0 -2640
  458. package/dist/public/assets/_DUECTykQ.js.br +0 -0
  459. package/dist/public/assets/_DU_CXTYH.js +0 -1
  460. package/dist/public/assets/_DXLfnZgl.js +0 -1
  461. package/dist/public/assets/_DZ7lKWLx.js +0 -1
  462. package/dist/public/assets/_DZRRUShG.js.br +0 -0
  463. package/dist/public/assets/_Db8OySTl.js +0 -1
  464. package/dist/public/assets/_DbBa1NO6.js +0 -1
  465. package/dist/public/assets/_DeRrQBgm.js +0 -2
  466. package/dist/public/assets/_DeRrQBgm.js.br +0 -0
  467. package/dist/public/assets/_DfrEESyG.js +0 -1
  468. package/dist/public/assets/_DigmuRvk.js +0 -1
  469. package/dist/public/assets/_DjWKgUPY.js +0 -1
  470. package/dist/public/assets/_DjWKgUPY.js.br +0 -0
  471. package/dist/public/assets/_Doy075sx.js +0 -1
  472. package/dist/public/assets/_DpL-iy2Q.js +0 -1
  473. package/dist/public/assets/_DpL-iy2Q.js.br +0 -0
  474. package/dist/public/assets/_Dpy7Nv8Y.js +0 -1
  475. package/dist/public/assets/_Dpy7Nv8Y.js.br +0 -0
  476. package/dist/public/assets/_DqoN6Zbr.js +0 -1
  477. package/dist/public/assets/_DqoN6Zbr.js.br +0 -0
  478. package/dist/public/assets/_DrwRDfxo.js.br +0 -0
  479. package/dist/public/assets/_DtfClEB2.js +0 -1
  480. package/dist/public/assets/_DtkyFd1k.js +0 -1
  481. package/dist/public/assets/_DtkyFd1k.js.br +0 -0
  482. package/dist/public/assets/_DuraWzq8.js +0 -1
  483. package/dist/public/assets/_DuraWzq8.js.br +0 -0
  484. package/dist/public/assets/_DwOZjG25.js +0 -1
  485. package/dist/public/assets/_DwnrXrJG.js.br +0 -0
  486. package/dist/public/assets/_Gm2nKIsI.js.br +0 -0
  487. package/dist/public/assets/_HwNNMC_M.js +0 -1
  488. package/dist/public/assets/_I5E4cOIs.js.br +0 -0
  489. package/dist/public/assets/_OqWnNRp1.js.br +0 -0
  490. package/dist/public/assets/_QJRLXJCl.js +0 -1
  491. package/dist/public/assets/_QJRLXJCl.js.br +0 -0
  492. package/dist/public/assets/_TnKds2XR.js +0 -1
  493. package/dist/public/assets/_UDwcCybR.js.br +0 -0
  494. package/dist/public/assets/_Y9eVHbos.js +0 -1
  495. package/dist/public/assets/_awhwVzn2.js +0 -1
  496. package/dist/public/assets/_axB73DIG.js.br +0 -0
  497. package/dist/public/assets/_bX1A3m6x.js.br +0 -0
  498. package/dist/public/assets/_bXJ6rDQv.js.br +0 -0
  499. package/dist/public/assets/_c8sEONGc.js.br +0 -0
  500. package/dist/public/assets/_ddGgTxBq.js +0 -1
  501. package/dist/public/assets/_e7A8Lk3N.js +0 -1
  502. package/dist/public/assets/_hI9Uq04u.js +0 -1
  503. package/dist/public/assets/_jsYtAs8X.js +0 -1
  504. package/dist/public/assets/_jsYtAs8X.js.br +0 -0
  505. package/dist/public/assets/_ktJP056X.js +0 -1
  506. package/dist/public/assets/_rCrnzYGa.js.br +0 -0
  507. package/dist/public/assets/_seluNJrC.js +0 -1
  508. package/dist/public/assets/_tjp1F1WS.js +0 -1
  509. package/dist/public/assets/_vefbuJnt.js +0 -6
  510. package/dist/public/assets/_vefbuJnt.js.br +0 -0
  511. package/dist/public/assets/_vh9LFjDx.js +0 -1
  512. package/dist/public/assets/_wg_bmG9z.js.br +0 -0
  513. package/dist/public/assets/_xnx0Qqu_.js +0 -1
  514. package/dist/public/assets/_yJwnpW5d.js.br +0 -0
  515. package/dist/public/assets/_yX6f-Tdd.js.br +0 -0
  516. package/dist/public/assets/_zOxmqmej.js +0 -1
  517. package/dist/public/assets/_zOxmqmej.js.br +0 -0
  518. package/dist/public/assets/app-page-DSi27TMH.css.br +0 -0
  519. package/dist/public/assets/command-palette-D1FTfzRL.css +0 -1
  520. package/dist/public/assets/command-palette-D1FTfzRL.css.br +0 -0
  521. package/dist/public/assets/files-view-CUjcVonq.css +0 -1
  522. package/dist/public/assets/files-view-CUjcVonq.css.br +0 -0
  523. package/dist/public/assets/files-view-CiV1wzMY.js +0 -2
  524. package/dist/public/assets/group.css.ts-bSDNRl7w.css +0 -1
  525. package/dist/public/assets/group.css.ts-bSDNRl7w.css.br +0 -0
  526. package/dist/public/assets/icon-search-Cslr912D.css.br +0 -0
  527. package/dist/public/assets/key-bar.css.ts-Brsaaphs.css +0 -1
  528. package/dist/public/assets/key-bar.css.ts-Brsaaphs.css.br +0 -0
  529. package/dist/public/assets/manage-workspace-CBoNUXar.css +0 -1
  530. package/dist/public/assets/manage-workspace-Cbpb6QYD.js +0 -2
  531. package/dist/public/assets/modal-view-UBeCgIX7.css.br +0 -0
  532. package/dist/public/assets/new-I9rKXr4F.js +0 -1
  533. package/dist/public/assets/new-workspace-B3e9AXWd.js +0 -2
  534. package/dist/public/assets/new-workspace-DfEJoWx5.css +0 -1
  535. package/dist/public/assets/new-workspace-DfEJoWx5.css.br +0 -0
  536. package/dist/public/assets/port-chip-B1iVO49X.css +0 -1
  537. package/dist/public/assets/port-chip-B1iVO49X.css.br +0 -0
  538. package/dist/public/assets/prompt-dialog-TvY9iRCd.css +0 -1
  539. package/dist/public/assets/prompt-dialog-TvY9iRCd.css.br +0 -0
  540. package/dist/public/assets/quick-open-CCdyjExx.css +0 -1
  541. package/dist/public/assets/quick-open-CCdyjExx.css.br +0 -0
  542. package/dist/public/assets/repo-picker-DUC4liD4.css +0 -1
  543. package/dist/public/assets/repo-picker-DUC4liD4.css.br +0 -3
  544. package/dist/public/assets/review-view-Cbql7hRd.js +0 -2
  545. package/dist/public/assets/review-view-DBvRJQKT.css +0 -1
  546. package/dist/public/assets/review-view-DBvRJQKT.css.br +0 -0
  547. package/dist/public/assets/section-DF0g3UYh.css +0 -1
  548. package/dist/public/assets/section-DF0g3UYh.css.br +0 -0
  549. package/dist/public/assets/settings-I9rKXr4F.js +0 -1
  550. package/dist/public/assets/settings-page-DSTN6gbj.css +0 -1
  551. package/dist/public/assets/settings-page-DSTN6gbj.css.br +0 -0
  552. package/dist/public/assets/settings-page-ZPnKcjEK.js +0 -2
  553. package/dist/public/assets/skill-row-bJ0ycL8_.css +0 -1
  554. package/dist/public/assets/sso-auth-BzQg9Hau.css +0 -1
  555. package/dist/public/assets/sso-auth-BzQg9Hau.css.br +0 -0
  556. package/dist/public/assets/w-I9rKXr4F.js +0 -1
  557. package/dist/public/assets/w._-BZWvupro.js +0 -1
  558. package/dist/public/assets/w._-D4DOoZXE.js +0 -1
  559. package/dist/public/assets/w._-I9rKXr4F.js +0 -1
  560. package/dist/public/assets/worker-BK3lyuKh.js +0 -164
  561. package/dist/public/assets/worker-BK3lyuKh.js.br +0 -0
@@ -64,8 +64,11 @@ export function commentMarkdown(comments, repos) {
64
64
  function commentBlock(c, n, repos) {
65
65
  let head = `## ${n}. ${placeOf(c)}`;
66
66
  if (c.side === "deletions") {
67
- const base = (repos || []).find(
68
- (r) => r.worktree === folderOf(c.worktree),
67
+ // The base of the section the line was removed in: a lane's or a PR's
68
+ // is not the checkout's.
69
+ const base = (
70
+ sectionOf(c, repos) ??
71
+ (repos || []).find((r) => r.worktree === folderOf(c.worktree))
69
72
  )?.base;
70
73
  head += base ? ` [removed from ${base}]` : " [removed]";
71
74
  }
@@ -88,24 +91,33 @@ function folderOf(worktree) {
88
91
  return worktree.split(/[@#]/)[0];
89
92
  }
90
93
 
91
- /** The branch a comment's lines are on when that is not the checkout's:
92
- * the lane or PR section it was made in (by id for older rows, else by
93
- * the head it stored), or a lane's topic when no section says more.
94
+ /** The section a comment was made in: an older row names it outright; a
95
+ * newer one by the head it was made at — the first section at that head,
96
+ * so a lane still level with the checkout reads as the checkout, which it
97
+ * is.
94
98
  * @param {Comment} c
95
99
  * @param {Repo[] | null | undefined} repos */
96
- function branchOf(c, repos) {
100
+ function sectionOf(c, repos) {
97
101
  const folder = folderOf(c.worktree);
98
102
  const list = repos || [];
99
- // An older row names its section outright; a newer one by the head it
100
- // was made at — the first section at that head, so a lane still level
101
- // with the checkout reads as the checkout, which it is.
102
- const section =
103
+ return (
103
104
  (c.worktree !== folder
104
105
  ? list.find((r) => r.id === c.worktree)
105
106
  : undefined) ??
106
107
  (c.head
107
108
  ? list.find((r) => r.worktree === folder && r.head === c.head)
108
- : undefined);
109
+ : undefined)
110
+ );
111
+ }
112
+
113
+ /** The branch a comment's lines are on when that is not the checkout's:
114
+ * the lane or PR section it was made in (`sectionOf`), or a lane's topic
115
+ * when no section says more.
116
+ * @param {Comment} c
117
+ * @param {Repo[] | null | undefined} repos */
118
+ function branchOf(c, repos) {
119
+ const folder = folderOf(c.worktree);
120
+ const section = sectionOf(c, repos);
109
121
  if (section && section.id && section.id !== folder) {
110
122
  const name = section.pr?.headRefName || section.headRef || section.branch;
111
123
  const pr = section.pr ? ` #${section.pr.number}` : "";
@@ -32,6 +32,9 @@ export interface GithubHostStatus {
32
32
  /** Orgs whose SAML SSO this host's token still needs to authorize.
33
33
  * Populated by the server setup wrapper, not doctor.mjs itself. */
34
34
  sso?: { org: string; host: string; authorizeUrl: string }[];
35
+ /** gh itself has this host (its hosts.yml), so it is listed whatever
36
+ * Settings holds. Populated by the server setup wrapper. */
37
+ ghKnown?: boolean;
35
38
  }
36
39
  export interface Doctor {
37
40
  ready: boolean;
@@ -40,6 +43,8 @@ export interface Doctor {
40
43
  tools: DoctorTool[];
41
44
  agents: DoctorAgent[];
42
45
  github: GithubHostStatus[];
46
+ /** Whether the server can keep this Linux host awake; null elsewhere. */
47
+ awake: boolean | null;
43
48
  }
44
49
  export function setupPath(base?: string): string;
45
50
  export function which(bin: string): string | null;
@@ -290,6 +290,27 @@ async function githubHostStatus(host) {
290
290
  };
291
291
  }
292
292
 
293
+ /** Whether the server can keep this Linux host awake (src/server/awake.ts
294
+ * holds the lock itself). Its last resort, an `idle` lock, is one polkit
295
+ * grants anyone, so failing that means nothing holds the host while work
296
+ * runs, and a suspend looks like the network dropping. Null off Linux, where
297
+ * caffeinate asks no one. */
298
+ async function canStayAwake() {
299
+ if (process.platform !== "linux") return null;
300
+ const { ok } = await run(
301
+ "systemd-inhibit",
302
+ [
303
+ "--what=idle",
304
+ "--mode=block",
305
+ "--who=work",
306
+ "--why=work doctor probe",
307
+ "true",
308
+ ],
309
+ { timeout: 5000 },
310
+ );
311
+ return ok;
312
+ }
313
+
293
314
  /**
294
315
  * Full readiness snapshot.
295
316
  *
@@ -302,9 +323,10 @@ export async function doctor(opts = {}) {
302
323
  ...(opts.hosts || []),
303
324
  ...ghKnownHosts(),
304
325
  ]);
305
- const [versions, github] = await Promise.all([
326
+ const [versions, github, awake] = await Promise.all([
306
327
  miseVersions(),
307
328
  Promise.all([...hostSet].map(githubHostStatus)),
329
+ canStayAwake(),
308
330
  ]);
309
331
 
310
332
  const tools = TOOLS.map((t) => {
@@ -340,6 +362,7 @@ export async function doctor(opts = {}) {
340
362
  tools,
341
363
  agents,
342
364
  github,
365
+ awake,
343
366
  };
344
367
  }
345
368
 
@@ -366,6 +389,13 @@ export function formatDoctor(d) {
366
389
  `${a.label.padEnd(11)}${mark(a.installed)} ${a.installed ? a.instances.map((i) => `${i.command} (${i.path})`).join(", ") : "not installed"}`,
367
390
  );
368
391
  }
392
+ // Said only when nothing holds the host: not a readiness gate, since
393
+ // work runs either way, but the one place a headless host would say so.
394
+ if (d.awake === false) {
395
+ lines.push(
396
+ `sleep ✗ nothing keeps this host awake: systemd-inhibit is missing or could not take a lock, so the host can suspend under work. Allow org.freedesktop.login1.inhibit-block-idle (a polkit rule), or keep the host up: sudo systemctl mask sleep.target suspend.target`,
397
+ );
398
+ }
369
399
  lines.push("");
370
400
  lines.push(d.ready ? "ready" : `not ready, missing: ${d.missing.join(", ")}`);
371
401
  return lines.join("\n");
@@ -2,7 +2,7 @@
2
2
  // Wraps mise, gh, and the vendors' own agent installers — never reimplements
3
3
  // them. Every command streams its output through `log` so a terminal and the
4
4
  // Settings page see the same lines. Plain node, no dependencies.
5
- import { spawn } from "node:child_process";
5
+ import { execFileSync, spawn } from "node:child_process";
6
6
  import fs from "node:fs";
7
7
  import os from "node:os";
8
8
  import path from "node:path";
@@ -47,25 +47,84 @@ export function runStreaming(
47
47
  child.stderr?.on("data", onData);
48
48
  if (input) child.stdin.write(input);
49
49
  child.stdin.end();
50
- const timer = setTimeout(() => child.kill("SIGTERM"), timeout);
51
- child.on("error", (err) => {
52
- clearTimeout(timer);
53
- reject(err);
54
- });
55
- child.on("close", (code) => {
50
+ let timedOut = false;
51
+ // The whole tree, not just the child: an installer's `curl` or a tool's
52
+ // forked worker outlives the shell that started it.
53
+ const timer = setTimeout(() => {
54
+ timedOut = true;
55
+ for (const pid of [...descendants(child.pid), child.pid]) {
56
+ try {
57
+ process.kill(pid, "SIGTERM");
58
+ } catch {}
59
+ }
60
+ }, timeout);
61
+ let drain;
62
+ let settled = false;
63
+ const settle = (code) => {
64
+ if (settled) return;
65
+ settled = true;
56
66
  clearTimeout(timer);
67
+ clearTimeout(drain);
68
+ child.stdout?.destroy();
69
+ child.stderr?.destroy();
57
70
  if (buf.trim()) onData("\n");
58
- if (code === 0) resolve(lines);
71
+ if (code === 0 && !timedOut) resolve(lines);
59
72
  else
60
73
  reject(
61
74
  new Error(
62
- `${cmd} ${args.join(" ")} exited ${code}${lines.length ? `: ${lines[lines.length - 1]}` : ""}`,
75
+ `${cmd} ${args.join(" ")} ${timedOut ? `timed out after ${Math.round(timeout / 1000)}s` : `exited ${code}`}${lines.length ? `: ${lines[lines.length - 1]}` : ""}`,
63
76
  ),
64
77
  );
78
+ };
79
+ child.on("error", (err) => {
80
+ settled = true;
81
+ clearTimeout(timer);
82
+ reject(err);
83
+ });
84
+ child.on("close", settle);
85
+ // `close` waits for every process holding the output pipes, and one the
86
+ // child left behind can hold them forever: a moment after the child
87
+ // itself exits is as long as its output is waited for. Callers hold
88
+ // locks across this call (mise, skills).
89
+ child.on("exit", (code) => {
90
+ drain = setTimeout(() => settle(code), 1000);
65
91
  });
66
92
  });
67
93
  }
68
94
 
95
+ /** Every process under `pid`, read from one `ps` listing (Linux and macOS
96
+ * alike), so a timeout can stop the tree without moving the child into a
97
+ * process group of its own — which would also take it off the terminal a
98
+ * `work setup` runs in, and out of reach of that terminal's Ctrl-C. */
99
+ function descendants(pid) {
100
+ if (!pid) return [];
101
+ let out = "";
102
+ try {
103
+ out = execFileSync("ps", ["-A", "-o", "pid=", "-o", "ppid="], {
104
+ encoding: "utf8",
105
+ timeout: 5000,
106
+ });
107
+ } catch {
108
+ return [];
109
+ }
110
+ const children = new Map();
111
+ for (const line of out.split("\n")) {
112
+ const [child, parent] = line.trim().split(/\s+/).map(Number);
113
+ if (!child) continue;
114
+ if (!children.has(parent)) children.set(parent, []);
115
+ children.get(parent).push(child);
116
+ }
117
+ const found = [];
118
+ const walk = (p) => {
119
+ for (const c of children.get(p) || []) {
120
+ found.push(c);
121
+ walk(c);
122
+ }
123
+ };
124
+ walk(pid);
125
+ return found;
126
+ }
127
+
69
128
  /** Fetch a vendor install script to a temp file and run it with `shell`.
70
129
  * Same effect as the documented `curl … | bash`, without piping a network
71
130
  * stream into a login shell: the URL is pinned in the catalog and the
@@ -0,0 +1,5 @@
1
+ export function listenStream(
2
+ listen: string | undefined,
3
+ port: string | number,
4
+ ): string;
5
+ export function dialHost(listen: string | undefined): string;
@@ -0,0 +1,23 @@
1
+ // Where work listens (WORK_LISTEN) and where this machine reaches it: one
2
+ // rule for the CLI (the socket unit, its own requests to the server), the
3
+ // server (the hooks it writes for panes and bare caches) and migrate.mjs.
4
+
5
+ /** Addresses that mean every interface. */
6
+ const EVERY = new Set(["0.0.0.0", "::", "*"]);
7
+
8
+ /** work.socket's ListenStream for WORK_LISTEN: this machine only unless
9
+ * set, every interface for `0.0.0.0` / `::` / `*`, else that address. */
10
+ export function listenStream(listen, port) {
11
+ if (!listen) return `127.0.0.1:${port}`;
12
+ if (EVERY.has(listen)) return String(port);
13
+ return listen.includes(":") ? `[${listen}]:${port}` : `${listen}:${port}`;
14
+ }
15
+
16
+ /** The host to dial the server at, for WORK_LISTEN: loopback when it
17
+ * listens on every interface or is unset, else the one address it listens
18
+ * on (a server bound to `::1` or a LAN address refuses 127.0.0.1), bracketed
19
+ * when IPv6 so it can go in a URL. */
20
+ export function dialHost(listen) {
21
+ if (!listen || EVERY.has(listen)) return "127.0.0.1";
22
+ return listen.includes(":") ? `[${listen}]` : listen;
23
+ }
@@ -67,10 +67,15 @@ export function decodeRepo(entry) {
67
67
  } else return null;
68
68
  full = full.trim();
69
69
  if (!REPO_RE.test(full)) return null;
70
- // A host is case-insensitive; the configured list is lowercase.
70
+ // A host is case-insensitive; the configured list is lowercase. And
71
+ // github.com's is never written: `github.com/o/r` kept as such is a
72
+ // second name for `o/r`, which everything keyed by full name tells apart.
71
73
  const parts = full.split("/");
72
- if (parts.length === 3)
73
- full = [parts[0].toLowerCase(), parts[1], parts[2]].join("/");
74
+ if (parts.length === 3) {
75
+ const host = parts[0].toLowerCase();
76
+ const name = `${parts[1]}/${parts[2]}`;
77
+ full = host === "github.com" ? name : `${host}/${name}`;
78
+ }
74
79
  if (base !== undefined && !BRANCH_RE.test(base)) return null;
75
80
  if (dir !== undefined && !DIR_RE.test(dir)) return null;
76
81
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dylanpiercey/work",
3
- "version": "0.0.204",
3
+ "version": "0.0.205",
4
4
  "type": "module",
5
5
  "description": "Web GUI for agentic dev workspaces",
6
6
  "license": "MIT",
@@ -28,7 +28,7 @@
28
28
  "dev": "marko-run dev src/entry.ts",
29
29
  "postinstall": "chmod +x node_modules/node-pty/prebuilds/*/spawn-helper node_modules/node-pty/build/Release/spawn-helper 2>/dev/null || true",
30
30
  "build": "node scripts/agents-catalog.mjs && marko-run build src/entry.ts",
31
- "check": "node scripts/agents-catalog.mjs && mtc",
31
+ "check": "node scripts/agents-catalog.mjs && rm -f tsconfig.tsbuildinfo && mtc",
32
32
  "preview": "PORT=7171 node dist/index.mjs",
33
33
  "format": "prettier . -w",
34
34
  "format:check": "prettier --check ."
@@ -39,10 +39,10 @@
39
39
  },
40
40
  "devDependencies": {
41
41
  "@lobehub/icons-static-svg": "^1.95.1",
42
- "@marko/run": "^0.11.12",
42
+ "@marko/run": "^0.11.13",
43
43
  "@marko/run-adapter-node": "^2.0.6",
44
44
  "@marko/type-check": "^3.2.1",
45
- "@pierre/diffs": "1.4.3",
45
+ "@pierre/diffs": "1.5.1",
46
46
  "@pierre/trees": "1.0.0-beta.6",
47
47
  "@types/compression": "^1.8.1",
48
48
  "@types/node": "^26.6.2",
@@ -58,14 +58,14 @@
58
58
  "@xterm/xterm": "^6.0.0",
59
59
  "compression": "^1.8.2",
60
60
  "iconoir": "^7.12.1",
61
- "marko": "^6.3.52",
61
+ "marko": "^6.3.56",
62
62
  "playwright": "^1.63.0",
63
63
  "prettier": "^3.9.9",
64
- "prettier-plugin-marko": "^4.1.1",
64
+ "prettier-plugin-marko": "^4.1.3",
65
65
  "serve-static": "^2.2.1",
66
66
  "typescript": "^6.0.3",
67
67
  "valibot": "^1.5.0",
68
- "vite": "^8.3.0",
68
+ "vite": "^8.3.1",
69
69
  "web-push": "^3.6.7",
70
70
  "ws": "^8.21.3"
71
71
  }