@dylanpiercey/work 0.0.223 → 0.1.0

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 (522) hide show
  1. package/README.md +2 -27
  2. package/bin/work.mjs +51 -105
  3. package/dist/{_CpANOzpd.js → _Bq7to522.js} +344 -139
  4. package/dist/_CkwTsHKB.js +2 -0
  5. package/dist/index.mjs +2222 -2341
  6. package/dist/public/assets/_1RHVsAcK.js +1 -0
  7. package/dist/public/assets/_4CShjaLP.js +1 -0
  8. package/dist/public/assets/_68JtNDO1.js +1 -0
  9. package/dist/public/assets/{_DoCtdMd2.js → _8G2Mv7jG.js} +1 -1
  10. package/dist/public/assets/_8G2Mv7jG.js.br +0 -0
  11. package/dist/public/assets/{_BL9QMk_P.js → _8dvK2NDJ.js} +1 -1
  12. package/dist/public/assets/_8dvK2NDJ.js.br +0 -0
  13. package/dist/public/assets/_94L2SIJF.js +1 -0
  14. package/dist/public/assets/_9AnDb3YH.js +1 -0
  15. package/dist/public/assets/{_DlpTErRA.js → _9kX9D09B.js} +1 -1
  16. package/dist/public/assets/_9kX9D09B.js.br +0 -0
  17. package/dist/public/assets/_9lErVegn.js +1 -0
  18. package/dist/public/assets/{_DtOzdwHm.js → _B0oyGUU5.js} +1 -1
  19. package/dist/public/assets/_B0oyGUU5.js.br +0 -0
  20. package/dist/public/assets/_B1mPnLlp.js +1 -0
  21. package/dist/public/assets/_B4fi2SSA.js +1 -0
  22. package/dist/public/assets/{_BUH04L5e.js → _B582D2rg.js} +1 -1
  23. package/dist/public/assets/{_CT3clsOQ.js → _B7GwDeKK.js} +1 -1
  24. package/dist/public/assets/_B7Qx25UP.js +1 -0
  25. package/dist/public/assets/_B7b8EVjA.js +1 -0
  26. package/dist/public/assets/{_BVp6r0fg.js → _BBWaxDkO.js} +1 -1
  27. package/dist/public/assets/_BBWaxDkO.js.br +0 -0
  28. package/dist/public/assets/{_DeCJ44Me.js → _BDa-iwuj.js} +1 -1
  29. package/dist/public/assets/_BDa-iwuj.js.br +0 -0
  30. package/dist/public/assets/_BEKHKNmM.js +1 -0
  31. package/dist/public/assets/{_DJ3UAR_s.js → _BE_Jyvqd.js} +1 -1
  32. package/dist/public/assets/_BE_Jyvqd.js.br +0 -0
  33. package/dist/public/assets/_BFU-kJkk.js +1 -0
  34. package/dist/public/assets/_BIJ2O2oU.js +1 -0
  35. package/dist/public/assets/_BJ59XAZ9.js +1 -0
  36. package/dist/public/assets/{_BnOOD6nr.js → _BKqRYfOI.js} +4 -4
  37. package/dist/public/assets/_BKqRYfOI.js.br +0 -0
  38. package/dist/public/assets/_BKr9Dzz1.js +1 -0
  39. package/dist/public/assets/_BN7xvxS_.js +1 -0
  40. package/dist/public/assets/_BNQTVBlH.js +1 -0
  41. package/dist/public/assets/{_D8u1YU9b.js → _BNW5Jiec.js} +1 -1
  42. package/dist/public/assets/_BNW5Jiec.js.br +0 -0
  43. package/dist/public/assets/{_CZGS4T08.js → _BOGkzMx9.js} +1 -1
  44. package/dist/public/assets/_BOGkzMx9.js.br +0 -0
  45. package/dist/public/assets/_BUEpqQ_m.js +1 -0
  46. package/dist/public/assets/{_B_zyAtSJ.js → _BUvqweu0.js} +1 -1
  47. package/dist/public/assets/_BUvqweu0.js.br +0 -0
  48. package/dist/public/assets/{_BsupnkWM.js → _BZKB4fhr.js} +1 -1
  49. package/dist/public/assets/_BZKB4fhr.js.br +0 -0
  50. package/dist/public/assets/_BZo9BjDF.js +1 -0
  51. package/dist/public/assets/{_BeE9qDu0.js → _BbbOvNRH.js} +1 -1
  52. package/dist/public/assets/_BbbOvNRH.js.br +0 -0
  53. package/dist/public/assets/_BdUNnSlC.js +1 -0
  54. package/dist/public/assets/{_Cw_8WbwF.js → _Bf8WYPfh.js} +1 -1
  55. package/dist/public/assets/_Bf8WYPfh.js.br +0 -0
  56. package/dist/public/assets/{_pP1W6w5v.js → _Bhx319Hi.js} +1 -1
  57. package/dist/public/assets/_Bhx319Hi.js.br +0 -0
  58. package/dist/public/assets/{_O70J1Mfv.js → _Bm4SHrNp.js} +1 -1
  59. package/dist/public/assets/_Bm4SHrNp.js.br +0 -0
  60. package/dist/public/assets/{_--tE4Gxz.js → _Bmrqq8Ro.js} +2 -2
  61. package/dist/public/assets/_Bmrqq8Ro.js.br +0 -0
  62. package/dist/public/assets/_BnHZ6Npj.js +1 -0
  63. package/dist/public/assets/{_CLDmR3jR.js → _BoDxRJLS.js} +1 -1
  64. package/dist/public/assets/_BoDxRJLS.js.br +0 -0
  65. package/dist/public/assets/_Bo_Ru664.js +1 -0
  66. package/dist/public/assets/{_BCZpExov.js → _Bp8-V8yl.js} +1 -1
  67. package/dist/public/assets/_Bp8-V8yl.js.br +0 -0
  68. package/dist/public/assets/{_CGLpCj_I.js → _BpoeUr5j.js} +1 -1
  69. package/dist/public/assets/_BpoeUr5j.js.br +0 -0
  70. package/dist/public/assets/_Bq2G_Tid.js +1 -0
  71. package/dist/public/assets/_BsyoLB_D.js +1 -0
  72. package/dist/public/assets/{_BAHrOydH.js → _Bv3e3rg8.js} +1 -1
  73. package/dist/public/assets/_Bv3e3rg8.js.br +0 -0
  74. package/dist/public/assets/{_C6i9NP5A.js → _Bv3qNE1b.js} +1 -1
  75. package/dist/public/assets/{_BXT2bXMi.js → _BvXp6HpX.js} +1 -1
  76. package/dist/public/assets/_BvXp6HpX.js.br +0 -0
  77. package/dist/public/assets/{_CX1wufuh.js → _BwP07uVS.js} +1 -1
  78. package/dist/public/assets/_BwP07uVS.js.br +0 -0
  79. package/dist/public/assets/{_ifUb4WX7.js → _Bx1CW-sF.js} +1 -1
  80. package/dist/public/assets/_Bx1CW-sF.js.br +0 -0
  81. package/dist/public/assets/{_BPcswKMK.js → _BywcP-As.js} +1 -1
  82. package/dist/public/assets/_BywcP-As.js.br +0 -0
  83. package/dist/public/assets/{_Bp_WT09q.js → _Bzgtwt3G.js} +1 -1
  84. package/dist/public/assets/_Bzgtwt3G.js.br +0 -0
  85. package/dist/public/assets/{_IWMmnVCy.js → _C0_s45qg.js} +1 -1
  86. package/dist/public/assets/_C0_s45qg.js.br +0 -0
  87. package/dist/public/assets/_C0ePgF6b.js +1 -0
  88. package/dist/public/assets/{_Da2Dmt_d.js → _C0oVtTqO.js} +1 -1
  89. package/dist/public/assets/_C0oVtTqO.js.br +0 -0
  90. package/dist/public/assets/{_CtyJUmXC.js → _C654p96Z.js} +1 -1
  91. package/dist/public/assets/_C654p96Z.js.br +0 -0
  92. package/dist/public/assets/{_2mnAZf6B.js → _C8_1Y2-z.js} +1 -1
  93. package/dist/public/assets/_C8_1Y2-z.js.br +0 -0
  94. package/dist/public/assets/_C8v1AZFP.js +1 -0
  95. package/dist/public/assets/{_BO0OB-rz.js → _CAkPJLeF.js} +1 -1
  96. package/dist/public/assets/_CAkPJLeF.js.br +0 -0
  97. package/dist/public/assets/_CB0D5cRH.js +1 -0
  98. package/dist/public/assets/_CD05JUTh.js +1 -0
  99. package/dist/public/assets/{_CJ9j8N5Z.js → _CEJUcePr.js} +1 -1
  100. package/dist/public/assets/_CEJUcePr.js.br +0 -0
  101. package/dist/public/assets/{_DuarImb7.js → _CEXHZd73.js} +1 -1
  102. package/dist/public/assets/_CEXHZd73.js.br +0 -0
  103. package/dist/public/assets/_CHcUMVR7.js +1 -0
  104. package/dist/public/assets/{_BnyLUTdO.js → _CHuLFr1f.js} +1 -1
  105. package/dist/public/assets/_CHuLFr1f.js.br +0 -0
  106. package/dist/public/assets/{_DwcoW-IU.js → _CIb7xw_1.js} +1 -1
  107. package/dist/public/assets/_CIb7xw_1.js.br +0 -0
  108. package/dist/public/assets/{_B1RldJ0S.js → _CMSBfO6u.js} +1 -1
  109. package/dist/public/assets/_CMSBfO6u.js.br +0 -0
  110. package/dist/public/assets/_CN7GPyBo.js +1 -0
  111. package/dist/public/assets/{_DI0QHEXB.js → _COcePo2y.js} +1 -1
  112. package/dist/public/assets/_COcePo2y.js.br +0 -0
  113. package/dist/public/assets/{_eQK3EZCc.js → _CTINBWaG.js} +1 -1
  114. package/dist/public/assets/_CTINBWaG.js.br +0 -0
  115. package/dist/public/assets/_CTWrnAbz.js +1 -0
  116. package/dist/public/assets/{_CLerZOx-.js → _CUXajOKj.js} +1 -1
  117. package/dist/public/assets/_CUXajOKj.js.br +0 -0
  118. package/dist/public/assets/{_ChpYg41R.js → _CVru3vzC.js} +1 -1
  119. package/dist/public/assets/{_BA8HFnO3.js → _CYjE__ml.js} +1 -1
  120. package/dist/public/assets/_CYjE__ml.js.br +0 -0
  121. package/dist/public/assets/{_dr95P55a.js → _CZ_OWtIT.js} +1 -1
  122. package/dist/public/assets/_CZ_OWtIT.js.br +0 -0
  123. package/dist/public/assets/{_BLTfQLdY.js → _C_37_B6u.js} +1 -1
  124. package/dist/public/assets/_C_37_B6u.js.br +0 -0
  125. package/dist/public/assets/{_xdrkfok5.js → _C_CIQL7J.js} +1 -1
  126. package/dist/public/assets/_C_CIQL7J.js.br +0 -0
  127. package/dist/public/assets/_C_WdpYbK.js +1 -0
  128. package/dist/public/assets/_CaiH3VN9.js +1 -0
  129. package/dist/public/assets/{_CCCQMLw5.js → _CamWDaoG.js} +1 -1
  130. package/dist/public/assets/_CamWDaoG.js.br +0 -0
  131. package/dist/public/assets/_CdDElA0V.js +1 -0
  132. package/dist/public/assets/_CfnsClzZ.js +1 -0
  133. package/dist/public/assets/{_SwbsOoi9.js → _Cgo1fRhJ.js} +1 -1
  134. package/dist/public/assets/_Cgo1fRhJ.js.br +0 -0
  135. package/dist/public/assets/_CjhGrlf3.js +1 -0
  136. package/dist/public/assets/_CjlbL4C_.js +1 -0
  137. package/dist/public/assets/_CjogTUXK.js +1 -0
  138. package/dist/public/assets/{_mnBdD4YN.js → _ClldMY37.js} +1 -1
  139. package/dist/public/assets/_ClldMY37.js.br +0 -0
  140. package/dist/public/assets/_CmFq6Gtp.js +1 -0
  141. package/dist/public/assets/_CoAPOKiP.js +1 -0
  142. package/dist/public/assets/_CoUUgh9P.js +1 -0
  143. package/dist/public/assets/{_s5Jez2mu.js → _CpjSCB1I.js} +1 -1
  144. package/dist/public/assets/_CpjSCB1I.js.br +0 -0
  145. package/dist/public/assets/{_DeN4EY8L.js → _Ct3RF80L.js} +1 -1
  146. package/dist/public/assets/_Ct3RF80L.js.br +0 -0
  147. package/dist/public/assets/_CtYy5eZs.js +1 -0
  148. package/dist/public/assets/{_BS4crAAm.js → _CxAPL49a.js} +1 -1
  149. package/dist/public/assets/_CxAPL49a.js.br +0 -0
  150. package/dist/public/assets/{_CwmzEsB4.js → _CyBCIknf.js} +1 -1
  151. package/dist/public/assets/_CyBCIknf.js.br +0 -0
  152. package/dist/public/assets/{_unfL8mz1.js → _Cz5BPBG8.js} +1 -1
  153. package/dist/public/assets/_Cz5BPBG8.js.br +0 -0
  154. package/dist/public/assets/_D-eEFXaI.js +1 -0
  155. package/dist/public/assets/{_gPFPzzPF.js → _D0aoEFRx.js} +1 -1
  156. package/dist/public/assets/_D0aoEFRx.js.br +0 -0
  157. package/dist/public/assets/{_CnKYioYw.js → _D1uRW1qz.js} +1 -1
  158. package/dist/public/assets/_D1uRW1qz.js.br +0 -0
  159. package/dist/public/assets/_D2oIr2T2.js +1 -0
  160. package/dist/public/assets/{_BBpX-M4b.js → _D2un443j.js} +1 -1
  161. package/dist/public/assets/_D2un443j.js.br +0 -0
  162. package/dist/public/assets/_D3MPx4-f.js +1 -0
  163. package/dist/public/assets/{_DzrtBP-L.js → _D4dJ2qEE.js} +1 -1
  164. package/dist/public/assets/{_Fzbz4zvE.js → _D4q8XSMI.js} +1 -1
  165. package/dist/public/assets/_D4q8XSMI.js.br +0 -0
  166. package/dist/public/assets/{_BxAl0m64.js → _D4quFMVQ.js} +1 -1
  167. package/dist/public/assets/_D4quFMVQ.js.br +0 -0
  168. package/dist/public/assets/{_pvS44-AC.js → _D4rOX-Fa.js} +1 -1
  169. package/dist/public/assets/_D4rOX-Fa.js.br +0 -0
  170. package/dist/public/assets/_D5edrSyA.js +1 -0
  171. package/dist/public/assets/{_DuXOUegE.js → _D6kktUFn.js} +1 -1
  172. package/dist/public/assets/_D6kktUFn.js.br +0 -0
  173. package/dist/public/assets/_D80-qtVY.js +1 -0
  174. package/dist/public/assets/_D9-3EVA4.js +1 -0
  175. package/dist/public/assets/{_CE5MhJWL.js → _D9sS4J_w.js} +1 -1
  176. package/dist/public/assets/_D9sS4J_w.js.br +0 -0
  177. package/dist/public/assets/_DBLpxTDi.js +1 -0
  178. package/dist/public/assets/{_CYNAhnRH.js → _DByHQ7nW.js} +6 -6
  179. package/dist/public/assets/_DByHQ7nW.js.br +0 -0
  180. package/dist/public/assets/{_D-hK5uFn.js → _DC-78WeM.js} +1 -1
  181. package/dist/public/assets/_DC-78WeM.js.br +0 -0
  182. package/dist/public/assets/{_DmDSLxrw.js → _DDl8KSWJ.js} +1 -1
  183. package/dist/public/assets/_DDl8KSWJ.js.br +0 -0
  184. package/dist/public/assets/{_C-6dImS5.js → _DFWOMF-B.js} +1 -1
  185. package/dist/public/assets/_DFWOMF-B.js.br +0 -0
  186. package/dist/public/assets/_DKb-rt9n.js +1 -0
  187. package/dist/public/assets/_DMnSJCF_.js +1 -0
  188. package/dist/public/assets/_DOOIlrPh.js +1 -0
  189. package/dist/public/assets/_DPW-0yKP.js +1 -0
  190. package/dist/public/assets/_DR3BmvWU.js +1 -0
  191. package/dist/public/assets/{_C9OdJcx4.js → _DSVLaMWS.js} +1 -1
  192. package/dist/public/assets/_DSVLaMWS.js.br +0 -0
  193. package/dist/public/assets/_DYNGNKLk.js +1 -0
  194. package/dist/public/assets/_DZnEgCbj.js +1 -0
  195. package/dist/public/assets/{_zKlxcAnQ.js → _DaMVRI8f.js} +1 -1
  196. package/dist/public/assets/_DaMVRI8f.js.br +0 -0
  197. package/dist/public/assets/{_DGTQBWy0.js → _DbvaGqOl.js} +1 -1
  198. package/dist/public/assets/_DbvaGqOl.js.br +0 -0
  199. package/dist/public/assets/{_DiqV5bDH.js → _DcMIlvz-.js} +1 -1
  200. package/dist/public/assets/_DcMIlvz-.js.br +0 -0
  201. package/dist/public/assets/{__Oa255vo.js → _Dd6X3e7w.js} +1 -1
  202. package/dist/public/assets/_Dd6X3e7w.js.br +0 -0
  203. package/dist/public/assets/{_BdvO5Lqa.js → _De7P3jUH.js} +1 -1
  204. package/dist/public/assets/_De7P3jUH.js.br +0 -0
  205. package/dist/public/assets/_DeiFEAar.js +1 -0
  206. package/dist/public/assets/{_vKQopDwG.js → _DfI982PI.js} +1 -1
  207. package/dist/public/assets/_DfI982PI.js.br +0 -0
  208. package/dist/public/assets/_DfZ6emcw.js +1 -0
  209. package/dist/public/assets/{_DxVt7Zuk.js → _Dj1lZ1pa.js} +4 -4
  210. package/dist/public/assets/_Dj1lZ1pa.js.br +0 -0
  211. package/dist/public/assets/{_DhEdzMUw.js → _DkCaEf_h.js} +1 -1
  212. package/dist/public/assets/_DkCaEf_h.js.br +0 -0
  213. package/dist/public/assets/_DonAis0J.js +1 -0
  214. package/dist/public/assets/{_BRG_DBcC.js → _Dp3IZdH8.js} +1 -1
  215. package/dist/public/assets/_Dp3IZdH8.js.br +0 -0
  216. package/dist/public/assets/{_unwtcXFQ.js → _DqYih4xk.js} +1 -1
  217. package/dist/public/assets/_DqYih4xk.js.br +0 -0
  218. package/dist/public/assets/{_BLRpf6Uw.js → _DqhphdU4.js} +1 -1
  219. package/dist/public/assets/_DqhphdU4.js.br +0 -0
  220. package/dist/public/assets/{_C87NBm9i.js → _DrIgZJzN.js} +1 -1
  221. package/dist/public/assets/_DrIgZJzN.js.br +0 -0
  222. package/dist/public/assets/_Dt4hHR05.js +1 -0
  223. package/dist/public/assets/_DtTbTraA.js +1 -0
  224. package/dist/public/assets/_DwMxAJKP.js +1 -0
  225. package/dist/public/assets/{_CttJbiei.js → _DxEm-Gwj.js} +1 -1
  226. package/dist/public/assets/_DxEm-Gwj.js.br +0 -0
  227. package/dist/public/assets/{_CdgAsi3s.js → _Dytf99zx.js} +1 -1
  228. package/dist/public/assets/_Dytf99zx.js.br +0 -0
  229. package/dist/public/assets/_EAgv5jR9.js +1 -0
  230. package/dist/public/assets/{_C9qO_dny.js → _Iecpd0kS.js} +1 -1
  231. package/dist/public/assets/_Iecpd0kS.js.br +0 -0
  232. package/dist/public/assets/{_DuGmU4h0.js → _MCwIJAuJ.js} +1 -1
  233. package/dist/public/assets/_MCwIJAuJ.js.br +0 -0
  234. package/dist/public/assets/{_BJRSndB4.js → _NM79Lu3L.js} +1 -1
  235. package/dist/public/assets/_NM79Lu3L.js.br +0 -0
  236. package/dist/public/assets/_QpNKKuS9.js +1 -0
  237. package/dist/public/assets/{_BbiACo0Y.js → _SGDxiwE1.js} +1 -1
  238. package/dist/public/assets/_SGDxiwE1.js.br +0 -0
  239. package/dist/public/assets/_TA8pE7z9.js +1 -0
  240. package/dist/public/assets/_bE4sNDeU.js +1 -0
  241. package/dist/public/assets/{_pUYwxsdF.js → _bcsuBP7T.js} +1 -1
  242. package/dist/public/assets/_bcsuBP7T.js.br +0 -0
  243. package/dist/public/assets/_cdcAU4yY.js +1 -0
  244. package/dist/public/assets/{_DhNuRs-V.js → _ch_yXAap.js} +1 -1
  245. package/dist/public/assets/_ch_yXAap.js.br +0 -0
  246. package/dist/public/assets/{_DaqT6m41.js → _d5u7EI97.js} +1 -1
  247. package/dist/public/assets/_d5u7EI97.js.br +0 -0
  248. package/dist/public/assets/{_C2ZpyiHV.js → _eoa1EOU-.js} +1 -1
  249. package/dist/public/assets/_eoa1EOU-.js.br +0 -0
  250. package/dist/public/assets/{_C1PmcEws.js → _j2tDSMvo.js} +1 -1
  251. package/dist/public/assets/_j2tDSMvo.js.br +0 -0
  252. package/dist/public/assets/_jNhIFgbc.js +1 -0
  253. package/dist/public/assets/_kDYiTaag.js +1 -0
  254. package/dist/public/assets/_lNMVVbUx.js +1 -0
  255. package/dist/public/assets/_nwJ7Hu3S.js +1 -0
  256. package/dist/public/assets/{_qJTL2ooe.js → _tmDtUACa.js} +1 -1
  257. package/dist/public/assets/_tmDtUACa.js.br +0 -0
  258. package/dist/public/assets/{_BewXp5Y_.js → _wXDh-Z2N.js} +1 -1
  259. package/dist/public/assets/_wXDh-Z2N.js.br +0 -0
  260. package/dist/public/assets/{_CB31bp-W.js → _wcshV0sZ.js} +1 -1
  261. package/dist/public/assets/_wcshV0sZ.js.br +0 -0
  262. package/dist/public/assets/_x-NwqgCn.js +1 -0
  263. package/dist/public/assets/{_BsimXDnm.js → _xyw_DS5P.js} +1 -1
  264. package/dist/public/assets/_xyw_DS5P.js.br +0 -0
  265. package/dist/public/assets/{_Aq9oGnRu.js → _zSAfqXcm.js} +1 -1
  266. package/dist/public/assets/_zSAfqXcm.js.br +0 -0
  267. package/dist/public/assets/{app-shell-CpPCwWPW.css → app-shell-ChQoVC5b.css} +1 -1
  268. package/dist/public/assets/app-shell-ChQoVC5b.css.br +0 -0
  269. package/dist/public/assets/files-view-CLtLp_BW.js +2 -0
  270. package/dist/public/assets/{files-view-DtI7JE-f.css → files-view-CNHQapdI.css} +1 -1
  271. package/dist/public/assets/files-view-CNHQapdI.css.br +0 -0
  272. package/dist/public/assets/group.css.ts-BG82htKb.css +1 -0
  273. package/dist/public/assets/group.css.ts-BG82htKb.css.br +0 -0
  274. package/dist/public/assets/icon-folder-DJOHuEpD.css +1 -0
  275. package/dist/public/assets/icon-folder-DJOHuEpD.css.br +0 -0
  276. package/dist/public/assets/{icon-search-DAtjHWFL.css → icon-search-DsJuFXUJ.css} +1 -1
  277. package/dist/public/assets/icon-search-DsJuFXUJ.css.br +0 -0
  278. package/dist/public/assets/manage-workspace-NBcFDyrB.js +2 -0
  279. package/dist/public/assets/manage-workspace-f_Np32TD.css +1 -0
  280. package/dist/public/assets/{modal-view-D0qnmuJE.css → modal-view-KVNBpNYi.css} +1 -1
  281. package/dist/public/assets/modal-view-KVNBpNYi.css.br +0 -0
  282. package/dist/public/assets/new-DHI77GvL.js +1 -0
  283. package/dist/public/assets/new-workspace-BFE-HpD_.css +1 -0
  284. package/dist/public/assets/new-workspace-BFE-HpD_.css.br +0 -0
  285. package/dist/public/assets/new-workspace-BRzimdd5.js +2 -0
  286. package/dist/public/assets/port-chip-CUUIDOVM.css +1 -0
  287. package/dist/public/assets/port-chip-CUUIDOVM.css.br +0 -0
  288. package/dist/public/assets/prompt-dialog-BGs6RXOV.css +1 -0
  289. package/dist/public/assets/prompt-dialog-BGs6RXOV.css.br +0 -0
  290. package/dist/public/assets/{quick-open-DVqzk3-g.css → quick-open-Gx4so1bl.css} +1 -1
  291. package/dist/public/assets/quick-open-Gx4so1bl.css.br +0 -0
  292. package/dist/public/assets/repo-picker-CUhd0vJN.css +1 -0
  293. package/dist/public/assets/repo-picker-CUhd0vJN.css.br +4 -0
  294. package/dist/public/assets/review-view-DFEK9VBa.js +2 -0
  295. package/dist/public/assets/{review-view-DqMrB4Ny.css → review-view-deUY3OE5.css} +1 -1
  296. package/dist/public/assets/review-view-deUY3OE5.css.br +0 -0
  297. package/dist/public/assets/section-CziSOSBR.css +1 -0
  298. package/dist/public/assets/section-CziSOSBR.css.br +0 -0
  299. package/dist/public/assets/settings-DHI77GvL.js +1 -0
  300. package/dist/public/assets/settings-page-OOtPOzIn.js +2 -0
  301. package/dist/public/assets/settings-page-wZhd7FLi.css +1 -0
  302. package/dist/public/assets/settings-page-wZhd7FLi.css.br +0 -0
  303. package/dist/public/assets/skill-row-BoCyFIXg.css +1 -0
  304. package/dist/public/assets/sso-auth-DV76tTpE.css +1 -0
  305. package/dist/public/assets/sso-auth-DV76tTpE.css.br +0 -0
  306. package/dist/public/assets/w-DHI77GvL.js +1 -0
  307. package/dist/public/assets/w._-DHI77GvL.js +1 -0
  308. package/dist/public/assets/w._-DsTgq3-C.js +1 -0
  309. package/dist/public/assets/w._-igEOSPR-.js +1 -0
  310. package/lib/review/markdown.mjs +5 -5
  311. package/lib/setup/bridge.d.mts +10 -0
  312. package/lib/setup/bridge.mjs +84 -0
  313. package/lib/setup/doctor.d.mts +5 -0
  314. package/lib/setup/doctor.mjs +45 -1
  315. package/lib/setup/install.d.mts +1 -0
  316. package/lib/setup/install.mjs +21 -1
  317. package/lib/setup/listen.mjs +2 -2
  318. package/lib/share/manifest.mjs +2 -1
  319. package/package.json +2 -3
  320. package/dist/_LF2Fo5WE.js +0 -2
  321. package/dist/public/assets/_--tE4Gxz.js.br +0 -0
  322. package/dist/public/assets/_1OL9vXM-.js +0 -1
  323. package/dist/public/assets/_2mnAZf6B.js.br +0 -0
  324. package/dist/public/assets/_5f9fMvWJ.js +0 -1
  325. package/dist/public/assets/_5y69OR6M.js +0 -1
  326. package/dist/public/assets/_Aq9oGnRu.js.br +0 -0
  327. package/dist/public/assets/_B0uJCjmk.js +0 -1
  328. package/dist/public/assets/_B1RldJ0S.js.br +0 -0
  329. package/dist/public/assets/_B5TpOQCZ.js +0 -1
  330. package/dist/public/assets/_B6UdulKa.js +0 -1
  331. package/dist/public/assets/_BA8HFnO3.js.br +0 -0
  332. package/dist/public/assets/_BAHrOydH.js.br +0 -0
  333. package/dist/public/assets/_BBpX-M4b.js.br +0 -0
  334. package/dist/public/assets/_BCZpExov.js.br +0 -0
  335. package/dist/public/assets/_BFZHNauV.js +0 -1
  336. package/dist/public/assets/_BJRSndB4.js.br +0 -0
  337. package/dist/public/assets/_BL9QMk_P.js.br +0 -0
  338. package/dist/public/assets/_BLNEzyb5.js +0 -1
  339. package/dist/public/assets/_BLRpf6Uw.js.br +0 -0
  340. package/dist/public/assets/_BLTfQLdY.js.br +0 -0
  341. package/dist/public/assets/_BO0OB-rz.js.br +0 -0
  342. package/dist/public/assets/_BPcswKMK.js.br +0 -0
  343. package/dist/public/assets/_BPhXWliU.js +0 -1
  344. package/dist/public/assets/_BQXTv9Cr.js +0 -1
  345. package/dist/public/assets/_BRG_DBcC.js.br +0 -0
  346. package/dist/public/assets/_BS4crAAm.js.br +0 -0
  347. package/dist/public/assets/_BVp6r0fg.js.br +0 -0
  348. package/dist/public/assets/_BXT2bXMi.js.br +0 -0
  349. package/dist/public/assets/_B_zyAtSJ.js.br +0 -0
  350. package/dist/public/assets/_BaXKdIeb.js +0 -1
  351. package/dist/public/assets/_BbiACo0Y.js.br +0 -0
  352. package/dist/public/assets/_BdvO5Lqa.js.br +0 -0
  353. package/dist/public/assets/_BeE9qDu0.js.br +0 -0
  354. package/dist/public/assets/_BewXp5Y_.js.br +0 -0
  355. package/dist/public/assets/_BfOOLKo5.js +0 -1
  356. package/dist/public/assets/_BhS8bTnr.js +0 -1
  357. package/dist/public/assets/_BhZ3ZoG0.js +0 -1
  358. package/dist/public/assets/_Bi3_ZsOQ.js +0 -1
  359. package/dist/public/assets/_Bj_Lfa8B.js +0 -1
  360. package/dist/public/assets/_BlN_x04q.js +0 -1
  361. package/dist/public/assets/_Bn5nsnie.js +0 -1
  362. package/dist/public/assets/_BnOOD6nr.js.br +0 -0
  363. package/dist/public/assets/_BnyLUTdO.js.br +0 -0
  364. package/dist/public/assets/_Bp_WT09q.js.br +0 -0
  365. package/dist/public/assets/_BsimXDnm.js.br +0 -0
  366. package/dist/public/assets/_BsupnkWM.js.br +0 -0
  367. package/dist/public/assets/_BxAl0m64.js.br +0 -0
  368. package/dist/public/assets/_C-6dImS5.js.br +0 -0
  369. package/dist/public/assets/_C18Torhh.js +0 -1
  370. package/dist/public/assets/_C1PmcEws.js.br +0 -0
  371. package/dist/public/assets/_C2ZpyiHV.js.br +0 -0
  372. package/dist/public/assets/_C3P1VHUI.js +0 -1
  373. package/dist/public/assets/_C6xwTKke.js +0 -1
  374. package/dist/public/assets/_C6yqlRfl.js +0 -1
  375. package/dist/public/assets/_C75D8bH2.js +0 -1
  376. package/dist/public/assets/_C87NBm9i.js.br +0 -0
  377. package/dist/public/assets/_C8Vc_vBH.js +0 -1
  378. package/dist/public/assets/_C9OdJcx4.js.br +0 -0
  379. package/dist/public/assets/_C9eoo0sE.js +0 -1
  380. package/dist/public/assets/_C9qO_dny.js.br +0 -0
  381. package/dist/public/assets/_CB31bp-W.js.br +0 -0
  382. package/dist/public/assets/_CCCQMLw5.js.br +0 -0
  383. package/dist/public/assets/_CCie36pi.js +0 -1
  384. package/dist/public/assets/_CDD9N34p.js +0 -1
  385. package/dist/public/assets/_CE5MhJWL.js.br +0 -0
  386. package/dist/public/assets/_CGLpCj_I.js.br +0 -0
  387. package/dist/public/assets/_CJ9j8N5Z.js.br +0 -0
  388. package/dist/public/assets/_CLDmR3jR.js.br +0 -0
  389. package/dist/public/assets/_CLerZOx-.js.br +0 -0
  390. package/dist/public/assets/_CM5GtJb2.js +0 -1
  391. package/dist/public/assets/_COECwOVb.js +0 -1
  392. package/dist/public/assets/_CSQE9nMN.js +0 -1
  393. package/dist/public/assets/_CSXMgHLQ.js +0 -1
  394. package/dist/public/assets/_CVRiByCT.js +0 -1
  395. package/dist/public/assets/_CVSrm4Pl.js +0 -1
  396. package/dist/public/assets/_CX1wufuh.js.br +0 -0
  397. package/dist/public/assets/_CYNAhnRH.js.br +0 -0
  398. package/dist/public/assets/_CZGS4T08.js.br +0 -0
  399. package/dist/public/assets/_C_L7l9Mg.js +0 -1
  400. package/dist/public/assets/_CaMrYy1W.js +0 -1
  401. package/dist/public/assets/_CdgAsi3s.js.br +0 -0
  402. package/dist/public/assets/_Ce-E7sJE.js +0 -1
  403. package/dist/public/assets/_Cg3S760D.js +0 -1
  404. package/dist/public/assets/_CicyY7KP.js +0 -1
  405. package/dist/public/assets/_Ck0YOw_7.js +0 -1
  406. package/dist/public/assets/_CmHlTZSs.js +0 -1
  407. package/dist/public/assets/_CnECYh66.js +0 -1
  408. package/dist/public/assets/_CnKYioYw.js.br +0 -0
  409. package/dist/public/assets/_CnUVvVPd.js +0 -1
  410. package/dist/public/assets/_CqSgGCGC.js +0 -1
  411. package/dist/public/assets/_CttJbiei.js.br +0 -0
  412. package/dist/public/assets/_CtyJUmXC.js.br +0 -0
  413. package/dist/public/assets/_Cw_8WbwF.js.br +0 -0
  414. package/dist/public/assets/_CwmzEsB4.js.br +0 -0
  415. package/dist/public/assets/_CzETFsJs.js +0 -1
  416. package/dist/public/assets/_D-S9H-tX.js +0 -1
  417. package/dist/public/assets/_D-hK5uFn.js.br +0 -0
  418. package/dist/public/assets/_D5fTwHXK.js +0 -1
  419. package/dist/public/assets/_D8u1YU9b.js.br +0 -0
  420. package/dist/public/assets/_DAH8evhA.js +0 -1
  421. package/dist/public/assets/_DAemmoHI.js +0 -1
  422. package/dist/public/assets/_DEMYxWZf.js +0 -1
  423. package/dist/public/assets/_DGTQBWy0.js.br +0 -0
  424. package/dist/public/assets/_DHhv0pCA.js +0 -1
  425. package/dist/public/assets/_DI0QHEXB.js.br +0 -0
  426. package/dist/public/assets/_DJ3UAR_s.js.br +0 -0
  427. package/dist/public/assets/_DKu6UxI7.js +0 -1
  428. package/dist/public/assets/_DNC-9RBN.js +0 -1
  429. package/dist/public/assets/_DP-Bu7ET.js +0 -1
  430. package/dist/public/assets/_DYmmPBcq.js +0 -1
  431. package/dist/public/assets/_Da2Dmt_d.js.br +0 -0
  432. package/dist/public/assets/_DaqT6m41.js.br +0 -0
  433. package/dist/public/assets/_DbVyutEZ.js +0 -1
  434. package/dist/public/assets/_DcBvO2Si.js +0 -1
  435. package/dist/public/assets/_DeCJ44Me.js.br +0 -0
  436. package/dist/public/assets/_DeN4EY8L.js.br +0 -0
  437. package/dist/public/assets/_DhEdzMUw.js.br +0 -0
  438. package/dist/public/assets/_DhNuRs-V.js.br +0 -0
  439. package/dist/public/assets/_DiqV5bDH.js.br +0 -0
  440. package/dist/public/assets/_Diqt_yCf.js +0 -1
  441. package/dist/public/assets/_DlpTErRA.js.br +0 -0
  442. package/dist/public/assets/_DmDSLxrw.js.br +0 -0
  443. package/dist/public/assets/_DoC0qbSD.js +0 -1
  444. package/dist/public/assets/_DoCtdMd2.js.br +0 -0
  445. package/dist/public/assets/_DpqWFkMg.js +0 -1
  446. package/dist/public/assets/_Dr0Bkgso.js +0 -1
  447. package/dist/public/assets/_Dt-n9FaQ.js +0 -1
  448. package/dist/public/assets/_DtOzdwHm.js.br +0 -0
  449. package/dist/public/assets/_DuGmU4h0.js.br +0 -0
  450. package/dist/public/assets/_DuXOUegE.js.br +0 -0
  451. package/dist/public/assets/_DuaocJd1.js +0 -1
  452. package/dist/public/assets/_DuarImb7.js.br +0 -0
  453. package/dist/public/assets/_DwcoW-IU.js.br +0 -0
  454. package/dist/public/assets/_DxVt7Zuk.js.br +0 -0
  455. package/dist/public/assets/_Fzbz4zvE.js.br +0 -0
  456. package/dist/public/assets/_I5oX-lGP.js +0 -1
  457. package/dist/public/assets/_IWMmnVCy.js.br +0 -0
  458. package/dist/public/assets/_O70J1Mfv.js.br +0 -0
  459. package/dist/public/assets/_SwbsOoi9.js.br +0 -0
  460. package/dist/public/assets/_Yy39CykK.js +0 -1
  461. package/dist/public/assets/__Oa255vo.js.br +0 -0
  462. package/dist/public/assets/_bPze7k1x.js +0 -1
  463. package/dist/public/assets/_bU1KcT1I.js +0 -1
  464. package/dist/public/assets/_dr95P55a.js.br +0 -0
  465. package/dist/public/assets/_eQK3EZCc.js.br +0 -0
  466. package/dist/public/assets/_gPFPzzPF.js.br +0 -0
  467. package/dist/public/assets/_hzpOPZUB.js +0 -1
  468. package/dist/public/assets/_ifUb4WX7.js.br +0 -0
  469. package/dist/public/assets/_kQ7LiSim.js +0 -1
  470. package/dist/public/assets/_lOAW1VLM.js +0 -1
  471. package/dist/public/assets/_mnBdD4YN.js.br +0 -0
  472. package/dist/public/assets/_odBcV1kc.js +0 -1
  473. package/dist/public/assets/_pP1W6w5v.js.br +0 -0
  474. package/dist/public/assets/_pUYwxsdF.js.br +0 -0
  475. package/dist/public/assets/_pvS44-AC.js.br +0 -0
  476. package/dist/public/assets/_qJTL2ooe.js.br +0 -0
  477. package/dist/public/assets/_s5Jez2mu.js.br +0 -0
  478. package/dist/public/assets/_unfL8mz1.js.br +0 -0
  479. package/dist/public/assets/_unwtcXFQ.js.br +0 -0
  480. package/dist/public/assets/_vKQopDwG.js.br +0 -0
  481. package/dist/public/assets/_w1aegGdT.js +0 -1
  482. package/dist/public/assets/_xdrkfok5.js.br +0 -0
  483. package/dist/public/assets/_y-lm36fI.js +0 -1
  484. package/dist/public/assets/_zKlxcAnQ.js.br +0 -0
  485. package/dist/public/assets/app-shell-CpPCwWPW.css.br +0 -0
  486. package/dist/public/assets/files-view-BfCdcfXX.js +0 -2
  487. package/dist/public/assets/files-view-DtI7JE-f.css.br +0 -0
  488. package/dist/public/assets/group.css.ts-SeaNz7WZ.css +0 -1
  489. package/dist/public/assets/group.css.ts-SeaNz7WZ.css.br +0 -0
  490. package/dist/public/assets/icon-folder-DHVc-REl.css +0 -1
  491. package/dist/public/assets/icon-folder-DHVc-REl.css.br +0 -0
  492. package/dist/public/assets/icon-search-DAtjHWFL.css.br +0 -0
  493. package/dist/public/assets/manage-workspace-6i6Zeai7.css +0 -1
  494. package/dist/public/assets/manage-workspace-CixeMkdt.js +0 -2
  495. package/dist/public/assets/modal-view-D0qnmuJE.css.br +0 -0
  496. package/dist/public/assets/new-DxhaKmbF.js +0 -1
  497. package/dist/public/assets/new-workspace-BXjDRbqF.css +0 -1
  498. package/dist/public/assets/new-workspace-BXjDRbqF.css.br +0 -0
  499. package/dist/public/assets/new-workspace-DG693v2S.js +0 -2
  500. package/dist/public/assets/port-chip-Lz3mVJWb.css +0 -1
  501. package/dist/public/assets/port-chip-Lz3mVJWb.css.br +0 -0
  502. package/dist/public/assets/prompt-dialog-vhnae1-x.css +0 -1
  503. package/dist/public/assets/prompt-dialog-vhnae1-x.css.br +0 -0
  504. package/dist/public/assets/quick-open-DVqzk3-g.css.br +0 -0
  505. package/dist/public/assets/repo-picker-K5RYsEge.css +0 -1
  506. package/dist/public/assets/repo-picker-K5RYsEge.css.br +0 -0
  507. package/dist/public/assets/review-view-DqMrB4Ny.css.br +0 -0
  508. package/dist/public/assets/review-view-TdLbCgEg.js +0 -2
  509. package/dist/public/assets/section-2MyJSq5D.css +0 -1
  510. package/dist/public/assets/section-2MyJSq5D.css.br +0 -0
  511. package/dist/public/assets/settings-DxhaKmbF.js +0 -1
  512. package/dist/public/assets/settings-page-BBAG94Vh.js +0 -2
  513. package/dist/public/assets/settings-page-DUefc32x.css +0 -1
  514. package/dist/public/assets/settings-page-DUefc32x.css.br +0 -0
  515. package/dist/public/assets/skill-row-BeOk8NK8.css +0 -1
  516. package/dist/public/assets/sso-auth-CU3fGJ4U.css +0 -1
  517. package/dist/public/assets/sso-auth-CU3fGJ4U.css.br +0 -0
  518. package/dist/public/assets/w-DxhaKmbF.js +0 -1
  519. package/dist/public/assets/w._-C6JVdFgi.js +0 -1
  520. package/dist/public/assets/w._-DxhaKmbF.js +0 -1
  521. package/dist/public/assets/w._-rfvcDGPk.js +0 -1
  522. package/scripts/migrate.mjs +0 -682
