@mx-space/cli 0.15.0 → 0.15.1

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 (615) hide show
  1. package/README.md +1 -1
  2. package/dist/{Lexical.dev-Cck4n26y.mjs → Lexical.dev-BSvx45_E.mjs} +127 -94
  3. package/dist/{Lexical.node-D6wf2D5M.mjs → Lexical.node-kAh5GM2n.mjs} +1 -1
  4. package/dist/{Lexical.prod-DCwS1oTq.mjs → Lexical.prod-Bqwgb3ez.mjs} +4 -2
  5. package/dist/{LexicalClipboard.dev-CMkPHV7O.mjs → LexicalClipboard.dev-BWU3KXIa.mjs} +18 -14
  6. package/dist/{LexicalClipboard.node-m4nZ7IYw.mjs → LexicalClipboard.node-BygAdNdF.mjs} +1 -1
  7. package/dist/{LexicalClipboard.prod-B_rN1vE1.mjs → LexicalClipboard.prod-BtMuKNyT.mjs} +10 -10
  8. package/dist/{LexicalCodeCore.dev-DyJw3i8V.mjs → LexicalCodeCore.dev-CD2xgvDs.mjs} +43 -25
  9. package/dist/{LexicalCodeCore.prod-DPXLHQLF.mjs → LexicalCodeCore.prod-Bl6FFMc7.mjs} +6 -6
  10. package/dist/{LexicalDragon.dev-ZkNfMwrE.mjs → LexicalDragon.dev-BwdYhm4K.mjs} +2 -2
  11. package/dist/{LexicalDragon.node-Ds9oLUFh.mjs → LexicalDragon.node-CpJhkCVV.mjs} +1 -1
  12. package/dist/{LexicalDragon.prod-B58ic2av.mjs → LexicalDragon.prod-CvXmWwo1.mjs} +2 -2
  13. package/dist/{LexicalExtension.dev-DvwHs1Xv.mjs → LexicalExtension.dev-LcRLXI5Z.mjs} +25 -13
  14. package/dist/{LexicalExtension.node-5OymZQfy.mjs → LexicalExtension.node-BwJt2LXV.mjs} +1 -1
  15. package/dist/{LexicalExtension.prod-Ce0T5smQ.mjs → LexicalExtension.prod-lg8_33-H.mjs} +16 -13
  16. package/dist/{LexicalHeadless.dev-DA0WldSR.mjs → LexicalHeadless.dev-BeUbKBes.mjs} +1 -1
  17. package/dist/{LexicalHeadless.prod-1kQgKB6c.mjs → LexicalHeadless.prod-4gbIA8HM.mjs} +1 -1
  18. package/dist/{LexicalHtml.dev-BDB7CUrx.mjs → LexicalHtml.dev-BLdZWTCJ.mjs} +20 -14
  19. package/dist/{LexicalHtml.node-DpVNt7It.mjs → LexicalHtml.node-BeuJMvvt.mjs} +1 -1
  20. package/dist/{LexicalHtml.prod-HkxM5scw.mjs → LexicalHtml.prod-CHUyCocN.mjs} +4 -4
  21. package/dist/{LexicalLink.dev-C5zNJlrm.mjs → LexicalLink.dev-DgsFRqw0.mjs} +28 -21
  22. package/dist/{LexicalLink.prod-Bkt9hQAt.mjs → LexicalLink.prod-CkXkeKY2.mjs} +6 -5
  23. package/dist/{LexicalList.dev-B7VgME-m.mjs → LexicalList.dev-OOms3kQi.mjs} +4 -4
  24. package/dist/{LexicalList.prod-B8c7TDjH.mjs → LexicalList.prod-DzMBeqHn.mjs} +4 -4
  25. package/dist/{LexicalMarkdown.dev-B5z9kLbV.mjs → LexicalMarkdown.dev-DJLKbZtD.mjs} +40 -29
  26. package/dist/{LexicalMarkdown.prod-wKzw7FFH.mjs → LexicalMarkdown.prod-Cp21kDCU.mjs} +10 -7
  27. package/dist/{LexicalRichText.dev-CUd6Li5F.mjs → LexicalRichText.dev-0rkAGjUf.mjs} +15 -11
  28. package/dist/{LexicalRichText.node-BKfaQ-CH.mjs → LexicalRichText.node-Cd-BySPE.mjs} +4 -4
  29. package/dist/{LexicalRichText.prod-SBewjJHx.mjs → LexicalRichText.prod-DTQiEr8C.mjs} +17 -11
  30. package/dist/{LexicalSelection.dev-D27JOCqj.mjs → LexicalSelection.dev-Bi0VlUEv.mjs} +28 -24
  31. package/dist/{LexicalSelection.node-DBEwPjBu.mjs → LexicalSelection.node-t2U46EF_.mjs} +1 -1
  32. package/dist/{LexicalSelection.prod-OaYhXHOL.mjs → LexicalSelection.prod-CrFG111g.mjs} +2 -2
  33. package/dist/{LexicalTable.dev-6IFFOAE0.mjs → LexicalTable.dev-D-sFhO-o.mjs} +33 -28
  34. package/dist/{LexicalTable.prod-2CaLZ7fH.mjs → LexicalTable.prod-DwYaa_dN.mjs} +10 -9
  35. package/dist/{LexicalUtils.dev-DJA7J_7v.mjs → LexicalUtils.dev-Q2q3-UDM.mjs} +8 -5
  36. package/dist/{LexicalUtils.node-Df9oPTlA.mjs → LexicalUtils.node-Dl7OvqJV.mjs} +1 -1
  37. package/dist/{LexicalUtils.prod-Bb7V4Ewg.mjs → LexicalUtils.prod-CBnq_iEV.mjs} +7 -6
  38. package/dist/bin/mxs.mjs +1 -1
  39. package/dist/esm-CNZ7kdTg.mjs +2 -0
  40. package/dist/{esm-DLzrv7gD.mjs → esm-ZXjJmLEC.mjs} +257 -260
  41. package/dist/index.mjs +1 -1
  42. package/dist/{mxs-BIRW5Axj.mjs → mxs-DC9zR3f2.mjs} +759 -539
  43. package/dist/{rolldown-runtime-JspESFgx.mjs → rolldown-runtime-B4iAMlE-.mjs} +1 -1
  44. package/dist/src/bin/mxs.d.ts +2 -0
  45. package/dist/src/bin/mxs.js +310 -0
  46. package/dist/src/cli/ai/_poll.d.ts +12 -0
  47. package/dist/src/cli/ai/_poll.js +38 -0
  48. package/dist/src/cli/ai/_resolve.d.ts +8 -0
  49. package/dist/src/cli/ai/_resolve.js +27 -0
  50. package/dist/src/cli/ai/index.d.ts +127 -0
  51. package/dist/src/cli/ai/index.js +46 -0
  52. package/dist/src/cli/ai/insights/by-article.d.ts +10 -0
  53. package/dist/src/cli/ai/insights/by-article.js +21 -0
  54. package/dist/src/cli/ai/insights/delete.d.ts +7 -0
  55. package/dist/src/cli/ai/insights/delete.js +18 -0
  56. package/dist/src/cli/ai/insights/edit.d.ts +8 -0
  57. package/dist/src/cli/ai/insights/edit.js +54 -0
  58. package/dist/src/cli/ai/insights/get.d.ts +6 -0
  59. package/dist/src/cli/ai/insights/get.js +11 -0
  60. package/dist/src/cli/ai/insights/index.d.ts +30 -0
  61. package/dist/src/cli/ai/insights/index.js +17 -0
  62. package/dist/src/cli/ai/insights/list.d.ts +10 -0
  63. package/dist/src/cli/ai/insights/list.js +20 -0
  64. package/dist/src/cli/ai/insights/refresh.d.ts +10 -0
  65. package/dist/src/cli/ai/insights/refresh.js +25 -0
  66. package/dist/src/cli/ai/insights/translate.d.ts +10 -0
  67. package/dist/src/cli/ai/insights/translate.js +25 -0
  68. package/dist/src/cli/ai/overview/by-article.d.ts +7 -0
  69. package/dist/src/cli/ai/overview/by-article.js +15 -0
  70. package/dist/src/cli/ai/overview/index.d.ts +11 -0
  71. package/dist/src/cli/ai/overview/index.js +4 -0
  72. package/dist/src/cli/ai/overview/list.d.ts +10 -0
  73. package/dist/src/cli/ai/overview/list.js +20 -0
  74. package/dist/src/cli/ai/summary/by-article.d.ts +10 -0
  75. package/dist/src/cli/ai/summary/by-article.js +21 -0
  76. package/dist/src/cli/ai/summary/delete.d.ts +7 -0
  77. package/dist/src/cli/ai/summary/delete.js +18 -0
  78. package/dist/src/cli/ai/summary/edit.d.ts +8 -0
  79. package/dist/src/cli/ai/summary/edit.js +54 -0
  80. package/dist/src/cli/ai/summary/get.d.ts +6 -0
  81. package/dist/src/cli/ai/summary/get.js +11 -0
  82. package/dist/src/cli/ai/summary/index.d.ts +30 -0
  83. package/dist/src/cli/ai/summary/index.js +9 -0
  84. package/dist/src/cli/ai/summary/list.d.ts +10 -0
  85. package/dist/src/cli/ai/summary/list.js +20 -0
  86. package/dist/src/cli/ai/summary/regen.d.ts +10 -0
  87. package/dist/src/cli/ai/summary/regen.js +25 -0
  88. package/dist/src/cli/ai/summary/translate.d.ts +10 -0
  89. package/dist/src/cli/ai/summary/translate.js +25 -0
  90. package/dist/src/cli/ai/translate/by-article.d.ts +9 -0
  91. package/dist/src/cli/ai/translate/by-article.js +19 -0
  92. package/dist/src/cli/ai/translate/delete.d.ts +7 -0
  93. package/dist/src/cli/ai/translate/delete.js +18 -0
  94. package/dist/src/cli/ai/translate/edit.d.ts +8 -0
  95. package/dist/src/cli/ai/translate/edit.js +97 -0
  96. package/dist/src/cli/ai/translate/entries/delete.d.ts +7 -0
  97. package/dist/src/cli/ai/translate/entries/delete.js +18 -0
  98. package/dist/src/cli/ai/translate/entries/edit.d.ts +8 -0
  99. package/dist/src/cli/ai/translate/entries/edit.js +73 -0
  100. package/dist/src/cli/ai/translate/entries/generate.d.ts +7 -0
  101. package/dist/src/cli/ai/translate/entries/generate.js +15 -0
  102. package/dist/src/cli/ai/translate/entries/index.d.ts +17 -0
  103. package/dist/src/cli/ai/translate/entries/index.js +6 -0
  104. package/dist/src/cli/ai/translate/entries/list.d.ts +10 -0
  105. package/dist/src/cli/ai/translate/entries/list.js +20 -0
  106. package/dist/src/cli/ai/translate/get.d.ts +6 -0
  107. package/dist/src/cli/ai/translate/get.js +11 -0
  108. package/dist/src/cli/ai/translate/index.d.ts +40 -0
  109. package/dist/src/cli/ai/translate/index.js +19 -0
  110. package/dist/src/cli/ai/translate/languages.d.ts +7 -0
  111. package/dist/src/cli/ai/translate/languages.js +15 -0
  112. package/dist/src/cli/ai/translate/list.d.ts +9 -0
  113. package/dist/src/cli/ai/translate/list.js +19 -0
  114. package/dist/src/cli/ai/translate/run.d.ts +10 -0
  115. package/dist/src/cli/ai/translate/run.js +31 -0
  116. package/dist/src/cli/ai/tts/by-article.d.ts +7 -0
  117. package/dist/src/cli/ai/tts/by-article.js +15 -0
  118. package/dist/src/cli/ai/tts/delete.d.ts +7 -0
  119. package/dist/src/cli/ai/tts/delete.js +18 -0
  120. package/dist/src/cli/ai/tts/index.d.ts +22 -0
  121. package/dist/src/cli/ai/tts/index.js +7 -0
  122. package/dist/src/cli/ai/tts/list.d.ts +10 -0
  123. package/dist/src/cli/ai/tts/list.js +20 -0
  124. package/dist/src/cli/ai/tts/run.d.ts +10 -0
  125. package/dist/src/cli/ai/tts/run.js +25 -0
  126. package/dist/src/cli/ai/tts/voices.d.ts +7 -0
  127. package/dist/src/cli/ai/tts/voices.js +12 -0
  128. package/dist/src/cli/ai/views.d.ts +3 -0
  129. package/dist/src/cli/ai/views.js +45 -0
  130. package/dist/src/cli/auth/index.d.ts +6 -0
  131. package/dist/src/cli/auth/index.js +22 -0
  132. package/dist/src/cli/auth/login.d.ts +11 -0
  133. package/dist/src/cli/auth/login.js +168 -0
  134. package/dist/src/cli/auth/logout.d.ts +6 -0
  135. package/dist/src/cli/auth/logout.js +21 -0
  136. package/dist/src/cli/auth/status.d.ts +4 -0
  137. package/dist/src/cli/auth/status.js +31 -0
  138. package/dist/src/cli/auth/view.d.ts +25 -0
  139. package/dist/src/cli/auth/view.js +46 -0
  140. package/dist/src/cli/auth/whoami.d.ts +7 -0
  141. package/dist/src/cli/auth/whoami.js +44 -0
  142. package/dist/src/cli/category/create.d.ts +10 -0
  143. package/dist/src/cli/category/create.js +24 -0
  144. package/dist/src/cli/category/delete.d.ts +8 -0
  145. package/dist/src/cli/category/delete.js +21 -0
  146. package/dist/src/cli/category/get.d.ts +6 -0
  147. package/dist/src/cli/category/get.js +11 -0
  148. package/dist/src/cli/category/index.d.ts +20 -0
  149. package/dist/src/cli/category/index.js +41 -0
  150. package/dist/src/cli/category/list.d.ts +4 -0
  151. package/dist/src/cli/category/list.js +10 -0
  152. package/dist/src/cli/category/update.d.ts +12 -0
  153. package/dist/src/cli/category/update.js +34 -0
  154. package/dist/src/cli/comment/_flags.d.ts +28 -0
  155. package/dist/src/cli/comment/_flags.js +48 -0
  156. package/dist/src/cli/comment/approve.d.ts +9 -0
  157. package/dist/src/cli/comment/approve.js +23 -0
  158. package/dist/src/cli/comment/delete.d.ts +9 -0
  159. package/dist/src/cli/comment/delete.js +24 -0
  160. package/dist/src/cli/comment/get.d.ts +6 -0
  161. package/dist/src/cli/comment/get.js +12 -0
  162. package/dist/src/cli/comment/index.d.ts +34 -0
  163. package/dist/src/cli/comment/index.js +53 -0
  164. package/dist/src/cli/comment/list.d.ts +9 -0
  165. package/dist/src/cli/comment/list.js +20 -0
  166. package/dist/src/cli/comment/reject.d.ts +9 -0
  167. package/dist/src/cli/comment/reject.js +23 -0
  168. package/dist/src/cli/comment/reply.d.ts +9 -0
  169. package/dist/src/cli/comment/reply.js +31 -0
  170. package/dist/src/cli/comment/unread.d.ts +7 -0
  171. package/dist/src/cli/comment/unread.js +21 -0
  172. package/dist/src/cli/comment/view.d.ts +3 -0
  173. package/dist/src/cli/comment/view.js +197 -0
  174. package/dist/src/cli/config/edit.d.ts +5 -0
  175. package/dist/src/cli/config/edit.js +36 -0
  176. package/dist/src/cli/config/get.d.ts +6 -0
  177. package/dist/src/cli/config/get.js +11 -0
  178. package/dist/src/cli/config/index.d.ts +10 -0
  179. package/dist/src/cli/config/index.js +22 -0
  180. package/dist/src/cli/config/list.d.ts +4 -0
  181. package/dist/src/cli/config/list.js +10 -0
  182. package/dist/src/cli/config/set.d.ts +9 -0
  183. package/dist/src/cli/config/set.js +48 -0
  184. package/dist/src/cli/draft/_shared.d.ts +27 -0
  185. package/dist/src/cli/draft/_shared.js +85 -0
  186. package/dist/src/cli/draft/create.d.ts +21 -0
  187. package/dist/src/cli/draft/create.js +34 -0
  188. package/dist/src/cli/draft/delete.d.ts +7 -0
  189. package/dist/src/cli/draft/delete.js +20 -0
  190. package/dist/src/cli/draft/get.d.ts +6 -0
  191. package/dist/src/cli/draft/get.js +11 -0
  192. package/dist/src/cli/draft/index.d.ts +54 -0
  193. package/dist/src/cli/draft/index.js +42 -0
  194. package/dist/src/cli/draft/list.d.ts +11 -0
  195. package/dist/src/cli/draft/list.js +23 -0
  196. package/dist/src/cli/draft/publish.d.ts +8 -0
  197. package/dist/src/cli/draft/publish.js +64 -0
  198. package/dist/src/cli/draft/update.d.ts +22 -0
  199. package/dist/src/cli/draft/update.js +29 -0
  200. package/dist/src/cli/file/_shared.d.ts +6 -0
  201. package/dist/src/cli/file/_shared.js +5 -0
  202. package/dist/src/cli/file/delete.d.ts +8 -0
  203. package/dist/src/cli/file/delete.js +21 -0
  204. package/dist/src/cli/file/index.d.ts +19 -0
  205. package/dist/src/cli/file/index.js +33 -0
  206. package/dist/src/cli/file/list.d.ts +6 -0
  207. package/dist/src/cli/file/list.js +11 -0
  208. package/dist/src/cli/file/rename.d.ts +8 -0
  209. package/dist/src/cli/file/rename.js +16 -0
  210. package/dist/src/cli/file/upload.d.ts +9 -0
  211. package/dist/src/cli/file/upload.js +32 -0
  212. package/dist/src/cli/help/index.d.ts +62 -0
  213. package/dist/src/cli/help/index.js +276 -0
  214. package/dist/src/cli/help/registry.d.ts +28 -0
  215. package/dist/src/cli/help/registry.js +29 -0
  216. package/dist/src/cli/note/_flags.d.ts +66 -0
  217. package/dist/src/cli/note/_flags.js +73 -0
  218. package/dist/src/cli/note/create.d.ts +23 -0
  219. package/dist/src/cli/note/create.js +25 -0
  220. package/dist/src/cli/note/delete.d.ts +8 -0
  221. package/dist/src/cli/note/delete.js +21 -0
  222. package/dist/src/cli/note/edit.d.ts +28 -0
  223. package/dist/src/cli/note/edit.js +114 -0
  224. package/dist/src/cli/note/get.d.ts +6 -0
  225. package/dist/src/cli/note/get.js +29 -0
  226. package/dist/src/cli/note/index.d.ts +77 -0
  227. package/dist/src/cli/note/index.js +63 -0
  228. package/dist/src/cli/note/list.d.ts +10 -0
  229. package/dist/src/cli/note/list.js +22 -0
  230. package/dist/src/cli/note/publish.d.ts +7 -0
  231. package/dist/src/cli/note/publish.js +17 -0
  232. package/dist/src/cli/note/unpublish.d.ts +7 -0
  233. package/dist/src/cli/note/unpublish.js +17 -0
  234. package/dist/src/cli/note/update.d.ts +25 -0
  235. package/dist/src/cli/note/update.js +36 -0
  236. package/dist/src/cli/note/view.d.ts +3 -0
  237. package/dist/src/cli/note/view.js +162 -0
  238. package/dist/src/cli/page/create.d.ts +41 -0
  239. package/dist/src/cli/page/create.js +56 -0
  240. package/dist/src/cli/page/delete.d.ts +7 -0
  241. package/dist/src/cli/page/delete.js +37 -0
  242. package/dist/src/cli/page/edit.d.ts +19 -0
  243. package/dist/src/cli/page/edit.js +117 -0
  244. package/dist/src/cli/page/get.d.ts +6 -0
  245. package/dist/src/cli/page/get.js +16 -0
  246. package/dist/src/cli/page/index.d.ts +44 -0
  247. package/dist/src/cli/page/index.js +38 -0
  248. package/dist/src/cli/page/list.d.ts +4 -0
  249. package/dist/src/cli/page/list.js +10 -0
  250. package/dist/src/cli/page/update.d.ts +16 -0
  251. package/dist/src/cli/page/update.js +48 -0
  252. package/dist/src/cli/page/view.d.ts +2 -0
  253. package/dist/src/cli/page/view.js +79 -0
  254. package/dist/src/cli/post/_flags.d.ts +66 -0
  255. package/dist/src/cli/post/_flags.js +96 -0
  256. package/dist/src/cli/post/apply.d.ts +7 -0
  257. package/dist/src/cli/post/apply.js +70 -0
  258. package/dist/src/cli/post/create.d.ts +21 -0
  259. package/dist/src/cli/post/create.js +24 -0
  260. package/dist/src/cli/post/delete.d.ts +8 -0
  261. package/dist/src/cli/post/delete.js +21 -0
  262. package/dist/src/cli/post/edit.d.ts +26 -0
  263. package/dist/src/cli/post/edit.js +115 -0
  264. package/dist/src/cli/post/get.d.ts +7 -0
  265. package/dist/src/cli/post/get.js +15 -0
  266. package/dist/src/cli/post/index.d.ts +91 -0
  267. package/dist/src/cli/post/index.js +73 -0
  268. package/dist/src/cli/post/list.d.ts +10 -0
  269. package/dist/src/cli/post/list.js +23 -0
  270. package/dist/src/cli/post/publish.d.ts +7 -0
  271. package/dist/src/cli/post/publish.js +17 -0
  272. package/dist/src/cli/post/stage.d.ts +23 -0
  273. package/dist/src/cli/post/stage.js +55 -0
  274. package/dist/src/cli/post/unpublish.d.ts +7 -0
  275. package/dist/src/cli/post/unpublish.js +17 -0
  276. package/dist/src/cli/post/update.d.ts +23 -0
  277. package/dist/src/cli/post/update.js +38 -0
  278. package/dist/src/cli/post/view.d.ts +3 -0
  279. package/dist/src/cli/post/view.js +150 -0
  280. package/dist/src/cli/preview/index.d.ts +13 -0
  281. package/dist/src/cli/preview/index.js +226 -0
  282. package/dist/src/cli/profile/index.d.ts +14 -0
  283. package/dist/src/cli/profile/index.js +36 -0
  284. package/dist/src/cli/profile/ls.d.ts +5 -0
  285. package/dist/src/cli/profile/ls.js +26 -0
  286. package/dist/src/cli/profile/mark.d.ts +9 -0
  287. package/dist/src/cli/profile/mark.js +23 -0
  288. package/dist/src/cli/profile/rm.d.ts +12 -0
  289. package/dist/src/cli/profile/rm.js +50 -0
  290. package/dist/src/cli/profile/show.d.ts +9 -0
  291. package/dist/src/cli/profile/show.js +40 -0
  292. package/dist/src/cli/profile/use.d.ts +6 -0
  293. package/dist/src/cli/profile/use.js +11 -0
  294. package/dist/src/cli/profile/view.d.ts +8 -0
  295. package/dist/src/cli/profile/view.js +21 -0
  296. package/dist/src/cli/project/_flags.d.ts +56 -0
  297. package/dist/src/cli/project/_flags.js +130 -0
  298. package/dist/src/cli/project/create.d.ts +17 -0
  299. package/dist/src/cli/project/create.js +25 -0
  300. package/dist/src/cli/project/delete.d.ts +8 -0
  301. package/dist/src/cli/project/delete.js +22 -0
  302. package/dist/src/cli/project/edit.d.ts +11 -0
  303. package/dist/src/cli/project/edit.js +61 -0
  304. package/dist/src/cli/project/get.d.ts +7 -0
  305. package/dist/src/cli/project/get.js +14 -0
  306. package/dist/src/cli/project/index.d.ts +43 -0
  307. package/dist/src/cli/project/index.js +52 -0
  308. package/dist/src/cli/project/list.d.ts +8 -0
  309. package/dist/src/cli/project/list.js +19 -0
  310. package/dist/src/cli/project/update.d.ts +18 -0
  311. package/dist/src/cli/project/update.js +24 -0
  312. package/dist/src/cli/project/view-cmd.d.ts +7 -0
  313. package/dist/src/cli/project/view-cmd.js +15 -0
  314. package/dist/src/cli/project/view.d.ts +3 -0
  315. package/dist/src/cli/project/view.js +102 -0
  316. package/dist/src/cli/render/codehighlight.d.ts +8 -0
  317. package/dist/src/cli/render/codehighlight.js +264 -0
  318. package/dist/src/cli/render/envelope.d.ts +7 -0
  319. package/dist/src/cli/render/envelope.js +23 -0
  320. package/dist/src/cli/render/frontmatter.d.ts +8 -0
  321. package/dist/src/cli/render/frontmatter.js +50 -0
  322. package/dist/src/cli/render/helpers.d.ts +2 -0
  323. package/dist/src/cli/render/helpers.js +11 -0
  324. package/dist/src/cli/render/index.d.ts +7 -0
  325. package/dist/src/cli/render/index.js +10 -0
  326. package/dist/src/cli/render/lexical/blocks.d.ts +19 -0
  327. package/dist/src/cli/render/lexical/blocks.js +208 -0
  328. package/dist/src/cli/render/lexical/code.d.ts +2 -0
  329. package/dist/src/cli/render/lexical/code.js +22 -0
  330. package/dist/src/cli/render/lexical/embeds.d.ts +6 -0
  331. package/dist/src/cli/render/lexical/embeds.js +51 -0
  332. package/dist/src/cli/render/lexical/index.d.ts +9 -0
  333. package/dist/src/cli/render/lexical/index.js +25 -0
  334. package/dist/src/cli/render/lexical/inlines.d.ts +17 -0
  335. package/dist/src/cli/render/lexical/inlines.js +76 -0
  336. package/dist/src/cli/render/lexical/parser.d.ts +10 -0
  337. package/dist/src/cli/render/lexical/parser.js +64 -0
  338. package/dist/src/cli/render/lexical/walker.d.ts +21 -0
  339. package/dist/src/cli/render/lexical/walker.js +51 -0
  340. package/dist/src/cli/render/markdown.d.ts +18 -0
  341. package/dist/src/cli/render/markdown.js +196 -0
  342. package/dist/src/cli/render/metadata-block.d.ts +14 -0
  343. package/dist/src/cli/render/metadata-block.js +50 -0
  344. package/dist/src/cli/skill/all.d.ts +4 -0
  345. package/dist/src/cli/skill/all.js +11 -0
  346. package/dist/src/cli/skill/get.d.ts +6 -0
  347. package/dist/src/cli/skill/get.js +12 -0
  348. package/dist/src/cli/skill/index.d.ts +10 -0
  349. package/dist/src/cli/skill/index.js +34 -0
  350. package/dist/src/cli/skill/list.d.ts +4 -0
  351. package/dist/src/cli/skill/list.js +11 -0
  352. package/dist/src/cli/skill/search.d.ts +6 -0
  353. package/dist/src/cli/skill/search.js +12 -0
  354. package/dist/src/cli/skill/views.d.ts +6 -0
  355. package/dist/src/cli/skill/views.js +90 -0
  356. package/dist/src/cli/snippet/_flags.d.ts +57 -0
  357. package/dist/src/cli/snippet/_flags.js +123 -0
  358. package/dist/src/cli/snippet/_resolve.d.ts +4 -0
  359. package/dist/src/cli/snippet/_resolve.js +32 -0
  360. package/dist/src/cli/snippet/_sync.d.ts +5 -0
  361. package/dist/src/cli/snippet/_sync.js +54 -0
  362. package/dist/src/cli/snippet/create.d.ts +19 -0
  363. package/dist/src/cli/snippet/create.js +35 -0
  364. package/dist/src/cli/snippet/delete.d.ts +8 -0
  365. package/dist/src/cli/snippet/delete.js +28 -0
  366. package/dist/src/cli/snippet/edit.d.ts +7 -0
  367. package/dist/src/cli/snippet/edit.js +29 -0
  368. package/dist/src/cli/snippet/get.d.ts +6 -0
  369. package/dist/src/cli/snippet/get.js +12 -0
  370. package/dist/src/cli/snippet/index.d.ts +43 -0
  371. package/dist/src/cli/snippet/index.js +58 -0
  372. package/dist/src/cli/snippet/list.d.ts +9 -0
  373. package/dist/src/cli/snippet/list.js +20 -0
  374. package/dist/src/cli/snippet/pull.d.ts +8 -0
  375. package/dist/src/cli/snippet/pull.js +33 -0
  376. package/dist/src/cli/snippet/push.d.ts +10 -0
  377. package/dist/src/cli/snippet/push.js +31 -0
  378. package/dist/src/cli/snippet/update.d.ts +8 -0
  379. package/dist/src/cli/snippet/update.js +16 -0
  380. package/dist/src/cli/topic/create.d.ts +10 -0
  381. package/dist/src/cli/topic/create.js +24 -0
  382. package/dist/src/cli/topic/delete.d.ts +7 -0
  383. package/dist/src/cli/topic/delete.js +37 -0
  384. package/dist/src/cli/topic/get.d.ts +6 -0
  385. package/dist/src/cli/topic/get.js +15 -0
  386. package/dist/src/cli/topic/index.d.ts +20 -0
  387. package/dist/src/cli/topic/index.js +32 -0
  388. package/dist/src/cli/topic/list.d.ts +4 -0
  389. package/dist/src/cli/topic/list.js +10 -0
  390. package/dist/src/cli/topic/update.d.ts +11 -0
  391. package/dist/src/cli/topic/update.js +51 -0
  392. package/dist/src/cli/ui/index.d.ts +24 -0
  393. package/dist/src/cli/ui/index.js +83 -0
  394. package/dist/src/cli/update/index.d.ts +10 -0
  395. package/dist/src/cli/update/index.js +142 -0
  396. package/dist/src/domain/admin-link.d.ts +12 -0
  397. package/dist/src/domain/admin-link.js +45 -0
  398. package/dist/src/domain/content-spec.d.ts +20 -0
  399. package/dist/src/domain/content-spec.js +78 -0
  400. package/dist/src/domain/envelope-compat.d.ts +68 -0
  401. package/dist/src/domain/envelope-compat.js +121 -0
  402. package/dist/src/domain/envelope.d.ts +34 -0
  403. package/dist/src/domain/envelope.js +355 -0
  404. package/dist/src/domain/errors.d.ts +336 -0
  405. package/dist/src/domain/errors.js +239 -0
  406. package/dist/src/domain/gate.d.ts +14 -0
  407. package/dist/src/domain/gate.js +18 -0
  408. package/dist/src/domain/payload.d.ts +64 -0
  409. package/dist/src/domain/payload.js +237 -0
  410. package/dist/src/domain/preflight-guards.d.ts +54 -0
  411. package/dist/src/domain/preflight-guards.js +130 -0
  412. package/dist/src/domain/runtime-flags.d.ts +33 -0
  413. package/dist/src/domain/runtime-flags.js +166 -0
  414. package/dist/src/domain/schema/api-envelope.d.ts +67 -0
  415. package/dist/src/domain/schema/api-envelope.js +65 -0
  416. package/dist/src/domain/schema/category.d.ts +23 -0
  417. package/dist/src/domain/schema/category.js +19 -0
  418. package/dist/src/domain/schema/config.d.ts +13 -0
  419. package/dist/src/domain/schema/config.js +18 -0
  420. package/dist/src/domain/schema/note.d.ts +76 -0
  421. package/dist/src/domain/schema/note.js +35 -0
  422. package/dist/src/domain/schema/page.d.ts +40 -0
  423. package/dist/src/domain/schema/page.js +22 -0
  424. package/dist/src/domain/schema/post.d.ts +68 -0
  425. package/dist/src/domain/schema/post.js +35 -0
  426. package/dist/src/domain/schema/profile.d.ts +14 -0
  427. package/dist/src/domain/schema/profile.js +22 -0
  428. package/dist/src/domain/schema/topic.d.ts +24 -0
  429. package/dist/src/domain/schema/topic.js +16 -0
  430. package/dist/src/domain/version.d.ts +15 -0
  431. package/dist/src/domain/version.js +43 -0
  432. package/dist/src/index.d.ts +4 -0
  433. package/dist/src/index.js +8 -0
  434. package/dist/src/layers/App.d.ts +30 -0
  435. package/dist/src/layers/App.js +39 -0
  436. package/dist/src/services/Ai/index.d.ts +13 -0
  437. package/dist/src/services/Ai/index.js +127 -0
  438. package/dist/src/services/Ai/overview.d.ts +7 -0
  439. package/dist/src/services/Ai/overview.js +11 -0
  440. package/dist/src/services/Ai/resources.d.ts +7 -0
  441. package/dist/src/services/Ai/resources.js +59 -0
  442. package/dist/src/services/Ai/shared.d.ts +2 -0
  443. package/dist/src/services/Ai/shared.js +11 -0
  444. package/dist/src/services/Ai/tasks.d.ts +8 -0
  445. package/dist/src/services/Ai/tasks.js +144 -0
  446. package/dist/src/services/Ai/types.d.ts +130 -0
  447. package/dist/src/services/Ai/types.js +1 -0
  448. package/dist/src/services/Api.d.ts +67 -0
  449. package/dist/src/services/Api.js +348 -0
  450. package/dist/src/services/Auth.d.ts +101 -0
  451. package/dist/src/services/Auth.js +402 -0
  452. package/dist/src/services/Backup.d.ts +8 -0
  453. package/dist/src/services/Backup.js +4 -0
  454. package/dist/src/services/Cache.d.ts +8 -0
  455. package/dist/src/services/Cache.js +4 -0
  456. package/dist/src/services/Comment.d.ts +48 -0
  457. package/dist/src/services/Comment.js +102 -0
  458. package/dist/src/services/Config.d.ts +95 -0
  459. package/dist/src/services/Config.js +359 -0
  460. package/dist/src/services/Editor.d.ts +28 -0
  461. package/dist/src/services/Editor.js +95 -0
  462. package/dist/src/services/Lexical.d.ts +27 -0
  463. package/dist/src/services/Lexical.js +56 -0
  464. package/dist/src/services/Migration.d.ts +31 -0
  465. package/dist/src/services/Migration.js +177 -0
  466. package/dist/src/services/Profile.d.ts +29 -0
  467. package/dist/src/services/Profile.js +115 -0
  468. package/dist/src/services/Renderer/content.d.ts +16 -0
  469. package/dist/src/services/Renderer/content.js +110 -0
  470. package/dist/src/services/Renderer/datetime.d.ts +38 -0
  471. package/dist/src/services/Renderer/datetime.js +147 -0
  472. package/dist/src/services/Renderer/errors.d.ts +3 -0
  473. package/dist/src/services/Renderer/errors.js +59 -0
  474. package/dist/src/services/Renderer/index.d.ts +13 -0
  475. package/dist/src/services/Renderer/index.js +11 -0
  476. package/dist/src/services/Renderer/lists.d.ts +1 -0
  477. package/dist/src/services/Renderer/lists.js +101 -0
  478. package/dist/src/services/Renderer/options.d.ts +10 -0
  479. package/dist/src/services/Renderer/options.js +13 -0
  480. package/dist/src/services/Renderer/primitives.d.ts +4 -0
  481. package/dist/src/services/Renderer/primitives.js +12 -0
  482. package/dist/src/services/Renderer/service.d.ts +35 -0
  483. package/dist/src/services/Renderer/service.js +123 -0
  484. package/dist/src/services/Renderer/view.d.ts +16 -0
  485. package/dist/src/services/Renderer/view.js +1 -0
  486. package/dist/src/services/Resolver.d.ts +47 -0
  487. package/dist/src/services/Resolver.js +269 -0
  488. package/dist/src/services/Skill.d.ts +29 -0
  489. package/dist/src/services/Skill.js +421 -0
  490. package/dist/src/services/UpdateNotifier.d.ts +162 -0
  491. package/dist/src/services/UpdateNotifier.js +572 -0
  492. package/dist/test/cli/ai/ai.test.d.ts +1 -0
  493. package/dist/test/cli/ai/ai.test.js +507 -0
  494. package/dist/test/cli/ai/verbs.test.d.ts +1 -0
  495. package/dist/test/cli/ai/verbs.test.js +235 -0
  496. package/dist/test/cli/auth/login.test.d.ts +1 -0
  497. package/dist/test/cli/auth/login.test.js +236 -0
  498. package/dist/test/cli/auth/logout-whoami.test.d.ts +1 -0
  499. package/dist/test/cli/auth/logout-whoami.test.js +124 -0
  500. package/dist/test/cli/auth/status.test.d.ts +1 -0
  501. package/dist/test/cli/auth/status.test.js +90 -0
  502. package/dist/test/cli/category/category.test.d.ts +1 -0
  503. package/dist/test/cli/category/category.test.js +175 -0
  504. package/dist/test/cli/comment/comment.test.d.ts +1 -0
  505. package/dist/test/cli/comment/comment.test.js +445 -0
  506. package/dist/test/cli/config/config.test.d.ts +1 -0
  507. package/dist/test/cli/config/config.test.js +281 -0
  508. package/dist/test/cli/edit-roundtrip.test.d.ts +1 -0
  509. package/dist/test/cli/edit-roundtrip.test.js +259 -0
  510. package/dist/test/cli/file/file.test.d.ts +1 -0
  511. package/dist/test/cli/file/file.test.js +185 -0
  512. package/dist/test/cli/help.test.d.ts +1 -0
  513. package/dist/test/cli/help.test.js +289 -0
  514. package/dist/test/cli/note/create.test.d.ts +1 -0
  515. package/dist/test/cli/note/create.test.js +155 -0
  516. package/dist/test/cli/note/list.test.d.ts +1 -0
  517. package/dist/test/cli/note/list.test.js +115 -0
  518. package/dist/test/cli/note/publish.test.d.ts +1 -0
  519. package/dist/test/cli/note/publish.test.js +123 -0
  520. package/dist/test/cli/page/page.test.d.ts +1 -0
  521. package/dist/test/cli/page/page.test.js +185 -0
  522. package/dist/test/cli/post/create.test.d.ts +1 -0
  523. package/dist/test/cli/post/create.test.js +172 -0
  524. package/dist/test/cli/post/list.test.d.ts +1 -0
  525. package/dist/test/cli/post/list.test.js +133 -0
  526. package/dist/test/cli/post/publish.test.d.ts +1 -0
  527. package/dist/test/cli/post/publish.test.js +139 -0
  528. package/dist/test/cli/post/stage-apply.test.d.ts +1 -0
  529. package/dist/test/cli/post/stage-apply.test.js +215 -0
  530. package/dist/test/cli/post/update.test.d.ts +1 -0
  531. package/dist/test/cli/post/update.test.js +160 -0
  532. package/dist/test/cli/post-note-crud.test.d.ts +1 -0
  533. package/dist/test/cli/post-note-crud.test.js +362 -0
  534. package/dist/test/cli/profile/ls.test.d.ts +1 -0
  535. package/dist/test/cli/profile/ls.test.js +93 -0
  536. package/dist/test/cli/profile/mark-use.test.d.ts +1 -0
  537. package/dist/test/cli/profile/mark-use.test.js +216 -0
  538. package/dist/test/cli/project-crud.test.d.ts +1 -0
  539. package/dist/test/cli/project-crud.test.js +315 -0
  540. package/dist/test/cli/render/lexical.test.d.ts +1 -0
  541. package/dist/test/cli/render/lexical.test.js +216 -0
  542. package/dist/test/cli/render/markdown.test.d.ts +1 -0
  543. package/dist/test/cli/render/markdown.test.js +39 -0
  544. package/dist/test/cli/snippet-crud.test.d.ts +1 -0
  545. package/dist/test/cli/snippet-crud.test.js +293 -0
  546. package/dist/test/cli/topic/topic.test.d.ts +1 -0
  547. package/dist/test/cli/topic/topic.test.js +181 -0
  548. package/dist/test/cli/update.test.d.ts +1 -0
  549. package/dist/test/cli/update.test.js +395 -0
  550. package/dist/test/domain/content-spec.test.d.ts +1 -0
  551. package/dist/test/domain/content-spec.test.js +126 -0
  552. package/dist/test/domain/envelope-compat.test.d.ts +1 -0
  553. package/dist/test/domain/envelope-compat.test.js +126 -0
  554. package/dist/test/domain/envelope.test.d.ts +1 -0
  555. package/dist/test/domain/envelope.test.js +149 -0
  556. package/dist/test/domain/errors.test.d.ts +1 -0
  557. package/dist/test/domain/errors.test.js +127 -0
  558. package/dist/test/domain/gate.test.d.ts +1 -0
  559. package/dist/test/domain/gate.test.js +128 -0
  560. package/dist/test/domain/payload.test.d.ts +1 -0
  561. package/dist/test/domain/payload.test.js +259 -0
  562. package/dist/test/helper/test-fs.d.ts +24 -0
  563. package/dist/test/helper/test-fs.js +161 -0
  564. package/dist/test/helper/test-http.d.ts +31 -0
  565. package/dist/test/helper/test-http.js +66 -0
  566. package/dist/test/integration/_helpers.d.ts +5 -0
  567. package/dist/test/integration/_helpers.js +24 -0
  568. package/dist/test/integration/cli-error-envelope.test.d.ts +1 -0
  569. package/dist/test/integration/cli-error-envelope.test.js +137 -0
  570. package/dist/test/integration/cli-help-render.test.d.ts +1 -0
  571. package/dist/test/integration/cli-help-render.test.js +149 -0
  572. package/dist/test/integration/cli-help.test.d.ts +1 -0
  573. package/dist/test/integration/cli-help.test.js +67 -0
  574. package/dist/test/integration/cli-post-list.test.d.ts +1 -0
  575. package/dist/test/integration/cli-post-list.test.js +140 -0
  576. package/dist/test/integration/cli-skill.test.d.ts +1 -0
  577. package/dist/test/integration/cli-skill.test.js +74 -0
  578. package/dist/test/integration/cli-version.test.d.ts +1 -0
  579. package/dist/test/integration/cli-version.test.js +37 -0
  580. package/dist/test/services/Api.test.d.ts +1 -0
  581. package/dist/test/services/Api.test.js +553 -0
  582. package/dist/test/services/Auth.test.d.ts +1 -0
  583. package/dist/test/services/Auth.test.js +650 -0
  584. package/dist/test/services/Config.test.d.ts +1 -0
  585. package/dist/test/services/Config.test.js +510 -0
  586. package/dist/test/services/Datetime.test.d.ts +1 -0
  587. package/dist/test/services/Datetime.test.js +113 -0
  588. package/dist/test/services/Editor.test.d.ts +1 -0
  589. package/dist/test/services/Editor.test.js +205 -0
  590. package/dist/test/services/Lexical.errors.test.d.ts +1 -0
  591. package/dist/test/services/Lexical.errors.test.js +60 -0
  592. package/dist/test/services/Lexical.test.d.ts +1 -0
  593. package/dist/test/services/Lexical.test.js +68 -0
  594. package/dist/test/services/Migration.test.d.ts +1 -0
  595. package/dist/test/services/Migration.test.js +376 -0
  596. package/dist/test/services/Profile.test.d.ts +1 -0
  597. package/dist/test/services/Profile.test.js +277 -0
  598. package/dist/test/services/Renderer.test.d.ts +1 -0
  599. package/dist/test/services/Renderer.test.js +538 -0
  600. package/dist/test/services/Resolver.test.d.ts +1 -0
  601. package/dist/test/services/Resolver.test.js +320 -0
  602. package/dist/test/services/Skill.test.d.ts +1 -0
  603. package/dist/test/services/Skill.test.js +261 -0
  604. package/dist/test/services/UpdateNotifier.spawn.test.d.ts +1 -0
  605. package/dist/test/services/UpdateNotifier.spawn.test.js +73 -0
  606. package/dist/test/services/UpdateNotifier.test.d.ts +1 -0
  607. package/dist/test/services/UpdateNotifier.test.js +912 -0
  608. package/dist/vendor/litexml/cli.mjs +19 -4
  609. package/dist/vendor/litexml/litexml-html-preview-client.css +98 -13
  610. package/dist/vendor/litexml/litexml-html-preview-client.js +5794 -4976
  611. package/dist/vendor/litexml/style.css +5 -5
  612. package/package.json +29 -26
  613. package/skills/safety.md +1 -1
  614. package/LICENSE +0 -33
  615. package/dist/esm-CDcJmHkG.mjs +0 -2
