@dylanpiercey/work 0.2.41 → 0.2.42

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 (504) hide show
  1. package/bin/cli/stack.mjs +33 -19
  2. package/bin/cli/topic.mjs +1 -1
  3. package/bin/work.mjs +199 -47
  4. package/dist/_BKkT73fv.js +2 -0
  5. package/dist/_BviTiVOB.js +2 -0
  6. package/dist/{_DgY5Gc2z.js → _BwqJGTg-.js} +80 -80
  7. package/dist/{_DuADlWik.js → _Cv5RrCSW.js} +3 -72
  8. package/dist/{_D4k_lVuT.js → _DuwPQCOE.js} +1 -1
  9. package/dist/index.mjs +927 -878
  10. package/dist/public/assets/{_DxMfRWk5.js → _0D0ldLfD.js} +1 -1
  11. package/dist/public/assets/_0D0ldLfD.js.br +0 -0
  12. package/dist/public/assets/{_wlPMGofh.js → _0TAu89jO.js} +1 -1
  13. package/dist/public/assets/_0TAu89jO.js.br +0 -0
  14. package/dist/public/assets/{_DAqHF2w4.js → _0tpkQ33d.js} +1 -1
  15. package/dist/public/assets/_0tpkQ33d.js.br +0 -0
  16. package/dist/public/assets/_27E7x5ZR.js +1 -0
  17. package/dist/public/assets/{_BbhdJgn7.js → _2EdJdhqM.js} +1 -1
  18. package/dist/public/assets/_2EdJdhqM.js.br +0 -0
  19. package/dist/public/assets/{_CsnYZRX1.js → _5SjlE5HS.js} +1 -1
  20. package/dist/public/assets/{_DsODWTMK.js → _6TaxzICZ.js} +1 -1
  21. package/dist/public/assets/_6TaxzICZ.js.br +0 -0
  22. package/dist/public/assets/_6VIxHDR1.js +1 -0
  23. package/dist/public/assets/_6d2rf6hP.js +1 -0
  24. package/dist/public/assets/_7KxSE1_C.js +1 -0
  25. package/dist/public/assets/{_BsEmt4Xo.js → _7o-NFNP0.js} +1 -1
  26. package/dist/public/assets/_7o-NFNP0.js.br +0 -0
  27. package/dist/public/assets/_8nlKiGBi.js +1 -0
  28. package/dist/public/assets/_8nlKiGBi.js.br +0 -0
  29. package/dist/public/assets/_B0S0QYf0.js +1 -0
  30. package/dist/public/assets/{_CRxrUJ-J.js → _B4DVY_7W.js} +1 -1
  31. package/dist/public/assets/_B4DVY_7W.js.br +0 -0
  32. package/dist/public/assets/_B7JQBsSW.js +1 -0
  33. package/dist/public/assets/{_sAZ12zqC.js → _B8M3Ojiy.js} +1 -1
  34. package/dist/public/assets/_B8M3Ojiy.js.br +0 -0
  35. package/dist/public/assets/_B8OP1c1D.js +1 -0
  36. package/dist/public/assets/{_D9G809lq.js → _B8bacjbf.js} +1 -1
  37. package/dist/public/assets/_B8bacjbf.js.br +0 -0
  38. package/dist/public/assets/_BBkgNQeS.js +1 -0
  39. package/dist/public/assets/_BCswHrkD.js +1 -0
  40. package/dist/public/assets/_BFSINLI-.js +7 -0
  41. package/dist/public/assets/_BFSINLI-.js.br +0 -0
  42. package/dist/public/assets/{_Ih3MoXl0.js → _BFTr9gZX.js} +1 -1
  43. package/dist/public/assets/_BFTr9gZX.js.br +0 -0
  44. package/dist/public/assets/{_BVF9vDBR.js → _BHiKHJoJ.js} +1 -1
  45. package/dist/public/assets/_BHiKHJoJ.js.br +0 -0
  46. package/dist/public/assets/_BIHQhOfe.js +1594 -0
  47. package/dist/public/assets/_BIHQhOfe.js.br +0 -0
  48. package/dist/public/assets/_BJfBGQ6w.js +1 -0
  49. package/dist/public/assets/{_Yl99Ym1s.js → _BK0uv9MH.js} +1 -1
  50. package/dist/public/assets/_BK0uv9MH.js.br +0 -0
  51. package/dist/public/assets/_BKFPe3qb.js +1 -0
  52. package/dist/public/assets/{_CxPc5sJ4.js → _BL4YKfFD.js} +1 -1
  53. package/dist/public/assets/_BL4YKfFD.js.br +0 -0
  54. package/dist/public/assets/{_znlpA0RF.js → _BLRVSmeM.js} +1 -1
  55. package/dist/public/assets/_BLRVSmeM.js.br +0 -0
  56. package/dist/public/assets/_BMQ4URU4.js +1 -0
  57. package/dist/public/assets/_BOgpQXmJ.js +1 -0
  58. package/dist/public/assets/{_C4i6tdPg.js → _BPZKx3Jk.js} +1 -1
  59. package/dist/public/assets/_BPZKx3Jk.js.br +0 -0
  60. package/dist/public/assets/_BQUa7VNX.js +1 -0
  61. package/dist/public/assets/_BQc8MGMv.js +1 -0
  62. package/dist/public/assets/{_CgHFvMzh.js → _BUPn6Mnz.js} +1 -1
  63. package/dist/public/assets/_BUPn6Mnz.js.br +0 -0
  64. package/dist/public/assets/{_Dmr61lrF.js → _BWEmssXq.js} +1 -1
  65. package/dist/public/assets/_BWEmssXq.js.br +0 -0
  66. package/dist/public/assets/_BbWp0m5F.js +1 -0
  67. package/dist/public/assets/_BbXkdZHl.js +12 -0
  68. package/dist/public/assets/_BbXkdZHl.js.br +0 -0
  69. package/dist/public/assets/{_Dw-MQsnH.js → _Bcl_UOx6.js} +1 -1
  70. package/dist/public/assets/_Bcl_UOx6.js.br +0 -0
  71. package/dist/public/assets/{_DzYdOMqO.js → _Bey11w4c.js} +1 -1
  72. package/dist/public/assets/_Bey11w4c.js.br +0 -0
  73. package/dist/public/assets/{_UBNUF9Kp.js → _BfG_-1HN.js} +1 -1
  74. package/dist/public/assets/_BfG_-1HN.js.br +0 -0
  75. package/dist/public/assets/_BgfmMHXa.js +1 -0
  76. package/dist/public/assets/_BiRrfcmX.js +1 -0
  77. package/dist/public/assets/{_D80egIjq.js → _BjbqQ_El.js} +1 -1
  78. package/dist/public/assets/_BjbqQ_El.js.br +0 -0
  79. package/dist/public/assets/_Bq_e0MUr.js +1 -0
  80. package/dist/public/assets/_Br7uDnHv.js +1 -0
  81. package/dist/public/assets/{_BFkRvzwl.js → _Bt0eukq2.js} +1 -1
  82. package/dist/public/assets/_Bt0eukq2.js.br +0 -0
  83. package/dist/public/assets/{_D-6002zy.js → _Bv-IlwQT.js} +1 -1
  84. package/dist/public/assets/_Bv-IlwQT.js.br +0 -0
  85. package/dist/public/assets/{_B0YpwhBT.js → _BvgjMNxJ.js} +1 -1
  86. package/dist/public/assets/_BvgjMNxJ.js.br +0 -0
  87. package/dist/public/assets/_Bvs5mPNK.js +1 -0
  88. package/dist/public/assets/{_f7Sgp2jB.js → _BwLovCS6.js} +1 -1
  89. package/dist/public/assets/_BwLovCS6.js.br +0 -0
  90. package/dist/public/assets/{_CvTM_Hkg.js → _BwRBwNgB.js} +1 -1
  91. package/dist/public/assets/_BwRBwNgB.js.br +0 -0
  92. package/dist/public/assets/_ByNP19fU.js +1 -0
  93. package/dist/public/assets/{__SKAFxGa.js → _BytqxSss.js} +1 -1
  94. package/dist/public/assets/_BytqxSss.js.br +0 -0
  95. package/dist/public/assets/_C--AVrwD.js +1 -0
  96. package/dist/public/assets/{_Clzo9X7l.js → _C-YTNMVV.js} +1 -1
  97. package/dist/public/assets/_C-YTNMVV.js.br +0 -0
  98. package/dist/public/assets/_C04dnVHE.js +1 -0
  99. package/dist/public/assets/_C0OT-I8q.js +1 -0
  100. package/dist/public/assets/_C4KQumKg.js +1 -0
  101. package/dist/public/assets/_C6uxShhm.js +1 -0
  102. package/dist/public/assets/_C6uxShhm.js.br +0 -0
  103. package/dist/public/assets/{_Bzj2coXM.js → _C8pKiZNP.js} +1 -1
  104. package/dist/public/assets/_C8pKiZNP.js.br +0 -0
  105. package/dist/public/assets/{_CFQ5E_MU.js → _C9Xj1pPE.js} +1 -1
  106. package/dist/public/assets/_C9puwxo3.js +1 -0
  107. package/dist/public/assets/_CBk6VRaa.js +1 -0
  108. package/dist/public/assets/_CCW3Aity.js +1 -0
  109. package/dist/public/assets/{_AZdn-pAq.js → _CEa34aRI.js} +1 -1
  110. package/dist/public/assets/_CEa34aRI.js.br +0 -0
  111. package/dist/public/assets/{_DDwZqDeP.js → _CGK3zib3.js} +1 -1
  112. package/dist/public/assets/_CGK3zib3.js.br +0 -0
  113. package/dist/public/assets/_CIL6tdUG.js +1 -0
  114. package/dist/public/assets/_CMONBIy5.js +1 -0
  115. package/dist/public/assets/_CMdmbeSE.js +1 -0
  116. package/dist/public/assets/{_CwwZF_Zb.js → _CQwfLnMn.js} +1 -1
  117. package/dist/public/assets/_CQwfLnMn.js.br +0 -0
  118. package/dist/public/assets/{_CBmZFyev.js → _CRavszYj.js} +1 -1
  119. package/dist/public/assets/{_DVfIcVOc.js → _CUIoM8X2.js} +1 -1
  120. package/dist/public/assets/_CUIoM8X2.js.br +0 -0
  121. package/dist/public/assets/{_CxGMPpn8.js → _CUklb1HG.js} +1 -1
  122. package/dist/public/assets/_CUklb1HG.js.br +0 -0
  123. package/dist/public/assets/_CYRqamOW.js +1 -0
  124. package/dist/public/assets/_C_KC4T0e.js +1 -0
  125. package/dist/public/assets/{_tlSiPgo6.js → _C_XITOho.js} +1 -1
  126. package/dist/public/assets/_C_XITOho.js.br +0 -0
  127. package/dist/public/assets/_C_bUFg7j.js +1 -0
  128. package/dist/public/assets/_Cb9c_XDz.js +1 -0
  129. package/dist/public/assets/{_DMxmrREh.js → _Cc3XRkQD.js} +1 -1
  130. package/dist/public/assets/_Cc3XRkQD.js.br +0 -0
  131. package/dist/public/assets/_CdHUzIto.js +1 -0
  132. package/dist/public/assets/_CdRPhWHf.js +1 -0
  133. package/dist/public/assets/{_B7kCpNyD.js → _Ce9LAY3j.js} +1 -1
  134. package/dist/public/assets/_Ce9LAY3j.js.br +0 -0
  135. package/dist/public/assets/{_CxA2ehGA.js → _Chhk70ar.js} +1 -1
  136. package/dist/public/assets/_Chhk70ar.js.br +0 -0
  137. package/dist/public/assets/_ClN7MNw7.js +1 -0
  138. package/dist/public/assets/{_BNKR_PFf.js → _Cmh5vtw6.js} +1 -1
  139. package/dist/public/assets/_Cmh5vtw6.js.br +0 -0
  140. package/dist/public/assets/_CmvjAFo-.js +1 -0
  141. package/dist/public/assets/_CoFSog2u.js +1 -0
  142. package/dist/public/assets/{_DOGQJlMz.js → _CoVSfg3Z.js} +1 -1
  143. package/dist/public/assets/_CoVSfg3Z.js.br +0 -0
  144. package/dist/public/assets/_Cp1vX323.js +1 -0
  145. package/dist/public/assets/_CqX_aq_n.js +1 -0
  146. package/dist/public/assets/{_DrmQTAwC.js → _CrtPk9tp.js} +1 -1
  147. package/dist/public/assets/_CrtPk9tp.js.br +0 -0
  148. package/dist/public/assets/{_D6fwgK2P.js → _Ct_ritl_.js} +1 -1
  149. package/dist/public/assets/_Ct_ritl_.js.br +0 -0
  150. package/dist/public/assets/{_BWRhy73M.js → _CtknLycG.js} +1 -1
  151. package/dist/public/assets/_CtknLycG.js.br +0 -0
  152. package/dist/public/assets/_Ctl8GBEj.js +1 -0
  153. package/dist/public/assets/{_BdYyTR77.js → _Ctyg3IJ4.js} +1 -1
  154. package/dist/public/assets/_Ctyg3IJ4.js.br +0 -0
  155. package/dist/public/assets/{_QSE08ioq.js → _Cx_DSnTG.js} +1 -1
  156. package/dist/public/assets/_Cx_DSnTG.js.br +0 -0
  157. package/dist/public/assets/{_D6N1Ob8T.js → _D18W27gr.js} +1 -1
  158. package/dist/public/assets/_D18W27gr.js.br +0 -0
  159. package/dist/public/assets/_D3CHmSre.js +1 -0
  160. package/dist/public/assets/{_CqVEbJdU.js → _D3OrVUzk.js} +5 -5
  161. package/dist/public/assets/_D3OrVUzk.js.br +0 -0
  162. package/dist/public/assets/{_zLL0pxIC.js → _D3_VIrXA.js} +1 -1
  163. package/dist/public/assets/_D3_VIrXA.js.br +0 -0
  164. package/dist/public/assets/_D3l_AtBV.js +1 -0
  165. package/dist/public/assets/_D4c79S9H.js +1 -0
  166. package/dist/public/assets/{_C4TOoJt-.js → _D7G2pZM5.js} +1 -1
  167. package/dist/public/assets/_D7G2pZM5.js.br +0 -0
  168. package/dist/public/assets/_D7JNBtDF.js +1 -0
  169. package/dist/public/assets/{_lv7q9SmK.js → _D9V-500A.js} +1 -1
  170. package/dist/public/assets/_D9V-500A.js.br +0 -0
  171. package/dist/public/assets/{_Bud8PVk2.js → _DBQQMYHK.js} +1 -1
  172. package/dist/public/assets/_DBQQMYHK.js.br +0 -0
  173. package/dist/public/assets/{_DyPWIZeU.js → _DCb3fJRr.js} +1 -1
  174. package/dist/public/assets/_DCb3fJRr.js.br +0 -0
  175. package/dist/public/assets/{_BFR8p6md.js → _DEOgcq8G.js} +1 -1
  176. package/dist/public/assets/_DEOgcq8G.js.br +0 -0
  177. package/dist/public/assets/_DFRT7udX.js +1 -0
  178. package/dist/public/assets/_DHJlVcJW.js +1 -0
  179. package/dist/public/assets/_DI1qYvDw.js +1 -0
  180. package/dist/public/assets/_DI1qYvDw.js.br +0 -0
  181. package/dist/public/assets/{_S0t9nmdw.js → _DIMN13up.js} +1 -1
  182. package/dist/public/assets/_DIMN13up.js.br +0 -0
  183. package/dist/public/assets/_DJjH1Gev.js +1 -0
  184. package/dist/public/assets/_DKS31K16.js +1 -0
  185. package/dist/public/assets/{_CzBj3vat.js → _DK_-UDvi.js} +1 -1
  186. package/dist/public/assets/{_DrUKq1tq.js → _DOA1NutW.js} +1 -1
  187. package/dist/public/assets/_DOA1NutW.js.br +0 -0
  188. package/dist/public/assets/_DPS-LYLU.js +1 -0
  189. package/dist/public/assets/{_nVVtAArW.js → _DPjhX16_.js} +1 -1
  190. package/dist/public/assets/_DPjhX16_.js.br +0 -0
  191. package/dist/public/assets/{_DuiVLwbC.js → _DRhFEV3p.js} +1 -1
  192. package/dist/public/assets/_DRhFEV3p.js.br +0 -0
  193. package/dist/public/assets/_DRjmSjMB.js +1 -0
  194. package/dist/public/assets/_DS-RCqdz.js +1 -0
  195. package/dist/public/assets/{_BUi5Lnyu.js → _DSeY26wK.js} +1 -1
  196. package/dist/public/assets/_DSeY26wK.js.br +0 -0
  197. package/dist/public/assets/{_DNWcRd5b.js → _DSp0n7-Z.js} +4 -4
  198. package/dist/public/assets/_DSp0n7-Z.js.br +0 -0
  199. package/dist/public/assets/{_Ctprx5dp.js → _DTBHW2pT.js} +1 -1
  200. package/dist/public/assets/_DTBHW2pT.js.br +0 -0
  201. package/dist/public/assets/{_C63MsoW_.js → _DVcj9rxV.js} +1 -1
  202. package/dist/public/assets/_DVcj9rxV.js.br +0 -0
  203. package/dist/public/assets/_DYhHoMoq.js +1 -0
  204. package/dist/public/assets/_D_wYBGpz.js +1 -0
  205. package/dist/public/assets/_D_ymN6ch.js +1 -0
  206. package/dist/public/assets/{_lEdDdBb0.js → _Dar0Jhi9.js} +1 -1
  207. package/dist/public/assets/_Dar0Jhi9.js.br +0 -0
  208. package/dist/public/assets/_Db3vDKRm.js +1 -0
  209. package/dist/public/assets/_DcuoB7C5.js +1 -0
  210. package/dist/public/assets/_DhYe_0Ng.js +1 -0
  211. package/dist/public/assets/_DidgbjGx.js +1 -0
  212. package/dist/public/assets/_DidlTP-o.js +1 -0
  213. package/dist/public/assets/_DigH8KZR.js +1 -0
  214. package/dist/public/assets/_DmDpRqr3.js +1 -0
  215. package/dist/public/assets/{_CKGtByJf.js → _DoJ5e3yk.js} +1 -1
  216. package/dist/public/assets/_DoJ5e3yk.js.br +0 -0
  217. package/dist/public/assets/{_BHZ3z1c3.js → _DoQbA796.js} +1 -1
  218. package/dist/public/assets/_DoQbA796.js.br +0 -0
  219. package/dist/public/assets/_DocYIBLX.js +1 -0
  220. package/dist/public/assets/_Doi2BKea.js +1 -0
  221. package/dist/public/assets/{_Bjupqvvl.js → _Dr2xSXBN.js} +1 -1
  222. package/dist/public/assets/_Dr2xSXBN.js.br +0 -0
  223. package/dist/public/assets/_DtJNC5Rn.js +1 -0
  224. package/dist/public/assets/_DtdwmQ4k.js +1 -0
  225. package/dist/public/assets/{_Dxl6ePU3.js → _DtkImFGo.js} +1 -1
  226. package/dist/public/assets/_DucJxgyZ.js +1 -0
  227. package/dist/public/assets/_DucJxgyZ.js.br +0 -0
  228. package/dist/public/assets/{_CafkGbWO.js → _DvOSNj0k.js} +1 -1
  229. package/dist/public/assets/_DvOSNj0k.js.br +0 -0
  230. package/dist/public/assets/{_HHBD7Mwb.js → _DxmxNmie.js} +1 -1
  231. package/dist/public/assets/_DxmxNmie.js.br +0 -0
  232. package/dist/public/assets/_GJYB4WUU.js +1 -0
  233. package/dist/public/assets/{_rV9c6noX.js → _I64LjJr0.js} +1 -1
  234. package/dist/public/assets/_I64LjJr0.js.br +0 -0
  235. package/dist/public/assets/_IXX1CrDm.js +1 -0
  236. package/dist/public/assets/{_csnQFbUb.js → _J4kJcAJg.js} +1 -1
  237. package/dist/public/assets/_J4kJcAJg.js.br +0 -0
  238. package/dist/public/assets/{_DvhYEPCI.js → _PYKRwjO-.js} +1 -1
  239. package/dist/public/assets/_PYKRwjO-.js.br +0 -0
  240. package/dist/public/assets/{_BLzCI5fA.js → _ProcVwIG.js} +1 -1
  241. package/dist/public/assets/_ProcVwIG.js.br +0 -0
  242. package/dist/public/assets/{_BB9Q57R1.js → _RvJ4aN_k.js} +1 -1
  243. package/dist/public/assets/_RvJ4aN_k.js.br +0 -0
  244. package/dist/public/assets/_T4x4vstZ.js +2 -0
  245. package/dist/public/assets/_T4x4vstZ.js.br +0 -0
  246. package/dist/public/assets/{_ymY4YmGe.js → _TS3fzYUh.js} +1 -1
  247. package/dist/public/assets/_TS3fzYUh.js.br +0 -0
  248. package/dist/public/assets/_U3MwWZoy.js +1 -0
  249. package/dist/public/assets/{_Goz4NHSk.js → _Wml5S5pw.js} +1 -1
  250. package/dist/public/assets/_Wml5S5pw.js.br +0 -0
  251. package/dist/public/assets/{_KcGCvv0h.js → _Y1MV0Z0B.js} +1 -1
  252. package/dist/public/assets/_Y1MV0Z0B.js.br +0 -0
  253. package/dist/public/assets/{_2X4Nxaqb.js → _YWJOgXKS.js} +1 -1
  254. package/dist/public/assets/_YWJOgXKS.js.br +0 -0
  255. package/dist/public/assets/{_BteLCW3W.js → _Z_fC5zJJ.js} +1 -1
  256. package/dist/public/assets/_Z_fC5zJJ.js.br +0 -0
  257. package/dist/public/assets/{_BP1-9YZQ.js → __prI0zQc.js} +1 -1
  258. package/dist/public/assets/__prI0zQc.js.br +0 -0
  259. package/dist/public/assets/__tPIKfIT.js +1 -0
  260. package/dist/public/assets/_bzd_k347.js +2 -0
  261. package/dist/public/assets/_bzd_k347.js.br +0 -0
  262. package/dist/public/assets/_dH7pfZBT.js +1 -0
  263. package/dist/public/assets/{_CGYOyAi6.js → _h6bUk2pq.js} +1 -1
  264. package/dist/public/assets/_h6bUk2pq.js.br +0 -0
  265. package/dist/public/assets/{_CEcIHTni.js → _jqoWK4Vi.js} +1 -1
  266. package/dist/public/assets/_jqoWK4Vi.js.br +0 -0
  267. package/dist/public/assets/{_BG7u51c6.js → _n9U8owrb.js} +1 -1
  268. package/dist/public/assets/_n9U8owrb.js.br +0 -0
  269. package/dist/public/assets/_nFHWz9gP.js +1 -0
  270. package/dist/public/assets/_nVRAt3Bi.js +1 -0
  271. package/dist/public/assets/_pLefNFbU.js +1 -0
  272. package/dist/public/assets/_qWO-JZ3E.js +1 -0
  273. package/dist/public/assets/{_BPoHnP8w.js → _qrMpRa1i.js} +1 -1
  274. package/dist/public/assets/_qrMpRa1i.js.br +0 -0
  275. package/dist/public/assets/{_DH0yKcfT.js → _r5_M-uhA.js} +1 -1
  276. package/dist/public/assets/_r5_M-uhA.js.br +0 -0
  277. package/dist/public/assets/_r7eH7wR8.js +1 -0
  278. package/dist/public/assets/{_DCPFy4S-.js → _r8khTeho.js} +1 -1
  279. package/dist/public/assets/_r8khTeho.js.br +0 -0
  280. package/dist/public/assets/{_B4Cg-RuN.js → _rB7YBgt1.js} +1 -1
  281. package/dist/public/assets/_rB7YBgt1.js.br +0 -0
  282. package/dist/public/assets/{_DxG3J469.js → _sPlrHbtE.js} +1 -1
  283. package/dist/public/assets/_sPlrHbtE.js.br +0 -0
  284. package/dist/public/assets/_sgTYDCYT.js +1 -0
  285. package/dist/public/assets/_uV3lUSAl.js +1 -0
  286. package/dist/public/assets/files-view-B11HuvZO.js +2 -0
  287. package/dist/public/assets/manage-workspace-VbGMSi7T.js +2 -0
  288. package/dist/public/assets/new-Czq_4CCR.js +1 -0
  289. package/dist/public/assets/new-workspace-umGMDrlM.js +2 -0
  290. package/dist/public/assets/review-view-D2eGCwuw.js +2 -0
  291. package/dist/public/assets/settings-Czq_4CCR.js +1 -0
  292. package/dist/public/assets/settings-page-BkWN1B4s.js +2 -0
  293. package/dist/public/assets/styles-BJQqKk3S.css +1 -0
  294. package/dist/public/assets/styles-BJQqKk3S.css.br +0 -0
  295. package/dist/public/assets/w-Czq_4CCR.js +1 -0
  296. package/dist/public/assets/w._-Bk9APcPa.js +1 -0
  297. package/dist/public/assets/w._-Czq_4CCR.js +1 -0
  298. package/dist/public/assets/w._-LAc_WZW-.js +1 -0
  299. package/lib/setup/catalog.d.mts +2 -4
  300. package/lib/setup/catalog.mjs +0 -3
  301. package/lib/setup/doctor.mjs +1 -27
  302. package/lib/setup/firewall.mjs +3 -1
  303. package/lib/setup/install.mjs +0 -27
  304. package/package.json +1 -1
  305. package/dist/_DDikKLG_.js +0 -2
  306. package/dist/_ENqPMLjD.js +0 -2
  307. package/dist/public/assets/_2X4Nxaqb.js.br +0 -0
  308. package/dist/public/assets/_4CG1_0AB.js +0 -1
  309. package/dist/public/assets/_6e0Uc2iz.js +0 -1
  310. package/dist/public/assets/_7EbyoqQO.js +0 -1
  311. package/dist/public/assets/_AZdn-pAq.js.br +0 -0
  312. package/dist/public/assets/_B0YpwhBT.js.br +0 -0
  313. package/dist/public/assets/_B2E2dOUC.js +0 -1
  314. package/dist/public/assets/_B4Cg-RuN.js.br +0 -0
  315. package/dist/public/assets/_B7kCpNyD.js.br +0 -0
  316. package/dist/public/assets/_B9NIbsbr.js +0 -1
  317. package/dist/public/assets/_BAmZEVIH.js +0 -15
  318. package/dist/public/assets/_BAmZEVIH.js.br +0 -0
  319. package/dist/public/assets/_BB9Q57R1.js.br +0 -0
  320. package/dist/public/assets/_BCxjUBLn.js +0 -1
  321. package/dist/public/assets/_BCxjUBLn.js.br +0 -0
  322. package/dist/public/assets/_BD6kLg4i.js +0 -1
  323. package/dist/public/assets/_BFR8p6md.js.br +0 -0
  324. package/dist/public/assets/_BFkRvzwl.js.br +0 -0
  325. package/dist/public/assets/_BFwjqxJi.js +0 -1
  326. package/dist/public/assets/_BG7u51c6.js.br +0 -0
  327. package/dist/public/assets/_BGj24EPL.js +0 -1
  328. package/dist/public/assets/_BHZ3z1c3.js.br +0 -0
  329. package/dist/public/assets/_BLzCI5fA.js.br +0 -0
  330. package/dist/public/assets/_BNKR_PFf.js.br +0 -0
  331. package/dist/public/assets/_BP1-9YZQ.js.br +0 -0
  332. package/dist/public/assets/_BPoHnP8w.js.br +0 -0
  333. package/dist/public/assets/_BQK0Ua8P.js +0 -1
  334. package/dist/public/assets/_BUi5Lnyu.js.br +0 -0
  335. package/dist/public/assets/_BVF9vDBR.js.br +0 -0
  336. package/dist/public/assets/_BWRhy73M.js.br +0 -0
  337. package/dist/public/assets/_BapqrzTC.js +0 -1
  338. package/dist/public/assets/_Bb3HjdgA.js +0 -1
  339. package/dist/public/assets/_BbhdJgn7.js.br +0 -0
  340. package/dist/public/assets/_BdYyTR77.js.br +0 -0
  341. package/dist/public/assets/_BgJeYj6O.js +0 -1
  342. package/dist/public/assets/_Bgcqgb8f.js +0 -1
  343. package/dist/public/assets/_BjDtPv37.js +0 -7
  344. package/dist/public/assets/_BjDtPv37.js.br +0 -0
  345. package/dist/public/assets/_BjL4pgd1.js +0 -1
  346. package/dist/public/assets/_Bjupqvvl.js.br +0 -0
  347. package/dist/public/assets/_BjzIZvxS.js +0 -1
  348. package/dist/public/assets/_BkleQY2P.js +0 -1
  349. package/dist/public/assets/_BlGMtzOr.js +0 -1
  350. package/dist/public/assets/_Bo09pVsm.js +0 -1
  351. package/dist/public/assets/_Bo7UsgQ1.js +0 -1
  352. package/dist/public/assets/_Bo7UsgQ1.js.br +0 -0
  353. package/dist/public/assets/_BoN8WXNM.js +0 -1
  354. package/dist/public/assets/_BrAi38xM.js +0 -1
  355. package/dist/public/assets/_BrwDLY9A.js +0 -1
  356. package/dist/public/assets/_BsEmt4Xo.js.br +0 -0
  357. package/dist/public/assets/_BteLCW3W.js.br +0 -0
  358. package/dist/public/assets/_Bud8PVk2.js.br +0 -0
  359. package/dist/public/assets/_BwOL76jM.js +0 -1
  360. package/dist/public/assets/_Bzj2coXM.js.br +0 -0
  361. package/dist/public/assets/_C0qwHGvt.js +0 -1
  362. package/dist/public/assets/_C0qwHGvt.js.br +0 -0
  363. package/dist/public/assets/_C44-U0HZ.js +0 -1
  364. package/dist/public/assets/_C4TOoJt-.js.br +0 -0
  365. package/dist/public/assets/_C4i6tdPg.js.br +0 -0
  366. package/dist/public/assets/_C4lozmRu.js +0 -1
  367. package/dist/public/assets/_C63MsoW_.js.br +0 -0
  368. package/dist/public/assets/_C9xpsatV.js +0 -1
  369. package/dist/public/assets/_CBcRMH1I.js +0 -1
  370. package/dist/public/assets/_CEcIHTni.js.br +0 -0
  371. package/dist/public/assets/_CErLThfD.js +0 -1
  372. package/dist/public/assets/_CFDwxbE0.js +0 -1
  373. package/dist/public/assets/_CGYOyAi6.js.br +0 -0
  374. package/dist/public/assets/_CHCQDmjv.js +0 -1591
  375. package/dist/public/assets/_CHCQDmjv.js.br +0 -0
  376. package/dist/public/assets/_CKGtByJf.js.br +0 -0
  377. package/dist/public/assets/_CKYU_-EV.js +0 -1
  378. package/dist/public/assets/_CLDzlgJ_.js +0 -1
  379. package/dist/public/assets/_CNz608a5.js +0 -1
  380. package/dist/public/assets/_CO7giqIn.js +0 -1
  381. package/dist/public/assets/_COImNA0T.js +0 -1
  382. package/dist/public/assets/_CQIbdL8n.js +0 -2
  383. package/dist/public/assets/_CQIbdL8n.js.br +0 -0
  384. package/dist/public/assets/_CR91niWu.js +0 -1
  385. package/dist/public/assets/_CRxrUJ-J.js.br +0 -0
  386. package/dist/public/assets/_CUI5_Kc8.js +0 -1
  387. package/dist/public/assets/_CViysOIy.js +0 -2
  388. package/dist/public/assets/_CViysOIy.js.br +0 -0
  389. package/dist/public/assets/_CWUHe8y9.js +0 -1
  390. package/dist/public/assets/_CafkGbWO.js.br +0 -0
  391. package/dist/public/assets/_CamEQdEy.js +0 -1
  392. package/dist/public/assets/_CbLtpMzf.js +0 -1
  393. package/dist/public/assets/_CcUuSpPV.js +0 -1
  394. package/dist/public/assets/_CgHFvMzh.js.br +0 -0
  395. package/dist/public/assets/_ChYvsWUb.js +0 -1
  396. package/dist/public/assets/_CjMgo0is.js +0 -1
  397. package/dist/public/assets/_Clzo9X7l.js.br +0 -0
  398. package/dist/public/assets/_CoRZeDpA.js +0 -1
  399. package/dist/public/assets/_CoUiEb__.js +0 -1
  400. package/dist/public/assets/_CqVEbJdU.js.br +0 -0
  401. package/dist/public/assets/_Ctprx5dp.js.br +0 -0
  402. package/dist/public/assets/_CvO8C3EH.js +0 -1
  403. package/dist/public/assets/_CvTM_Hkg.js.br +0 -0
  404. package/dist/public/assets/_Cw53IOvr.js +0 -1
  405. package/dist/public/assets/_CwwZF_Zb.js.br +0 -0
  406. package/dist/public/assets/_CxA2ehGA.js.br +0 -0
  407. package/dist/public/assets/_CxGMPpn8.js.br +0 -0
  408. package/dist/public/assets/_CxPc5sJ4.js.br +0 -0
  409. package/dist/public/assets/_Cxa2TAUf.js +0 -1
  410. package/dist/public/assets/_Cy_niJWx.js +0 -1
  411. package/dist/public/assets/_D-6002zy.js.br +0 -0
  412. package/dist/public/assets/_D0Ae1m8t.js +0 -1
  413. package/dist/public/assets/_D1EJcr9u.js +0 -1
  414. package/dist/public/assets/_D6N1Ob8T.js.br +0 -0
  415. package/dist/public/assets/_D6fwgK2P.js.br +0 -0
  416. package/dist/public/assets/_D80egIjq.js.br +0 -0
  417. package/dist/public/assets/_D9G809lq.js.br +0 -0
  418. package/dist/public/assets/_DAgpiMnc.js +0 -1
  419. package/dist/public/assets/_DAqHF2w4.js.br +0 -0
  420. package/dist/public/assets/_DCPFy4S-.js.br +0 -0
  421. package/dist/public/assets/_DDdrxdVx.js +0 -1
  422. package/dist/public/assets/_DDwZqDeP.js.br +0 -0
  423. package/dist/public/assets/_DEpWf8ro.js +0 -1
  424. package/dist/public/assets/_DEpWf8ro.js.br +0 -0
  425. package/dist/public/assets/_DFMkO54P.js +0 -1
  426. package/dist/public/assets/_DFVrnUUI.js +0 -1
  427. package/dist/public/assets/_DH0yKcfT.js.br +0 -0
  428. package/dist/public/assets/_DHE02xjh.js +0 -1
  429. package/dist/public/assets/_DMxmrREh.js.br +0 -0
  430. package/dist/public/assets/_DNWcRd5b.js.br +0 -0
  431. package/dist/public/assets/_DOGQJlMz.js.br +0 -0
  432. package/dist/public/assets/_DUOr22R8.js +0 -1
  433. package/dist/public/assets/_DVfIcVOc.js.br +0 -0
  434. package/dist/public/assets/_DWvJUtgI.js +0 -1
  435. package/dist/public/assets/_DX_wI8Ku.js +0 -1
  436. package/dist/public/assets/_DZAyYSrR.js +0 -1
  437. package/dist/public/assets/_DbON91M6.js +0 -1
  438. package/dist/public/assets/_Dmr61lrF.js.br +0 -0
  439. package/dist/public/assets/_Do0f-7ZP.js +0 -1
  440. package/dist/public/assets/_DrUKq1tq.js.br +0 -0
  441. package/dist/public/assets/_DrmQTAwC.js.br +0 -0
  442. package/dist/public/assets/_DsE5ESQl.js +0 -1
  443. package/dist/public/assets/_DsODWTMK.js.br +0 -0
  444. package/dist/public/assets/_DuHnqTMi.js +0 -1
  445. package/dist/public/assets/_DuiVLwbC.js.br +0 -0
  446. package/dist/public/assets/_DvhYEPCI.js.br +0 -0
  447. package/dist/public/assets/_Dw-MQsnH.js.br +0 -0
  448. package/dist/public/assets/_DxG3J469.js.br +0 -0
  449. package/dist/public/assets/_DxMfRWk5.js.br +0 -0
  450. package/dist/public/assets/_DyJbxamO.js +0 -1
  451. package/dist/public/assets/_DyPWIZeU.js.br +0 -0
  452. package/dist/public/assets/_DzDisVDu.js +0 -1
  453. package/dist/public/assets/_DzYdOMqO.js.br +0 -0
  454. package/dist/public/assets/_Goz4NHSk.js.br +0 -0
  455. package/dist/public/assets/_HHBD7Mwb.js.br +0 -0
  456. package/dist/public/assets/_I0BsvzyX.js +0 -1
  457. package/dist/public/assets/_Ih3MoXl0.js.br +0 -0
  458. package/dist/public/assets/_Iy5kHWHO.js +0 -1
  459. package/dist/public/assets/_K5LXbS5I.js +0 -1
  460. package/dist/public/assets/_KcGCvv0h.js.br +0 -0
  461. package/dist/public/assets/_PCJNoAwu.js +0 -1
  462. package/dist/public/assets/_QSE08ioq.js.br +0 -0
  463. package/dist/public/assets/_S0t9nmdw.js.br +0 -0
  464. package/dist/public/assets/_UBNUF9Kp.js.br +0 -0
  465. package/dist/public/assets/_Uz6LspUB.js +0 -1
  466. package/dist/public/assets/_WaGpIsSa.js +0 -1
  467. package/dist/public/assets/_Yl99Ym1s.js.br +0 -0
  468. package/dist/public/assets/_Z73XNfnJ.js +0 -1
  469. package/dist/public/assets/__SKAFxGa.js.br +0 -0
  470. package/dist/public/assets/_c3cBqR4q.js +0 -1
  471. package/dist/public/assets/_csnQFbUb.js.br +0 -0
  472. package/dist/public/assets/_dLadtSBo.js +0 -1
  473. package/dist/public/assets/_f7Sgp2jB.js.br +0 -0
  474. package/dist/public/assets/_gjaB4W51.js +0 -1
  475. package/dist/public/assets/_l-1e5-uC.js +0 -1
  476. package/dist/public/assets/_lEdDdBb0.js.br +0 -0
  477. package/dist/public/assets/_lv7q9SmK.js.br +0 -0
  478. package/dist/public/assets/_nVVtAArW.js.br +0 -0
  479. package/dist/public/assets/_pSzK2ztp.js +0 -1
  480. package/dist/public/assets/_r9IZX58O.js +0 -1
  481. package/dist/public/assets/_rV9c6noX.js.br +0 -0
  482. package/dist/public/assets/_rk0M_hpt.js +0 -1
  483. package/dist/public/assets/_ru_rDgLp.js +0 -1
  484. package/dist/public/assets/_sAZ12zqC.js.br +0 -0
  485. package/dist/public/assets/_scmoaGnX.js +0 -1
  486. package/dist/public/assets/_tlSiPgo6.js.br +0 -0
  487. package/dist/public/assets/_w_kZ7oXG.js +0 -1
  488. package/dist/public/assets/_wlPMGofh.js.br +0 -0
  489. package/dist/public/assets/_ymY4YmGe.js.br +0 -0
  490. package/dist/public/assets/_zLL0pxIC.js.br +0 -0
  491. package/dist/public/assets/_znlpA0RF.js.br +0 -0
  492. package/dist/public/assets/files-view-BMZoqQCr.js +0 -2
  493. package/dist/public/assets/manage-workspace-DVER4MrG.js +0 -2
  494. package/dist/public/assets/new-BuZjAnZr.js +0 -1
  495. package/dist/public/assets/new-workspace-DG5o9P6p.js +0 -2
  496. package/dist/public/assets/review-view-B9KVei-m.js +0 -2
  497. package/dist/public/assets/settings-BuZjAnZr.js +0 -1
  498. package/dist/public/assets/settings-page-CbLeDUF_.js +0 -2
  499. package/dist/public/assets/styles-DUzVKiZK.css +0 -1
  500. package/dist/public/assets/styles-DUzVKiZK.css.br +0 -0
  501. package/dist/public/assets/w-BuZjAnZr.js +0 -1
  502. package/dist/public/assets/w._-BLFJb1Kc.js +0 -1
  503. package/dist/public/assets/w._-BuZjAnZr.js +0 -1
  504. package/dist/public/assets/w._-DDS58VZm.js +0 -1
