@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,20 +0,0 @@
1
- import { Command, Options } from '@effect/cli';
2
- import { Effect, Option } from 'effect';
3
- import { Ai } from '../../../services/Ai';
4
- import { Renderer } from '../../../services/Renderer';
5
- const page = Options.integer('page').pipe(Options.optional);
6
- const size = Options.integer('size').pipe(Options.optional);
7
- const grouped = Options.boolean('grouped').pipe(Options.withDescription('group rows by article'));
8
- const search = Options.text('search').pipe(Options.optional, Options.withDescription('filter by article title (grouped mode)'));
9
- const unwrap = (value) => Option.getOrUndefined(value);
10
- export const list = Command.make('list', { page, size, grouped, search }, ({ page, size, grouped, search }) => Effect.gen(function* () {
11
- const ai = yield* Ai;
12
- const renderer = yield* Renderer;
13
- const res = yield* ai.listTts({
14
- page: unwrap(page),
15
- size: unwrap(size),
16
- grouped,
17
- search: unwrap(search),
18
- });
19
- yield* renderer.emitSuccess(res);
20
- })).pipe(Command.withDescription('list AI narrations'));
@@ -1,10 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Ai } from '../../../services/Ai';
3
- import { Renderer } from '../../../services/Renderer';
4
- import { Resolver } from '../../../services/Resolver';
5
- export declare const run: Command.Command<"run", Ai | Renderer | Resolver, import("../../../domain/errors").AiTaskCreateFailed | import("../../../domain/errors").AiTaskFailed | import("../../../services/Api").ApiError, {
6
- readonly id: string;
7
- readonly to: string[];
8
- readonly force: boolean;
9
- readonly noWait: boolean;
10
- }>;
@@ -1,25 +0,0 @@
1
- import { Args, Command, Options } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { Ai } from '../../../services/Ai';
4
- import { Renderer } from '../../../services/Renderer';
5
- import { Resolver } from '../../../services/Resolver';
6
- import { followTask } from '../_poll';
7
- import { resolveArticleId } from '../_resolve';
8
- import { aiTaskView } from '../views';
9
- const id = Args.text({ name: 'idOrSlug' });
10
- const to = Options.text('to').pipe(Options.repeated, Options.withDescription('narration language code (repeatable)'));
11
- const force = Options.boolean('force').pipe(Options.withDescription('regenerate even when an up-to-date result exists'));
12
- const noWait = Options.boolean('no-wait').pipe(Options.withDescription('return immediately after creating the task'));
13
- export const run = Command.make('run', { id, to, force, noWait }, ({ id, to, force, noWait }) => Effect.gen(function* () {
14
- const ai = yield* Ai;
15
- const renderer = yield* Renderer;
16
- const resolver = yield* Resolver;
17
- const refId = yield* resolveArticleId(resolver, id);
18
- const created = yield* ai.runTts({
19
- refId,
20
- targetLanguages: to.length ? to : undefined,
21
- force,
22
- });
23
- const final = yield* followTask(ai, renderer, created, noWait);
24
- yield* renderer.emit(aiTaskView, final);
25
- })).pipe(Command.withDescription('generate AI narration for an article'));
@@ -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 voices: Command.Command<"voices", Ai | Renderer, import("../../../services/Api").ApiError, {
5
- readonly provider: string;
6
- readonly model: string;
7
- }>;
@@ -1,12 +0,0 @@
1
- import { Command, Options } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { Ai } from '../../../services/Ai';
4
- import { Renderer } from '../../../services/Renderer';
5
- const provider = Options.text('provider').pipe(Options.withDescription('AI provider id'));
6
- const model = Options.text('model').pipe(Options.withDescription('TTS model id'));
7
- export const voices = Command.make('voices', { provider, model }, ({ provider, model }) => Effect.gen(function* () {
8
- const ai = yield* Ai;
9
- const renderer = yield* Renderer;
10
- const res = yield* ai.discoverTtsVoices({ providerId: provider, model });
11
- yield* renderer.emitSuccess(res);
12
- })).pipe(Command.withDescription('discover TTS voices for a provider/model pair'));
@@ -1,3 +0,0 @@
1
- import type { AiTaskFinalView } from '../../services/Ai';
2
- import type { View } from '../../services/Renderer/view';
3
- export declare const aiTaskView: View<AiTaskFinalView>;
@@ -1,45 +0,0 @@
1
- const formatField = (key, value) => ` ${key.padEnd(15)}${value === undefined || value === null || value === '' ? '-' : String(value)}`;
2
- const formatCost = (cost) => {
3
- if (cost === undefined)
4
- return undefined;
5
- // Core stores totalCost as cents; show as `<x.xx> ¢`.
6
- return `${cost.toFixed(2)} ¢`;
7
- };
8
- const formatList = (values) => values && values.length ? values.join(', ') : undefined;
9
- export const aiTaskView = {
10
- kind: 'ai-task',
11
- modes: new Set(['readable', 'llm']),
12
- readable: (data) => {
13
- const lines = [`ai ${data.type} task ${data.status}`];
14
- const fields = [
15
- ['taskId', data.taskId],
16
- ['refId', data.refId],
17
- ['targetLanguages', formatList(data.targetLanguages)],
18
- ['totalTokens', data.totalTokens],
19
- ['totalCost', formatCost(data.totalCost)],
20
- ['resultIds', formatList(data.resultIds)],
21
- ];
22
- for (const [k, v] of fields) {
23
- if (v === undefined || v === null || v === '')
24
- continue;
25
- lines.push(formatField(k, v));
26
- }
27
- if (data.error?.message) {
28
- lines.push(formatField('error', data.error.message));
29
- }
30
- return lines.join('\n');
31
- },
32
- llm: (data) => [
33
- `${data.status}`,
34
- `type=${data.type}`,
35
- `taskId=${data.taskId}`,
36
- data.refId ? `refId=${data.refId}` : null,
37
- data.totalTokens !== undefined ? `tokens=${data.totalTokens}` : null,
38
- data.totalCost !== undefined
39
- ? `cost=${data.totalCost.toFixed(2)}c`
40
- : null,
41
- data.error?.message ? `error=${data.error.message}` : null,
42
- ]
43
- .filter((s) => s !== null)
44
- .join(' '),
45
- };
@@ -1,6 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- export declare const authCmd: Command.Command<"auth", import("../../services/Config").Config | import("../../services/Auth").Auth | import("../ai/_poll").Renderer | import("../../services/Editor").Editor | import("../../services/Profile").Profile, import("../../domain/errors").AuthMissing | import("../../domain/errors").AuthExpired | import("../../domain/errors").AuthDenied | import("../../domain/errors").AuthProbe | import("../../domain/errors").ProfileNotFound | import("../../domain/errors").ProfileNoneActive | import("../../domain/errors").Generic, {
3
- readonly subcommand: import("effect/Option").Option<{
4
- readonly production: import("effect/Option").Option<boolean>;
5
- } | {} | {} | {}>;
6
- }>;
@@ -1,22 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { registerCommandHelp } from '../help/registry';
3
- import { login } from './login';
4
- import { logout } from './logout';
5
- import { status } from './status';
6
- import { whoami } from './whoami';
7
- const help = registerCommandHelp({
8
- name: 'auth',
9
- description: 'authentication',
10
- skillChapter: 'commands-auth',
11
- verbs: [
12
- {
13
- name: 'login',
14
- args: ['[--production]'],
15
- description: 'start device authorization flow',
16
- },
17
- { name: 'logout', description: 'delete stored credentials' },
18
- { name: 'whoami', description: 'show the authenticated user' },
19
- { name: 'status', description: 'show token validity and expiry' },
20
- ],
21
- });
22
- export const authCmd = Command.make('auth').pipe(Command.withDescription(help.description), Command.withSubcommands([login, logout, whoami, status]));
@@ -1,11 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Option } from 'effect';
3
- import { Generic } from '../../domain/errors';
4
- import { Auth } from '../../services/Auth';
5
- import { Config } from '../../services/Config';
6
- import { Editor } from '../../services/Editor';
7
- import { Profile } from '../../services/Profile';
8
- import { Renderer } from '../../services/Renderer';
9
- export declare const login: Command.Command<"login", Config | Auth | Renderer | Editor | Profile, import("../../domain/errors").AuthExpired | import("../../domain/errors").AuthDenied | import("../../domain/errors").AuthProbe | Generic, {
10
- readonly production: Option.Option<boolean>;
11
- }>;
@@ -1,168 +0,0 @@
1
- import { Command, Options } from '@effect/cli';
2
- import { Effect, FiberRef, Option } from 'effect';
3
- import open from 'open';
4
- import { Generic } from '../../domain/errors';
5
- import { currentProfileFlag } from '../../domain/runtime-flags';
6
- import { Auth, toCredentials } from '../../services/Auth';
7
- import { Config, DEFAULT_CLIENT_ID, parseApiUrl, } from '../../services/Config';
8
- import { Editor } from '../../services/Editor';
9
- import { Profile } from '../../services/Profile';
10
- import { Renderer } from '../../services/Renderer';
11
- import { arrow, bold, dim, humanDuration, indent, ok, roundedBox } from '../ui';
12
- const production = Options.boolean('production', {
13
- negationNames: ['no-production'],
14
- }).pipe(Options.optional);
15
- const DEFAULT_PROFILE = 'default';
16
- export const login = Command.make('login', { production }, ({ production }) => Effect.gen(function* () {
17
- const auth = yield* Auth;
18
- const profile = yield* Profile;
19
- const config = yield* Config;
20
- const editor = yield* Editor;
21
- const renderer = yield* Renderer;
22
- const opts = yield* renderer.options;
23
- // 1. Resolve api-url + target profile from current config; prompt when
24
- // no URL is available on a fresh install.
25
- //
26
- // The `--profile` global flag is pre-parsed and propagated via a
27
- // FiberRef; forward it as an override so `auth login --profile foo`
28
- // targets `foo` even when the active-profile pointer is missing or
29
- // points at a profile whose directory has been deleted manually.
30
- const flagProfile = yield* FiberRef.get(currentProfileFlag);
31
- const resolved = yield* profile
32
- .resolve(flagProfile ? { profile: flagProfile } : {})
33
- .pipe(Effect.catchTags({
34
- Generic: (e) => {
35
- // ConfigMissingApiUrl is collapsed into Generic by Profile.resolve;
36
- // detect it via the preserved `cause` and prompt instead of failing.
37
- const cause = e.cause;
38
- return cause?._tag === 'ConfigMissingApiUrl'
39
- ? Effect.succeed(null)
40
- : Effect.fail(e);
41
- },
42
- // The active-profile pointer (or the resolved profile name) refers
43
- // to a directory that does not exist. `auth login` is the command
44
- // that *creates* a profile, so treat this as a fresh-install path
45
- // rather than a hard error.
46
- ProfileNotFound: () => Effect.succeed(null),
47
- }));
48
- let apiUrl;
49
- let targetProfile;
50
- if (resolved) {
51
- apiUrl = resolved.apiUrl;
52
- targetProfile = resolved.profileName;
53
- }
54
- else {
55
- const answer = yield* editor.prompt('Enter your mx-space API URL (e.g. https://blog.example.com):', { placeholder: 'https://blog.example.com' });
56
- const trimmed = answer.trim();
57
- if (!trimmed) {
58
- return yield* Effect.fail(new Generic({ message: 'API URL is required' }));
59
- }
60
- const parsed = yield* parseApiUrl(trimmed).pipe(Effect.mapError((e) => new Generic({ message: e.message, cause: e })));
61
- apiUrl = parsed.baseUrl;
62
- // Prefer the explicit `--profile` flag over a stale `current` pointer.
63
- // Falling back to `readCurrent` preserves the historical behaviour on
64
- // fresh installs (no flag, no pointer → step 5 lands on DEFAULT_PROFILE).
65
- targetProfile = flagProfile?.trim() || (yield* config.readCurrent);
66
- }
67
- yield* renderer.emitInfoBlock(({ color }) => `${arrow(`probing ${apiUrl}…`, color)}`);
68
- // 2. Probe the auth endpoint. Preserve AuthProbe verbatim so the hint
69
- // (attempted endpoints + URL guidance) reaches the renderer; only
70
- // collapse transport-level errors into Generic.
71
- const probeResult = yield* auth.probe(apiUrl).pipe(Effect.catchTags({
72
- NetworkTimeout: (e) => Effect.fail(new Generic({ message: e.message ?? 'auth probe failed', cause: e })),
73
- NetworkDns: (e) => Effect.fail(new Generic({ message: e.message ?? 'auth probe failed', cause: e })),
74
- NetworkRefused: (e) => Effect.fail(new Generic({ message: e.message ?? 'auth probe failed', cause: e })),
75
- }));
76
- // 3. Request the device code.
77
- const code = yield* auth.requestDeviceCode(probeResult.authBase, DEFAULT_CLIENT_ID);
78
- // Boxed device-code banner: verification URL on top, code in a rounded
79
- // box for legibility, expiry hint underneath.
80
- yield* renderer.emitInfoBlock(({ color }) => {
81
- const ttl = humanDuration(code.expires_in);
82
- const lines = [
83
- ` ${dim('API base:', color)} ${probeResult.apiBase}`,
84
- '',
85
- ` Visit ${bold(code.verification_uri, color)} and enter:`,
86
- '',
87
- indent(roundedBox([` ${bold(code.user_code, color)} `]), 6),
88
- '',
89
- ` ${dim(`Expires in ${ttl}.`, color)}`,
90
- ];
91
- return lines.join('\n');
92
- });
93
- if (opts.json) {
94
- yield* renderer.emitSuccess({
95
- verification_uri: code.verification_uri,
96
- verification_uri_complete: code.verification_uri_complete,
97
- user_code: code.user_code,
98
- expires_in: code.expires_in,
99
- interval: code.interval,
100
- });
101
- }
102
- else if (!opts.quiet && code.verification_uri_complete) {
103
- yield* Effect.sync(() => {
104
- void open(code.verification_uri_complete).catch(() => undefined);
105
- });
106
- }
107
- // 4. Poll for token.
108
- const token = yield* auth.pollDeviceToken(probeResult.authBase, DEFAULT_CLIENT_ID, code.device_code, {
109
- intervalSec: code.interval,
110
- expiresInSec: code.expires_in,
111
- onTick: (state) => {
112
- if (state === 'slow_down' && !opts.quiet && !opts.json) {
113
- process.stderr.write('slow_down — increasing interval\n');
114
- }
115
- },
116
- });
117
- const cred = toCredentials(token);
118
- // 5. Determine target profile per legacy precedence:
119
- // 1. resolved profileName (which itself honours --profile / MXS_PROFILE / current)
120
- // 2. fresh install → 'default'
121
- const target = targetProfile?.trim() || DEFAULT_PROFILE;
122
- const existing = yield* config
123
- .readProfileConfig(target)
124
- .pipe(Effect.catchAll(() => Effect.succeed({})));
125
- const productionFlag = Option.getOrElse(production, () => undefined);
126
- yield* config.writeProfileConfig(target, {
127
- ...existing,
128
- api_url: apiUrl,
129
- api_version: probeResult.apiVersion,
130
- ...(productionFlag !== undefined
131
- ? { production: productionFlag }
132
- : existing.production !== undefined
133
- ? { production: existing.production }
134
- : {}),
135
- });
136
- yield* config.writeProfileCredentials(target, cred);
137
- yield* config.writeCurrent(target);
138
- // Some servers (notably local-dev) omit `user` from the device-token
139
- // response. Probe `/get-session` to backfill so `whoami` / `status` have
140
- // something to display. Best-effort: failures fall back to the original
141
- // creds and are surfaced only via the missing-user readable output.
142
- const enriched = yield* auth
143
- .enrichUser(target, probeResult.authBase, cred)
144
- .pipe(Effect.catchAll(() => Effect.succeed(cred)));
145
- // 6. Mark production via the Profile service when explicitly requested
146
- // (idempotent with the write above — Profile.mark enforces the
147
- // profile-exists invariant and is the documented surface).
148
- if (productionFlag === true) {
149
- yield* profile
150
- .mark(target, { production: true })
151
- .pipe(Effect.catchAll((e) => Effect.fail(new Generic({ message: e.message ?? String(e), cause: e }))));
152
- }
153
- yield* renderer.emitView({
154
- user: enriched.user ?? null,
155
- expires_at: enriched.expires_at,
156
- profile: target,
157
- }, ({ color }) => {
158
- const head = ok(`logged in to '${target}'`, color);
159
- const user = enriched.user;
160
- if (!user || (!user.name && !user.email))
161
- return head;
162
- const name = user.name ?? user.email ?? '';
163
- const email = user.name && user.email ? ` (${user.email})` : '';
164
- const role = user.role;
165
- const meta = role ? `${name}${email} · ${role}` : `${name}${email}`;
166
- return `${head}\n ${dim(meta, color)}`;
167
- });
168
- }));
@@ -1,6 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { ProfileNoneActive } from '../../domain/errors';
3
- import { Auth } from '../../services/Auth';
4
- import { Config } from '../../services/Config';
5
- import { Renderer } from '../../services/Renderer';
6
- export declare const logout: Command.Command<"logout", Config | Auth | Renderer, ProfileNoneActive | import("../../domain/errors").Generic, {}>;
@@ -1,21 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { ProfileNoneActive } from '../../domain/errors';
4
- import { Auth } from '../../services/Auth';
5
- import { Config } from '../../services/Config';
6
- import { Renderer } from '../../services/Renderer';
7
- export const logout = Command.make('logout', {}, () => Effect.gen(function* () {
8
- const auth = yield* Auth;
9
- const config = yield* Config;
10
- const renderer = yield* Renderer;
11
- const target = yield* config.readCurrent;
12
- if (!target) {
13
- return yield* Effect.fail(new ProfileNoneActive({
14
- message: 'no active profile to log out of',
15
- hint: 'pass --profile <name> or set an active profile with `mxs profile use <name>`',
16
- }));
17
- }
18
- yield* auth.logout(target);
19
- yield* renderer.emitInfo(`mxs: logged out of profile '${target}'`);
20
- yield* renderer.emitSuccess({ ok: true });
21
- }));
@@ -1,4 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Config } from '../../services/Config';
3
- import { Renderer } from '../../services/Renderer';
4
- export declare const status: Command.Command<"status", Config | Renderer, import("../../domain/errors").Generic, {}>;
@@ -1,31 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { isExpiringSoon } from '../../services/Auth';
4
- import { Config } from '../../services/Config';
5
- import { Renderer } from '../../services/Renderer';
6
- import { statusView } from './view';
7
- export const status = Command.make('status', {}, () => Effect.gen(function* () {
8
- const config = yield* Config;
9
- const renderer = yield* Renderer;
10
- const envProfile = process.env.MXS_PROFILE?.trim() || null;
11
- const profileName = envProfile || (yield* config.readCurrent) || null;
12
- const cred = profileName
13
- ? yield* config.readProfileCredentials(profileName)
14
- : null;
15
- if (!cred) {
16
- yield* renderer.emit(statusView, {
17
- authenticated: false,
18
- profile: profileName,
19
- });
20
- return;
21
- }
22
- const expiringSoon = isExpiringSoon(cred);
23
- yield* renderer.emit(statusView, {
24
- authenticated: true,
25
- expires_at: cred.expires_at,
26
- expiring_soon: expiringSoon,
27
- has_refresh: Boolean(cred.refresh_token),
28
- user: cred.user ?? null,
29
- profile: profileName,
30
- });
31
- }));
@@ -1,25 +0,0 @@
1
- import type { View } from '../../services/Renderer/view';
2
- export interface WhoamiData {
3
- readonly user: {
4
- readonly name?: string;
5
- readonly email?: string;
6
- readonly role?: string;
7
- } | null;
8
- readonly api_url: string;
9
- readonly profile: string | null;
10
- readonly expires_at?: number | null;
11
- }
12
- export declare const whoamiView: View<WhoamiData>;
13
- export interface StatusData {
14
- readonly authenticated: boolean;
15
- readonly profile: string | null;
16
- readonly expires_at?: number;
17
- readonly expiring_soon?: boolean;
18
- readonly has_refresh?: boolean;
19
- readonly user?: {
20
- readonly name?: string;
21
- readonly email?: string;
22
- readonly role?: string;
23
- } | null;
24
- }
25
- export declare const statusView: View<StatusData>;
@@ -1,46 +0,0 @@
1
- import { bold, dim, dot, fail, humanUntil } from '../ui';
2
- const renderIdentLine = (user, color) => {
3
- if (user?.name) {
4
- return `${bold(user.name, color)}${user.email ? ` ${dim(`· ${user.email}`, color)}` : ''}`;
5
- }
6
- if (user?.email)
7
- return bold(user.email, color);
8
- return dim('(no user data)', color);
9
- };
10
- export const whoamiView = {
11
- kind: 'whoami',
12
- modes: new Set(['readable', 'llm']),
13
- readable: (data, { color }) => {
14
- const head = dot('signed in', color);
15
- const ident = renderIdentLine(data.user, color);
16
- const meta = [];
17
- if (data.user?.role)
18
- meta.push(`role: ${data.user.role}`);
19
- meta.push(`api: ${data.api_url}`);
20
- if (data.expires_at) {
21
- meta.push(`session expires in ${humanUntil(data.expires_at)}`);
22
- }
23
- return `${head}\n\n ${ident}\n ${dim(meta.join(' · '), color)}`;
24
- },
25
- };
26
- export const statusView = {
27
- kind: 'status',
28
- modes: new Set(['readable', 'llm']),
29
- readable: (data, { color }) => {
30
- if (!data.authenticated) {
31
- return `${fail('not authenticated', color)}\n ${dim('run `mxs auth login`', color)}`;
32
- }
33
- const head = dot('signed in', color);
34
- const ident = renderIdentLine(data.user ?? null, color);
35
- const meta = [];
36
- if (data.profile)
37
- meta.push(`profile: ${data.profile}`);
38
- if (data.user?.role)
39
- meta.push(`role: ${data.user.role}`);
40
- if (data.expires_at !== undefined) {
41
- const expires = `expires in ${humanUntil(data.expires_at)}`;
42
- meta.push(data.expiring_soon ? `${expires} (expiring soon)` : expires);
43
- }
44
- return `${head}\n\n ${ident}\n ${dim(meta.join(' · '), color)}`;
45
- },
46
- };
@@ -1,7 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { AuthMissing } from '../../domain/errors';
3
- import { Auth } from '../../services/Auth';
4
- import { Config } from '../../services/Config';
5
- import { Profile } from '../../services/Profile';
6
- import { Renderer } from '../../services/Renderer';
7
- export declare const whoami: Command.Command<"whoami", Config | Auth | Renderer | Profile, AuthMissing | import("../../domain/errors").AuthExpired | import("../../domain/errors").ProfileNotFound | import("../../domain/errors").Generic, {}>;
@@ -1,44 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { AuthMissing } from '../../domain/errors';
4
- import { Auth } from '../../services/Auth';
5
- import { Config } from '../../services/Config';
6
- import { Profile } from '../../services/Profile';
7
- import { Renderer } from '../../services/Renderer';
8
- import { whoamiView } from './view';
9
- export const whoami = Command.make('whoami', {}, () => Effect.gen(function* () {
10
- const auth = yield* Auth;
11
- const profile = yield* Profile;
12
- const config = yield* Config;
13
- const renderer = yield* Renderer;
14
- const resolved = yield* profile.resolve();
15
- const cred = resolved.profileName
16
- ? yield* config.readProfileCredentials(resolved.profileName)
17
- : null;
18
- if (!cred && !resolved.token && !resolved.apiKey) {
19
- return yield* Effect.fail(new AuthMissing({
20
- message: 'not authenticated',
21
- hint: 'run `mxs auth login`',
22
- }));
23
- }
24
- // Refresh credentials when near expiry; on missing/expired surface the
25
- // failure so the entry-point exits with the right code. On generic
26
- // refresh failure (e.g. server unreachable) fall back to the cached user.
27
- const refreshed = yield* auth
28
- .ensureFresh(resolved)
29
- .pipe(Effect.catchTag('Generic', () => Effect.succeed(cred)));
30
- // Backfill user via /get-session when the cached cred lacks it (servers
31
- // that omit `user` from the device-token response). Best-effort.
32
- const active = refreshed ?? cred;
33
- const enriched = active && !active.user && resolved.profileName
34
- ? yield* auth
35
- .enrichUser(resolved.profileName, resolved.authBase, active)
36
- .pipe(Effect.catchAll(() => Effect.succeed(active)))
37
- : active;
38
- yield* renderer.emit(whoamiView, {
39
- user: enriched?.user ?? null,
40
- api_url: resolved.apiUrl,
41
- profile: resolved.profileName,
42
- expires_at: enriched?.expires_at ?? null,
43
- });
44
- }));
@@ -1,10 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Option } from 'effect';
3
- import { Api } from '../../services/Api';
4
- import { Renderer } from '../../services/Renderer';
5
- export declare const create: Command.Command<"create", Api | Renderer, import("../../services/Api").ApiError, {
6
- readonly name: string;
7
- readonly slug: string;
8
- readonly type: Option.Option<"tag" | "category">;
9
- readonly icon: Option.Option<string>;
10
- }>;
@@ -1,24 +0,0 @@
1
- import { Command, Options } from '@effect/cli';
2
- import { Effect, Option } from 'effect';
3
- import { Api } from '../../services/Api';
4
- import { Renderer } from '../../services/Renderer';
5
- const name = Options.text('name');
6
- const slug = Options.text('slug');
7
- const type_ = Options.choice('type', ['category', 'tag']).pipe(Options.optional);
8
- const icon = Options.text('icon').pipe(Options.optional);
9
- export const create = Command.make('create', { name, slug, type: type_, icon }, ({ name, slug, type, icon }) => Effect.gen(function* () {
10
- const body = { name, slug };
11
- const t = Option.getOrUndefined(type);
12
- if (t)
13
- body.type = t === 'tag' ? 1 : 0;
14
- const ic = Option.getOrUndefined(icon);
15
- if (ic)
16
- body.icon = ic;
17
- const api = yield* Api;
18
- const renderer = yield* Renderer;
19
- const res = yield* api.request('/categories', {
20
- method: 'POST',
21
- body,
22
- });
23
- yield* renderer.emitSuccess(res);
24
- }));
@@ -1,8 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Api } from '../../services/Api';
3
- import { Renderer } from '../../services/Renderer';
4
- import { Resolver } from '../../services/Resolver';
5
- export declare const del: Command.Command<"delete", Api | Renderer | Resolver, import("../../services/Api").ApiError, {
6
- readonly slugOrId: string;
7
- readonly force: boolean;
8
- }>;
@@ -1,21 +0,0 @@
1
- import { Args, Command, Options } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { ValidationFailed } from '../../domain/errors';
4
- import { Api } from '../../services/Api';
5
- import { Renderer } from '../../services/Renderer';
6
- import { Resolver } from '../../services/Resolver';
7
- const slugOrId = Args.text({ name: 'slugOrId' });
8
- const force = Options.boolean('force');
9
- export const del = Command.make('delete', { slugOrId, force }, ({ slugOrId, force }) => Effect.gen(function* () {
10
- if (!force && !process.stdin.isTTY) {
11
- return yield* Effect.fail(new ValidationFailed({
12
- message: 'refusing to delete without --force in non-TTY context',
13
- }));
14
- }
15
- const api = yield* Api;
16
- const renderer = yield* Renderer;
17
- const resolver = yield* Resolver;
18
- const id = yield* resolver.resolveCategoryId(slugOrId);
19
- yield* api.request(`/categories/${id}`, { method: 'DELETE' });
20
- yield* renderer.emitSuccess({ deleted: id });
21
- }));
@@ -1,6 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Api } from '../../services/Api';
3
- import { Renderer } from '../../services/Renderer';
4
- export declare const get: Command.Command<"get", Api | Renderer, import("../../services/Api").ApiError, {
5
- readonly slugOrId: string;
6
- }>;
@@ -1,11 +0,0 @@
1
- import { Args, Command } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { Api } from '../../services/Api';
4
- import { Renderer } from '../../services/Renderer';
5
- const slugOrId = Args.text({ name: 'slugOrId' });
6
- export const get = Command.make('get', { slugOrId }, ({ slugOrId }) => Effect.gen(function* () {
7
- const api = yield* Api;
8
- const renderer = yield* Renderer;
9
- const res = yield* api.request(`/categories/${encodeURIComponent(slugOrId)}`);
10
- yield* renderer.emitSuccess(res);
11
- }));