@@ -0,0 +1,572 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { mkdirSync, openSync, readFileSync, realpathSync, renameSync, writeFileSync, } from 'node:fs';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { Context, Effect, Layer } from 'effect';
6
+ import { satisfies, validRange } from 'semver';
7
+ import { UpdateDevEnvironment, UpdateNodeIncompatible, UpdatePermissionDenied, UpdatePmUnknown, UpdateRegistryUnreachable, UpdateSpawnFailed, UpdateTransientInstall, } from '../domain/errors';
8
+ export const PACKAGE_NAME = '@mx-space/cli';
9
+ export const DEFAULT_REGISTRY = 'https://registry.npmjs.org';
10
+ const CACHE_FILE = 'update-check.json';
11
+ const THROTTLE_MS = 24 * 60 * 60 * 1000;
12
+ const FETCH_TIMEOUT_MS = 3000;
13
+ const PM_FRAGMENTS = [
14
+ {
15
+ pm: 'pnpm',
16
+ markers: [
17
+ '/pnpm/global/',
18
+ '/library/pnpm/global/',
19
+ '/.local/share/pnpm/global/',
20
+ '\\pnpm\\global\\',
21
+ ],
22
+ },
23
+ { pm: 'bun', markers: ['/.bun/install/global/', '\\bun\\install\\global\\'] },
24
+ {
25
+ pm: 'yarn',
26
+ markers: ['/.config/yarn/global/', '/.yarn/global/', '\\yarn\\global\\'],
27
+ },
28
+ ];
29
+ const TRANSIENT_FRAGMENTS = [
30
+ { cache: 'npx', markers: ['/_npx/', '\\_npx\\'] },
31
+ { cache: 'pnpm-dlx', markers: ['/.pnpm-store/dlx/', '/dlx-', '\\dlx-'] },
32
+ {
33
+ cache: 'bunx',
34
+ markers: ['/.bun/install/cache/', '\\bun\\install\\cache\\'],
35
+ },
36
+ ];
37
+ const DEV_FRAGMENTS = [
38
+ {
39
+ reason: 'monorepo-source',
40
+ markers: ['/packages/cli/src/', '\\packages\\cli\\src\\'],
41
+ },
42
+ {
43
+ reason: 'monorepo-dist',
44
+ markers: ['/packages/cli/dist/', '\\packages\\cli\\dist\\'],
45
+ },
46
+ ];
47
+ const normalizePath = (p) => p.replaceAll('\\', '/').toLowerCase();
48
+ export function detectPackageManager(argv1) {
49
+ let real = argv1;
50
+ try {
51
+ real = realpathSync(argv1);
52
+ }
53
+ catch {
54
+ // keep original; fs.realpath may fail for synthetic paths
55
+ }
56
+ const normalized = normalizePath(real);
57
+ const matches = (m) => normalized.includes(m.replaceAll('\\', '/').toLowerCase());
58
+ for (const d of DEV_FRAGMENTS) {
59
+ if (d.markers.some(matches)) {
60
+ return { kind: 'dev', reason: d.reason, realPath: real };
61
+ }
62
+ }
63
+ for (const t of TRANSIENT_FRAGMENTS) {
64
+ if (t.markers.some(matches)) {
65
+ return { kind: 'transient', cache: t.cache, realPath: real };
66
+ }
67
+ }
68
+ for (const p of PM_FRAGMENTS) {
69
+ if (p.markers.some(matches)) {
70
+ return { kind: 'global', pm: p.pm, realPath: real };
71
+ }
72
+ }
73
+ if (/\/node_modules\/@mx-space\/cli\b/.test(normalized) ||
74
+ /\/lib\/node_modules\/@mx-space\/cli\b/.test(normalized) ||
75
+ /\/appdata\/roaming\/npm\/node_modules\/@mx-space\/cli\b/.test(normalized)) {
76
+ return { kind: 'global', pm: 'npm', realPath: real };
77
+ }
78
+ return { kind: 'unknown', realPath: real };
79
+ }
80
+ export async function fetchLatestVersion(channel, opts = {}) {
81
+ const registry = (opts.registry ?? DEFAULT_REGISTRY).replace(/\/+$/, '');
82
+ const distTag = channel === 'next' ? 'next' : 'latest';
83
+ const url = `${registry}/${encodeURIComponent(PACKAGE_NAME).replace('%40', '@')}/${distTag}`;
84
+ const headers = { accept: 'application/json' };
85
+ if (opts.etag)
86
+ headers['if-none-match'] = opts.etag;
87
+ const fetchImpl = opts.fetchImpl ?? ((u, init) => globalThis.fetch(u, init));
88
+ const res = await fetchImpl(url, { headers, signal: opts.signal });
89
+ if (res.status === 304) {
90
+ return { notModified: true, etag: opts.etag };
91
+ }
92
+ if (!res.ok) {
93
+ throw new Error(`registry returned status ${res.status}`);
94
+ }
95
+ const body = (await res.json());
96
+ return {
97
+ version: body.version,
98
+ engines: body.engines,
99
+ tarball: body.dist?.tarball,
100
+ etag: res.headers.get('etag') ?? undefined,
101
+ };
102
+ }
103
+ export function compareSemver(a, b) {
104
+ const pa = parseSemver(a);
105
+ const pb = parseSemver(b);
106
+ if (!pa || !pb)
107
+ return a === b ? 0 : a < b ? -1 : 1;
108
+ for (let i = 0; i < 3; i++) {
109
+ if (pa.main[i] !== pb.main[i])
110
+ return pa.main[i] < pb.main[i] ? -1 : 1;
111
+ }
112
+ if (!pa.pre && !pb.pre)
113
+ return 0;
114
+ if (!pa.pre && pb.pre)
115
+ return 1;
116
+ if (pa.pre && !pb.pre)
117
+ return -1;
118
+ const ap = pa.pre;
119
+ const bp = pb.pre;
120
+ const n = Math.max(ap.length, bp.length);
121
+ for (let i = 0; i < n; i++) {
122
+ const x = ap[i];
123
+ const y = bp[i];
124
+ if (x === undefined)
125
+ return -1;
126
+ if (y === undefined)
127
+ return 1;
128
+ const xn = /^\d+$/.test(x) ? Number(x) : null;
129
+ const yn = /^\d+$/.test(y) ? Number(y) : null;
130
+ if (xn !== null && yn !== null) {
131
+ if (xn !== yn)
132
+ return xn < yn ? -1 : 1;
133
+ continue;
134
+ }
135
+ if (xn !== null)
136
+ return -1;
137
+ if (yn !== null)
138
+ return 1;
139
+ if (x !== y)
140
+ return x < y ? -1 : 1;
141
+ }
142
+ return 0;
143
+ }
144
+ function parseSemver(v) {
145
+ const m = /^v?(\d+)\.(\d+)\.(\d+)(?:-([\d.A-Za-z-]+))?(?:\+[\d.A-Za-z-]+)?$/.exec(v.trim());
146
+ if (!m)
147
+ return null;
148
+ return {
149
+ main: [Number(m[1]), Number(m[2]), Number(m[3])],
150
+ pre: m[4] ? m[4].split('.') : null,
151
+ };
152
+ }
153
+ export function satisfiesNodeEngine(currentVersion, range) {
154
+ if (!range)
155
+ return true;
156
+ const trimmed = range.trim();
157
+ if (!trimmed)
158
+ return true;
159
+ if (!validRange(trimmed, { loose: true }))
160
+ return true;
161
+ return satisfies(currentVersion, trimmed, { loose: true });
162
+ }
163
+ export function buildUpgradeCommand(pm, channel) {
164
+ const target = channel === 'next' ? `${PACKAGE_NAME}@next` : `${PACKAGE_NAME}@latest`;
165
+ switch (pm) {
166
+ case 'npm': {
167
+ return { cmd: 'npm', args: ['install', '-g', target] };
168
+ }
169
+ case 'pnpm': {
170
+ return { cmd: 'pnpm', args: ['add', '-g', target] };
171
+ }
172
+ case 'yarn': {
173
+ return { cmd: 'yarn', args: ['global', 'add', target] };
174
+ }
175
+ case 'bun': {
176
+ return { cmd: 'bun', args: ['add', '-g', target] };
177
+ }
178
+ }
179
+ }
180
+ async function defaultSpawnUpgrade(cmd, args) {
181
+ return new Promise((resolve) => {
182
+ const child = spawn(cmd, args, {
183
+ stdio: ['ignore', 'inherit', 'pipe'],
184
+ cwd: process.cwd(),
185
+ shell: os.platform() === 'win32',
186
+ });
187
+ let stderr = '';
188
+ child.stderr?.on('data', (chunk) => {
189
+ const str = chunk.toString();
190
+ stderr += str;
191
+ process.stderr.write(chunk);
192
+ });
193
+ child.on('error', (err) => {
194
+ stderr += String(err.message ?? err);
195
+ resolve({ status: 1, stderr });
196
+ });
197
+ child.on('exit', (code) => {
198
+ resolve({ status: code ?? 1, stderr });
199
+ });
200
+ });
201
+ }
202
+ function defaultSpawnDetached(cmd, args, logPath) {
203
+ try {
204
+ mkdirSync(path.dirname(logPath), { recursive: true });
205
+ }
206
+ catch {
207
+ // ignore
208
+ }
209
+ let out;
210
+ try {
211
+ out = openSync(logPath, 'a');
212
+ }
213
+ catch {
214
+ out = openSync(os.platform() === 'win32' ? 'NUL' : '/dev/null', 'a');
215
+ }
216
+ try {
217
+ const child = spawn(cmd, args, {
218
+ stdio: ['ignore', out, out],
219
+ cwd: process.cwd(),
220
+ shell: os.platform() === 'win32',
221
+ detached: true,
222
+ env: { ...process.env, MXS_NO_UPDATE_CHECK: '1' },
223
+ });
224
+ child.on('error', () => {
225
+ // Best-effort: child failed to spawn (e.g. pm not on PATH). Next mxs
226
+ // invocation will emit the legacy notify line again after the 24h
227
+ // throttle expires.
228
+ });
229
+ child.unref();
230
+ }
231
+ catch {
232
+ // ignore: detached spawn is best-effort.
233
+ }
234
+ }
235
+ function defaultConfigDir() {
236
+ const xdg = process.env.XDG_CONFIG_HOME;
237
+ const base = xdg && xdg.length > 0 ? xdg : path.join(os.homedir(), '.config');
238
+ return path.join(base, 'mxs');
239
+ }
240
+ function cachePath(configDir) {
241
+ return path.join(configDir, CACHE_FILE);
242
+ }
243
+ export function readCache(configDir) {
244
+ try {
245
+ const raw = readFileSync(cachePath(configDir), 'utf8');
246
+ const parsed = JSON.parse(raw);
247
+ if (typeof parsed?.last_check_ts !== 'number')
248
+ return null;
249
+ return parsed;
250
+ }
251
+ catch {
252
+ return null;
253
+ }
254
+ }
255
+ export function writeCacheAtomic(state, configDir) {
256
+ const target = cachePath(configDir);
257
+ const dir = path.dirname(target);
258
+ try {
259
+ mkdirSync(dir, { recursive: true });
260
+ }
261
+ catch {
262
+ // ignore
263
+ }
264
+ const tmp = `${target}.tmp`;
265
+ writeFileSync(tmp, JSON.stringify(state));
266
+ renameSync(tmp, target);
267
+ }
268
+ export function shouldSkipNotify(opts) {
269
+ const env = opts.env ?? process.env;
270
+ if (opts.quiet || opts.json)
271
+ return true;
272
+ if (opts.output === 'json')
273
+ return true;
274
+ if (env.CI && env.CI !== '' && env.CI !== '0' && env.CI !== 'false')
275
+ return true;
276
+ if (env.MXS_NO_UPDATE_CHECK === '1')
277
+ return true;
278
+ if (opts.isTTY === false)
279
+ return true;
280
+ if (opts.commandName === 'update')
281
+ return true;
282
+ if (opts.parentName === 'update')
283
+ return true;
284
+ return false;
285
+ }
286
+ function readChannelFromEnv(env) {
287
+ return env.MXS_UPDATE_CHANNEL === 'next' ? 'next' : 'stable';
288
+ }
289
+ const AUTO_UPDATE_LOG = 'auto-update.log';
290
+ const isAutoUpdateDisabled = (env) => env.MXS_NO_AUTO_UPDATE === '1' ||
291
+ env.MXS_NO_AUTO_UPDATE === 'true' ||
292
+ env.MXS_NO_AUTO_UPDATE === 'yes';
293
+ const planAutoUpdate = (entry, channel) => {
294
+ const detection = detectPackageManager(entry);
295
+ if (detection.kind !== 'global')
296
+ return null;
297
+ const { cmd, args } = buildUpgradeCommand(detection.pm, channel);
298
+ return { pm: detection.pm, cmd, args };
299
+ };
300
+ const KNOWN_PMS = new Set([
301
+ 'npm',
302
+ 'pnpm',
303
+ 'yarn',
304
+ 'bun',
305
+ ]);
306
+ export const make = (deps = {}) => {
307
+ const now = () => (deps.now ? deps.now() : Date.now());
308
+ const fetchImpl = deps.fetchImpl;
309
+ const spawnImpl = deps.spawnImpl ?? defaultSpawnUpgrade;
310
+ const spawnDetached = deps.spawnDetached ?? defaultSpawnDetached;
311
+ const emitInfo = deps.emitInfo ?? ((msg) => process.stderr.write(`${msg}\n`));
312
+ const baseConfigDir = deps.configDir;
313
+ const resolvedConfigDir = (opts) => opts.configDir ?? baseConfigDir ?? defaultConfigDir();
314
+ const triggerAutoUpdate = (opts, latest, cache, dir, ts) => {
315
+ const env = opts.env ?? process.env;
316
+ if (isAutoUpdateDisabled(env))
317
+ return false;
318
+ if (cache?.last_auto_update_ts !== undefined &&
319
+ ts - cache.last_auto_update_ts < THROTTLE_MS) {
320
+ return false;
321
+ }
322
+ const channel = opts.channel ?? readChannelFromEnv(env);
323
+ const entry = deps.entrypoint ?? process.argv[1] ?? '';
324
+ const plan = planAutoUpdate(entry, channel);
325
+ if (!plan)
326
+ return false;
327
+ try {
328
+ spawnDetached(plan.cmd, plan.args, path.join(dir, AUTO_UPDATE_LOG));
329
+ }
330
+ catch {
331
+ return false;
332
+ }
333
+ writeCacheAtomic({
334
+ last_check_ts: ts,
335
+ latest_version: latest,
336
+ etag: cache?.etag,
337
+ last_auto_update_ts: ts,
338
+ }, dir);
339
+ return true;
340
+ };
341
+ const maybeNotify = (opts) => Effect.tryPromise({
342
+ try: async () => {
343
+ if (shouldSkipNotify(opts))
344
+ return;
345
+ const dir = resolvedConfigDir(opts);
346
+ const ts = now();
347
+ const cache = readCache(dir);
348
+ const channel = opts.channel ?? readChannelFromEnv(opts.env ?? process.env);
349
+ const emit = opts.emit ?? ((msg) => process.stderr.write(`${msg}\n`));
350
+ if (cache && !opts.force && ts - cache.last_check_ts < THROTTLE_MS) {
351
+ if (cache.latest_version &&
352
+ compareSemver(opts.currentVersion, cache.latest_version) < 0) {
353
+ const triggered = triggerAutoUpdate(opts, cache.latest_version, cache, dir, ts);
354
+ emit(triggered
355
+ ? `mxs: auto-updating ${opts.currentVersion} → ${cache.latest_version} in background (set MXS_NO_AUTO_UPDATE=1 to disable)`
356
+ : `mxs update available: ${opts.currentVersion} → ${cache.latest_version} run 'mxs update' to upgrade`);
357
+ }
358
+ return;
359
+ }
360
+ const controller = new AbortController();
361
+ const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
362
+ if (typeof timer.unref === 'function') {
363
+ ;
364
+ timer.unref();
365
+ }
366
+ try {
367
+ const hit = await fetchLatestVersion(channel, {
368
+ etag: cache?.etag,
369
+ signal: controller.signal,
370
+ fetchImpl,
371
+ });
372
+ clearTimeout(timer);
373
+ if ('notModified' in hit && hit.notModified) {
374
+ writeCacheAtomic({
375
+ last_check_ts: ts,
376
+ latest_version: cache?.latest_version,
377
+ etag: cache?.etag,
378
+ }, dir);
379
+ return;
380
+ }
381
+ writeCacheAtomic({
382
+ last_check_ts: ts,
383
+ latest_version: hit.version,
384
+ etag: hit.etag,
385
+ last_auto_update_ts: cache?.last_auto_update_ts,
386
+ }, dir);
387
+ if (compareSemver(opts.currentVersion, hit.version) < 0) {
388
+ const triggered = triggerAutoUpdate(opts, hit.version, {
389
+ last_check_ts: ts,
390
+ latest_version: hit.version,
391
+ etag: hit.etag,
392
+ last_auto_update_ts: cache?.last_auto_update_ts,
393
+ }, dir, ts);
394
+ if (triggered) {
395
+ emit(`mxs: auto-updating ${opts.currentVersion} → ${hit.version} in background (set MXS_NO_AUTO_UPDATE=1 to disable)`);
396
+ }
397
+ }
398
+ }
399
+ catch {
400
+ clearTimeout(timer);
401
+ writeCacheAtomic({
402
+ last_check_ts: ts,
403
+ latest_version: cache?.latest_version,
404
+ etag: cache?.etag,
405
+ }, dir);
406
+ }
407
+ },
408
+ catch: () => undefined,
409
+ }).pipe(Effect.catchAll(() => Effect.void), Effect.catchAllDefect(() => Effect.void));
410
+ const runUpdate = (opts) => Effect.gen(function* () {
411
+ const channel = opts.prerelease
412
+ ? 'next'
413
+ : (opts.channel ?? 'stable');
414
+ // 1. Detect package manager
415
+ const entry = opts.entrypoint ?? process.argv[1] ?? '';
416
+ const detection = detectPackageManager(entry);
417
+ let pm;
418
+ if (opts.pm) {
419
+ if (!KNOWN_PMS.has(opts.pm)) {
420
+ return yield* Effect.fail(new UpdatePmUnknown({
421
+ message: `unknown package manager '${opts.pm}'`,
422
+ hint: 'supported values: npm | pnpm | yarn | bun',
423
+ }));
424
+ }
425
+ pm = opts.pm;
426
+ }
427
+ else {
428
+ switch (detection.kind) {
429
+ case 'dev': {
430
+ return yield* Effect.fail(new UpdateDevEnvironment({
431
+ message: 'dev install detected; mxs is running from the monorepo source tree',
432
+ hint: 'pull the repo with `git pull` and rebuild instead of self-updating',
433
+ }));
434
+ }
435
+ case 'transient': {
436
+ return yield* Effect.fail(new UpdateTransientInstall({
437
+ message: `mxs is running from a transient ${detection.cache} cache`,
438
+ hint: 'install mxs globally first, e.g. `npm i -g @mx-space/cli` or `pnpm add -g @mx-space/cli`',
439
+ }));
440
+ }
441
+ case 'unknown': {
442
+ return yield* Effect.fail(new UpdatePmUnknown({
443
+ message: 'unable to detect the package manager that installed mxs',
444
+ hint: 'pass --pm <npm|pnpm|yarn|bun> to override detection',
445
+ details: { realPath: detection.realPath },
446
+ }));
447
+ }
448
+ case 'global': {
449
+ pm = detection.pm;
450
+ break;
451
+ }
452
+ }
453
+ }
454
+ // 2. Fetch latest
455
+ const hit = yield* Effect.tryPromise({
456
+ try: async () => {
457
+ const result = await fetchLatestVersion(channel, { fetchImpl });
458
+ if ('notModified' in result && result.notModified) {
459
+ throw new Error('unexpected 304 without an etag');
460
+ }
461
+ return result;
462
+ },
463
+ catch: (cause) => new UpdateRegistryUnreachable({
464
+ message: 'unable to reach the npm registry',
465
+ hint: 'check your network connection or set MXS_NO_UPDATE_CHECK=1 to silence the notifier',
466
+ details: { cause: cause instanceof Error ? cause.message : cause },
467
+ }),
468
+ });
469
+ const cmp = compareSemver(opts.currentVersion, hit.version);
470
+ if (cmp >= 0) {
471
+ return {
472
+ fromVersion: opts.currentVersion,
473
+ toVersion: hit.version,
474
+ pm,
475
+ channel,
476
+ status: 0,
477
+ upgraded: false,
478
+ dryRun: true,
479
+ upToDate: true,
480
+ };
481
+ }
482
+ // 3. Node engine compatibility
483
+ const nodeVersion = opts.nodeVersion ?? process.versions.node;
484
+ if (hit.engines?.node &&
485
+ !satisfiesNodeEngine(nodeVersion, hit.engines.node)) {
486
+ return yield* Effect.fail(new UpdateNodeIncompatible({
487
+ message: `mxs ${hit.version} requires Node ${hit.engines.node} (current: v${nodeVersion})`,
488
+ hint: 'upgrade Node first, then re-run `mxs update`',
489
+ }));
490
+ }
491
+ // 4. Announce
492
+ if (!opts.json) {
493
+ emitInfo(`mxs: ${opts.currentVersion} → ${hit.version} (channel: ${channel}, pm: ${pm})`);
494
+ }
495
+ if (opts.check) {
496
+ return {
497
+ fromVersion: opts.currentVersion,
498
+ toVersion: hit.version,
499
+ pm,
500
+ channel,
501
+ status: 0,
502
+ upgraded: false,
503
+ dryRun: true,
504
+ upToDate: false,
505
+ };
506
+ }
507
+ const { cmd, args } = buildUpgradeCommand(pm, channel);
508
+ const shown = `${cmd} ${args.join(' ')}`;
509
+ if (opts.dryRun) {
510
+ if (!opts.json)
511
+ emitInfo(`mxs: would run: ${shown}`);
512
+ return {
513
+ fromVersion: opts.currentVersion,
514
+ toVersion: hit.version,
515
+ pm,
516
+ channel,
517
+ status: 0,
518
+ upgraded: false,
519
+ dryRun: true,
520
+ upToDate: false,
521
+ command: shown,
522
+ };
523
+ }
524
+ // 5. Spawn (auto-install — the legacy confirm prompt was removed when
525
+ // `mxs update` became automatic; `opts.yes` is now a no-op kept for
526
+ // backward compat with older invocations).
527
+ if (!opts.json)
528
+ emitInfo(`mxs: running ${shown}`);
529
+ const result = yield* Effect.tryPromise({
530
+ try: () => spawnImpl(cmd, args),
531
+ catch: (cause) => new UpdateSpawnFailed({
532
+ message: `failed to spawn ${cmd}`,
533
+ details: { cause: cause instanceof Error ? cause.message : cause },
534
+ }),
535
+ });
536
+ if (result.status === 0) {
537
+ if (!opts.json) {
538
+ emitInfo(`mxs: upgraded to ${hit.version}. Restart any long-running mxs process.`);
539
+ }
540
+ return {
541
+ fromVersion: opts.currentVersion,
542
+ toVersion: hit.version,
543
+ pm,
544
+ channel,
545
+ status: 0,
546
+ upgraded: true,
547
+ dryRun: false,
548
+ upToDate: false,
549
+ command: shown,
550
+ };
551
+ }
552
+ if (/eacces|permission denied/i.test(result.stderr)) {
553
+ return yield* Effect.fail(new UpdatePermissionDenied({
554
+ message: 'package manager could not write to the global install directory',
555
+ hint: `rerun with elevated permissions, e.g. \`sudo ${shown}\``,
556
+ }));
557
+ }
558
+ return yield* Effect.fail(new UpdateSpawnFailed({
559
+ message: `${cmd} exited with status ${result.status}`,
560
+ hint: `rerun with \`mxs update --dry-run\` to inspect the exact command`,
561
+ }));
562
+ });
563
+ return { maybeNotify, runUpdate };
564
+ };
565
+ // ---------------------------------------------------------------------------
566
+ // Tag + Layer
567
+ // ---------------------------------------------------------------------------
568
+ export class UpdateNotifier extends Context.Tag('UpdateNotifier')() {
569
+ static Default = Layer.succeed(UpdateNotifier, make());
570
+ }
571
+ /** Build a custom UpdateNotifier layer (tests). */
572
+ export const layer = (deps = {}) => Layer.succeed(UpdateNotifier, make(deps));
@@ -0,0 +1 @@
1
+ export {};