@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,538 +0,0 @@
1
- import { it } from '@effect/vitest';
2
- import { Effect } from 'effect';
3
- import { afterEach, beforeEach, describe, expect, vi } from 'vitest';
4
- import { AuthDenied, Generic, ValidationFailed, WriteRequiresExplicit, } from '../../src/domain/errors';
5
- import { noteView } from '../../src/cli/note/view';
6
- import { pageView } from '../../src/cli/page/view';
7
- import { postListView, postView } from '../../src/cli/post/view';
8
- import { Lexical } from '../../src/services/Lexical';
9
- import { currentOutputOptions, defaultOutputOptions, renderReadableGeneric, Renderer, } from '../../src/services/Renderer';
10
- const viewCtx = { color: false, verbose: false };
11
- let stdoutLines;
12
- let stderrLines;
13
- let stdoutSpy;
14
- let stderrSpy;
15
- beforeEach(() => {
16
- stdoutLines = [];
17
- stderrLines = [];
18
- stdoutSpy = vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
19
- stdoutLines.push(String(chunk));
20
- return true;
21
- });
22
- stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation((chunk) => {
23
- stderrLines.push(String(chunk));
24
- return true;
25
- });
26
- });
27
- afterEach(() => {
28
- stdoutSpy.mockRestore();
29
- stderrSpy.mockRestore();
30
- });
31
- const withOpts = (opts, effect) => Effect.locally(effect, currentOutputOptions, {
32
- ...defaultOutputOptions,
33
- ...opts,
34
- });
35
- describe('Renderer — emitSuccess', () => {
36
- it.effect('writes JSON envelope under --json', () => withOpts({ json: true }, Effect.gen(function* () {
37
- const renderer = yield* Renderer;
38
- yield* renderer.emitSuccess({ hello: 'world' });
39
- })).pipe(Effect.tap(() => Effect.sync(() => {
40
- expect(stdoutLines).toHaveLength(1);
41
- const parsed = JSON.parse(stdoutLines[0]);
42
- expect(parsed).toEqual({ ok: true, data: { hello: 'world' } });
43
- })), Effect.provide(Renderer.Default)));
44
- it.effect('writes pretty JSON for objects under pretty-json', () => withOpts({ json: false, output: 'pretty-json' }, Effect.gen(function* () {
45
- const renderer = yield* Renderer;
46
- yield* renderer.emitSuccess({ ok: 1 });
47
- })).pipe(Effect.tap(() => Effect.sync(() => {
48
- expect(stdoutLines.join('')).toBe(`${JSON.stringify({ ok: 1 }, null, 2)}\n`);
49
- })), Effect.provide(Renderer.Default)));
50
- it.effect('writes readable key: value lines by default', () => withOpts({}, Effect.gen(function* () {
51
- const renderer = yield* Renderer;
52
- yield* renderer.emitSuccess({
53
- current: '0.3.1',
54
- latest: '0.3.1',
55
- channel: 'stable',
56
- up_to_date: true,
57
- });
58
- })).pipe(Effect.tap(() => Effect.sync(() => {
59
- const out = stdoutLines.join('');
60
- expect(out).toBe('current: 0.3.1\nlatest: 0.3.1\nchannel: stable\nup_to_date: true\n');
61
- })), Effect.provide(Renderer.Default)));
62
- it.effect('renders nested objects with indentation under readable', () => withOpts({}, Effect.gen(function* () {
63
- const renderer = yield* Renderer;
64
- yield* renderer.emitSuccess({
65
- user: { name: 'Innei', email: 'i@innei.in' },
66
- api_url: 'https://mx.innei.in',
67
- });
68
- })).pipe(Effect.tap(() => Effect.sync(() => {
69
- const out = stdoutLines.join('');
70
- expect(out).toContain('user:');
71
- expect(out).toContain(' name: Innei');
72
- expect(out).toContain(' email: i@innei.in');
73
- expect(out).toContain('api_url: https://mx.innei.in');
74
- })), Effect.provide(Renderer.Default)));
75
- it.effect('writes string data verbatim', () => withOpts({}, Effect.gen(function* () {
76
- const renderer = yield* Renderer;
77
- yield* renderer.emitSuccess('hello');
78
- })).pipe(Effect.tap(() => Effect.sync(() => {
79
- expect(stdoutLines.join('')).toBe('hello\n');
80
- })), Effect.provide(Renderer.Default)));
81
- it.effect('does not emit null or undefined success payloads', () => withOpts({}, Effect.gen(function* () {
82
- const renderer = yield* Renderer;
83
- yield* renderer.emitSuccess(null);
84
- yield* renderer.emitSuccess(undefined);
85
- })).pipe(Effect.tap(() => Effect.sync(() => {
86
- expect(stdoutLines).toHaveLength(0);
87
- })), Effect.provide(Renderer.Default)));
88
- });
89
- describe('Renderer — emitInfo / emitWarn', () => {
90
- it.effect('emitInfo writes to stderr by default', () => withOpts({}, Effect.gen(function* () {
91
- const renderer = yield* Renderer;
92
- yield* renderer.emitInfo('hello');
93
- })).pipe(Effect.tap(() => Effect.sync(() => {
94
- expect(stderrLines.join('')).toBe('hello\n');
95
- })), Effect.provide(Renderer.Default)));
96
- it.effect('emitInfo is suppressed under --quiet', () => withOpts({ quiet: true }, Effect.gen(function* () {
97
- const renderer = yield* Renderer;
98
- yield* renderer.emitInfo('hello');
99
- })).pipe(Effect.tap(() => Effect.sync(() => {
100
- expect(stderrLines).toHaveLength(0);
101
- })), Effect.provide(Renderer.Default)));
102
- it.effect('emitInfo is suppressed under --json', () => withOpts({ json: true }, Effect.gen(function* () {
103
- const renderer = yield* Renderer;
104
- yield* renderer.emitInfo('hello');
105
- })).pipe(Effect.tap(() => Effect.sync(() => {
106
- expect(stderrLines).toHaveLength(0);
107
- })), Effect.provide(Renderer.Default)));
108
- it.effect('emitWarn writes to stderr by default', () => withOpts({}, Effect.gen(function* () {
109
- const renderer = yield* Renderer;
110
- yield* renderer.emitWarn('careful');
111
- })).pipe(Effect.tap(() => Effect.sync(() => {
112
- expect(stderrLines.join('')).toContain('careful');
113
- })), Effect.provide(Renderer.Default)));
114
- it.effect('emitWarn is suppressed under --json', () => withOpts({ json: true }, Effect.gen(function* () {
115
- const renderer = yield* Renderer;
116
- yield* renderer.emitWarn('careful');
117
- })).pipe(Effect.tap(() => Effect.sync(() => {
118
- expect(stderrLines).toHaveLength(0);
119
- })), Effect.provide(Renderer.Default)));
120
- });
121
- describe('Renderer — emitError', () => {
122
- it.effect('serializes the write_requires_explicit envelope (legacy shape)', () => withOpts({ json: true }, Effect.gen(function* () {
123
- const renderer = yield* Renderer;
124
- yield* renderer.emitError(new WriteRequiresExplicit({
125
- message: 'writing to production requires explicit acknowledgement',
126
- hint: 'pass --profile prod to confirm',
127
- profile: 'prod',
128
- apiUrl: 'https://blog.example.com',
129
- }));
130
- })).pipe(Effect.tap(() => Effect.sync(() => {
131
- expect(stderrLines).toHaveLength(0);
132
- expect(stdoutLines).toHaveLength(1);
133
- const parsed = JSON.parse(stdoutLines[0]);
134
- expect(parsed).toMatchObject({
135
- ok: false,
136
- error: 'profile.write_requires_explicit',
137
- profile: 'prod',
138
- api_url: 'https://blog.example.com',
139
- hint: 'pass --profile prod to confirm',
140
- });
141
- })), Effect.provide(Renderer.Default)));
142
- it.effect('writes a terse line to stderr (no JSON) when not --json', () => withOpts({}, Effect.gen(function* () {
143
- const renderer = yield* Renderer;
144
- yield* renderer.emitError(new WriteRequiresExplicit({
145
- message: 'writing to production requires explicit acknowledgement',
146
- hint: 'pass --profile prod to confirm',
147
- profile: 'prod',
148
- apiUrl: 'https://blog.example.com',
149
- }));
150
- })).pipe(Effect.tap(() => Effect.sync(() => {
151
- expect(stdoutLines).toHaveLength(0);
152
- expect(stderrLines.length).toBeGreaterThan(0);
153
- const combined = stderrLines.join('');
154
- expect(combined).toContain('writing to production requires explicit acknowledgement');
155
- expect(() => JSON.parse(combined)).toThrow();
156
- })), Effect.provide(Renderer.Default)));
157
- it.effect('emits ValidationFailed envelope under --json', () => withOpts({ json: true }, Effect.gen(function* () {
158
- const renderer = yield* Renderer;
159
- yield* renderer.emitError(new ValidationFailed({ message: 'bad input', hint: 'fix it' }));
160
- })).pipe(Effect.tap(() => Effect.sync(() => {
161
- expect(stdoutLines).toHaveLength(1);
162
- const parsed = JSON.parse(stdoutLines[0]);
163
- expect(parsed).toEqual({
164
- ok: false,
165
- code: 'validation.failed',
166
- message: 'bad input',
167
- hint: 'fix it',
168
- });
169
- })), Effect.provide(Renderer.Default)));
170
- it.effect('formats object details, issue details, primitive details, and hints', () => withOpts({}, Effect.gen(function* () {
171
- const renderer = yield* Renderer;
172
- yield* renderer.emitError(new Generic({ message: '', details: { a: 1 }, hint: 'inspect' }));
173
- yield* renderer.emitError(new ValidationFailed({
174
- message: 'bad shape',
175
- details: {
176
- issues: [
177
- {
178
- path: ['meta', 'title'],
179
- message: 'required',
180
- line: 3,
181
- suggestions: ['name'],
182
- },
183
- ],
184
- },
185
- }));
186
- yield* renderer.emitError(new AuthDenied({ message: 'denied', details: 'plain' }));
187
- })).pipe(Effect.tap(() => Effect.sync(() => {
188
- const err = stderrLines.join('');
189
- expect(err).toContain('mxs error');
190
- expect(err).toContain('{"a":1}');
191
- expect(err).toContain('hint: inspect');
192
- expect(err).toContain('meta.title: required (line 3)');
193
- expect(err).toContain('did you mean name');
194
- expect(err).toContain('plain');
195
- })), Effect.provide(Renderer.Default)));
196
- it.effect('formats array-form details in readable mode', () => withOpts({}, Effect.gen(function* () {
197
- const renderer = yield* Renderer;
198
- yield* renderer.emitError(new Generic({
199
- message: 'array details',
200
- details: [
201
- { path: ['payload', 'title'], message: 'required' },
202
- 'plain detail',
203
- ],
204
- }));
205
- })).pipe(Effect.tap(() => Effect.sync(() => {
206
- const err = stderrLines.join('');
207
- expect(err).toContain('payload.title: required');
208
- expect(err).toContain('plain detail');
209
- })), Effect.provide(Renderer.Default)));
210
- });
211
- describe('Renderer — emit(postListView)', () => {
212
- it.effect('emits pretty JSON under --output pretty-json', () => withOpts({ output: 'pretty-json' }, Effect.gen(function* () {
213
- const renderer = yield* Renderer;
214
- yield* renderer.emit(postListView, {
215
- data: [{ id: '1', title: 'a', slug: 'a' }],
216
- meta: { pagination: { page: 1, size: 10, total: 1 } },
217
- });
218
- })).pipe(Effect.tap(() => Effect.sync(() => {
219
- expect(stdoutLines.join('')).toContain('"data"');
220
- })), Effect.provide(Renderer.Default)));
221
- it.effect('renders readable rows under --output readable', () => withOpts({ output: 'readable' }, Effect.gen(function* () {
222
- const renderer = yield* Renderer;
223
- yield* renderer.emit(postListView, {
224
- data: [
225
- {
226
- id: '1',
227
- title: 'Translated Title',
228
- slug: 'translated-title',
229
- isTranslated: true,
230
- sourceLang: 'zh-CN',
231
- isPublished: true,
232
- category: { name: 'Tech' },
233
- tags: ['cli', 'llm'],
234
- summary: 'Short summary.',
235
- },
236
- ],
237
- meta: { pagination: { page: 1, size: 10, total: 1 } },
238
- });
239
- })).pipe(Effect.tap(() => Effect.sync(() => {
240
- const out = stdoutLines.join('');
241
- expect(out).toContain('posts');
242
- expect(out).toContain('count: 1');
243
- expect(out).toContain('page: 1');
244
- expect(out).toContain('post 1:');
245
- expect(out).toContain('title: Translated Title');
246
- expect(out).toContain('category: Tech');
247
- expect(out).toContain('tags: cli, llm');
248
- expect(out).toContain('translated: true');
249
- expect(out).not.toContain('content:');
250
- })), Effect.provide(Renderer.Default)));
251
- it.effect('renders empty arrays and rejects envelope mode for post list', () => withOpts({ output: 'llm' }, Effect.gen(function* () {
252
- const renderer = yield* Renderer;
253
- yield* renderer.emit(postListView, []);
254
- })).pipe(Effect.zipRight(withOpts({ output: 'xml' }, Effect.gen(function* () {
255
- const renderer = yield* Renderer;
256
- yield* renderer.emit(postListView, { data: [] });
257
- }))), Effect.tap(() => Effect.sync(() => {
258
- expect(stdoutLines.join('')).toContain('count: 0');
259
- expect(stderrLines.join('')).toContain('unsupported --output value for post-list: xml');
260
- })), Effect.provide(Renderer.Default)));
261
- it.effect('emits colored unsupported-mode errors when stderr is a TTY', () => withOpts({ output: 'xml' }, Effect.gen(function* () {
262
- const renderer = yield* Renderer;
263
- const prevIsTTY = process.stderr.isTTY;
264
- Object.defineProperty(process.stderr, 'isTTY', {
265
- value: true,
266
- configurable: true,
267
- });
268
- try {
269
- yield* renderer.emit(postListView, { data: [] });
270
- }
271
- finally {
272
- Object.defineProperty(process.stderr, 'isTTY', {
273
- value: prevIsTTY,
274
- configurable: true,
275
- });
276
- }
277
- })).pipe(Effect.tap(() => Effect.sync(() => {
278
- expect(stderrLines.join('')).toContain('\x1B[31m');
279
- expect(stderrLines.join('')).toContain('unsupported --output value for post-list: xml');
280
- })), Effect.provide(Renderer.Default)));
281
- });
282
- describe('Renderer — emit(postView/noteView/pageView)', () => {
283
- it.effect('renders readable post metadata under --output readable', () => withOpts({ output: 'readable' }, Effect.gen(function* () {
284
- const renderer = yield* Renderer;
285
- yield* renderer.emit(postView, {
286
- id: '1',
287
- title: 'Readable Post',
288
- slug: 'readable-post',
289
- isPublished: true,
290
- category: { name: 'Tech', slug: 'tech' },
291
- tags: ['cli', 'ai'],
292
- summary: 'Short summary.',
293
- contentFormat: 'markdown',
294
- content: 'hello',
295
- });
296
- })).pipe(Effect.tap(() => Effect.sync(() => {
297
- const out = stdoutLines.join('');
298
- expect(out).toContain('Readable Post');
299
- expect(out).toContain('state');
300
- expect(out).toContain('published');
301
- expect(out).toContain('category');
302
- expect(out).toContain('Tech');
303
- expect(out).toContain('tags');
304
- expect(out).toContain('cli, ai');
305
- })), Effect.provide(Renderer.Default)));
306
- it.effect('renders note envelope under --output envelope', () => withOpts({ output: 'xml' }, Effect.gen(function* () {
307
- const renderer = yield* Renderer;
308
- yield* renderer.emit(noteView, {
309
- title: 'Daily Note',
310
- slug: 'daily-note',
311
- is_published: false,
312
- topic: { slug: 'life', name: 'Life' },
313
- mood: 'calm',
314
- bookmark: true,
315
- content_format: 'markdown',
316
- content: '# Body',
317
- });
318
- })).pipe(Effect.tap(() => Effect.sync(() => {
319
- const out = stdoutLines.join('');
320
- expect(out).toContain('<mxnote>');
321
- expect(out).toContain('<topic>life</topic>');
322
- expect(out).toContain('<state>draft</state>');
323
- expect(out).toContain('<format>markdown</format>');
324
- expect(out).toContain('# Body');
325
- })), Effect.provide(Renderer.Default)));
326
- it.effect('renders Lexical content as styled ANSI in readable mode', () => Effect.gen(function* () {
327
- const lexical = yield* Lexical;
328
- const state = yield* lexical.litexmlToPayload('<p>Hello world.</p>');
329
- const content = JSON.stringify(state);
330
- yield* withOpts({ output: 'readable' }, Effect.gen(function* () {
331
- const renderer = yield* Renderer;
332
- yield* renderer.emit(postView, {
333
- id: '1',
334
- title: 'Readable Post',
335
- slug: 'readable-post',
336
- isPublished: true,
337
- category: { name: 'Tech', slug: 'tech' },
338
- tags: ['cli', 'ai'],
339
- summary: 'Short summary.',
340
- contentFormat: 'lexical',
341
- content,
342
- });
343
- }));
344
- const out = stdoutLines.join('');
345
- expect(out).toContain('Hello world.');
346
- expect(out).not.toContain('<p>');
347
- expect(out).not.toContain('"root"');
348
- }).pipe(Effect.provide(Renderer.Default), Effect.provide(Lexical.Default)));
349
- it.effect('renders post tags as child elements in envelope mode', () => withOpts({ output: 'xml' }, Effect.gen(function* () {
350
- const renderer = yield* Renderer;
351
- yield* renderer.emit(postView, {
352
- title: 'Tagged Post',
353
- slug: 'tagged-post',
354
- isPublished: true,
355
- tags: ['cli', 'ai'],
356
- contentFormat: 'markdown',
357
- content: 'Body',
358
- });
359
- })).pipe(Effect.tap(() => Effect.sync(() => {
360
- const out = stdoutLines.join('');
361
- expect(out).toContain('<tags>');
362
- expect(out).toContain('<tag>cli</tag>');
363
- expect(out).toContain('<tag>ai</tag>');
364
- expect(out).not.toContain('<tags>cli,ai</tags>');
365
- })), Effect.provide(Renderer.Default)));
366
- it.effect('unwraps { data } documents and rejects unsupported output modes', () => withOpts({ output: 'readable' }, Effect.gen(function* () {
367
- const renderer = yield* Renderer;
368
- yield* renderer.emit(pageView, {
369
- data: {
370
- id: 'pg1',
371
- title: 'Page',
372
- slug: 'page',
373
- subtitle: 'Sub',
374
- order: 2,
375
- createdAt: new Date('2026-01-01T00:00:00Z'),
376
- isTranslated: false,
377
- content_format: 'html',
378
- text: 'Fallback text',
379
- },
380
- });
381
- })).pipe(Effect.zipRight(withOpts({ output: 'table' }, Effect.gen(function* () {
382
- const renderer = yield* Renderer;
383
- yield* renderer.emit(postView, { title: 'x' });
384
- }))), Effect.tap(() => Effect.sync(() => {
385
- const out = stdoutLines.join('');
386
- expect(out).toContain('Page');
387
- expect(out).toContain('subtitle');
388
- expect(out).toContain('Sub');
389
- expect(out).toContain('created_at');
390
- // Friendly form: `YYYY-MM-DD HH:mm (... ago/in ...)`.
391
- // Day-of-month is timezone-dependent for a UTC midnight input,
392
- // so we only assert the year/month and the relative suffix.
393
- expect(out).toMatch(/created_at\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}/);
394
- expect(out).toMatch(/\((?:in |[\w ]+ago)/);
395
- expect(out).toContain('Fallback text');
396
- expect(stderrLines.join('')).toContain('unsupported --output value for post: table');
397
- })), Effect.provide(Renderer.Default)));
398
- });
399
- describe('Renderer — pure document renderers', () => {
400
- it('renders generic readable scalars, dates, nested arrays, and sparse values', () => {
401
- const rendered = renderReadableGeneric({
402
- title: 'Generic',
403
- createdAt: new Date('2026-01-02T00:00:00Z'),
404
- empty: '',
405
- scalarList: [1, null, new Date('2026-01-01T00:00:00Z')],
406
- mixedList: [{ name: 'first' }, ['nested', null], 'tail'],
407
- nested: {
408
- omitted: null,
409
- value: true,
410
- },
411
- });
412
- expect(rendered).toContain('title: Generic');
413
- // Friendly form: timezone-dependent for a UTC midnight input.
414
- expect(rendered).toMatch(/createdAt: \d{4}-\d{2}-\d{2} \d{2}:\d{2}/);
415
- expect(rendered).not.toContain('empty:');
416
- expect(rendered).toMatch(/scalarList: 1, \d{4}-\d{2}-\d{2} \d{2}:\d{2}/);
417
- expect(rendered).toContain('- name: first');
418
- expect(rendered).toContain(' - nested');
419
- expect(rendered).toContain('- tail');
420
- expect(rendered).toContain('nested:');
421
- expect(rendered).toContain(' value: true');
422
- expect(renderReadableGeneric('plain')).toBe('plain');
423
- });
424
- it('renders fallback lexical content, escaped envelope meta, and scalar variants', () => {
425
- const readable = noteView.readable({
426
- id: 'n1',
427
- title: 'Note',
428
- slug: 'note',
429
- is_published: false,
430
- topic: 'life',
431
- mood: { name: 'calm' },
432
- weather: ['sun', 'wind'],
433
- publicAt: new Date('2026-01-01T00:00:00Z'),
434
- bookmark: true,
435
- source_lang: 'zh',
436
- is_translated: true,
437
- contentFormat: 'lexical',
438
- content: '{bad json',
439
- text: 'Plain fallback',
440
- }, viewCtx);
441
- expect(readable).toContain('Note');
442
- expect(readable).toContain('topic');
443
- expect(readable).toContain('life');
444
- expect(readable).toContain('weather');
445
- expect(readable).toContain('sun, wind');
446
- expect(readable).toContain('Plain fallback');
447
- const envelope = postView.xml({
448
- title: 'A & B < C',
449
- slug: 'a-b',
450
- category: { id: 'cat-id' },
451
- isPublished: true,
452
- summary: 'Summary > detail',
453
- tags: ['x&y', '<z>'],
454
- contentFormat: 'markdown',
455
- content: 'Body',
456
- });
457
- expect(envelope).toContain('<title>A &amp; B &lt; C</title>');
458
- expect(envelope).toContain('<category>cat-id</category>');
459
- expect(envelope).toContain('<state>publish</state>');
460
- expect(envelope).toContain('<tag>x&amp;y</tag>');
461
- expect(envelope).toContain('<tag>&lt;z&gt;</tag>');
462
- const list = postListView.readable({
463
- data: [
464
- {
465
- id: 'p1',
466
- category: { slug: 'tech' },
467
- is_published: false,
468
- created_at: new Date('2026-01-01T00:00:00Z'),
469
- },
470
- ],
471
- // V3 envelope shape (post envelope-compat normalization).
472
- meta: { pagination: { page: 2, size: 5, total: 9 } },
473
- }, viewCtx);
474
- expect(list).toContain('page: 2');
475
- expect(list).toContain('size: 5');
476
- expect(list).toContain('total: 9');
477
- expect(list).toContain('category: tech');
478
- expect(list).toContain('state: draft');
479
- });
480
- it('reads source_lang and translated from meta.translation when the doc itself omits them', () => {
481
- const envelope = {
482
- data: {
483
- id: 'p1',
484
- title: 'Translated title',
485
- slug: 'translated',
486
- is_published: true,
487
- contentFormat: 'markdown',
488
- content: 'body',
489
- text: 'body',
490
- },
491
- meta: {
492
- translation: {
493
- p1: {
494
- article: {
495
- is_translated: true,
496
- source_lang: 'zh',
497
- target_lang: 'en',
498
- },
499
- },
500
- },
501
- },
502
- };
503
- const readable = postView.readable(envelope, viewCtx);
504
- expect(readable).toMatch(/source_lang\s+zh/);
505
- expect(readable).toMatch(/translated\s+true/);
506
- const noteEnvelope = {
507
- ...envelope,
508
- data: { ...envelope.data, topic: 'life' },
509
- };
510
- const noteReadable = noteView.readable(noteEnvelope, viewCtx);
511
- expect(noteReadable).toMatch(/source_lang\s+zh/);
512
- expect(noteReadable).toMatch(/translated\s+true/);
513
- const pageReadable = pageView.readable(envelope, viewCtx);
514
- expect(pageReadable).toMatch(/source_lang\s+zh/);
515
- expect(pageReadable).toMatch(/translated\s+true/);
516
- });
517
- it('falls back to meta.translation per-row for the post list view', () => {
518
- const list = postListView.readable({
519
- data: [
520
- { id: 'p1', title: 'A' },
521
- { id: 'p2', title: 'B' },
522
- ],
523
- meta: {
524
- translation: {
525
- p1: {
526
- article: {
527
- is_translated: true,
528
- source_lang: 'zh',
529
- target_lang: 'en',
530
- },
531
- },
532
- },
533
- },
534
- }, viewCtx);
535
- expect(list).toContain('source_lang: zh');
536
- expect(list).toContain('translated: true');
537
- });
538
- });
@@ -1 +0,0 @@
1
- export {};