@mx-space/cli 0.15.1 → 0.15.2

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 (611) hide show
  1. package/dist/{Lexical.dev-BSvx45_E.mjs → Lexical.dev-Df5TNMgP.mjs} +2 -2
  2. package/dist/{Lexical.node-kAh5GM2n.mjs → Lexical.node-B064E4Hy.mjs} +1 -1
  3. package/dist/{Lexical.prod-Bqwgb3ez.mjs → Lexical.prod-DRFSwoE7.mjs} +2 -2
  4. package/dist/{LexicalClipboard.dev-BWU3KXIa.mjs → LexicalClipboard.dev-ClOWeg5v.mjs} +5 -5
  5. package/dist/{LexicalClipboard.node-BygAdNdF.mjs → LexicalClipboard.node-BJBLWpEi.mjs} +1 -1
  6. package/dist/{LexicalClipboard.prod-BtMuKNyT.mjs → LexicalClipboard.prod-Ytt65eQo.mjs} +5 -5
  7. package/dist/{LexicalCodeCore.dev-CD2xgvDs.mjs → LexicalCodeCore.dev-CzEPINOT.mjs} +4 -4
  8. package/dist/{LexicalCodeCore.prod-Bl6FFMc7.mjs → LexicalCodeCore.prod-DOVk7lL_.mjs} +4 -4
  9. package/dist/{LexicalDragon.dev-BwdYhm4K.mjs → LexicalDragon.dev-DxePN9fP.mjs} +2 -2
  10. package/dist/{LexicalDragon.node-CpJhkCVV.mjs → LexicalDragon.node-DBwaqStp.mjs} +1 -1
  11. package/dist/{LexicalDragon.prod-CvXmWwo1.mjs → LexicalDragon.prod-Bji84-Hq.mjs} +2 -2
  12. package/dist/{LexicalExtension.dev-LcRLXI5Z.mjs → LexicalExtension.dev-DtSRyjbf.mjs} +2 -2
  13. package/dist/{LexicalExtension.node-BwJt2LXV.mjs → LexicalExtension.node-3nsS5NjU.mjs} +1 -1
  14. package/dist/{LexicalExtension.prod-lg8_33-H.mjs → LexicalExtension.prod-Ddk0ja_6.mjs} +2 -2
  15. package/dist/{LexicalHeadless.dev-BeUbKBes.mjs → LexicalHeadless.dev-DdWJsPoH.mjs} +1 -1
  16. package/dist/{LexicalHeadless.prod-4gbIA8HM.mjs → LexicalHeadless.prod-CH74ZDMt.mjs} +1 -1
  17. package/dist/{LexicalHtml.dev-BLdZWTCJ.mjs → LexicalHtml.dev-DN7QIb_7.mjs} +4 -4
  18. package/dist/{LexicalHtml.node-BeuJMvvt.mjs → LexicalHtml.node-DAwuaPeI.mjs} +1 -1
  19. package/dist/{LexicalHtml.prod-CHUyCocN.mjs → LexicalHtml.prod-X4eTHEfI.mjs} +4 -4
  20. package/dist/{LexicalLink.dev-DgsFRqw0.mjs → LexicalLink.dev-owitIl6I.mjs} +4 -4
  21. package/dist/{LexicalLink.prod-CkXkeKY2.mjs → LexicalLink.prod-BZ7ZZkVD.mjs} +4 -4
  22. package/dist/{LexicalList.dev-OOms3kQi.mjs → LexicalList.dev-CUbi09Yo.mjs} +4 -4
  23. package/dist/{LexicalList.prod-DzMBeqHn.mjs → LexicalList.prod-pUsUZa0r.mjs} +4 -4
  24. package/dist/{LexicalMarkdown.dev-DJLKbZtD.mjs → LexicalMarkdown.dev-S2yWckH9.mjs} +3 -3
  25. package/dist/{LexicalMarkdown.prod-Cp21kDCU.mjs → LexicalMarkdown.prod-TRkMWfmC.mjs} +3 -3
  26. package/dist/{LexicalRichText.dev-0rkAGjUf.mjs → LexicalRichText.dev-Y3ybFF2S.mjs} +7 -7
  27. package/dist/{LexicalRichText.node-Cd-BySPE.mjs → LexicalRichText.node-wNAi2Z4i.mjs} +4 -4
  28. package/dist/{LexicalRichText.prod-DTQiEr8C.mjs → LexicalRichText.prod-HLxqZ6hQ.mjs} +7 -7
  29. package/dist/{LexicalSelection.dev-Bi0VlUEv.mjs → LexicalSelection.dev-CyhKOKbs.mjs} +1 -1
  30. package/dist/{LexicalSelection.node-t2U46EF_.mjs → LexicalSelection.node-BCuHMbzl.mjs} +1 -1
  31. package/dist/{LexicalSelection.prod-CrFG111g.mjs → LexicalSelection.prod-RebDJliC.mjs} +1 -1
  32. package/dist/{LexicalTable.dev-D-sFhO-o.mjs → LexicalTable.dev-DN3ezVey.mjs} +5 -5
  33. package/dist/{LexicalTable.prod-DwYaa_dN.mjs → LexicalTable.prod-B0MioVyq.mjs} +5 -5
  34. package/dist/{LexicalUtils.dev-Q2q3-UDM.mjs → LexicalUtils.dev-Bw6LFRlt.mjs} +2 -2
  35. package/dist/{LexicalUtils.node-Dl7OvqJV.mjs → LexicalUtils.node-BPKMFN80.mjs} +1 -1
  36. package/dist/{LexicalUtils.prod-CBnq_iEV.mjs → LexicalUtils.prod-CJYQVQJO.mjs} +2 -2
  37. package/dist/bin/mxs.mjs +1 -1
  38. package/dist/{esm-ZXjJmLEC.mjs → esm-7vSMGlFz.mjs} +171 -245
  39. package/dist/esm-ZrfYH2y2.mjs +2 -0
  40. package/dist/index.mjs +1 -1
  41. package/dist/{mxs-DC9zR3f2.mjs → mxs-DKv-4ZTg.mjs} +362 -297
  42. package/dist/vendor/litexml/cli.mjs +94 -38
  43. package/dist/vendor/litexml/litexml-html-preview-client.css +329 -836
  44. package/dist/vendor/litexml/litexml-html-preview-client.js +6048 -5832
  45. package/dist/vendor/litexml/style.css +5 -1
  46. package/package.json +10 -10
  47. package/dist/esm-CNZ7kdTg.mjs +0 -2
  48. package/dist/src/bin/mxs.d.ts +0 -2
  49. package/dist/src/bin/mxs.js +0 -310
  50. package/dist/src/cli/ai/_poll.d.ts +0 -12
  51. package/dist/src/cli/ai/_poll.js +0 -38
  52. package/dist/src/cli/ai/_resolve.d.ts +0 -8
  53. package/dist/src/cli/ai/_resolve.js +0 -27
  54. package/dist/src/cli/ai/index.d.ts +0 -127
  55. package/dist/src/cli/ai/index.js +0 -46
  56. package/dist/src/cli/ai/insights/by-article.d.ts +0 -10
  57. package/dist/src/cli/ai/insights/by-article.js +0 -21
  58. package/dist/src/cli/ai/insights/delete.d.ts +0 -7
  59. package/dist/src/cli/ai/insights/delete.js +0 -18
  60. package/dist/src/cli/ai/insights/edit.d.ts +0 -8
  61. package/dist/src/cli/ai/insights/edit.js +0 -54
  62. package/dist/src/cli/ai/insights/get.d.ts +0 -6
  63. package/dist/src/cli/ai/insights/get.js +0 -11
  64. package/dist/src/cli/ai/insights/index.d.ts +0 -30
  65. package/dist/src/cli/ai/insights/index.js +0 -17
  66. package/dist/src/cli/ai/insights/list.d.ts +0 -10
  67. package/dist/src/cli/ai/insights/list.js +0 -20
  68. package/dist/src/cli/ai/insights/refresh.d.ts +0 -10
  69. package/dist/src/cli/ai/insights/refresh.js +0 -25
  70. package/dist/src/cli/ai/insights/translate.d.ts +0 -10
  71. package/dist/src/cli/ai/insights/translate.js +0 -25
  72. package/dist/src/cli/ai/overview/by-article.d.ts +0 -7
  73. package/dist/src/cli/ai/overview/by-article.js +0 -15
  74. package/dist/src/cli/ai/overview/index.d.ts +0 -11
  75. package/dist/src/cli/ai/overview/index.js +0 -4
  76. package/dist/src/cli/ai/overview/list.d.ts +0 -10
  77. package/dist/src/cli/ai/overview/list.js +0 -20
  78. package/dist/src/cli/ai/summary/by-article.d.ts +0 -10
  79. package/dist/src/cli/ai/summary/by-article.js +0 -21
  80. package/dist/src/cli/ai/summary/delete.d.ts +0 -7
  81. package/dist/src/cli/ai/summary/delete.js +0 -18
  82. package/dist/src/cli/ai/summary/edit.d.ts +0 -8
  83. package/dist/src/cli/ai/summary/edit.js +0 -54
  84. package/dist/src/cli/ai/summary/get.d.ts +0 -6
  85. package/dist/src/cli/ai/summary/get.js +0 -11
  86. package/dist/src/cli/ai/summary/index.d.ts +0 -30
  87. package/dist/src/cli/ai/summary/index.js +0 -9
  88. package/dist/src/cli/ai/summary/list.d.ts +0 -10
  89. package/dist/src/cli/ai/summary/list.js +0 -20
  90. package/dist/src/cli/ai/summary/regen.d.ts +0 -10
  91. package/dist/src/cli/ai/summary/regen.js +0 -25
  92. package/dist/src/cli/ai/summary/translate.d.ts +0 -10
  93. package/dist/src/cli/ai/summary/translate.js +0 -25
  94. package/dist/src/cli/ai/translate/by-article.d.ts +0 -9
  95. package/dist/src/cli/ai/translate/by-article.js +0 -19
  96. package/dist/src/cli/ai/translate/delete.d.ts +0 -7
  97. package/dist/src/cli/ai/translate/delete.js +0 -18
  98. package/dist/src/cli/ai/translate/edit.d.ts +0 -8
  99. package/dist/src/cli/ai/translate/edit.js +0 -97
  100. package/dist/src/cli/ai/translate/entries/delete.d.ts +0 -7
  101. package/dist/src/cli/ai/translate/entries/delete.js +0 -18
  102. package/dist/src/cli/ai/translate/entries/edit.d.ts +0 -8
  103. package/dist/src/cli/ai/translate/entries/edit.js +0 -73
  104. package/dist/src/cli/ai/translate/entries/generate.d.ts +0 -7
  105. package/dist/src/cli/ai/translate/entries/generate.js +0 -15
  106. package/dist/src/cli/ai/translate/entries/index.d.ts +0 -17
  107. package/dist/src/cli/ai/translate/entries/index.js +0 -6
  108. package/dist/src/cli/ai/translate/entries/list.d.ts +0 -10
  109. package/dist/src/cli/ai/translate/entries/list.js +0 -20
  110. package/dist/src/cli/ai/translate/get.d.ts +0 -6
  111. package/dist/src/cli/ai/translate/get.js +0 -11
  112. package/dist/src/cli/ai/translate/index.d.ts +0 -40
  113. package/dist/src/cli/ai/translate/index.js +0 -19
  114. package/dist/src/cli/ai/translate/languages.d.ts +0 -7
  115. package/dist/src/cli/ai/translate/languages.js +0 -15
  116. package/dist/src/cli/ai/translate/list.d.ts +0 -9
  117. package/dist/src/cli/ai/translate/list.js +0 -19
  118. package/dist/src/cli/ai/translate/run.d.ts +0 -10
  119. package/dist/src/cli/ai/translate/run.js +0 -31
  120. package/dist/src/cli/ai/tts/by-article.d.ts +0 -7
  121. package/dist/src/cli/ai/tts/by-article.js +0 -15
  122. package/dist/src/cli/ai/tts/delete.d.ts +0 -7
  123. package/dist/src/cli/ai/tts/delete.js +0 -18
  124. package/dist/src/cli/ai/tts/index.d.ts +0 -22
  125. package/dist/src/cli/ai/tts/index.js +0 -7
  126. package/dist/src/cli/ai/tts/list.d.ts +0 -10
  127. package/dist/src/cli/ai/tts/list.js +0 -20
  128. package/dist/src/cli/ai/tts/run.d.ts +0 -10
  129. package/dist/src/cli/ai/tts/run.js +0 -25
  130. package/dist/src/cli/ai/tts/voices.d.ts +0 -7
  131. package/dist/src/cli/ai/tts/voices.js +0 -12
  132. package/dist/src/cli/ai/views.d.ts +0 -3
  133. package/dist/src/cli/ai/views.js +0 -45
  134. package/dist/src/cli/auth/index.d.ts +0 -6
  135. package/dist/src/cli/auth/index.js +0 -22
  136. package/dist/src/cli/auth/login.d.ts +0 -11
  137. package/dist/src/cli/auth/login.js +0 -168
  138. package/dist/src/cli/auth/logout.d.ts +0 -6
  139. package/dist/src/cli/auth/logout.js +0 -21
  140. package/dist/src/cli/auth/status.d.ts +0 -4
  141. package/dist/src/cli/auth/status.js +0 -31
  142. package/dist/src/cli/auth/view.d.ts +0 -25
  143. package/dist/src/cli/auth/view.js +0 -46
  144. package/dist/src/cli/auth/whoami.d.ts +0 -7
  145. package/dist/src/cli/auth/whoami.js +0 -44
  146. package/dist/src/cli/category/create.d.ts +0 -10
  147. package/dist/src/cli/category/create.js +0 -24
  148. package/dist/src/cli/category/delete.d.ts +0 -8
  149. package/dist/src/cli/category/delete.js +0 -21
  150. package/dist/src/cli/category/get.d.ts +0 -6
  151. package/dist/src/cli/category/get.js +0 -11
  152. package/dist/src/cli/category/index.d.ts +0 -20
  153. package/dist/src/cli/category/index.js +0 -41
  154. package/dist/src/cli/category/list.d.ts +0 -4
  155. package/dist/src/cli/category/list.js +0 -10
  156. package/dist/src/cli/category/update.d.ts +0 -12
  157. package/dist/src/cli/category/update.js +0 -34
  158. package/dist/src/cli/comment/_flags.d.ts +0 -28
  159. package/dist/src/cli/comment/_flags.js +0 -48
  160. package/dist/src/cli/comment/approve.d.ts +0 -9
  161. package/dist/src/cli/comment/approve.js +0 -23
  162. package/dist/src/cli/comment/delete.d.ts +0 -9
  163. package/dist/src/cli/comment/delete.js +0 -24
  164. package/dist/src/cli/comment/get.d.ts +0 -6
  165. package/dist/src/cli/comment/get.js +0 -12
  166. package/dist/src/cli/comment/index.d.ts +0 -34
  167. package/dist/src/cli/comment/index.js +0 -53
  168. package/dist/src/cli/comment/list.d.ts +0 -9
  169. package/dist/src/cli/comment/list.js +0 -20
  170. package/dist/src/cli/comment/reject.d.ts +0 -9
  171. package/dist/src/cli/comment/reject.js +0 -23
  172. package/dist/src/cli/comment/reply.d.ts +0 -9
  173. package/dist/src/cli/comment/reply.js +0 -31
  174. package/dist/src/cli/comment/unread.d.ts +0 -7
  175. package/dist/src/cli/comment/unread.js +0 -21
  176. package/dist/src/cli/comment/view.d.ts +0 -3
  177. package/dist/src/cli/comment/view.js +0 -197
  178. package/dist/src/cli/config/edit.d.ts +0 -5
  179. package/dist/src/cli/config/edit.js +0 -36
  180. package/dist/src/cli/config/get.d.ts +0 -6
  181. package/dist/src/cli/config/get.js +0 -11
  182. package/dist/src/cli/config/index.d.ts +0 -10
  183. package/dist/src/cli/config/index.js +0 -22
  184. package/dist/src/cli/config/list.d.ts +0 -4
  185. package/dist/src/cli/config/list.js +0 -10
  186. package/dist/src/cli/config/set.d.ts +0 -9
  187. package/dist/src/cli/config/set.js +0 -48
  188. package/dist/src/cli/draft/_shared.d.ts +0 -27
  189. package/dist/src/cli/draft/_shared.js +0 -85
  190. package/dist/src/cli/draft/create.d.ts +0 -21
  191. package/dist/src/cli/draft/create.js +0 -34
  192. package/dist/src/cli/draft/delete.d.ts +0 -7
  193. package/dist/src/cli/draft/delete.js +0 -20
  194. package/dist/src/cli/draft/get.d.ts +0 -6
  195. package/dist/src/cli/draft/get.js +0 -11
  196. package/dist/src/cli/draft/index.d.ts +0 -54
  197. package/dist/src/cli/draft/index.js +0 -42
  198. package/dist/src/cli/draft/list.d.ts +0 -11
  199. package/dist/src/cli/draft/list.js +0 -23
  200. package/dist/src/cli/draft/publish.d.ts +0 -8
  201. package/dist/src/cli/draft/publish.js +0 -64
  202. package/dist/src/cli/draft/update.d.ts +0 -22
  203. package/dist/src/cli/draft/update.js +0 -29
  204. package/dist/src/cli/file/_shared.d.ts +0 -6
  205. package/dist/src/cli/file/_shared.js +0 -5
  206. package/dist/src/cli/file/delete.d.ts +0 -8
  207. package/dist/src/cli/file/delete.js +0 -21
  208. package/dist/src/cli/file/index.d.ts +0 -19
  209. package/dist/src/cli/file/index.js +0 -33
  210. package/dist/src/cli/file/list.d.ts +0 -6
  211. package/dist/src/cli/file/list.js +0 -11
  212. package/dist/src/cli/file/rename.d.ts +0 -8
  213. package/dist/src/cli/file/rename.js +0 -16
  214. package/dist/src/cli/file/upload.d.ts +0 -9
  215. package/dist/src/cli/file/upload.js +0 -32
  216. package/dist/src/cli/help/index.d.ts +0 -62
  217. package/dist/src/cli/help/index.js +0 -276
  218. package/dist/src/cli/help/registry.d.ts +0 -28
  219. package/dist/src/cli/help/registry.js +0 -29
  220. package/dist/src/cli/note/_flags.d.ts +0 -66
  221. package/dist/src/cli/note/_flags.js +0 -73
  222. package/dist/src/cli/note/create.d.ts +0 -23
  223. package/dist/src/cli/note/create.js +0 -25
  224. package/dist/src/cli/note/delete.d.ts +0 -8
  225. package/dist/src/cli/note/delete.js +0 -21
  226. package/dist/src/cli/note/edit.d.ts +0 -28
  227. package/dist/src/cli/note/edit.js +0 -114
  228. package/dist/src/cli/note/get.d.ts +0 -6
  229. package/dist/src/cli/note/get.js +0 -29
  230. package/dist/src/cli/note/index.d.ts +0 -77
  231. package/dist/src/cli/note/index.js +0 -63
  232. package/dist/src/cli/note/list.d.ts +0 -10
  233. package/dist/src/cli/note/list.js +0 -22
  234. package/dist/src/cli/note/publish.d.ts +0 -7
  235. package/dist/src/cli/note/publish.js +0 -17
  236. package/dist/src/cli/note/unpublish.d.ts +0 -7
  237. package/dist/src/cli/note/unpublish.js +0 -17
  238. package/dist/src/cli/note/update.d.ts +0 -25
  239. package/dist/src/cli/note/update.js +0 -36
  240. package/dist/src/cli/note/view.d.ts +0 -3
  241. package/dist/src/cli/note/view.js +0 -162
  242. package/dist/src/cli/page/create.d.ts +0 -41
  243. package/dist/src/cli/page/create.js +0 -56
  244. package/dist/src/cli/page/delete.d.ts +0 -7
  245. package/dist/src/cli/page/delete.js +0 -37
  246. package/dist/src/cli/page/edit.d.ts +0 -19
  247. package/dist/src/cli/page/edit.js +0 -117
  248. package/dist/src/cli/page/get.d.ts +0 -6
  249. package/dist/src/cli/page/get.js +0 -16
  250. package/dist/src/cli/page/index.d.ts +0 -44
  251. package/dist/src/cli/page/index.js +0 -38
  252. package/dist/src/cli/page/list.d.ts +0 -4
  253. package/dist/src/cli/page/list.js +0 -10
  254. package/dist/src/cli/page/update.d.ts +0 -16
  255. package/dist/src/cli/page/update.js +0 -48
  256. package/dist/src/cli/page/view.d.ts +0 -2
  257. package/dist/src/cli/page/view.js +0 -79
  258. package/dist/src/cli/post/_flags.d.ts +0 -66
  259. package/dist/src/cli/post/_flags.js +0 -96
  260. package/dist/src/cli/post/apply.d.ts +0 -7
  261. package/dist/src/cli/post/apply.js +0 -70
  262. package/dist/src/cli/post/create.d.ts +0 -21
  263. package/dist/src/cli/post/create.js +0 -24
  264. package/dist/src/cli/post/delete.d.ts +0 -8
  265. package/dist/src/cli/post/delete.js +0 -21
  266. package/dist/src/cli/post/edit.d.ts +0 -26
  267. package/dist/src/cli/post/edit.js +0 -115
  268. package/dist/src/cli/post/get.d.ts +0 -7
  269. package/dist/src/cli/post/get.js +0 -15
  270. package/dist/src/cli/post/index.d.ts +0 -91
  271. package/dist/src/cli/post/index.js +0 -73
  272. package/dist/src/cli/post/list.d.ts +0 -10
  273. package/dist/src/cli/post/list.js +0 -23
  274. package/dist/src/cli/post/publish.d.ts +0 -7
  275. package/dist/src/cli/post/publish.js +0 -17
  276. package/dist/src/cli/post/stage.d.ts +0 -23
  277. package/dist/src/cli/post/stage.js +0 -55
  278. package/dist/src/cli/post/unpublish.d.ts +0 -7
  279. package/dist/src/cli/post/unpublish.js +0 -17
  280. package/dist/src/cli/post/update.d.ts +0 -23
  281. package/dist/src/cli/post/update.js +0 -38
  282. package/dist/src/cli/post/view.d.ts +0 -3
  283. package/dist/src/cli/post/view.js +0 -150
  284. package/dist/src/cli/preview/index.d.ts +0 -13
  285. package/dist/src/cli/preview/index.js +0 -226
  286. package/dist/src/cli/profile/index.d.ts +0 -14
  287. package/dist/src/cli/profile/index.js +0 -36
  288. package/dist/src/cli/profile/ls.d.ts +0 -5
  289. package/dist/src/cli/profile/ls.js +0 -26
  290. package/dist/src/cli/profile/mark.d.ts +0 -9
  291. package/dist/src/cli/profile/mark.js +0 -23
  292. package/dist/src/cli/profile/rm.d.ts +0 -12
  293. package/dist/src/cli/profile/rm.js +0 -50
  294. package/dist/src/cli/profile/show.d.ts +0 -9
  295. package/dist/src/cli/profile/show.js +0 -40
  296. package/dist/src/cli/profile/use.d.ts +0 -6
  297. package/dist/src/cli/profile/use.js +0 -11
  298. package/dist/src/cli/profile/view.d.ts +0 -8
  299. package/dist/src/cli/profile/view.js +0 -21
  300. package/dist/src/cli/project/_flags.d.ts +0 -56
  301. package/dist/src/cli/project/_flags.js +0 -130
  302. package/dist/src/cli/project/create.d.ts +0 -17
  303. package/dist/src/cli/project/create.js +0 -25
  304. package/dist/src/cli/project/delete.d.ts +0 -8
  305. package/dist/src/cli/project/delete.js +0 -22
  306. package/dist/src/cli/project/edit.d.ts +0 -11
  307. package/dist/src/cli/project/edit.js +0 -61
  308. package/dist/src/cli/project/get.d.ts +0 -7
  309. package/dist/src/cli/project/get.js +0 -14
  310. package/dist/src/cli/project/index.d.ts +0 -43
  311. package/dist/src/cli/project/index.js +0 -52
  312. package/dist/src/cli/project/list.d.ts +0 -8
  313. package/dist/src/cli/project/list.js +0 -19
  314. package/dist/src/cli/project/update.d.ts +0 -18
  315. package/dist/src/cli/project/update.js +0 -24
  316. package/dist/src/cli/project/view-cmd.d.ts +0 -7
  317. package/dist/src/cli/project/view-cmd.js +0 -15
  318. package/dist/src/cli/project/view.d.ts +0 -3
  319. package/dist/src/cli/project/view.js +0 -102
  320. package/dist/src/cli/render/codehighlight.d.ts +0 -8
  321. package/dist/src/cli/render/codehighlight.js +0 -264
  322. package/dist/src/cli/render/envelope.d.ts +0 -7
  323. package/dist/src/cli/render/envelope.js +0 -23
  324. package/dist/src/cli/render/frontmatter.d.ts +0 -8
  325. package/dist/src/cli/render/frontmatter.js +0 -50
  326. package/dist/src/cli/render/helpers.d.ts +0 -2
  327. package/dist/src/cli/render/helpers.js +0 -11
  328. package/dist/src/cli/render/index.d.ts +0 -7
  329. package/dist/src/cli/render/index.js +0 -10
  330. package/dist/src/cli/render/lexical/blocks.d.ts +0 -19
  331. package/dist/src/cli/render/lexical/blocks.js +0 -208
  332. package/dist/src/cli/render/lexical/code.d.ts +0 -2
  333. package/dist/src/cli/render/lexical/code.js +0 -22
  334. package/dist/src/cli/render/lexical/embeds.d.ts +0 -6
  335. package/dist/src/cli/render/lexical/embeds.js +0 -51
  336. package/dist/src/cli/render/lexical/index.d.ts +0 -9
  337. package/dist/src/cli/render/lexical/index.js +0 -25
  338. package/dist/src/cli/render/lexical/inlines.d.ts +0 -17
  339. package/dist/src/cli/render/lexical/inlines.js +0 -76
  340. package/dist/src/cli/render/lexical/parser.d.ts +0 -10
  341. package/dist/src/cli/render/lexical/parser.js +0 -64
  342. package/dist/src/cli/render/lexical/walker.d.ts +0 -21
  343. package/dist/src/cli/render/lexical/walker.js +0 -51
  344. package/dist/src/cli/render/markdown.d.ts +0 -18
  345. package/dist/src/cli/render/markdown.js +0 -196
  346. package/dist/src/cli/render/metadata-block.d.ts +0 -14
  347. package/dist/src/cli/render/metadata-block.js +0 -50
  348. package/dist/src/cli/skill/all.d.ts +0 -4
  349. package/dist/src/cli/skill/all.js +0 -11
  350. package/dist/src/cli/skill/get.d.ts +0 -6
  351. package/dist/src/cli/skill/get.js +0 -12
  352. package/dist/src/cli/skill/index.d.ts +0 -10
  353. package/dist/src/cli/skill/index.js +0 -34
  354. package/dist/src/cli/skill/list.d.ts +0 -4
  355. package/dist/src/cli/skill/list.js +0 -11
  356. package/dist/src/cli/skill/search.d.ts +0 -6
  357. package/dist/src/cli/skill/search.js +0 -12
  358. package/dist/src/cli/skill/views.d.ts +0 -6
  359. package/dist/src/cli/skill/views.js +0 -90
  360. package/dist/src/cli/snippet/_flags.d.ts +0 -57
  361. package/dist/src/cli/snippet/_flags.js +0 -123
  362. package/dist/src/cli/snippet/_resolve.d.ts +0 -4
  363. package/dist/src/cli/snippet/_resolve.js +0 -32
  364. package/dist/src/cli/snippet/_sync.d.ts +0 -5
  365. package/dist/src/cli/snippet/_sync.js +0 -54
  366. package/dist/src/cli/snippet/create.d.ts +0 -19
  367. package/dist/src/cli/snippet/create.js +0 -35
  368. package/dist/src/cli/snippet/delete.d.ts +0 -8
  369. package/dist/src/cli/snippet/delete.js +0 -28
  370. package/dist/src/cli/snippet/edit.d.ts +0 -7
  371. package/dist/src/cli/snippet/edit.js +0 -29
  372. package/dist/src/cli/snippet/get.d.ts +0 -6
  373. package/dist/src/cli/snippet/get.js +0 -12
  374. package/dist/src/cli/snippet/index.d.ts +0 -43
  375. package/dist/src/cli/snippet/index.js +0 -58
  376. package/dist/src/cli/snippet/list.d.ts +0 -9
  377. package/dist/src/cli/snippet/list.js +0 -20
  378. package/dist/src/cli/snippet/pull.d.ts +0 -8
  379. package/dist/src/cli/snippet/pull.js +0 -33
  380. package/dist/src/cli/snippet/push.d.ts +0 -10
  381. package/dist/src/cli/snippet/push.js +0 -31
  382. package/dist/src/cli/snippet/update.d.ts +0 -8
  383. package/dist/src/cli/snippet/update.js +0 -16
  384. package/dist/src/cli/topic/create.d.ts +0 -10
  385. package/dist/src/cli/topic/create.js +0 -24
  386. package/dist/src/cli/topic/delete.d.ts +0 -7
  387. package/dist/src/cli/topic/delete.js +0 -37
  388. package/dist/src/cli/topic/get.d.ts +0 -6
  389. package/dist/src/cli/topic/get.js +0 -15
  390. package/dist/src/cli/topic/index.d.ts +0 -20
  391. package/dist/src/cli/topic/index.js +0 -32
  392. package/dist/src/cli/topic/list.d.ts +0 -4
  393. package/dist/src/cli/topic/list.js +0 -10
  394. package/dist/src/cli/topic/update.d.ts +0 -11
  395. package/dist/src/cli/topic/update.js +0 -51
  396. package/dist/src/cli/ui/index.d.ts +0 -24
  397. package/dist/src/cli/ui/index.js +0 -83
  398. package/dist/src/cli/update/index.d.ts +0 -10
  399. package/dist/src/cli/update/index.js +0 -142
  400. package/dist/src/domain/admin-link.d.ts +0 -12
  401. package/dist/src/domain/admin-link.js +0 -45
  402. package/dist/src/domain/content-spec.d.ts +0 -20
  403. package/dist/src/domain/content-spec.js +0 -78
  404. package/dist/src/domain/envelope-compat.d.ts +0 -68
  405. package/dist/src/domain/envelope-compat.js +0 -121
  406. package/dist/src/domain/envelope.d.ts +0 -34
  407. package/dist/src/domain/envelope.js +0 -355
  408. package/dist/src/domain/errors.d.ts +0 -336
  409. package/dist/src/domain/errors.js +0 -239
  410. package/dist/src/domain/gate.d.ts +0 -14
  411. package/dist/src/domain/gate.js +0 -18
  412. package/dist/src/domain/payload.d.ts +0 -64
  413. package/dist/src/domain/payload.js +0 -237
  414. package/dist/src/domain/preflight-guards.d.ts +0 -54
  415. package/dist/src/domain/preflight-guards.js +0 -130
  416. package/dist/src/domain/runtime-flags.d.ts +0 -33
  417. package/dist/src/domain/runtime-flags.js +0 -166
  418. package/dist/src/domain/schema/api-envelope.d.ts +0 -67
  419. package/dist/src/domain/schema/api-envelope.js +0 -65
  420. package/dist/src/domain/schema/category.d.ts +0 -23
  421. package/dist/src/domain/schema/category.js +0 -19
  422. package/dist/src/domain/schema/config.d.ts +0 -13
  423. package/dist/src/domain/schema/config.js +0 -18
  424. package/dist/src/domain/schema/note.d.ts +0 -76
  425. package/dist/src/domain/schema/note.js +0 -35
  426. package/dist/src/domain/schema/page.d.ts +0 -40
  427. package/dist/src/domain/schema/page.js +0 -22
  428. package/dist/src/domain/schema/post.d.ts +0 -68
  429. package/dist/src/domain/schema/post.js +0 -35
  430. package/dist/src/domain/schema/profile.d.ts +0 -14
  431. package/dist/src/domain/schema/profile.js +0 -22
  432. package/dist/src/domain/schema/topic.d.ts +0 -24
  433. package/dist/src/domain/schema/topic.js +0 -16
  434. package/dist/src/domain/version.d.ts +0 -15
  435. package/dist/src/domain/version.js +0 -43
  436. package/dist/src/index.d.ts +0 -4
  437. package/dist/src/index.js +0 -8
  438. package/dist/src/layers/App.d.ts +0 -30
  439. package/dist/src/layers/App.js +0 -39
  440. package/dist/src/services/Ai/index.d.ts +0 -13
  441. package/dist/src/services/Ai/index.js +0 -127
  442. package/dist/src/services/Ai/overview.d.ts +0 -7
  443. package/dist/src/services/Ai/overview.js +0 -11
  444. package/dist/src/services/Ai/resources.d.ts +0 -7
  445. package/dist/src/services/Ai/resources.js +0 -59
  446. package/dist/src/services/Ai/shared.d.ts +0 -2
  447. package/dist/src/services/Ai/shared.js +0 -11
  448. package/dist/src/services/Ai/tasks.d.ts +0 -8
  449. package/dist/src/services/Ai/tasks.js +0 -144
  450. package/dist/src/services/Ai/types.d.ts +0 -130
  451. package/dist/src/services/Ai/types.js +0 -1
  452. package/dist/src/services/Api.d.ts +0 -67
  453. package/dist/src/services/Api.js +0 -348
  454. package/dist/src/services/Auth.d.ts +0 -101
  455. package/dist/src/services/Auth.js +0 -402
  456. package/dist/src/services/Backup.d.ts +0 -8
  457. package/dist/src/services/Backup.js +0 -4
  458. package/dist/src/services/Cache.d.ts +0 -8
  459. package/dist/src/services/Cache.js +0 -4
  460. package/dist/src/services/Comment.d.ts +0 -48
  461. package/dist/src/services/Comment.js +0 -102
  462. package/dist/src/services/Config.d.ts +0 -95
  463. package/dist/src/services/Config.js +0 -359
  464. package/dist/src/services/Editor.d.ts +0 -28
  465. package/dist/src/services/Editor.js +0 -95
  466. package/dist/src/services/Lexical.d.ts +0 -27
  467. package/dist/src/services/Lexical.js +0 -56
  468. package/dist/src/services/Migration.d.ts +0 -31
  469. package/dist/src/services/Migration.js +0 -177
  470. package/dist/src/services/Profile.d.ts +0 -29
  471. package/dist/src/services/Profile.js +0 -115
  472. package/dist/src/services/Renderer/content.d.ts +0 -16
  473. package/dist/src/services/Renderer/content.js +0 -110
  474. package/dist/src/services/Renderer/datetime.d.ts +0 -38
  475. package/dist/src/services/Renderer/datetime.js +0 -147
  476. package/dist/src/services/Renderer/errors.d.ts +0 -3
  477. package/dist/src/services/Renderer/errors.js +0 -59
  478. package/dist/src/services/Renderer/index.d.ts +0 -13
  479. package/dist/src/services/Renderer/index.js +0 -11
  480. package/dist/src/services/Renderer/lists.d.ts +0 -1
  481. package/dist/src/services/Renderer/lists.js +0 -101
  482. package/dist/src/services/Renderer/options.d.ts +0 -10
  483. package/dist/src/services/Renderer/options.js +0 -13
  484. package/dist/src/services/Renderer/primitives.d.ts +0 -4
  485. package/dist/src/services/Renderer/primitives.js +0 -12
  486. package/dist/src/services/Renderer/service.d.ts +0 -35
  487. package/dist/src/services/Renderer/service.js +0 -123
  488. package/dist/src/services/Renderer/view.d.ts +0 -16
  489. package/dist/src/services/Renderer/view.js +0 -1
  490. package/dist/src/services/Resolver.d.ts +0 -47
  491. package/dist/src/services/Resolver.js +0 -269
  492. package/dist/src/services/Skill.d.ts +0 -29
  493. package/dist/src/services/Skill.js +0 -421
  494. package/dist/src/services/UpdateNotifier.d.ts +0 -162
  495. package/dist/src/services/UpdateNotifier.js +0 -572
  496. package/dist/test/cli/ai/ai.test.d.ts +0 -1
  497. package/dist/test/cli/ai/ai.test.js +0 -507
  498. package/dist/test/cli/ai/verbs.test.d.ts +0 -1
  499. package/dist/test/cli/ai/verbs.test.js +0 -235
  500. package/dist/test/cli/auth/login.test.d.ts +0 -1
  501. package/dist/test/cli/auth/login.test.js +0 -236
  502. package/dist/test/cli/auth/logout-whoami.test.d.ts +0 -1
  503. package/dist/test/cli/auth/logout-whoami.test.js +0 -124
  504. package/dist/test/cli/auth/status.test.d.ts +0 -1
  505. package/dist/test/cli/auth/status.test.js +0 -90
  506. package/dist/test/cli/category/category.test.d.ts +0 -1
  507. package/dist/test/cli/category/category.test.js +0 -175
  508. package/dist/test/cli/comment/comment.test.d.ts +0 -1
  509. package/dist/test/cli/comment/comment.test.js +0 -445
  510. package/dist/test/cli/config/config.test.d.ts +0 -1
  511. package/dist/test/cli/config/config.test.js +0 -281
  512. package/dist/test/cli/edit-roundtrip.test.d.ts +0 -1
  513. package/dist/test/cli/edit-roundtrip.test.js +0 -259
  514. package/dist/test/cli/file/file.test.d.ts +0 -1
  515. package/dist/test/cli/file/file.test.js +0 -185
  516. package/dist/test/cli/help.test.d.ts +0 -1
  517. package/dist/test/cli/help.test.js +0 -289
  518. package/dist/test/cli/note/create.test.d.ts +0 -1
  519. package/dist/test/cli/note/create.test.js +0 -155
  520. package/dist/test/cli/note/list.test.d.ts +0 -1
  521. package/dist/test/cli/note/list.test.js +0 -115
  522. package/dist/test/cli/note/publish.test.d.ts +0 -1
  523. package/dist/test/cli/note/publish.test.js +0 -123
  524. package/dist/test/cli/page/page.test.d.ts +0 -1
  525. package/dist/test/cli/page/page.test.js +0 -185
  526. package/dist/test/cli/post/create.test.d.ts +0 -1
  527. package/dist/test/cli/post/create.test.js +0 -172
  528. package/dist/test/cli/post/list.test.d.ts +0 -1
  529. package/dist/test/cli/post/list.test.js +0 -133
  530. package/dist/test/cli/post/publish.test.d.ts +0 -1
  531. package/dist/test/cli/post/publish.test.js +0 -139
  532. package/dist/test/cli/post/stage-apply.test.d.ts +0 -1
  533. package/dist/test/cli/post/stage-apply.test.js +0 -215
  534. package/dist/test/cli/post/update.test.d.ts +0 -1
  535. package/dist/test/cli/post/update.test.js +0 -160
  536. package/dist/test/cli/post-note-crud.test.d.ts +0 -1
  537. package/dist/test/cli/post-note-crud.test.js +0 -362
  538. package/dist/test/cli/profile/ls.test.d.ts +0 -1
  539. package/dist/test/cli/profile/ls.test.js +0 -93
  540. package/dist/test/cli/profile/mark-use.test.d.ts +0 -1
  541. package/dist/test/cli/profile/mark-use.test.js +0 -216
  542. package/dist/test/cli/project-crud.test.d.ts +0 -1
  543. package/dist/test/cli/project-crud.test.js +0 -315
  544. package/dist/test/cli/render/lexical.test.d.ts +0 -1
  545. package/dist/test/cli/render/lexical.test.js +0 -216
  546. package/dist/test/cli/render/markdown.test.d.ts +0 -1
  547. package/dist/test/cli/render/markdown.test.js +0 -39
  548. package/dist/test/cli/snippet-crud.test.d.ts +0 -1
  549. package/dist/test/cli/snippet-crud.test.js +0 -293
  550. package/dist/test/cli/topic/topic.test.d.ts +0 -1
  551. package/dist/test/cli/topic/topic.test.js +0 -181
  552. package/dist/test/cli/update.test.d.ts +0 -1
  553. package/dist/test/cli/update.test.js +0 -395
  554. package/dist/test/domain/content-spec.test.d.ts +0 -1
  555. package/dist/test/domain/content-spec.test.js +0 -126
  556. package/dist/test/domain/envelope-compat.test.d.ts +0 -1
  557. package/dist/test/domain/envelope-compat.test.js +0 -126
  558. package/dist/test/domain/envelope.test.d.ts +0 -1
  559. package/dist/test/domain/envelope.test.js +0 -149
  560. package/dist/test/domain/errors.test.d.ts +0 -1
  561. package/dist/test/domain/errors.test.js +0 -127
  562. package/dist/test/domain/gate.test.d.ts +0 -1
  563. package/dist/test/domain/gate.test.js +0 -128
  564. package/dist/test/domain/payload.test.d.ts +0 -1
  565. package/dist/test/domain/payload.test.js +0 -259
  566. package/dist/test/helper/test-fs.d.ts +0 -24
  567. package/dist/test/helper/test-fs.js +0 -161
  568. package/dist/test/helper/test-http.d.ts +0 -31
  569. package/dist/test/helper/test-http.js +0 -66
  570. package/dist/test/integration/_helpers.d.ts +0 -5
  571. package/dist/test/integration/_helpers.js +0 -24
  572. package/dist/test/integration/cli-error-envelope.test.d.ts +0 -1
  573. package/dist/test/integration/cli-error-envelope.test.js +0 -137
  574. package/dist/test/integration/cli-help-render.test.d.ts +0 -1
  575. package/dist/test/integration/cli-help-render.test.js +0 -149
  576. package/dist/test/integration/cli-help.test.d.ts +0 -1
  577. package/dist/test/integration/cli-help.test.js +0 -67
  578. package/dist/test/integration/cli-post-list.test.d.ts +0 -1
  579. package/dist/test/integration/cli-post-list.test.js +0 -140
  580. package/dist/test/integration/cli-skill.test.d.ts +0 -1
  581. package/dist/test/integration/cli-skill.test.js +0 -74
  582. package/dist/test/integration/cli-version.test.d.ts +0 -1
  583. package/dist/test/integration/cli-version.test.js +0 -37
  584. package/dist/test/services/Api.test.d.ts +0 -1
  585. package/dist/test/services/Api.test.js +0 -553
  586. package/dist/test/services/Auth.test.d.ts +0 -1
  587. package/dist/test/services/Auth.test.js +0 -650
  588. package/dist/test/services/Config.test.d.ts +0 -1
  589. package/dist/test/services/Config.test.js +0 -510
  590. package/dist/test/services/Datetime.test.d.ts +0 -1
  591. package/dist/test/services/Datetime.test.js +0 -113
  592. package/dist/test/services/Editor.test.d.ts +0 -1
  593. package/dist/test/services/Editor.test.js +0 -205
  594. package/dist/test/services/Lexical.errors.test.d.ts +0 -1
  595. package/dist/test/services/Lexical.errors.test.js +0 -60
  596. package/dist/test/services/Lexical.test.d.ts +0 -1
  597. package/dist/test/services/Lexical.test.js +0 -68
  598. package/dist/test/services/Migration.test.d.ts +0 -1
  599. package/dist/test/services/Migration.test.js +0 -376
  600. package/dist/test/services/Profile.test.d.ts +0 -1
  601. package/dist/test/services/Profile.test.js +0 -277
  602. package/dist/test/services/Renderer.test.d.ts +0 -1
  603. package/dist/test/services/Renderer.test.js +0 -538
  604. package/dist/test/services/Resolver.test.d.ts +0 -1
  605. package/dist/test/services/Resolver.test.js +0 -320
  606. package/dist/test/services/Skill.test.d.ts +0 -1
  607. package/dist/test/services/Skill.test.js +0 -261
  608. package/dist/test/services/UpdateNotifier.spawn.test.d.ts +0 -1
  609. package/dist/test/services/UpdateNotifier.spawn.test.js +0 -73
  610. package/dist/test/services/UpdateNotifier.test.d.ts +0 -1
  611. package/dist/test/services/UpdateNotifier.test.js +0 -912