@@ -85,16 +85,16 @@ function commentBlock(c, n, repos) {
85
85
  }
86
86
 
87
87
  /** The folder a comment's `worktree` names: a section id (`repo@topic`,
88
- * `repo#12`) is a view of the folder, and older rows stored the id.
88
+ * `repo#12`) is a view of the folder, and a row may hold the id.
89
89
  * @param {string} worktree */
90
90
  function folderOf(worktree) {
91
91
  return worktree.split(/[@#]/)[0];
92
92
  }
93
93
 
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
+ /** The section a comment was made in: a row holding a section id names it
95
+ * outright; one holding the folder, by the head it was made at — the first
96
+ * section at that head, so a lane still level with the checkout reads as
97
+ * the checkout, which it is.
98
98
  * @param {Comment} c
99
99
  * @param {Repo[] | null | undefined} repos */
100
100
  function sectionOf(c, repos) {
@@ -0,0 +1,10 @@
1
+ export const BASELINE: number;
2
+ export function bridgeSpec(): string;
3
+ export function bridgeCommands(dataDir: string): string[];
4
+ export function needsBridge(file: string): boolean;
5
+ export function bridgeIfNeeded(
6
+ dataDir: string,
7
+ env: Record<string, string | undefined>,
8
+ log?: (line: string) => void,
9
+ ): boolean;
10
+ export function bridgeForServer(dataDir: string): boolean;
@@ -0,0 +1,84 @@
1
+ // The one step between a 0.0.x database and this release: 0.0.223's
2
+ // `work migrate` runs the sweeps that 0.0.x kept for its own upgrades and
3
+ // stamps schema version 1, the baseline src/server/migrations.ts starts
4
+ // from. `work setup` runs it before touching the service, and the server
5
+ // runs it itself when it opens a database that has not had it (installed
6
+ // without setup, or restarted before setup ran), naming the same commands
7
+ // only if it fails. Everything about crossing into 0.1 is here, so it goes
8
+ // whole once no install is left on 0.0.x. Plain node, no dependencies.
9
+ import { spawnSync } from "node:child_process";
10
+ import fs from "node:fs";
11
+ import { createRequire } from "node:module";
12
+ import path from "node:path";
13
+
14
+ /** The schema version 0.0.223 stamps: step 1 in src/server/migrations.ts. */
15
+ export const BASELINE = 1;
16
+
17
+ /** The release that brings a database to the baseline. WORK_BRIDGE_SPEC
18
+ * names another (an `npm pack` tarball of it) to try the bridge before it
19
+ * is published. */
20
+ export function bridgeSpec() {
21
+ return process.env.WORK_BRIDGE_SPEC || "@dylanpiercey/work@0.0.223";
22
+ }
23
+
24
+ /** What to run by hand for the database in `dataDir`: its data dir named
25
+ * outright, since the shell running it may not have the service's. */
26
+ export function bridgeCommands(dataDir) {
27
+ const quoted = /^[\w@%+=:,./-]+$/.test(dataDir)
28
+ ? dataDir
29
+ : `'${dataDir.replace(/'/g, `'\\''`)}'`;
30
+ return [
31
+ `WORK_DATA_DIR=${quoted} npx -y -p ${bridgeSpec()} work migrate`,
32
+ "work setup",
33
+ ];
34
+ }
35
+
36
+ /** Whether the database at `file` predates the baseline: it has tables and
37
+ * no version. A missing or empty one is simply new. node:sqlite is loaded
38
+ * here, not at the top: it warns on load under older node, and every other
39
+ * CLI command would say so. */
40
+ export function needsBridge(file) {
41
+ if (!fs.existsSync(file)) return false;
42
+ const { DatabaseSync } = createRequire(import.meta.url)("node:sqlite");
43
+ const db = new DatabaseSync(file, { readOnly: true });
44
+ try {
45
+ const { user_version } = db.prepare("PRAGMA user_version").get();
46
+ const tables = db
47
+ .prepare("SELECT 1 FROM sqlite_master WHERE type = 'table'")
48
+ .get();
49
+ return user_version < BASELINE && !!tables;
50
+ } finally {
51
+ db.close();
52
+ }
53
+ }
54
+
55
+ /** Bring the database in `dataDir` to the baseline when it predates it,
56
+ * with `env` (the service's) so the sweeps see the same data dir and
57
+ * workspaces root the server does. True when it is there (or never needed
58
+ * to be). The package's install scripts are skipped: `migrate` needs none,
59
+ * and a native build that fails would fail the bridge with it. */
60
+ export function bridgeIfNeeded(dataDir, env, log = () => {}) {
61
+ const file = path.join(dataDir, "work.db");
62
+ if (!needsBridge(file)) return true;
63
+ log(
64
+ `${file} predates 0.1: bringing it forward once with ${bridgeSpec()} (a one-time download)`,
65
+ );
66
+ // The npx beside this node, whatever PATH the service carries.
67
+ const sibling = path.join(path.dirname(process.execPath), "npx");
68
+ const npx = fs.existsSync(sibling) ? sibling : "npx";
69
+ // The package named, then its command: npx runs a spec that is a path
70
+ // (a tarball) as a program otherwise.
71
+ spawnSync(npx, ["-y", "-p", bridgeSpec(), "work", "migrate"], {
72
+ stdio: "inherit",
73
+ env: { ...env, WORK_DATA_DIR: dataDir, npm_config_ignore_scripts: "true" },
74
+ });
75
+ return !needsBridge(file);
76
+ }
77
+
78
+ /** The server's bridge, for db.ts to hand the migrations: with the server's
79
+ * own environment, before the database is opened, once per start. */
80
+ export function bridgeForServer(dataDir) {
81
+ return bridgeIfNeeded(dataDir, process.env, (line) =>
82
+ console.log(`[work] ${line}`),
83
+ );
84
+ }
@@ -45,6 +45,8 @@ export interface Doctor {
45
45
  github: GithubHostStatus[];
46
46
  /** Whether the server can keep this Linux host awake; null elsewhere. */
47
47
  awake: boolean | null;
48
+ /** git credential helpers that run a gh which is gone (config keys). */
49
+ staleGhHelpers: string[];
48
50
  }
49
51
  export function setupPath(base?: string): string;
50
52
  export function which(bin: string): string | null;
@@ -55,6 +57,9 @@ export function miseInstalls(): Promise<Record<
55
57
  { version: string; pin?: string }
56
58
  > | null>;
57
59
  export function ghKnownHosts(): string[];
60
+ export const VERSIONED_PATH: RegExp;
61
+ export function stableGh(): string | null;
62
+ export function staleGhHelpers(): Promise<string[]>;
58
63
  export function discoverAgents(fresh?: boolean): DoctorAgent[];
59
64
  export function doctor(opts?: { hosts?: string[] }): Promise<Doctor>;
60
65
  export function formatDoctor(d: Doctor): string;
@@ -135,6 +135,43 @@ async function readMiseInstalls() {
135
135
  return out;
136
136
  }
137
137
 
138
+ /** A path owned by one release of a version manager — mise/asdf
139
+ * `installs`, homebrew's `Cellar`, nvm's `versions` — which that tool
140
+ * deletes on its next update. */
141
+ export const VERSIONED_PATH = /\/(installs|Cellar|versions|toolchains)\//;
142
+
143
+ /** The gh for git to run as a credential helper: the launcher on PATH
144
+ * (mise's shim, /usr/bin/gh), when it is not itself one release's. Still an
145
+ * absolute path, so it works for GUI clients and cron jobs that never
146
+ * sourced a shell profile, but one that follows upgrades. */
147
+ export function stableGh() {
148
+ const gh = which("gh");
149
+ return gh && !VERSIONED_PATH.test(gh) ? gh : null;
150
+ }
151
+
152
+ /** Credential helpers in ~/.gitconfig that run a gh which is gone, by
153
+ * config key. `gh auth setup-git` writes the absolute path of the gh that
154
+ * ran it, and git runs that string literally: once a version manager's
155
+ * upgrade deletes it, every https push fails with "could not read
156
+ * Username" while `gh` itself still works. Listed only when there is a
157
+ * stable gh to point them at, which `work setup` does. */
158
+ export async function staleGhHelpers() {
159
+ if (!stableGh()) return [];
160
+ const { stdout } = await run("git", [
161
+ "config",
162
+ "--global",
163
+ "--get-regexp",
164
+ String.raw`^credential\..*\.helper$`,
165
+ ]);
166
+ const keys = new Set();
167
+ for (const line of stdout.split("\n")) {
168
+ const sp = line.indexOf(" ");
169
+ const bin = /^!(\S+) auth git-credential$/.exec(line.slice(sp + 1))?.[1];
170
+ if (sp > 0 && bin && !fs.existsSync(bin)) keys.add(line.slice(0, sp));
171
+ }
172
+ return [...keys];
173
+ }
174
+
138
175
  /** Hosts `gh` knows about (~/.config/gh/hosts.yml top-level keys) — the
139
176
  * source of truth for "which GitHub hosts has this machine signed in to",
140
177
  * merged with whatever the caller has configured. */
@@ -338,11 +375,12 @@ export async function doctor(opts = {}) {
338
375
  ...(opts.hosts || []),
339
376
  ...ghKnownHosts(),
340
377
  ]);
341
- const [versions, github, awake, extensions] = await Promise.all([
378
+ const [versions, github, awake, extensions, helpers] = await Promise.all([
342
379
  miseVersions(),
343
380
  Promise.all([...hostSet].map(githubHostStatus)),
344
381
  canStayAwake(),
345
382
  ghExtensions(),
383
+ staleGhHelpers(),
346
384
  ]);
347
385
 
348
386
  const tools = TOOLS.map((t) => {
@@ -390,6 +428,7 @@ export async function doctor(opts = {}) {
390
428
  agents,
391
429
  github,
392
430
  awake,
431
+ staleGhHelpers: helpers,
393
432
  };
394
433
  }
395
434
 
@@ -423,6 +462,11 @@ export function formatDoctor(d) {
423
462
  `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`,
424
463
  );
425
464
  }
465
+ for (const key of d.staleGhHelpers) {
466
+ lines.push(
467
+ `git ✗ ${key} runs a gh that is gone, so https pushes fail: \`work setup\` points it at the gh on PATH`,
468
+ );
469
+ }
426
470
  lines.push("");
427
471
  lines.push(d.ready ? "ready" : `not ready, missing: ${d.missing.join(", ")}`);
428
472
  return lines.join("\n");
@@ -21,3 +21,4 @@ export function installAgent(id: string, opts?: RunOpts): Promise<void>;
21
21
  export function authGithub(host: string, opts?: RunOpts): Promise<string[]>;
22
22
  export function refreshGithub(host: string, opts?: RunOpts): Promise<string[]>;
23
23
  export function logoutGithub(host: string, opts?: RunOpts): Promise<string[]>;
24
+ export function repairGhHelpers(keys: string[], opts?: RunOpts): void;
@@ -7,7 +7,7 @@ import fs from "node:fs";
7
7
  import os from "node:os";
8
8
  import path from "node:path";
9
9
  import { agentById, toolById } from "./catalog.mjs";
10
- import { setupPath, which } from "./doctor.mjs";
10
+ import { setupPath, stableGh, which } from "./doctor.mjs";
11
11
 
12
12
  /**
13
13
  * Run a command, streaming each output line to `log`. stdout/err are
@@ -270,3 +270,23 @@ export async function logoutGithub(host, opts = {}) {
270
270
  env: { GH_PROMPT_DISABLED: "1" },
271
271
  });
272
272
  }
273
+
274
+ /** Point credential helpers that run a gh which is gone (`keys`, from
275
+ * doctor's staleGhHelpers) at the stable one. The value pattern edits only
276
+ * gh's own entry: `gh auth setup-git` writes an empty helper above it to
277
+ * reset any inherited ones, and that must survive. */
278
+ export function repairGhHelpers(keys, { log = () => {} } = {}) {
279
+ const gh = stableGh();
280
+ if (!gh || !keys.length) return;
281
+ for (const key of keys) {
282
+ execFileSync("git", [
283
+ "config",
284
+ "--global",
285
+ "--replace-all",
286
+ key,
287
+ `!${gh} auth git-credential`,
288
+ "auth git-credential",
289
+ ]);
290
+ }
291
+ log(`pointed ${keys.length} git credential helper(s) at ${gh}`);
292
+ }
@@ -1,6 +1,6 @@
1
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.
2
+ // rule for the CLI (the socket unit, its own requests to the server) and
3
+ // the server (the hooks it writes for panes and bare caches).
4
4
 
5
5
  /** Addresses that mean every interface. */
6
6
  const EVERY = new Set(["0.0.0.0", "::", "*"]);
@@ -58,7 +58,8 @@ export function decodeRepo(entry) {
58
58
  base = at > 0 ? entry.slice(at + 1) : undefined;
59
59
  } else if (entry && typeof entry === "object") {
60
60
  const o = /** @type {Record<string, unknown>} */ (entry);
61
- // Format-1 rows and API shapes spell the name differently.
61
+ // A workspace's repo rows (`work workspace --json`, pasted as an
62
+ // invite) and the API's own bodies spell the name differently.
62
63
  full = String(o.repo ?? o.full_name ?? o.fullName ?? "");
63
64
  dir = typeof o.dir === "string" ? o.dir : undefined;
64
65
  if (typeof o.worktree === "string") dir = o.worktree;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dylanpiercey/work",
3
- "version": "0.0.223",
3
+ "version": "0.1.0",
4
4
  "type": "module",
5
5
  "description": "Web GUI for agentic dev workspaces",
6
6
  "license": "MIT",
@@ -15,8 +15,7 @@
15
15
  "dist",
16
16
  "bin",
17
17
  "lib",
18
- "install.sh",
19
- "scripts/migrate.mjs"
18
+ "install.sh"
20
19
  ],
21
20
  "publishConfig": {
22
21
  "access": "public"
package/dist/_LF2Fo5WE.js DELETED
@@ -1,2 +0,0 @@
1
- import { h as notifySessionsChanged } from "./_CpANOzpd.js";
2
- export { notifySessionsChanged };
Binary file
@@ -1 +0,0 @@
1
- import{$input_workspaceChange as e}from"./_unwtcXFQ.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import"./_xdrkfok5.js";import{C as e,F as t,G as n,I as r,a as i,b as a,i as o}from"./_BGCK5I_O.js";import"./_C9qO_dny.js";import"./_COECwOVb.js";import"./_qJTL2ooe.js";var s=`_gW _d5`,c=`_gX _d6`,l=`<li><span> </span><!><span><!><!></span></li>`,u=` D D l%b D%b%m`,d=e(0),f=r(6,0,e=>d(e,e._.o)),p=f,m=e(0),h=r(5,0,e=>m(e,e._.n)),g=h,_=r(3,1,e=>{o(e.a,`title`,e._.m||void 0),n(e.b,e._.m||``)}),v=e=>{_._(e),i(e.a,c)},y=r(3,0,e=>n(e.c,e._.l||`Starting…`)),b=e=>{y._(e),i(e.a,[`_cc`,c]),i(e.b,`_2`)},x=(e,t)=>i(e.a,[`_dZ`,`_gU`,t&&`_gV`]);function S(e){i(e.b,[`_M`,s]),i(e.e,`_d7`)}var C=(e,t)=>{o(e.b,`title`,t),n(e.c,t)},w=t(3,`<span><span></span> </span>`,` D b `,b,`<span> </span>`,` D `,v),T=a(11,e=>{w(e,+(e.l==null)),y(e)}),E=t(5,`<!><!><!>`,`b%`,g),D=a(13,e=>{E(e,+!e.n),h(e)}),O=t(6,`<!><!><!>`,`b%`,p),k=a(14,e=>{O(e,+!e.o),f(e)}),A=a(12,_);export{D as a,l as c,x as i,u as l,T as n,C as o,A as r,S as s,k as t};
@@ -1 +0,0 @@
1
- import{$input_instanceChange as e}from"./_Da2Dmt_d.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_onScopeChange as e}from"./_BnOOD6nr.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_filesHref as e}from"./_BJRSndB4.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_agentsChange as e}from"./_Da2Dmt_d.js";export{e as _};
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_findOpen as e}from"./_BJRSndB4.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_status as e}from"./_unwtcXFQ.js";export{e as _};
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_onSent as e}from"./_BJRSndB4.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_findOpenChange as e}from"./_BJRSndB4.js";export{e as _};
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_filesHref as e}from"./_BnOOD6nr.js";export{e as _};
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_file as e}from"./_BJRSndB4.js";export{e as _};
@@ -1 +0,0 @@
1
- import{C as e,E as t,S as n,T as r,Y as i,w as a}from"./_xdrkfok5.js";var o=r,s=(e=>`/${e}&`)(t);function c(t){e(t.a,i)}var l=(e,t)=>a(e.a,t),u=(e,t)=>n(e.a,t);export{s as a,o as i,l as n,c as r,u as t};
@@ -1 +0,0 @@
1
- import{$input_lineChange as e}from"./_BJRSndB4.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_workspaceName as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_onLoaded as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_findOpenChange as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_rev as e}from"./_BnOOD6nr.js";export{e as _};
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_setup as e}from"./_Da2Dmt_d.js";export{e as _};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_treeOpen as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_active as e}from"./_BJRSndB4.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_findableChange as e}from"./_BJRSndB4.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$setup as e,$template as t,$walks as n}from"./_BJRSndB4.js";var r=[t,n,e];export{r as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_agents as e}from"./_Da2Dmt_d.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_fileChange as e}from"./_BJRSndB4.js";export{e as _};
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_pageActive as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_workspaceId as e}from"./_BnOOD6nr.js";export{e as _};
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_preferredChange as e}from"./_Da2Dmt_d.js";export{e as _};
@@ -1 +0,0 @@
1
- import{C as e,E as t,S as n,T as r,dt as i,w as a}from"./_xdrkfok5.js";var o=r,s=(e=>`/${e}&`)(t);function c(t){e(t.a,i)}var l=(e,t)=>a(e.a,t),u=(e,t)=>n(e.a,t),d=`_cf _9 __`;export{o as a,c as i,u as n,s as o,l as r,d as t};
@@ -1 +0,0 @@
1
- import{$input_findTick as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_findable as e}from"./_BJRSndB4.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_fileChange as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_findOpen as e}from"./_BnOOD6nr.js";export{e as _};
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$input_preferred as e}from"./_Da2Dmt_d.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_changesHref as e}from"./_BnOOD6nr.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_revealNonce as e}from"./_BJRSndB4.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_focusNonce as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_focusFile as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_findTickChange as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_onRevChange as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_workspaceId as e}from"./_BJRSndB4.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_sessions as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_changesHref as e}from"./_BJRSndB4.js";export{e as _};
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{$setup as e,$template as t,$walks as n}from"./_BnOOD6nr.js";var r=[t,n,e];export{r as _};
@@ -1 +0,0 @@
1
- import{C as e,E as t,S as n,T as r,w as i,z as a}from"./_xdrkfok5.js";var o=r,s=(e=>`/${e}&`)(t);function c(t){e(t.a,a)}var l=(e,t)=>i(e.a,t),u=(e,t)=>n(e.a,t);export{s as a,o as i,l as n,c as r,u as t};
Binary file
@@ -1 +0,0 @@
1
- import{$input_sectionChange as e}from"./_Da2Dmt_d.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_line as e}from"./_BJRSndB4.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_workspaceBranch as e}from"./_BnOOD6nr.js";export{e as _};
@@ -1 +0,0 @@
1
- import{$input_onOpenFile as e}from"./_BnOOD6nr.js";export{e as _};
Binary file
@@ -1 +0,0 @@
1
- import{$input_onOpenDiff as e}from"./_BJRSndB4.js";export{e as _};