@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,359 +0,0 @@
1
- import { FileSystem, Path } from '@effect/platform';
2
- import { Context, Effect, Layer } from 'effect';
3
- import { ConfigMissingApiUrl, Generic, ProfileNotFound } from '../domain/errors';
4
- // ---------------------------------------------------------------------------
5
- // Constants — keep wire-compatible with `src/core/config-store.ts`
6
- // ---------------------------------------------------------------------------
7
- export const DEFAULT_CLIENT_ID = 'mxs-cli';
8
- export const LEGACY_CONFIG_FIELDS = [
9
- 'api_base',
10
- 'auth_base',
11
- 'client_id',
12
- ];
13
- export const LOCAL_DEV_ENV = 'MXS_CLI_LOCAL_DEV';
14
- export const LOCAL_DEV_API_URL_ENV = 'MXS_CLI_LOCAL_DEV_API_URL';
15
- export const LOCAL_DEV_PROFILE_NAME = 'local-dev';
16
- export const LOCAL_DEV_API_URL_DEFAULT = 'http://localhost:2333';
17
- export const isLocalDevEnabled = () => process.env[LOCAL_DEV_ENV] === '1';
18
- export const getLocalDevApiUrl = () => process.env[LOCAL_DEV_API_URL_ENV]?.trim() || LOCAL_DEV_API_URL_DEFAULT;
19
- export const shouldUseLocalDev = (input) => isLocalDevEnabled() &&
20
- !input.profileOverride?.trim() &&
21
- !input.envProfile?.trim() &&
22
- !input.apiUrlOverride?.trim() &&
23
- !input.envApiUrl?.trim();
24
- export const stripLegacyConfigFields = (cfg) => {
25
- const out = { ...cfg };
26
- for (const k of LEGACY_CONFIG_FIELDS)
27
- delete out[k];
28
- return out;
29
- };
30
- export const parseApiUrl = (input) => Effect.gen(function* () {
31
- let url = input.trim();
32
- if (!url) {
33
- return yield* Effect.fail(new ConfigMissingApiUrl({ message: 'API URL is empty' }));
34
- }
35
- if (!/^https?:\/\//i.test(url)) {
36
- const isLocal = /^(?:localhost|127\.0\.0\.1|::1)(?::\d+)?$/i.test(url);
37
- url = isLocal ? `http://${url}` : `https://${url}`;
38
- }
39
- url = url.replace(/\/+$/, '');
40
- const match = url.match(/^(.*)\/api\/v(\d+)$/);
41
- if (match) {
42
- return { baseUrl: match[1], apiVersion: Number(match[2]) };
43
- }
44
- // Accept a bare `/api` suffix too — many users habitually paste the API
45
- // root rather than the site root. The probe lives at `/api/v{N}/auth/ok`,
46
- // so a leftover `/api` would yield a `/api/api/v{N}/...` URL and 404.
47
- const apiSuffix = url.match(/^(.*)\/api$/);
48
- if (apiSuffix) {
49
- return { baseUrl: apiSuffix[1] };
50
- }
51
- return { baseUrl: url };
52
- });
53
- export const normalizeApiUrl = (input) => Effect.map(parseApiUrl(input), (p) => p.baseUrl);
54
- // ---------------------------------------------------------------------------
55
- // Implementation
56
- // ---------------------------------------------------------------------------
57
- const PROFILES_SUBDIR = 'profiles';
58
- const getXdgConfigDir = (path) => {
59
- const xdg = process.env.XDG_CONFIG_HOME;
60
- const base = xdg && xdg.length > 0
61
- ? xdg
62
- : path.join(process.env.HOME || process.env.USERPROFILE || '~', '.config');
63
- return path.join(base, 'mxs');
64
- };
65
- const isNotFound = (err) => {
66
- if (typeof err === 'object' && err !== null) {
67
- const e = err;
68
- if (e._tag === 'SystemError' && e.reason === 'NotFound')
69
- return true;
70
- if (e.code === 'ENOENT')
71
- return true;
72
- }
73
- return false;
74
- };
75
- const toGeneric = (err, message) => new Generic({ message, cause: err });
76
- const readJsonIfExists = (fs, filePath) => Effect.gen(function* () {
77
- const raw = yield* fs.readFileString(filePath).pipe(Effect.map((s) => s), Effect.catchAll((err) => isNotFound(err)
78
- ? Effect.succeed(null)
79
- : Effect.fail(toGeneric(err, `failed to read ${filePath}: ${String(err)}`))));
80
- if (raw === null)
81
- return null;
82
- try {
83
- return JSON.parse(raw);
84
- }
85
- catch (err) {
86
- return yield* Effect.fail(new Generic({
87
- message: `failed to parse ${filePath}: ${err.message}`,
88
- cause: err,
89
- }));
90
- }
91
- });
92
- const writeJson = (fs, filePath, data, mode) => Effect.gen(function* () {
93
- const text = `${JSON.stringify(data, null, 2)}`;
94
- yield* fs
95
- .writeFileString(filePath, text, { mode })
96
- .pipe(Effect.catchAll((err) => Effect.fail(toGeneric(err, `failed to write ${filePath}`))));
97
- // Best-effort chmod — silently ignore failures (Windows / unsupported FS).
98
- yield* fs.chmod(filePath, mode).pipe(Effect.catchAll(() => Effect.void));
99
- });
100
- const ensureProfileDir = (fs, dir) => Effect.gen(function* () {
101
- yield* fs
102
- .makeDirectory(dir, { recursive: true, mode: 0o700 })
103
- .pipe(Effect.catchAll((err) => Effect.fail(toGeneric(err, `failed to create ${dir}`))));
104
- yield* fs.chmod(dir, 0o700).pipe(Effect.catchAll(() => Effect.void));
105
- });
106
- const make = Effect.gen(function* () {
107
- const fs = yield* FileSystem.FileSystem;
108
- const path = yield* Path.Path;
109
- // Path helpers --------------------------------------------------------------
110
- const configDir = () => getXdgConfigDir(path);
111
- const profilesDir = () => path.join(configDir(), PROFILES_SUBDIR);
112
- const profileDir = (name) => path.join(profilesDir(), name);
113
- const profileConfigPath = (name) => path.join(profileDir(name), 'config.json');
114
- const profileCredentialsPath = (name) => path.join(profileDir(name), 'credentials.json');
115
- const legacyConfigPath = () => path.join(configDir(), 'config.json');
116
- const legacyCredentialsPath = () => path.join(configDir(), 'credentials.json');
117
- const currentPath = () => path.join(configDir(), 'current');
118
- // Profile config IO ---------------------------------------------------------
119
- const readProfileConfig = (name) => Effect.gen(function* () {
120
- const raw = yield* readJsonIfExists(fs, profileConfigPath(name));
121
- return stripLegacyConfigFields(raw ?? {});
122
- });
123
- const writeProfileConfig = (name, cfg) => Effect.gen(function* () {
124
- yield* ensureProfileDir(fs, profileDir(name));
125
- yield* writeJson(fs, profileConfigPath(name), cfg, 0o644);
126
- });
127
- const updateProfileConfig = (name, update) => Effect.gen(function* () {
128
- const prev = yield* readProfileConfig(name);
129
- const next = update(prev);
130
- yield* writeProfileConfig(name, next);
131
- return next;
132
- });
133
- // Credentials IO ------------------------------------------------------------
134
- const enforceCredsMode = (p) => Effect.gen(function* () {
135
- const info = yield* fs.stat(p).pipe(Effect.map((i) => i), Effect.catchAll((err) => isNotFound(err)
136
- ? Effect.succeed(null)
137
- : Effect.fail(toGeneric(err, `failed to stat ${p}`))));
138
- if (info === null)
139
- return;
140
- const mode = info.mode & 0o777;
141
- if (mode !== 0o600) {
142
- process.stderr.write(`mxs: credentials file ${p} had mode ${mode.toString(8)}; chmod 600\n`);
143
- yield* fs.chmod(p, 0o600).pipe(Effect.catchAll(() => Effect.void));
144
- }
145
- });
146
- const readProfileCredentials = (name) => Effect.gen(function* () {
147
- const p = profileCredentialsPath(name);
148
- const data = yield* readJsonIfExists(fs, p);
149
- if (data !== null) {
150
- yield* enforceCredsMode(p);
151
- }
152
- return data;
153
- });
154
- const writeProfileCredentials = (name, creds) => Effect.gen(function* () {
155
- yield* ensureProfileDir(fs, profileDir(name));
156
- yield* writeJson(fs, profileCredentialsPath(name), creds, 0o600);
157
- });
158
- const deleteProfileCredentials = (name) => fs
159
- .remove(profileCredentialsPath(name), { force: true })
160
- .pipe(Effect.catchAll((err) => isNotFound(err)
161
- ? Effect.void
162
- : Effect.fail(toGeneric(err, `failed to remove credentials`))));
163
- // Legacy IO -----------------------------------------------------------------
164
- const readLegacyConfigRaw = readJsonIfExists(fs, legacyConfigPath());
165
- const readLegacyCredentialsRaw = readJsonIfExists(fs, legacyCredentialsPath());
166
- const readLegacyConfig = Effect.map(readLegacyConfigRaw, (raw) => (raw === null ? {} : stripLegacyConfigFields(raw)));
167
- const deleteLegacyConfig = fs
168
- .remove(legacyConfigPath(), { force: true })
169
- .pipe(Effect.catchAll((err) => isNotFound(err)
170
- ? Effect.void
171
- : Effect.fail(toGeneric(err, 'failed to remove legacy config'))));
172
- const deleteLegacyCredentials = fs
173
- .remove(legacyCredentialsPath(), { force: true })
174
- .pipe(Effect.catchAll((err) => isNotFound(err)
175
- ? Effect.void
176
- : Effect.fail(toGeneric(err, 'failed to remove legacy credentials'))));
177
- // Current pointer -----------------------------------------------------------
178
- const readCurrent = Effect.gen(function* () {
179
- const raw = yield* fs.readFileString(currentPath()).pipe(Effect.map((s) => s), Effect.catchAll((err) => isNotFound(err)
180
- ? Effect.succeed(null)
181
- : Effect.fail(toGeneric(err, 'failed to read current pointer'))));
182
- if (raw === null)
183
- return null;
184
- const name = raw.trim();
185
- return name.length > 0 ? name : null;
186
- });
187
- const writeCurrent = (name) => Effect.gen(function* () {
188
- yield* fs
189
- .makeDirectory(configDir(), { recursive: true })
190
- .pipe(Effect.catchAll((err) => Effect.fail(toGeneric(err, 'failed to create mxs config dir'))));
191
- yield* fs
192
- .writeFileString(currentPath(), `${name}\n`)
193
- .pipe(Effect.catchAll((err) => Effect.fail(toGeneric(err, 'failed to write current pointer'))));
194
- });
195
- // Profile dir listing -------------------------------------------------------
196
- const listProfileDirs = Effect.gen(function* () {
197
- const dir = profilesDir();
198
- const entries = yield* fs
199
- .readDirectory(dir)
200
- .pipe(Effect.map((arr) => arr), Effect.catchAll((err) => isNotFound(err)
201
- ? Effect.succeed(null)
202
- : Effect.fail(toGeneric(err, `failed to list ${dir}`))));
203
- if (entries === null)
204
- return [];
205
- const visible = entries.filter((name) => !name.startsWith('.'));
206
- // Filter out non-directory entries (files like `readme.txt`).
207
- const out = [];
208
- for (const name of visible) {
209
- const info = yield* fs.stat(path.join(dir, name)).pipe(Effect.map((i) => i), Effect.catchAll(() => Effect.succeed(null)));
210
- if (info && info.type === 'Directory')
211
- out.push(name);
212
- }
213
- return out.sort();
214
- });
215
- const profileExists = (name) => fs.stat(profileDir(name)).pipe(Effect.map((info) => info.type === 'Directory'), Effect.catchAll((err) => isNotFound(err)
216
- ? Effect.succeed(false)
217
- : Effect.fail(toGeneric(err, `failed to stat profile ${name}`))));
218
- const removeProfileDir = (name) => fs
219
- .remove(profileDir(name), { recursive: true, force: true })
220
- .pipe(Effect.catchAll((err) => Effect.fail(toGeneric(err, `failed to remove profile ${name}`))));
221
- // Resolve ------------------------------------------------------------------
222
- const buildLocalDevProfileConfig = () => Effect.gen(function* () {
223
- const parsed = yield* parseApiUrl(getLocalDevApiUrl());
224
- return {
225
- api_url: parsed.baseUrl,
226
- api_version: 2,
227
- production: false,
228
- };
229
- });
230
- const resolve = (overrides = {}) => Effect.gen(function* () {
231
- const envApiUrl = process.env.MXS_API_URL?.trim();
232
- const envToken = process.env.MXS_TOKEN?.trim();
233
- const envApiKey = process.env.MXS_API_KEY?.trim();
234
- const envProfile = process.env.MXS_PROFILE?.trim();
235
- const urlOverridden = Boolean(overrides.apiUrl || envApiUrl);
236
- const profileExplicit = Boolean(overrides.profile || envProfile);
237
- const currentProfile = yield* readCurrent;
238
- const useLocalDev = shouldUseLocalDev({
239
- profileOverride: overrides.profile,
240
- envProfile,
241
- apiUrlOverride: overrides.apiUrl,
242
- envApiUrl,
243
- currentProfile,
244
- });
245
- const profileName = overrides.profile?.trim() ||
246
- envProfile ||
247
- (useLocalDev ? LOCAL_DEV_PROFILE_NAME : null) ||
248
- currentProfile ||
249
- null;
250
- const useLocalDevEndpoint = isLocalDevEnabled() &&
251
- !urlOverridden &&
252
- profileName === LOCAL_DEV_PROFILE_NAME;
253
- if (profileName && !urlOverridden && !useLocalDev) {
254
- const exists = yield* profileExists(profileName);
255
- if (!exists) {
256
- return yield* Effect.fail(new ProfileNotFound({
257
- name: profileName,
258
- message: `profile '${profileName}' does not exist`,
259
- hint: 'run `mxs profile ls` to see configured profiles, or `mxs auth login --profile <name>` to create one',
260
- }));
261
- }
262
- }
263
- let profileConfig = {};
264
- if (useLocalDev) {
265
- profileConfig = yield* buildLocalDevProfileConfig();
266
- }
267
- else if (profileName) {
268
- profileConfig = yield* readProfileConfig(profileName);
269
- }
270
- const rawApiUrl = overrides.apiUrl || envApiUrl || profileConfig.api_url;
271
- if (!rawApiUrl) {
272
- return yield* Effect.fail(new ConfigMissingApiUrl({
273
- message: 'API URL is not configured',
274
- hint: 'set MXS_API_URL or pass --api-url <url>, or run `mxs auth login` in an interactive shell',
275
- }));
276
- }
277
- const parsed = yield* parseApiUrl(rawApiUrl);
278
- const apiUrl = parsed.baseUrl;
279
- const apiVersion = profileConfig.api_version ?? parsed.apiVersion ?? 2;
280
- const apiBase = useLocalDevEndpoint
281
- ? apiUrl
282
- : `${apiUrl}/api/v${apiVersion}`;
283
- const authBase = useLocalDevEndpoint
284
- ? `${apiUrl}/auth`
285
- : `${apiBase}/auth`;
286
- let token;
287
- if (urlOverridden) {
288
- token = overrides.token || envToken || undefined;
289
- }
290
- else {
291
- let profileCreds = null;
292
- // Read credentials for the resolved profile, including the synthetic
293
- // `local-dev` profile when auth login has written them. Skipping the
294
- // read when `useLocalDev` is true was a bug — login writes
295
- // credentials under `profiles/local-dev/`, so subsequent commands must
296
- // pick them up.
297
- if (profileName) {
298
- profileCreds = yield* readProfileCredentials(profileName);
299
- }
300
- token = overrides.token || envToken || profileCreds?.access_token;
301
- }
302
- const apiKey = overrides.apiKey || envApiKey;
303
- const isProduction = urlOverridden
304
- ? false
305
- : profileName
306
- ? Boolean(profileConfig.production)
307
- : false;
308
- return {
309
- apiUrl,
310
- apiBase,
311
- authBase,
312
- apiVersion,
313
- clientId: DEFAULT_CLIENT_ID,
314
- token,
315
- apiKey,
316
- configPath: profileName
317
- ? profileConfigPath(profileName)
318
- : legacyConfigPath(),
319
- credentialsPath: profileName
320
- ? profileCredentialsPath(profileName)
321
- : legacyCredentialsPath(),
322
- profileName,
323
- isProduction,
324
- profileExplicit,
325
- urlOverridden,
326
- };
327
- });
328
- const svc = {
329
- getConfigDir: Effect.sync(configDir),
330
- getProfilesDir: Effect.sync(profilesDir),
331
- getProfileDir: (name) => Effect.sync(() => profileDir(name)),
332
- getProfileConfigPath: (name) => Effect.sync(() => profileConfigPath(name)),
333
- getProfileCredentialsPath: (name) => Effect.sync(() => profileCredentialsPath(name)),
334
- getCurrentPath: Effect.sync(currentPath),
335
- getLegacyConfigPath: Effect.sync(legacyConfigPath),
336
- getLegacyCredentialsPath: Effect.sync(legacyCredentialsPath),
337
- readProfileConfig,
338
- writeProfileConfig,
339
- updateProfileConfig,
340
- readProfileCredentials,
341
- writeProfileCredentials,
342
- deleteProfileCredentials,
343
- readLegacyConfig,
344
- readLegacyConfigRaw,
345
- readLegacyCredentialsRaw,
346
- deleteLegacyConfig,
347
- deleteLegacyCredentials,
348
- readCurrent,
349
- writeCurrent,
350
- listProfileDirs,
351
- profileExists,
352
- removeProfileDir,
353
- resolve,
354
- };
355
- return svc;
356
- });
357
- export class Config extends Context.Tag('Config')() {
358
- static Default = Layer.effect(Config, make);
359
- }
@@ -1,28 +0,0 @@
1
- import { FileSystem } from '@effect/platform';
2
- import { Context, Effect, Layer } from 'effect';
3
- import { Generic, ValidationFailed } from '../domain/errors';
4
- export interface EditorRoundTrip {
5
- readonly filename: string;
6
- readonly initialContent: string;
7
- readonly editor?: string;
8
- }
9
- export interface EditorService {
10
- /** Spawn `$EDITOR` against a tmp file seeded with `initialContent`. */
11
- readonly openEditor: (opts: EditorRoundTrip) => Effect.Effect<string, Generic>;
12
- /** Prompt for free-form input. */
13
- readonly prompt: (message: string, opts?: {
14
- readonly initialValue?: string;
15
- readonly placeholder?: string;
16
- }) => Effect.Effect<string, Generic>;
17
- /** Yes/no confirmation. */
18
- readonly confirm: (message: string, opts?: {
19
- readonly initialValue?: boolean;
20
- }) => Effect.Effect<boolean, Generic>;
21
- /** Read a file path or stdin (`-` or no path). */
22
- readonly readFileOrStdin: (path: string | undefined) => Effect.Effect<string, ValidationFailed | Generic>;
23
- }
24
- declare const Editor_base: Context.TagClass<Editor, "Editor", EditorService>;
25
- export declare class Editor extends Editor_base {
26
- static Default: Layer.Layer<Editor, never, FileSystem.FileSystem>;
27
- }
28
- export {};
@@ -1,95 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import os from 'node:os';
3
- import path from 'node:path';
4
- import * as Clack from '@clack/prompts';
5
- import { FileSystem } from '@effect/platform';
6
- import { Context, Effect, Layer } from 'effect';
7
- import { Generic, ValidationFailed } from '../domain/errors';
8
- const messageOf = (err) => {
9
- if (err instanceof Error)
10
- return err.message;
11
- if (typeof err === 'string')
12
- return err;
13
- return String(err);
14
- };
15
- const spawnInteractive = (cmd, args) => new Promise((resolve, reject) => {
16
- const child = spawn(cmd, args, { stdio: 'inherit', shell: true });
17
- child.on('error', reject);
18
- child.on('exit', (code) => {
19
- if (code === 0)
20
- resolve();
21
- else
22
- reject(new Error(`editor exited with code ${code}`));
23
- });
24
- });
25
- const readStdinAll = () => new Promise((resolve, reject) => {
26
- const stdin = process.stdin;
27
- const chunks = [];
28
- stdin.on('data', (chunk) => {
29
- chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
30
- });
31
- stdin.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
32
- stdin.on('error', reject);
33
- if (stdin.isPaused?.())
34
- stdin.resume();
35
- });
36
- const makeService = (fs) => ({
37
- openEditor: (opts) => Effect.tryPromise({
38
- try: async () => {
39
- const editor = opts.editor ?? process.env.EDITOR ?? process.env.VISUAL;
40
- if (!editor) {
41
- throw new Error('$EDITOR not set; export EDITOR=vim (or another editor) and try again');
42
- }
43
- const dir = await new Promise((resolve, reject) => import('node:fs').then(({ promises }) => promises
44
- .mkdtemp(path.join(os.tmpdir(), 'mxs-'))
45
- .then(resolve, reject)));
46
- const tmpPath = path.join(dir, opts.filename);
47
- const nodeFs = await import('node:fs');
48
- await nodeFs.promises.writeFile(tmpPath, opts.initialContent, 'utf8');
49
- await spawnInteractive(editor, [tmpPath]);
50
- const next = await nodeFs.promises.readFile(tmpPath, 'utf8');
51
- await nodeFs.promises.unlink(tmpPath).catch(() => undefined);
52
- await nodeFs.promises.rmdir(dir).catch(() => undefined);
53
- return next;
54
- },
55
- catch: (err) => new Generic({ message: messageOf(err), cause: err }),
56
- }),
57
- prompt: (message, opts) => Effect.tryPromise({
58
- try: () => Clack.text({
59
- message,
60
- initialValue: opts?.initialValue,
61
- placeholder: opts?.placeholder,
62
- }),
63
- catch: (err) => new Generic({ message: messageOf(err), cause: err }),
64
- }).pipe(Effect.flatMap((value) => Clack.isCancel(value)
65
- ? Effect.fail(new Generic({ message: 'cancelled by user' }))
66
- : Effect.succeed(value))),
67
- confirm: (message, opts) => Effect.tryPromise({
68
- try: () => Clack.confirm({
69
- message,
70
- initialValue: opts?.initialValue,
71
- }),
72
- catch: (err) => new Generic({ message: messageOf(err), cause: err }),
73
- }).pipe(Effect.flatMap((value) => Clack.isCancel(value)
74
- ? Effect.fail(new Generic({ message: 'cancelled by user' }))
75
- : Effect.succeed(value))),
76
- readFileOrStdin: (p) => {
77
- if (p === undefined || p === '-' || p === '') {
78
- return Effect.tryPromise({
79
- try: () => readStdinAll(),
80
- catch: (err) => new ValidationFailed({
81
- message: `failed to read stdin: ${messageOf(err)}`,
82
- }),
83
- });
84
- }
85
- return fs.readFileString(p).pipe(Effect.mapError((err) => new ValidationFailed({
86
- message: `failed to read ${p}: ${messageOf(err)}`,
87
- })));
88
- },
89
- });
90
- export class Editor extends Context.Tag('Editor')() {
91
- static Default = Layer.effect(Editor, Effect.gen(function* () {
92
- const fs = yield* FileSystem.FileSystem;
93
- return makeService(fs);
94
- }));
95
- }
@@ -1,27 +0,0 @@
1
- import { Context, Effect, Layer } from 'effect';
2
- import { ValidationXml } from '../domain/errors';
3
- export interface LexicalState {
4
- readonly root: {
5
- readonly type: 'root';
6
- readonly children: ReadonlyArray<unknown>;
7
- readonly direction?: 'ltr' | 'rtl' | null;
8
- readonly format?: string;
9
- readonly indent?: number;
10
- readonly version?: number;
11
- };
12
- }
13
- export interface LexicalService {
14
- /** Parse LiteXML into a Lexical editor state. */
15
- readonly litexmlToPayload: (xml: string) => Effect.Effect<LexicalState, ValidationXml>;
16
- /** Serialize a Lexical editor state back to LiteXML. */
17
- readonly payloadToLitexml: (state: LexicalState) => Effect.Effect<string, ValidationXml>;
18
- /** Derive a Markdown rendering from a Lexical state (used for `--output llm`). */
19
- readonly lexicalJsonToMarkdown: (state: LexicalState) => Effect.Effect<string, ValidationXml>;
20
- /** Convenience: a blank Lexical state for new-document scaffolds. */
21
- readonly emptyState: Effect.Effect<LexicalState>;
22
- }
23
- declare const Lexical_base: Context.TagClass<Lexical, "Lexical", LexicalService>;
24
- export declare class Lexical extends Lexical_base {
25
- static Default: Layer.Layer<Lexical>;
26
- }
27
- export {};
@@ -1,56 +0,0 @@
1
- import { deserializeMxLitexmlToLexical, mxLexicalToMarkdown, serializeMxLexicalToLitexml, stripMxLitexmlDocWrapper, } from '@mx-space/editor';
2
- import { Context, Effect, Layer } from 'effect';
3
- import { ValidationXml } from '../domain/errors';
4
- const messageOf = (err) => {
5
- if (err instanceof Error)
6
- return err.message;
7
- if (typeof err === 'string')
8
- return err;
9
- return String(err);
10
- };
11
- const makeService = () => ({
12
- litexmlToPayload: (xml) => Effect.try({
13
- try: () => {
14
- const wrapped = xml.includes('<doc') ? xml : `<doc>${xml}</doc>`;
15
- return deserializeMxLitexmlToLexical(wrapped);
16
- },
17
- catch: (err) => new ValidationXml({
18
- message: `failed to parse LiteXML: ${messageOf(err)}`,
19
- cause: err,
20
- }),
21
- }),
22
- payloadToLitexml: (state) => Effect.try({
23
- try: () => {
24
- const xml = serializeMxLexicalToLitexml(state, {
25
- compact: false,
26
- });
27
- return stripMxLitexmlDocWrapper(xml).trim();
28
- },
29
- catch: (err) => new ValidationXml({
30
- message: `failed to serialize Lexical state: ${messageOf(err)}`,
31
- cause: err,
32
- }),
33
- }),
34
- lexicalJsonToMarkdown: (state) => Effect.try({
35
- try: () => {
36
- return mxLexicalToMarkdown(state);
37
- },
38
- catch: (err) => new ValidationXml({
39
- message: `failed to render Markdown: ${messageOf(err)}`,
40
- cause: err,
41
- }),
42
- }),
43
- emptyState: Effect.sync(() => ({
44
- root: {
45
- type: 'root',
46
- children: [],
47
- direction: 'ltr',
48
- format: '',
49
- indent: 0,
50
- version: 1,
51
- },
52
- })),
53
- });
54
- export class Lexical extends Context.Tag('Lexical')() {
55
- static Default = Layer.succeed(Lexical, makeService());
56
- }
@@ -1,31 +0,0 @@
1
- import { FileSystem } from '@effect/platform';
2
- import { Context, Effect, Layer } from 'effect';
3
- import { ConfigMigrationFailed, type Generic } from '../domain/errors';
4
- import { Config } from './Config';
5
- export interface MigrationResult {
6
- readonly profile: string | null;
7
- readonly production: boolean;
8
- readonly cleanedStaleLegacy: boolean;
9
- }
10
- export interface MigrationOptions {
11
- /** Defaults to process.stdin.isTTY && process.stdout.isTTY. */
12
- readonly isTTY?: boolean;
13
- /**
14
- * Injected for tests. Called when TTY + legacy api_url present. Resolves
15
- * `true` to set production. May resolve a symbol (treated as cancel → false).
16
- */
17
- readonly promptIsProduction?: (apiUrl: string) => Promise<boolean | symbol>;
18
- /**
19
- * Where to emit status messages. Defaults to `process.stderr`. Pass `null`
20
- * to suppress entirely.
21
- */
22
- readonly report?: ((line: string) => void) | null;
23
- }
24
- export interface MigrationService {
25
- readonly runLegacyMigrationIfNeeded: (opts?: MigrationOptions) => Effect.Effect<MigrationResult | null, ConfigMigrationFailed | Generic>;
26
- }
27
- declare const Migration_base: Context.TagClass<Migration, "Migration", MigrationService>;
28
- export declare class Migration extends Migration_base {
29
- static Default: Layer.Layer<Migration, never, Config | FileSystem.FileSystem>;
30
- }
31
- export {};