@@ -1,310 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire } from 'node:module';
3
- import { Command } from '@effect/cli';
4
- import { NodeContext, NodeHttpClient, NodeRuntime } from '@effect/platform-node';
5
- import { Effect, Layer } from 'effect';
6
- import { aiCmd } from '../cli/ai';
7
- import { authCmd } from '../cli/auth';
8
- import { categoryCmd } from '../cli/category';
9
- import { commentCmd } from '../cli/comment';
10
- import { configCmd } from '../cli/config';
11
- import { draftCmd } from '../cli/draft';
12
- import { fileCmd } from '../cli/file';
13
- import { buildRootHelpData, emitGroupHelp, emitHelp, groupHelpDataFor, isGroupName, } from '../cli/help';
14
- import { noteCmd } from '../cli/note';
15
- import { pageCmd } from '../cli/page';
16
- import { postCmd } from '../cli/post';
17
- import { previewCmd } from '../cli/preview';
18
- import { profileCmd } from '../cli/profile';
19
- import { projectCmd } from '../cli/project';
20
- import { skillCmd } from '../cli/skill';
21
- import { snippetCmd } from '../cli/snippet';
22
- import { topicCmd } from '../cli/topic';
23
- import { updateCmd } from '../cli/update';
24
- import { exitCodeForTag, Generic, ProfileInvalidName, ProfileNoneActive, tagToCode, } from '../domain/errors';
25
- import { detectInvokedCommand, requiresActiveProfile, } from '../domain/preflight-guards';
26
- import { currentDryRun, currentProfileFlag, parseGlobalFlags, } from '../domain/runtime-flags';
27
- import { AppLayer } from '../layers/App';
28
- import { Ai } from '../services/Ai';
29
- import { Api } from '../services/Api';
30
- import { Comment } from '../services/Comment';
31
- import { LOCAL_DEV_ENV, LOCAL_DEV_PROFILE_NAME, shouldUseLocalDev, } from '../services/Config';
32
- import { Migration } from '../services/Migration';
33
- import { Profile } from '../services/Profile';
34
- import { currentOutputOptions, Renderer } from '../services/Renderer';
35
- import { Resolver } from '../services/Resolver';
36
- import { make as makeUpdater } from '../services/UpdateNotifier';
37
- // ---------------------------------------------------------------------------
38
- // Package version (read once at module load via createRequire).
39
- // ---------------------------------------------------------------------------
40
- //
41
- // `import.meta.url` resolves to one of:
42
- // - `<root>/packages/cli/src/bin/mxs.ts` (tsx, dev — 2 levels up)
43
- // - `<root>/packages/cli/dist/mxs.mjs` (tsdown bundle — 1 level up)
44
- // - `<root>/packages/cli/dist/bin/mxs.mjs` (tsdown re-export shim — 2 up)
45
- //
46
- // To avoid hard-coding a fixed depth, walk up until we find a `package.json`
47
- // whose `name` is `@mx-space/cli`.
48
- const requireFrom = createRequire(import.meta.url);
49
- const resolveCliVersion = () => {
50
- const candidates = [
51
- '../package.json',
52
- '../../package.json',
53
- '../../../package.json',
54
- ];
55
- for (const candidate of candidates) {
56
- try {
57
- const pkg = requireFrom(candidate);
58
- if (pkg.name === '@mx-space/cli' && typeof pkg.version === 'string') {
59
- return pkg.version;
60
- }
61
- }
62
- catch {
63
- // try next candidate
64
- }
65
- }
66
- return '0.0.0-unknown';
67
- };
68
- const CLI_VERSION = resolveCliVersion();
69
- // Force stdout/stderr into blocking mode on POSIX pipes so writes drain
70
- // before `process.exit()` returns. Without this, output produced just before
71
- // exit (help text, JSON envelopes, error frames) is silently dropped under
72
- // pipe pressure — observable as empty-stdout flake when the CLI is spawned
73
- // from another process (e2e harness, scripts, CI).
74
- for (const stream of [process.stdout, process.stderr]) {
75
- const handle = stream._handle;
76
- if (handle && typeof handle.setBlocking === 'function') {
77
- handle.setBlocking(true);
78
- }
79
- }
80
- // Mirror the v0.2.x convenience: when running this file directly from source,
81
- // enable the local-dev default profile so the bare `mxs ...` invocation does
82
- // not require explicit configuration.
83
- if (import.meta.url.endsWith('/src/bin/mxs.ts')) {
84
- process.env[LOCAL_DEV_ENV] ??= '1';
85
- }
86
- // ---------------------------------------------------------------------------
87
- // Root command (subcommands only — global flags are pre-parsed before
88
- // `@effect/cli` ever sees argv, so they don't need to be declared here).
89
- // ---------------------------------------------------------------------------
90
- const rootCmd = Command.make('mxs', {}, () => Effect.flatMap(Renderer, (r) => r.emitInfo('mxs: mx-space CLI — see `mxs --help` for the command list, or `mxs <command> --help` for details.'))).pipe(Command.withDescription('mx-space CLI — manage your mx-core blog from the command line.'), Command.withSubcommands([
91
- authCmd,
92
- profileCmd,
93
- postCmd,
94
- noteCmd,
95
- pageCmd,
96
- draftCmd,
97
- projectCmd,
98
- categoryCmd,
99
- topicCmd,
100
- commentCmd,
101
- snippetCmd,
102
- aiCmd,
103
- configCmd,
104
- fileCmd,
105
- skillCmd,
106
- previewCmd,
107
- updateCmd,
108
- ]));
109
- // ---------------------------------------------------------------------------
110
- // Preflight: profile-name validation, legacy migration, active-profile guard,
111
- // fire-and-forget passive update notifier.
112
- // ---------------------------------------------------------------------------
113
- const preflight = (flags) => Effect.gen(function* () {
114
- const profile = yield* Profile;
115
- const migration = yield* Migration;
116
- const updater = yield* Effect.sync(() => makeUpdater({
117
- emitInfo: flags.quiet ? () => undefined : undefined,
118
- }));
119
- // 1. Validate --profile name (mirrors legacy try { validateProfileName }).
120
- if (flags.profile) {
121
- yield* profile.validateName(flags.profile).pipe(Effect.catchTag('ProfileInvalidName', (e) => Effect.fail(new ProfileInvalidName({
122
- name: e.name,
123
- message: e.message,
124
- hint: 'profile name must match ^[a-z0-9_-]{1,32}$ and must not be "current"',
125
- }))));
126
- }
127
- // 2. Run legacy migration if needed; stream status to stderr unless quiet.
128
- yield* migration
129
- .runLegacyMigrationIfNeeded({
130
- report: flags.quiet ? null : undefined,
131
- })
132
- .pipe(Effect.catchAll((err) => Effect.fail(new Generic({
133
- message: err.message ?? 'legacy migration failed',
134
- cause: err,
135
- }))));
136
- // 3. Guard: throw profile.none_active if no profile is resolvable AND the
137
- // active subcommand is not exempt.
138
- const invoked = detectInvokedCommand(process.argv);
139
- const currentProfile = yield* profile.current.pipe(Effect.catchAll(() => Effect.succeed(null)));
140
- const effectiveCurrentProfile = currentProfile ||
141
- (shouldUseLocalDev({
142
- profileOverride: flags.profile,
143
- envProfile: process.env.MXS_PROFILE,
144
- apiUrlOverride: flags.apiUrl,
145
- envApiUrl: process.env.MXS_API_URL,
146
- currentProfile,
147
- })
148
- ? LOCAL_DEV_PROFILE_NAME
149
- : null);
150
- if (requiresActiveProfile({
151
- profileFlag: flags.profile,
152
- apiUrlFlag: flags.apiUrl,
153
- envProfile: process.env.MXS_PROFILE?.trim(),
154
- envApiUrl: process.env.MXS_API_URL?.trim(),
155
- currentProfile: effectiveCurrentProfile,
156
- parentName: invoked.parentName,
157
- commandName: invoked.commandName,
158
- })) {
159
- return yield* Effect.fail(new ProfileNoneActive({
160
- message: 'no active mxs profile',
161
- hint: 'run `mxs profile use <name>` to switch, or `mxs auth login --profile <name>` to create one',
162
- }));
163
- }
164
- // 4. Fire-and-forget passive update notifier (no fiber leak — the bin's
165
- // runMain awaits all daemon fibers before exit).
166
- yield* Effect.forkDaemon(updater.maybeNotify({
167
- currentVersion: CLI_VERSION,
168
- quiet: flags.quiet,
169
- json: flags.json,
170
- output: flags.output,
171
- commandName: invoked.commandName,
172
- parentName: invoked.parentName,
173
- }));
174
- });
175
- // Top-level commands that are leafs (have their own handler) rather than
176
- // subcommand groups. Bare `mxs <leaf>` MUST execute the handler — only
177
- // `mxs <leaf> --help` should render our custom group/leaf help page.
178
- const LEAF_COMMANDS = new Set(['update', 'skill', 'preview']);
179
- const detectHelpTarget = (rest) => {
180
- // `rest` includes argv[0] (node) and argv[1] (script).
181
- const args = rest.slice(2);
182
- if (args.length === 0)
183
- return { kind: 'root' };
184
- const first = args[0];
185
- if (args.length === 1 && (first === '--help' || first === '-h')) {
186
- return { kind: 'root' };
187
- }
188
- // Bare `mxs <group>` (no flags, no verb) → group help. Groups have no
189
- // default executable; @effect/cli would print its default help anyway.
190
- // Leafs like `update` carry a real handler and must NOT be intercepted.
191
- if (args.length === 1 && isGroupName(first) && !LEAF_COMMANDS.has(first)) {
192
- return { kind: 'group', name: first };
193
- }
194
- // Explicit `--help` / `-h` on any top-level command (group OR leaf) → our
195
- // custom help.
196
- if (args.length === 2 &&
197
- isGroupName(first) &&
198
- (args[1] === '--help' || args[1] === '-h')) {
199
- return { kind: 'group', name: first };
200
- }
201
- return { kind: 'none' };
202
- };
203
- export const run = (argv) => {
204
- const parsed = parseGlobalFlags(argv);
205
- const flags = parsed.flags;
206
- // Intercept root- and group-level help BEFORE building any layers or
207
- // invoking `@effect/cli`. This sidesteps the broken layout produced by the
208
- // default renderer at both depths (see `src/cli/help.ts`).
209
- const helpTarget = detectHelpTarget(parsed.rest);
210
- if (helpTarget.kind === 'root') {
211
- emitHelp(buildRootHelpData(CLI_VERSION));
212
- return Promise.resolve();
213
- }
214
- if (helpTarget.kind === 'group') {
215
- emitGroupHelp(groupHelpDataFor(helpTarget.name, CLI_VERSION));
216
- return Promise.resolve();
217
- }
218
- // The HttpClient layer used by Api + Auth. NodeContext.layer brings FS,
219
- // Path, Terminal, CommandExecutor but NOT HttpClient — that's a separate
220
- // export.
221
- const httpLayer = NodeHttpClient.layer;
222
- // Build the flag-aware Api layer. Resolver depends on Api, so we provide
223
- // its dependencies first and let `Layer.provide` resolve the rest.
224
- const apiLayer = Api.layer({
225
- overrides: {
226
- apiUrl: flags.apiUrl,
227
- token: flags.token,
228
- apiKey: flags.apiKey,
229
- profile: flags.profile,
230
- },
231
- verbose: flags.verbose,
232
- quiet: flags.quiet,
233
- dryRun: flags.dryRun,
234
- lang: flags.lang,
235
- });
236
- // Layer composition. `AppLayer` requires platform services (FileSystem,
237
- // Path, HttpClient). `Layer.mergeAll` does not internally wire deps so we
238
- // use `Layer.provideMerge` to thread HttpClient into AppLayer while
239
- // re-exporting both. The result still requires FileSystem + Path, which
240
- // come from `NodeContext.layer` at the outer `Effect.provide` site.
241
- const appWithHttp = AppLayer.pipe(Layer.provideMerge(httpLayer));
242
- const apiWithDeps = apiLayer.pipe(Layer.provideMerge(appWithHttp));
243
- const commentWithDeps = Comment.Default.pipe(Layer.provideMerge(apiWithDeps));
244
- const resolverWithDeps = Resolver.Default.pipe(Layer.provideMerge(commentWithDeps));
245
- const aiWithDeps = Ai.Default.pipe(Layer.provideMerge(resolverWithDeps));
246
- const fullAppLayer = aiWithDeps;
247
- const cli = Command.run(rootCmd, { name: 'mxs', version: CLI_VERSION });
248
- // Tagged-error rendering + exit-code mapping happen INSIDE the FiberRef
249
- // scopes so the Renderer sees the parsed `--json` / `--output` settings.
250
- const core = preflight(flags).pipe(Effect.zipRight(cli(parsed.rest)), Effect.tapError((err) => isCliError(err)
251
- ? Effect.flatMap(Renderer, (r) => r.emitError(err))
252
- : Effect.sync(() => undefined)), Effect.catchAll((err) => Effect.sync(() => {
253
- const tag = isCliError(err) ? err._tag : 'Generic';
254
- process.exit(exitCodeForTag(tag));
255
- })));
256
- const program = Effect.locally(Effect.locally(Effect.locally(core, currentOutputOptions, {
257
- json: flags.json,
258
- output: flags.output,
259
- quiet: flags.quiet,
260
- verbose: flags.verbose,
261
- }), currentDryRun, flags.dryRun), currentProfileFlag, flags.profile?.trim() || undefined);
262
- // Defects bypass the Effect error channel; surface them generically.
263
- const finalized = program.pipe(Effect.catchAllDefect((defect) => Effect.sync(() => {
264
- process.stderr.write(`mxs: internal error\n${String(defect)}\n`);
265
- process.exit(1);
266
- })), Effect.provide(fullAppLayer), Effect.provide(NodeContext.layer));
267
- return NodeRuntime.runMain(finalized);
268
- };
269
- // ---------------------------------------------------------------------------
270
- // Helpers
271
- // ---------------------------------------------------------------------------
272
- const isCliError = (err) => {
273
- if (typeof err !== 'object' || err === null)
274
- return false;
275
- if (!('_tag' in err))
276
- return false;
277
- const tag = err._tag;
278
- return typeof tag === 'string' && tag in tagToCode;
279
- };
280
- // ---------------------------------------------------------------------------
281
- // Auto-run when executed as the program entry-point.
282
- //
283
- // `import.meta.url` ends in either `src/bin/mxs.ts` (tsx, dev) or
284
- // `dist/mxs.mjs` (built bundle); both invoke `run(process.argv)`. When the
285
- // module is imported (tests, library use), `run` is not invoked.
286
- // ---------------------------------------------------------------------------
287
- const isDirectInvocation = () => {
288
- const url = import.meta.url;
289
- // Direct dev/source invocation (`tsx src/bin/mxs.ts`) or the legacy
290
- // CommonJS shim (`bin/mxs.cjs`).
291
- if (/\/bin\/mxs\.(?:ts|cjs)$/.test(url))
292
- return true;
293
- // Bundled invocation: tsdown emits a re-export shim at `dist/bin/mxs.mjs`
294
- // that pulls in the bundled core (`dist/mxs-<hash>.mjs`). Match either.
295
- if (/\/dist\/bin\/mxs\.mjs$/.test(url))
296
- return true;
297
- if (/\/dist\/mxs(?:-[^/]*)?\.mjs$/.test(url))
298
- return true;
299
- // Fallback: process.argv[1]'s basename matches the module url's basename.
300
- if (process.argv[1]) {
301
- const argvBase = process.argv[1].split('/').pop() ?? '';
302
- const urlBase = url.split('/').pop() ?? '';
303
- if (argvBase === urlBase)
304
- return true;
305
- }
306
- return false;
307
- };
308
- if (isDirectInvocation()) {
309
- void run(process.argv);
310
- }
@@ -1,12 +0,0 @@
1
- import { Effect } from 'effect';
2
- import type { AiTaskFailed } from '../../domain/errors';
3
- import { type AiService, type AiTaskCreateResult, type AiTaskFinalView, type AiTaskType } from '../../services/Ai';
4
- import type { ApiError } from '../../services/Api';
5
- import { Renderer, type RendererService } from '../../services/Renderer';
6
- /**
7
- * Drive a freshly-created task to a terminal state, emitting progress to
8
- * stderr via the renderer. With `noWait`, returns a synthetic pending view.
9
- */
10
- export declare const followTask: (ai: AiService, renderer: RendererService, created: AiTaskCreateResult, noWait: boolean) => Effect.Effect<AiTaskFinalView, AiTaskFailed | ApiError>;
11
- export type { AiTaskType };
12
- export { Renderer };
@@ -1,38 +0,0 @@
1
- import { Effect } from 'effect';
2
- import { Renderer } from '../../services/Renderer';
3
- const synthesizePending = (created) => ({
4
- type: created.type,
5
- taskId: created.taskId,
6
- status: 'pending',
7
- refId: created.refId,
8
- targetLanguages: created.targetLanguages,
9
- });
10
- /**
11
- * Drive a freshly-created task to a terminal state, emitting progress to
12
- * stderr via the renderer. With `noWait`, returns a synthetic pending view.
13
- */
14
- export const followTask = (ai, renderer, created, noWait) => Effect.gen(function* () {
15
- if (!created.created) {
16
- yield* renderer.emitInfo(`[ai] joining existing task taskId=${created.taskId}`);
17
- }
18
- else {
19
- yield* renderer.emitInfo(`[ai] task pending… taskId=${created.taskId}`);
20
- }
21
- if (noWait)
22
- return synthesizePending(created);
23
- const final = yield* ai.waitForTask(created.taskId, {
24
- type: created.type,
25
- onProgress: (msg) => {
26
- // Fire-and-forget; stderr write is sync.
27
- // We intentionally don't await the Effect — onProgress runs inside
28
- // the polling loop and must stay sync.
29
- process.stderr.write(`${msg}\n`);
30
- },
31
- });
32
- return {
33
- ...final,
34
- refId: final.refId ?? created.refId,
35
- targetLanguages: final.targetLanguages ?? created.targetLanguages,
36
- };
37
- });
38
- export { Renderer };
@@ -1,8 +0,0 @@
1
- import { Effect } from 'effect';
2
- import { ResourceNotFound } from '../../domain/errors';
3
- import { type ResolverService } from '../../services/Resolver';
4
- /**
5
- * Resolve an article reference (snowflake id, slug, or title) to a Snowflake.
6
- * Tries post first, then note. AI generation has no page surface.
7
- */
8
- export declare const resolveArticleId: (resolver: ResolverService, ref: string) => Effect.Effect<string, ResourceNotFound>;
@@ -1,27 +0,0 @@
1
- import { Effect } from 'effect';
2
- import { ResourceNotFound } from '../../domain/errors';
3
- import { isSnowflakeId } from '../../services/Resolver';
4
- /**
5
- * Resolve an article reference (snowflake id, slug, or title) to a Snowflake.
6
- * Tries post first, then note. AI generation has no page surface.
7
- */
8
- export const resolveArticleId = (resolver, ref) => Effect.gen(function* () {
9
- if (isSnowflakeId(ref))
10
- return ref;
11
- const asPost = yield* resolver
12
- .resolvePostId(ref)
13
- .pipe(Effect.catchAll(() => Effect.succeed(null)));
14
- if (asPost)
15
- return asPost;
16
- const asNote = yield* resolver
17
- .resolveNoteId(ref)
18
- .pipe(Effect.catchAll(() => Effect.succeed(null)));
19
- if (asNote)
20
- return asNote;
21
- return yield* Effect.fail(new ResourceNotFound({
22
- message: `article not found: ${ref}`,
23
- kind: 'article',
24
- ref,
25
- hint: 'pass a snowflake id, a post slug, or a numeric note nid',
26
- }));
27
- });
@@ -1,127 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- export declare const aiCmd: Command.Command<"ai", import("../../services/Ai").Ai | import("./_poll").Renderer | import("../../services/Resolver").Resolver | import("../../services/Editor").Editor, import("../../domain/errors").ValidationJson | import("../../domain/errors").AiTaskCreateFailed | import("../../domain/errors").AiTaskFailed | import("../../domain/errors").AiRecordNotFound | import("../../services/Api").ApiError, {
3
- readonly subcommand: import("effect/Option").Option<{
4
- readonly subcommand: import("effect/Option").Option<{
5
- readonly id: string;
6
- readonly lang: import("effect/Option").Option<string>;
7
- readonly onlyDb: boolean;
8
- } | {
9
- readonly recordId: string;
10
- readonly force: boolean;
11
- } | {
12
- readonly recordId: string;
13
- } | {
14
- readonly recordId: string;
15
- } | {
16
- readonly page: import("effect/Option").Option<number>;
17
- readonly size: import("effect/Option").Option<number>;
18
- readonly grouped: boolean;
19
- readonly search: import("effect/Option").Option<string>;
20
- } | {
21
- readonly id: string;
22
- readonly to: string[];
23
- readonly force: boolean;
24
- readonly noWait: boolean;
25
- } | {
26
- readonly id: string;
27
- readonly to: string;
28
- readonly force: boolean;
29
- readonly noWait: boolean;
30
- }>;
31
- } | {
32
- readonly subcommand: import("effect/Option").Option<{
33
- readonly id: string;
34
- } | {
35
- readonly page: import("effect/Option").Option<number>;
36
- readonly size: import("effect/Option").Option<number>;
37
- readonly search: import("effect/Option").Option<string>;
38
- readonly type: import("effect/Option").Option<"post" | "note" | "page">;
39
- }>;
40
- } | {
41
- readonly subcommand: import("effect/Option").Option<{
42
- readonly id: string;
43
- readonly lang: import("effect/Option").Option<string>;
44
- readonly onlyDb: boolean;
45
- } | {
46
- readonly recordId: string;
47
- readonly force: boolean;
48
- } | {
49
- readonly recordId: string;
50
- } | {
51
- readonly recordId: string;
52
- } | {
53
- readonly page: import("effect/Option").Option<number>;
54
- readonly size: import("effect/Option").Option<number>;
55
- readonly grouped: boolean;
56
- readonly search: import("effect/Option").Option<string>;
57
- } | {
58
- readonly id: string;
59
- readonly to: string[];
60
- readonly force: boolean;
61
- readonly noWait: boolean;
62
- } | {
63
- readonly id: string;
64
- readonly to: string;
65
- readonly force: boolean;
66
- readonly noWait: boolean;
67
- }>;
68
- } | {
69
- readonly subcommand: import("effect/Option").Option<{
70
- readonly id: string;
71
- readonly lang: import("effect/Option").Option<string>;
72
- } | {
73
- readonly recordId: string;
74
- readonly force: boolean;
75
- } | {
76
- readonly recordId: string;
77
- } | {
78
- readonly subcommand: import("effect/Option").Option<{
79
- readonly recordId: string;
80
- readonly force: boolean;
81
- } | {
82
- readonly recordId: string;
83
- } | {
84
- readonly keyPath: string[];
85
- readonly to: string[];
86
- } | {
87
- readonly page: import("effect/Option").Option<number>;
88
- readonly size: import("effect/Option").Option<number>;
89
- readonly keyPath: import("effect/Option").Option<string>;
90
- readonly lang: import("effect/Option").Option<string>;
91
- }>;
92
- } | {
93
- readonly recordId: string;
94
- } | {
95
- readonly id: string;
96
- } | {
97
- readonly page: import("effect/Option").Option<number>;
98
- readonly size: import("effect/Option").Option<number>;
99
- readonly search: import("effect/Option").Option<string>;
100
- } | {
101
- readonly id: string;
102
- readonly to: string[];
103
- readonly force: boolean;
104
- readonly noWait: boolean;
105
- }>;
106
- } | {
107
- readonly subcommand: import("effect/Option").Option<{
108
- readonly id: string;
109
- } | {
110
- readonly recordId: string;
111
- readonly force: boolean;
112
- } | {
113
- readonly page: import("effect/Option").Option<number>;
114
- readonly size: import("effect/Option").Option<number>;
115
- readonly grouped: boolean;
116
- readonly search: import("effect/Option").Option<string>;
117
- } | {
118
- readonly id: string;
119
- readonly to: string[];
120
- readonly force: boolean;
121
- readonly noWait: boolean;
122
- } | {
123
- readonly provider: string;
124
- readonly model: string;
125
- }>;
126
- }>;
127
- }>;
@@ -1,46 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { registerCommandHelp } from '../help/registry';
3
- import { insightsCmd } from './insights';
4
- import { overviewCmd } from './overview';
5
- import { summaryCmd } from './summary';
6
- import { translateCmd } from './translate';
7
- import { ttsCmd } from './tts';
8
- const help = registerCommandHelp({
9
- name: 'ai',
10
- description: 'manage AI artifacts (summary, translation, insights, tts, overview)',
11
- skillChapter: 'commands-ai',
12
- verbs: [
13
- {
14
- name: 'summary',
15
- args: ['<verb>', '...'],
16
- description: 'manage AI summaries (regen, translate, list, get, by-article, edit, delete)',
17
- },
18
- {
19
- name: 'translate',
20
- args: ['<verb>', '...'],
21
- description: 'manage AI translations (run, list, get, by-article, languages, edit, delete, entries)',
22
- },
23
- {
24
- name: 'insights',
25
- args: ['<verb>', '...'],
26
- description: 'manage AI insights (refresh, translate, list, get, by-article, edit, delete)',
27
- },
28
- {
29
- name: 'tts',
30
- args: ['<verb>', '...'],
31
- description: 'manage AI narrations (run, list, by-article, voices, delete)',
32
- },
33
- {
34
- name: 'overview',
35
- args: ['<verb>', '...'],
36
- description: 'inspect the per-article AI overview board (list, by-article)',
37
- },
38
- ],
39
- });
40
- export const aiCmd = Command.make('ai').pipe(Command.withDescription(help.description), Command.withSubcommands([
41
- summaryCmd,
42
- translateCmd,
43
- insightsCmd,
44
- ttsCmd,
45
- overviewCmd,
46
- ]));
@@ -1,10 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Option } from 'effect';
3
- import { Ai } from '../../../services/Ai';
4
- import { Renderer } from '../../../services/Renderer';
5
- import { Resolver } from '../../../services/Resolver';
6
- export declare const byArticle: Command.Command<"by-article", Ai | Renderer | Resolver, import("../../../services/Api").ApiError, {
7
- readonly id: string;
8
- readonly lang: Option.Option<string>;
9
- readonly onlyDb: boolean;
10
- }>;
@@ -1,21 +0,0 @@
1
- import { Args, Command, Options } from '@effect/cli';
2
- import { Effect, Option } from 'effect';
3
- import { Ai } from '../../../services/Ai';
4
- import { Renderer } from '../../../services/Renderer';
5
- import { Resolver } from '../../../services/Resolver';
6
- import { resolveArticleId } from '../_resolve';
7
- const id = Args.text({ name: 'idOrSlug' });
8
- const lang = Options.text('lang').pipe(Options.optional);
9
- const onlyDb = Options.boolean('only-db').pipe(Options.withDescription('do not auto-generate on miss'));
10
- const unwrap = (value) => Option.getOrUndefined(value);
11
- export const byArticle = Command.make('by-article', { id, lang, onlyDb }, ({ id, lang, onlyDb }) => Effect.gen(function* () {
12
- const ai = yield* Ai;
13
- const renderer = yield* Renderer;
14
- const resolver = yield* Resolver;
15
- const refId = yield* resolveArticleId(resolver, id);
16
- const res = yield* ai.getInsightsByArticle(refId, {
17
- lang: unwrap(lang),
18
- onlyDb,
19
- });
20
- yield* renderer.emitSuccess(res);
21
- })).pipe(Command.withDescription("show an article's AI insights"));
@@ -1,7 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Ai } from '../../../services/Ai';
3
- import { Renderer } from '../../../services/Renderer';
4
- export declare const del: Command.Command<"delete", Ai | Renderer, import("../../../services/Api").ApiError, {
5
- readonly recordId: string;
6
- readonly force: boolean;
7
- }>;
@@ -1,18 +0,0 @@
1
- import { Args, Command, Options } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { ValidationFailed } from '../../../domain/errors';
4
- import { Ai } from '../../../services/Ai';
5
- import { Renderer } from '../../../services/Renderer';
6
- const recordId = Args.text({ name: 'recordId' });
7
- const force = Options.boolean('force').pipe(Options.withDescription('skip the non-TTY guard'));
8
- export const del = Command.make('delete', { recordId, force }, ({ recordId, force }) => Effect.gen(function* () {
9
- if (!force && !process.stdin.isTTY) {
10
- return yield* Effect.fail(new ValidationFailed({
11
- message: 'refusing to delete without --force in non-TTY context',
12
- }));
13
- }
14
- const ai = yield* Ai;
15
- const renderer = yield* Renderer;
16
- yield* ai.deleteInsights(recordId);
17
- yield* renderer.emitSuccess({ deleted: recordId });
18
- })).pipe(Command.withDescription('delete an AI insights record'));
@@ -1,8 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { ValidationJson } from '../../../domain/errors';
3
- import { Ai } from '../../../services/Ai';
4
- import { Editor } from '../../../services/Editor';
5
- import { Renderer } from '../../../services/Renderer';
6
- export declare const edit: Command.Command<"edit", Ai | Renderer | Editor, ValidationJson | import("../../../domain/errors").AiRecordNotFound | import("../../../services/Api").ApiError, {
7
- readonly recordId: string;
8
- }>;