package/bin/cli/stack.mjs CHANGED
@@ -8,26 +8,40 @@ function recipe(branch) {
8
8
 
9
9
  Stack only when the user asks, or when a change of several hundred lines
10
10
  splits into parts each worth merging alone; never a layer per commit.
11
+ A stack is a convention, plain branches and PRs: each layer is cut from
12
+ the one below and its PR is based on it, which is how GitHub and work's
13
+ review both read a stack.
11
14
 
12
- - The working branch (${branch}) stays the top; cut layers below it, bottom
13
- first, as ${branch}-<layer>:
14
- gh stack init --base <base> <layers…> ${branch}
15
- (after \`gh stack unstack --local\` if a stack exists).
15
+ - The working branch (${branch}) stays the top; cut layers below it from
16
+ its own commits, bottom first, as ${branch}-<layer>, each with its PR's
17
+ base as gh reads it:
18
+ git branch ${branch}-<layer> <its last commit>
19
+ git config branch.${branch}-<layer>.gh-merge-base <layer below, else base>
20
+ - The user reviews it here a layer at a time, bottom first: link each as
21
+ [<layer>](/w/<id>/review?section=<repo>@<layer>) (\`work branches\`
22
+ lists them).
16
23
  - Never check a layer out. Edit one by \`git commit --fixup <sha>\` on the
17
- top, then:
24
+ top, then (every layer moves with the commits it holds):
18
25
  GIT_SEQUENCE_EDITOR=: git rebase -i --autosquash --update-refs origin/<base>
19
- - \`gh stack sync\` / \`gh stack rebase\` switch branches: run them in topic
20
- worktrees only. Leave the local <base> gh-stack keeps as trunk.
21
- - Merge a layer with \`gh stack merge <pr> --squash\` or on the web
22
- (\`gh pr merge\` refuses it), then, on the top:
23
- old=$(git rev-parse origin/${branch})
26
+ A base that moved is \`git rebase --update-refs origin/<base>\` alike.
27
+ - Nothing goes up front. Push a layer and open its PR only when the user
28
+ says it is ready, after reviewing it, bottom first and never past a
29
+ layer still local (a PR's base must be on GitHub):
30
+ git push origin ${branch}-<layer>
31
+ gh pr create --head ${branch}-<layer> --base <layer below, else base>
32
+ The top goes last, its PR based on the last layer (one already open:
33
+ \`gh pr edit --base\`). After a rebase, force-push only what is pushed:
34
+ git push --force-with-lease --atomic origin <pushed branches…>
35
+ - Land bottom first, deleting the merged branch so GitHub moves the PR
36
+ above onto <base> (on the web, delete it after merging):
37
+ cut=$(git rev-parse ${branch}-<layer>)
38
+ gh pr merge <pr> --squash --delete-branch
39
+ then, on the top, move the rest onto the squash, and force-push what of
40
+ it is pushed:
24
41
  git fetch
25
- git branch -f <layer> origin/<layer> # for each remaining layer
26
- git branch -D <merged-layer>
27
- git rebase --onto origin/${branch} $old
28
- - Once the top merges: \`gh stack unstack --local\`.
29
- - Link a layer for review as [<layer>](/w/<id>/review?section=<repo>@<layer>);
30
- \`work branches\` lists every layer with its link.`;
42
+ git rebase --update-refs --onto origin/<base> $cut
43
+ git config branch.<layer above>.gh-merge-base <base> # not the top's
44
+ - A lane stacks the same way, in its worktree, its branch the top.`;
31
45
  }
32
46
 
33
47
  export const commands = [
@@ -35,9 +49,9 @@ export const commands = [
35
49
  name: "stack",
36
50
  summary: "how to stack branches in this workspace (prints the recipe)",
37
51
  help: `work stack [id|name]
38
- Prints how to stack branches with gh-stack here, with the workspace's
39
- branch filled in: when to, cutting layers, editing one without checking
40
- it out, merging a layer and rebasing the rest.`,
52
+ Prints how to stack branches here, as plain branches and PRs, with the
53
+ workspace's branch filled in: when to, cutting layers, editing one
54
+ without checking it out, merging a layer and rebasing the rest.`,
41
55
  async run(ctx) {
42
56
  let branch = "<workspace-branch>";
43
57
  try {
package/bin/cli/topic.mjs CHANGED
@@ -84,7 +84,7 @@ function mergeBases(dir) {
84
84
  * copy. This workspace's own branches (it, and the topics one stacks on)
85
85
  * go by the local one: they may never be pushed, and here is where they
86
86
  * move. Any other (the repo's base) goes by origin's: a bare cache's local
87
- * copy of it is as old as the clone, or as gh-stack's trunk. */
87
+ * copy of it is as old as the clone. */
88
88
  function baseRef(dir, name, ws, foreign) {
89
89
  const local = has(dir, `refs/heads/${name}`) ? name : null;
90
90
  const remote = has(dir, `refs/remotes/origin/${name}`)
package/bin/work.mjs CHANGED
@@ -76,6 +76,7 @@ import {
76
76
  applyPlan,
77
77
  dropText,
78
78
  firewallProbe,
79
+ programOf,
79
80
  serviceNode,
80
81
  } from "../lib/setup/firewall.mjs";
81
82
  import { installTool, repairGhHelpers } from "../lib/setup/install.mjs";
@@ -958,6 +959,7 @@ function allowScriptsArgs() {
958
959
 
959
960
  async function update() {
960
961
  log("updating @dylanpiercey/work");
962
+ const before = serviceCli();
961
963
  // `--prefer-online`: npm serves `latest` from a cached packument for a
962
964
  // few minutes after a publish, so an update right behind a release
963
965
  // reinstalled the version already running.
@@ -974,8 +976,19 @@ async function update() {
974
976
  ],
975
977
  { stdio },
976
978
  );
977
- // Re-exec the (possibly new) CLI to finish with fresh code.
978
- sh("work", [
979
+ // Finish with the CLI that npm just installed, found where that npm
980
+ // installs, never `work` by name: the npm and the `work` first on PATH
981
+ // can be two nodes' (a Homebrew npm ahead of mise's shims), and the
982
+ // other install's setup points the service back at itself, so every
983
+ // update left the service on the old release.
984
+ const root = execFileSync("npm", ["root", "-g"], {
985
+ encoding: "utf8",
986
+ stdio: ["ignore", "pipe", 2],
987
+ }).trim();
988
+ const cli = path.join(root, "@dylanpiercey", "work", "bin", "work.mjs");
989
+ if (!fs.existsSync(cli))
990
+ die(`npm installed into ${root}, but there is no ${cli}`);
991
+ sh(cli, [
979
992
  "setup",
980
993
  ...(yes ? ["--yes"] : []),
981
994
  ...args.filter((a) =>
@@ -991,6 +1004,21 @@ async function update() {
991
1004
  ...flagValues("--allow-host").flatMap((h) => ["--allow-host", h]),
992
1005
  ...flagValues("--disallow-host").flatMap((h) => ["--disallow-host", h]),
993
1006
  ]);
1007
+ // The service now runs what npm updated; an install it or this shell ran
1008
+ // before is left behind at its old release.
1009
+ const now = realpathOr(cli);
1010
+ const left = new Map();
1011
+ for (const [w, was] of [
1012
+ [before, "the service ran"],
1013
+ [installAt(fileURLToPath(import.meta.url)), "`work` here ran"],
1014
+ ]) {
1015
+ if (w?.prefix && w.real !== now && !left.has(w.real))
1016
+ left.set(
1017
+ w.real,
1018
+ `${was} ${tilde(w.path)} (${w.version}), not the install npm updated (${tilde(cli)}); remove it: ${removeHint(w)}`,
1019
+ );
1020
+ }
1021
+ for (const note of left.values()) warn(note);
994
1022
  }
995
1023
 
996
1024
  /** Machine readiness from lib/setup — the same probe the Settings page runs. */
@@ -1015,38 +1043,39 @@ async function doctorCmd() {
1015
1043
  }
1016
1044
 
1017
1045
  /**
1018
- * This `work`, every other one on PATH (the first is what `work` runs),
1019
- * each with its version, and the version the running service reports
1020
- * (null when none answers). A package manager's global left behind — a
1021
- * Homebrew node's under mise's — shadows the one kept up to date, and the
1022
- * doctor it runs is then old code describing a machine it no longer knows.
1046
+ * This `work`, every other one on PATH (the first is what `work` runs) or
1047
+ * on the service's, each with the install it runs and its version, and the
1048
+ * service: the CLI its definition runs and the release the running one
1049
+ * reports. A package manager's global left behind — a Homebrew node's
1050
+ * under mise's — shadows the one kept up to date, and the doctor it runs is
1051
+ * then old code describing a machine it no longer knows.
1023
1052
  */
1024
1053
  async function workInstalls() {
1025
- const self = realpathOr(fileURLToPath(import.meta.url));
1054
+ const self = installAt(fileURLToPath(import.meta.url));
1055
+ const shell = (process.env.PATH || "").split(path.delimiter);
1056
+ const servicePath = (installedServiceEnv().PATH || "").split(path.delimiter);
1026
1057
  const onPath = [];
1027
1058
  const seen = new Set();
1028
- for (const dir of (process.env.PATH || "").split(path.delimiter)) {
1059
+ for (const dir of new Set([...shell, ...servicePath])) {
1029
1060
  if (!dir) continue;
1030
- const file = path.join(dir, "work");
1031
- let real;
1032
- try {
1033
- if (!fs.statSync(file).isFile()) continue;
1034
- real = fs.realpathSync(file);
1035
- } catch {
1036
- continue;
1037
- }
1038
- if (seen.has(real)) continue;
1039
- seen.add(real);
1040
- onPath.push({ path: file, real, version: installVersion(real, file) });
1041
- }
1042
- let service = null;
1061
+ const w = workOnPath(path.join(dir, "work"));
1062
+ if (!w || seen.has(w.real)) continue;
1063
+ seen.add(w.real);
1064
+ onPath.push(shell.includes(dir) ? w : { ...w, servicePath: true });
1065
+ }
1066
+ // A service that answers without a version is from before /api/boot
1067
+ // carried one: older than any CLI that asks.
1068
+ const service = { answered: false, version: null, cli: serviceCli() };
1043
1069
  try {
1044
1070
  const res = await fetch(`${serverUrl()}/api/boot`, {
1045
1071
  signal: AbortSignal.timeout(2000),
1046
1072
  });
1047
- if (res.ok) service = (await res.json()).version ?? null;
1073
+ if (res.ok) {
1074
+ service.version = (await res.json()).version ?? null;
1075
+ service.answered = true;
1076
+ }
1048
1077
  } catch {}
1049
- return { self: { path: self, version: pkg.version }, onPath, service };
1078
+ return { self, onPath, service };
1050
1079
  }
1051
1080
 
1052
1081
  function realpathOr(file) {
@@ -1057,28 +1086,118 @@ function realpathOr(file) {
1057
1086
  }
1058
1087
  }
1059
1088
 
1060
- /** An install's version: an npm global's bin links into the package, whose
1061
- * package.json says; a shim (mise's) is asked. */
1062
- function installVersion(real, file) {
1089
+ /** The package of work a file is part of, read from its package.json and
1090
+ * never by running anything: `prefix` is the npm prefix whose global it
1091
+ * is, null for a checkout. */
1092
+ function installAt(file) {
1093
+ const real = realpathOr(file);
1063
1094
  let dir = path.dirname(real);
1064
1095
  for (let i = 0; i < 3; i++) {
1065
1096
  try {
1066
1097
  const p = JSON.parse(fs.readFileSync(path.join(dir, "package.json")));
1067
- if (p.name === "@dylanpiercey/work") return p.version ?? null;
1098
+ if (p.name === "@dylanpiercey/work") {
1099
+ const prefix = /^(.*)\/lib\/node_modules\/@dylanpiercey\/work$/.exec(
1100
+ dir,
1101
+ )?.[1];
1102
+ return {
1103
+ path: file,
1104
+ real,
1105
+ version: p.version ?? null,
1106
+ prefix: prefix ?? null,
1107
+ };
1108
+ }
1068
1109
  } catch {}
1069
1110
  dir = path.dirname(dir);
1070
1111
  }
1112
+ return null;
1113
+ }
1114
+
1115
+ /** Version managers whose shims stand in for `work`. A shim is the
1116
+ * manager's own binary (mise links every shim to itself) or a script that
1117
+ * hands off to it, so neither its path nor its target is the install: the
1118
+ * manager's `which` names that. A global uninstalled from one of its
1119
+ * nodes leaves the shim until a reshim. */
1120
+ function versionManagers() {
1121
+ return [
1122
+ {
1123
+ id: "mise",
1124
+ shim: (file, real) => path.basename(real) === "mise",
1125
+ which: (real) => [real, ["which", "work"]],
1126
+ installs: /\/mise\/installs\/node\//,
1127
+ reshim: "mise reshim",
1128
+ },
1129
+ {
1130
+ id: "asdf",
1131
+ shim: (file) => /\/\.asdf\/shims$/.test(path.dirname(file)),
1132
+ which: () => ["asdf", ["which", "work"]],
1133
+ installs: /\/\.asdf\/installs\/nodejs\//,
1134
+ reshim: "asdf reshim nodejs",
1135
+ },
1136
+ {
1137
+ id: "nodenv",
1138
+ shim: (file) => /\/\.nodenv\/shims$/.test(path.dirname(file)),
1139
+ which: () => ["nodenv", ["which", "work"]],
1140
+ installs: /\/\.nodenv\/versions\//,
1141
+ reshim: "nodenv rehash",
1142
+ },
1143
+ ];
1144
+ }
1145
+
1146
+ /** The install a `work` on PATH runs: an npm global's bin links into the
1147
+ * package, a shim's is the one its manager names, and anything else is
1148
+ * asked its version. */
1149
+ function workOnPath(file) {
1150
+ try {
1151
+ if (!fs.statSync(file).isFile()) return null;
1152
+ } catch {
1153
+ return null;
1154
+ }
1155
+ const own = installAt(file);
1156
+ if (own) return own;
1157
+ const real = realpathOr(file);
1158
+ const manager = versionManagers().find((m) => m.shim(file, real));
1159
+ if (manager) {
1160
+ const [bin, argv] = manager.which(real);
1161
+ const out = spawnSync(bin, argv, { encoding: "utf8", timeout: 5000 });
1162
+ const target = out.status === 0 && out.stdout.trim();
1163
+ const w = target && installAt(target);
1164
+ if (w) return { ...w, path: file, manager: manager.id };
1165
+ }
1071
1166
  const out = spawnSync(file, ["version"], { encoding: "utf8", timeout: 5000 });
1072
- return /^\d+\.\d+\.\d+\S*/.exec((out.stdout || "").trim())?.[0] ?? null;
1167
+ const version = /^\d+\.\d+\.\d+\S*/.exec((out.stdout || "").trim())?.[0];
1168
+ return { path: file, real, version: version ?? null, prefix: null };
1169
+ }
1170
+
1171
+ /** The work the service definition runs (`[caffeinate -s] <cli> start`,
1172
+ * or a checkout's run script under work-source local): the first program
1173
+ * in its argv that is part of a work package. */
1174
+ function serviceCli() {
1175
+ let text;
1176
+ try {
1177
+ text = fs.readFileSync(serviceFile(), "utf8");
1178
+ } catch {
1179
+ return null;
1180
+ }
1181
+ for (const arg of programOf(text)) {
1182
+ const w = path.isAbsolute(arg) && installAt(arg);
1183
+ if (w) return w;
1184
+ }
1185
+ return null;
1073
1186
  }
1074
1187
 
1075
- /** How to remove an install: the npm beside the node whose global it is. */
1076
- function removeHint(real) {
1077
- const m =
1078
- /^(.*)\/lib\/node_modules\/@dylanpiercey\/work\/bin\/work\.mjs$/.exec(real);
1079
- return m
1080
- ? `${m[1]}/bin/npm uninstall -g @dylanpiercey/work`
1081
- : `remove ${real}`;
1188
+ /** How to remove an npm global of work: npm's uninstall at the prefix it
1189
+ * is in (named: the npm first on PATH may be another node's, whose own
1190
+ * prefix holds some other install), then its version manager's reshim.
1191
+ * Null for anything else, which is not this CLI's to remove. */
1192
+ function removeHint(w) {
1193
+ if (!w.prefix) return null;
1194
+ const manager = versionManagers().find(
1195
+ (m) => m.id === w.manager || m.installs.test(`${w.prefix}/`),
1196
+ );
1197
+ const prefix = /^[\w@%+=:,./-]+$/.test(w.prefix)
1198
+ ? w.prefix
1199
+ : `'${w.prefix.replace(/'/g, `'\\''`)}'`;
1200
+ return `npm uninstall -g --prefix ${prefix} @dylanpiercey/work${manager ? ` && ${manager.reshim}` : ""}`;
1082
1201
  }
1083
1202
 
1084
1203
  function newest(versions) {
@@ -1090,23 +1209,56 @@ function newest(versions) {
1090
1209
  }, null);
1091
1210
  }
1092
1211
 
1093
- /** The doctor's warnings about which `work` this is. */
1212
+ /** The doctor's warnings about which `work` this is and which the service
1213
+ * runs. */
1094
1214
  function installNotes({ self, onPath, service }) {
1095
1215
  const notes = [];
1096
- if (service && service !== self.version) {
1097
- const theirs = onPath.find((w) => w.version === service);
1216
+ const runs = service.cli;
1217
+ // The newest install here is the one to keep: an update installs it,
1218
+ // and whatever else is here was left behind, the service's included.
1219
+ const current = newest([self.version, ...onPath.map((w) => w.version)]);
1220
+ const behind = (v) => v !== current && newest([v, current]) === current;
1221
+ const keep = [...onPath.filter((w) => !w.servicePath), self].find(
1222
+ (w) => w.prefix && w.version === current,
1223
+ );
1224
+ // `setup` from the install kept points the service at it, unless the
1225
+ // service runs a checkout (work-source local), which setup would undo.
1226
+ const move =
1227
+ keep &&
1228
+ runs?.prefix &&
1229
+ `\`${keep === onPath[0] ? "work" : keep.path} setup\``;
1230
+ if (service.answered && service.version !== self.version) {
1231
+ const theirs = runs ?? onPath.find((w) => w.version === service.version);
1232
+ notes.push(
1233
+ `this work is ${self.version} (${tilde(self.path)}), but the running service is ${service.version ?? "older (it does not report its version)"}, so what this doctor says is an older or newer release's${theirs ? `: the service's is ${tilde(theirs.path)}` : ""}${move && behind(service.version) ? `; run ${move} to move it to ${current}` : ""}`,
1234
+ );
1235
+ } else if (!service.answered && runs && runs.version !== self.version) {
1098
1236
  notes.push(
1099
- `this work is ${self.version} (${tilde(self.path)}), but the running service is ${service}, so what this doctor says is an older or newer release's${theirs ? `: the service's is ${tilde(theirs.path)}` : ""}`,
1237
+ `the service is set to run ${tilde(runs.path)} (${runs.version ?? "unknown version"}), not this work (${self.version}, ${tilde(self.path)})${move && behind(runs.version) ? `; run ${move} to move it to ${current}` : ""}`,
1100
1238
  );
1101
1239
  }
1102
1240
  if (onPath.length > 1) {
1103
- // A stray is one at another release than the service's (or, with no
1104
- // service answering, than the newest here).
1105
- const current = service ?? newest(onPath.map((w) => w.version));
1106
- const lines = onPath.map(
1107
- (w, i) =>
1108
- ` ${tilde(w.path)} → ${w.version ?? "unknown version"}${i === 0 ? " (what \`work\` runs)" : ""}${w.version === current ? "" : `\n remove: ${removeHint(w.real)}`}`,
1109
- );
1241
+ const lines = onPath.map((w, i) => {
1242
+ const tags = [
1243
+ i === 0 && !w.servicePath && "what `work` runs",
1244
+ w.servicePath && "on the service's PATH",
1245
+ w.real === runs?.real && "the service's",
1246
+ ].filter(Boolean);
1247
+ const hint = removeHint(w);
1248
+ // The service's own install goes only once the service is off it:
1249
+ // removed first, it would stop the service.
1250
+ const fix =
1251
+ w.version === current
1252
+ ? ""
1253
+ : !hint
1254
+ ? "not an npm global: remove it the way it was installed"
1255
+ : w.real !== runs?.real
1256
+ ? `remove: ${hint}`
1257
+ : move
1258
+ ? `remove, once ${move} has moved the service off it: ${hint}`
1259
+ : "";
1260
+ return ` ${tilde(w.path)} → ${w.version ?? "unknown version"}${tags.length ? ` (${tags.join(", ")})` : ""}${fix ? `\n ${fix}` : ""}`;
1261
+ });
1110
1262
  notes.push(`more than one work is on PATH:\n${lines.join("\n")}`);
1111
1263
  }
1112
1264
  return notes;
@@ -0,0 +1,2 @@
1
+ import { J as notifySessionsChanged } from "./_Cv5RrCSW.js";
2
+ export { notifySessionsChanged };
@@ -0,0 +1,2 @@
1
+ import { f as teamsOf } from "./_DuwPQCOE.js";
2
+ export { teamsOf };
@@ -72,112 +72,112 @@ var iconBtnXs = "_bF _D";
72
72
  var iconBtnRow = "_bG _D";
73
73
  var iconBtnLg = "_bH _D";
74
74
  var chipBtn = "_bI _D";
75
- var toastStack = "_f _e";
75
+ var toastStack = "_o _n";
76
76
  var toastKind = {
77
- error: "_j",
78
- warn: "_k",
79
- info: "_l"
77
+ error: "_s",
78
+ warn: "_t",
79
+ info: "_u"
80
80
  };
81
81
  var toastTitle = {
82
- error: "_m",
83
- warn: "_n",
84
- info: "_o"
82
+ error: "_v",
83
+ warn: "_w",
84
+ info: "_x"
85
85
  };
86
- var tocDot = "_b1 _ba";
86
+ var tocDot = "_cS _ba";
87
87
  //#endregion
88
88
  //#region src/tags/settings-agents.css.ts
89
- var agentRow = "_d0 _dG";
90
- var list$3 = "_dK _cB _dF _dI";
91
- var metaChip = "_dY _bz _by";
92
- var sectionCount = "_cy _bp _bq";
93
- var usageNote = "_hL _by";
94
- var pop$2 = "_f5 _bN";
95
- var spinner = "_f8 _bD _bi";
96
- var toolLead = "_ge _dT";
97
- var name$4 = "_gv _dT";
98
- var desc$1 = "_gw _dU";
89
+ var agentRow = "_fF _em";
90
+ var list$3 = "_eq _dj _el _eo";
91
+ var metaChip = "_eE _bz _by";
92
+ var sectionCount = "_dg _bp _bq";
93
+ var usageNote = "_kb _by";
94
+ var pop$2 = "_gh _bN";
95
+ var spinner = "_gk _bD _bi";
96
+ var toolLead = "_f3 _ez";
97
+ var name$4 = "_fX _ez";
98
+ var desc$1 = "_fY _eA";
99
99
  //#endregion
100
100
  //#region src/tags/lsp-add-dialog.css.ts
101
- var addDlg = "_ko _c3";
102
- var key$1 = "_mO _mM";
103
- var addTile = "_mQ _mM";
104
- var field$2 = "_m1 _bA";
105
- var keyField = "_m2 _m1 _bA";
106
- var labelField = "_m3 _m1 _bA";
107
- var detailsToggle = "_ff _6";
108
- var themeSeg = "_eH _bR";
109
- var checkList = "_ei _cz";
101
+ var addDlg = "_kR _b4";
102
+ var key$1 = "_mi _mg";
103
+ var addTile = "_mk _mg";
104
+ var field$2 = "_mv _bA";
105
+ var keyField = "_mw _mv _bA";
106
+ var labelField = "_mx _mv _bA";
107
+ var detailsToggle = "_hi _6";
108
+ var themeSeg = "_fj _bR";
109
+ var checkList = "_gK _dh";
110
110
  //#endregion
111
111
  //#region src/tags/prompt-dialog.css.ts
112
- var promptDlg = "_c7 _c3";
113
- var item$1 = "_cm _D";
114
- var glance = "_gA _D";
112
+ var promptDlg = "_b8 _b4";
113
+ var item$1 = "_b0 _D";
114
+ var glance = "_dG _D";
115
115
  //#endregion
116
116
  //#region src/tags/side-nav.css.ts
117
- var iconBtn = "_di _D";
118
- var settingsDot = "_dj _bQ";
119
- var notifyBtn = "_do _D";
117
+ var iconBtn = "_b9 _D";
118
+ var settingsDot = "_b_ _bQ";
119
+ var notifyBtn = "_ce _D";
120
120
  //#endregion
121
121
  //#region src/styles/session-pop.css.ts
122
- var sessionPop = "_dq _bN";
123
- var sessionPopBtn = "_dr _bk";
124
- var wsBtn = "_g3 _bk";
125
- var rowIcon = "_g5 _bF _D";
126
- var prChip = "_nW _M _nQ";
122
+ var sessionPop = "_cr _bN";
123
+ var sessionPopBtn = "_cs _bk";
124
+ var wsBtn = "_eY _bk";
125
+ var rowIcon = "_e0 _bF _D";
126
+ var prChip = "_mI _M _mC";
127
127
  //#endregion
128
128
  //#region src/tags/port-chip.css.ts
129
- var port = "_oI _M _nQ";
129
+ var port = "_oJ _M _mC";
130
130
  var depth = {
131
- "1": "_ml",
132
- "2": "_mm",
133
- "3": "_mn"
131
+ "1": "_ky",
132
+ "2": "_kz",
133
+ "3": "_kA"
134
134
  };
135
- var open = "_mt _bk";
136
- var action = "_my _bI _D";
137
- var toggle = "_hj _6";
138
- var fold = "_hk _dH";
135
+ var open = "_kG _bk";
136
+ var action = "_kL _bI _D";
137
+ var toggle = "_eJ _6";
138
+ var fold = "_eK _en";
139
139
  var statusOf = {
140
- queued: "_lp",
141
- starting: "_lq",
142
- working: "_lr",
143
- waiting: "_ls",
144
- idle: "_lt",
145
- done: "_lu",
146
- closed: "_lv"
140
+ queued: "_lY",
141
+ starting: "_lZ",
142
+ working: "_l0",
143
+ waiting: "_l1",
144
+ idle: "_l2",
145
+ done: "_l3",
146
+ closed: "_l4"
147
147
  };
148
- var item = "_kR _bk";
149
- var menu = "_nH _dq _bN";
148
+ var item = "_j2 _bk";
149
+ var menu = "_nH _cr _bN";
150
150
  var menuItem = "_nJ _bk";
151
- var findBtn$1 = "_jy _hv _bG _D";
152
- var tool = "_hv _bG _D";
153
- var heldRefresh = "_hD _M";
154
- var pop$1 = "_mH _dq _bN";
155
- var fileFilter = "_o6 _F";
156
- var findInput = "_iU _F";
157
- var keybarIconBtn = "_i3 _bI _D";
151
+ var findBtn$1 = "_ir _ic _bG _D";
152
+ var tool = "_ic _bG _D";
153
+ var heldRefresh = "_ik _M";
154
+ var pop$1 = "_m8 _cr _bN";
155
+ var fileFilter = "_oN _F";
156
+ var findInput = "_d6 _F";
157
+ var keybarIconBtn = "_ee _bI _D";
158
158
  var input = "_du _F";
159
159
  var group = "_dx _6";
160
- var hint$1 = "_lW _bp _3";
161
- var sheetDir = "_mc _bP";
162
- var upBtn = "_ih _bG _D";
163
- var findBtn = "_il _hv _bG _D";
164
- var goBtn = "_im _hv _bG _D";
165
- var note = "_kW _by";
160
+ var hint$1 = "_nq _bp _3";
161
+ var sheetDir = "_n6 _bP";
162
+ var upBtn = "_jh _bG _D";
163
+ var findBtn = "_jl _ic _bG _D";
164
+ var goBtn = "_jm _ic _bG _D";
165
+ var note = "_nl _by";
166
166
  //#endregion
167
167
  //#region src/tags/manage-workspace.css.ts
168
- var procCmd = "_hV _dT";
169
- var factCopy = "_h2 _bI _D";
170
- var resultRow = "_kz _bk";
171
- var resultBranch = "_kA _dY _bz _by _bF _D";
172
- var urlAction = "_kB _dY _bz _by _dZ";
173
- var curRow = "_gH _dN";
168
+ var procCmd = "_ht _ez";
169
+ var factCopy = "_hA _bI _D";
170
+ var resultRow = "_k6 _bk";
171
+ var resultBranch = "_k7 _eE _bz _by _bF _D";
172
+ var urlAction = "_k8 _eE _bz _by _eF";
173
+ var curRow = "_fR _et";
174
174
  //#endregion
175
175
  //#region src/tags/join-dialog.css.ts
176
- var dlg = "_kX _c3";
177
- var hint = "_kY _by";
178
- var kbtn = "_cU _bH _D";
179
- var repeat = "_cX _cW";
180
- var dpadUser = "_c0 _cW";
181
- var dpadEsc = "_c1 _cW";
176
+ var dlg = "_mX _b4";
177
+ var hint = "_mY _by";
178
+ var kbtn = "_cD _bH _D";
179
+ var repeat = "_cG _cF";
180
+ var dpadUser = "_cJ _cF";
181
+ var dpadEsc = "_cK _cF";
182
182
  //#endregion
183
183
  export { field$2 as $, item as A, usageInk as At, wsBtn as B, fileFilter as C, iconBtnRow as Ct, findBtn$1 as D, prTone as Dt, tool as E, phaseIcon as Et, depth as F, settingsDot as G, sessionPopBtn as H, open as I, promptDlg as J, glance as K, port as L, fold as M, iconSize as Mt, toggle as N, mobile as Nt, menu as O, tone as Ot, action as P, sans as Pt, addTile as Q, prChip as R, keybarIconBtn as S, iconBtnLg as St, heldRefresh as T, inputLg as Tt, iconBtn as U, sessionPop as V, notifyBtn as W, themeSeg as X, checkList as Y, detailsToggle as Z, sheetDir as _, toastTitle as _t, dlg as a, name$4 as at, input as b, chipBtn as bt, resultBranch as c, spinner as ct, factCopy as d, list$3 as dt, key$1 as et, procCmd as f, metaChip as ft, upBtn as g, toastStack as gt, goBtn as h, toastKind as ht, repeat as i, desc$1 as it, statusOf as j, color as jt, menuItem as k, usageFill as kt, resultRow as l, usageNote as lt, findBtn as m, tocDot as mt, dpadUser as n, labelField as nt, hint as o, toolLead as ot, note as p, agentRow as pt, item$1 as q, kbtn as r, addDlg as rt, curRow as s, pop$2 as st, dpadEsc as t, keyField as tt, urlAction as u, sectionCount as ut, hint$1 as v, btnLg as vt, pop$1 as w, iconBtnXs as wt, findInput as x, glyphBadgeNum as xt, group as y, btnSm as yt, rowIcon as z };