@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,315 +0,0 @@
1
- import { Effect, Exit, Layer, Option } from 'effect';
2
- import { afterEach, describe, expect, it, vi } from 'vitest';
3
- import { create as createProject } from '../../src/cli/project/create';
4
- import { del as deleteProject } from '../../src/cli/project/delete';
5
- import { edit as editProject } from '../../src/cli/project/edit';
6
- import { get as getProject } from '../../src/cli/project/get';
7
- import { list as listProject } from '../../src/cli/project/list';
8
- import { update as updateProject } from '../../src/cli/project/update';
9
- import { viewCmd as viewProject } from '../../src/cli/project/view-cmd';
10
- import { Api } from '../../src/services/Api';
11
- import { Editor } from '../../src/services/Editor';
12
- import { Renderer } from '../../src/services/Renderer';
13
- import { Resolver } from '../../src/services/Resolver';
14
- import { makeMemFs, TestFsLive, TestPathLive } from '../helper/test-fs';
15
- const rendererJson = {
16
- json: true,
17
- output: 'json',
18
- quiet: false,
19
- verbose: false,
20
- };
21
- const captureStdout = () => {
22
- const data = [];
23
- const orig = process.stdout.write.bind(process.stdout);
24
- process.stdout.write = (s) => {
25
- data.push(typeof s === 'string' ? s : s.toString());
26
- return true;
27
- };
28
- return {
29
- data,
30
- restore: () => {
31
- ;
32
- process.stdout.write = orig;
33
- },
34
- };
35
- };
36
- const makeResolver = (id = '900000000000000001') => ({
37
- resolveCategory: () => Effect.succeed('cat-id'),
38
- resolveTopic: () => Effect.succeed('topic-id'),
39
- resolveCategoryRefs: (refs) => Effect.succeed(refs),
40
- resolvePostId: () => Effect.succeed('123456789012345'),
41
- resolvePostReadPath: () => Effect.succeed('/posts/p/x'),
42
- resolveNoteId: () => Effect.succeed('123456789012346'),
43
- resolveCategoryId: () => Effect.succeed('cat-id'),
44
- resolveProjectId: () => Effect.succeed(id),
45
- invalidate: () => Effect.void,
46
- });
47
- const makeApi = (calls, responses = {}) => ({
48
- request: (path, options) => Effect.sync(() => {
49
- calls.push({ path, options });
50
- return (responses[path] ?? {
51
- id: '900000000000000001',
52
- name: 'k',
53
- description: 'd',
54
- });
55
- }),
56
- raw: (path, options) => Effect.sync(() => {
57
- calls.push({ path, options });
58
- return responses[path] ?? { ok: true };
59
- }),
60
- });
61
- const buildLayer = (calls, responses = {}, editor) => Layer.mergeAll(TestFsLive(makeMemFs()), TestPathLive, Layer.succeed(Api, makeApi(calls, responses)), Layer.succeed(Resolver, makeResolver()), Renderer.Default, ...(editor ? [Layer.succeed(Editor, editor)] : []));
62
- afterEach(() => {
63
- vi.restoreAllMocks();
64
- });
65
- const none = () => Option.none();
66
- describe('project command handlers', () => {
67
- it('lists projects with pagination flags', async () => {
68
- const calls = [];
69
- const stdout = captureStdout();
70
- try {
71
- const exit = await Effect.runPromiseExit(listProject
72
- .handler({ page: Option.some(2), size: Option.some(20) })
73
- .pipe(Effect.provide(buildLayer(calls)), Renderer.withOptions(rendererJson)));
74
- expect(Exit.isSuccess(exit)).toBe(true);
75
- expect(calls[0]).toMatchObject({
76
- path: '/projects',
77
- options: { query: { page: 2, size: 20 } },
78
- });
79
- }
80
- finally {
81
- stdout.restore();
82
- }
83
- });
84
- it('gets a project by resolved id', async () => {
85
- const calls = [];
86
- const stdout = captureStdout();
87
- try {
88
- const exit = await Effect.runPromiseExit(getProject.handler({ nameOrId: 'kami' }).pipe(Effect.provide(buildLayer(calls)), Renderer.withOptions(rendererJson)));
89
- expect(Exit.isSuccess(exit)).toBe(true);
90
- expect(calls[0]).toMatchObject({
91
- path: '/projects/900000000000000001',
92
- });
93
- }
94
- finally {
95
- stdout.restore();
96
- }
97
- });
98
- it('renders a project view', async () => {
99
- const calls = [];
100
- const stdout = captureStdout();
101
- try {
102
- const exit = await Effect.runPromiseExit(viewProject.handler({ nameOrId: 'kami' }).pipe(Effect.provide(buildLayer(calls)), Renderer.withOptions(rendererJson)));
103
- expect(Exit.isSuccess(exit)).toBe(true);
104
- }
105
- finally {
106
- stdout.restore();
107
- }
108
- });
109
- it('creates a project from flags', async () => {
110
- const calls = [];
111
- const stdout = captureStdout();
112
- try {
113
- const exit = await Effect.runPromiseExit(createProject
114
- .handler({
115
- name: Option.some('kami'),
116
- description: Option.some('a stack'),
117
- previewUrl: Option.some('https://kami.test'),
118
- docUrl: none(),
119
- projectUrl: none(),
120
- avatar: none(),
121
- images: Option.some('https://a, https://b'),
122
- text: none(),
123
- file: none(),
124
- open: false,
125
- silent: false,
126
- })
127
- .pipe(Effect.provide(buildLayer(calls)), Renderer.withOptions(rendererJson)));
128
- expect(Exit.isSuccess(exit)).toBe(true);
129
- expect(calls[0]).toMatchObject({
130
- path: '/projects',
131
- options: { method: 'POST' },
132
- });
133
- const body = calls[0].options.body;
134
- expect(body).toMatchObject({
135
- name: 'kami',
136
- description: 'a stack',
137
- previewUrl: 'https://kami.test',
138
- images: ['https://a', 'https://b'],
139
- });
140
- expect(body.docUrl).toBeUndefined();
141
- }
142
- finally {
143
- stdout.restore();
144
- }
145
- });
146
- it('PATCHes via update with only supplied fields', async () => {
147
- const calls = [];
148
- const exit = await Effect.runPromiseExit(updateProject
149
- .handler({
150
- nameOrId: 'kami',
151
- name: none(),
152
- description: Option.some('updated'),
153
- previewUrl: none(),
154
- docUrl: none(),
155
- projectUrl: none(),
156
- avatar: none(),
157
- images: none(),
158
- text: none(),
159
- file: none(),
160
- open: false,
161
- silent: true,
162
- })
163
- .pipe(Effect.provide(buildLayer(calls)), Renderer.withOptions(rendererJson)));
164
- expect(Exit.isSuccess(exit)).toBe(true);
165
- expect(calls[0]).toMatchObject({
166
- path: '/projects/900000000000000001',
167
- options: { method: 'PATCH' },
168
- });
169
- const body = calls[0].options.body;
170
- expect(body).toEqual({ description: 'updated' });
171
- });
172
- it('deletes a project when --force is supplied', async () => {
173
- const calls = [];
174
- const stdout = captureStdout();
175
- try {
176
- const exit = await Effect.runPromiseExit(deleteProject
177
- .handler({ nameOrId: 'kami', force: true })
178
- .pipe(Effect.provide(buildLayer(calls)), Renderer.withOptions(rendererJson)));
179
- expect(Exit.isSuccess(exit)).toBe(true);
180
- expect(calls[0]).toMatchObject({
181
- path: '/projects/900000000000000001',
182
- options: { method: 'DELETE' },
183
- });
184
- }
185
- finally {
186
- stdout.restore();
187
- }
188
- });
189
- it('refuses project delete without --force in non-TTY', async () => {
190
- const descriptor = Object.getOwnPropertyDescriptor(process.stdin, 'isTTY');
191
- Object.defineProperty(process.stdin, 'isTTY', {
192
- configurable: true,
193
- value: false,
194
- });
195
- try {
196
- const exit = await Effect.runPromiseExit(deleteProject
197
- .handler({ nameOrId: 'kami', force: false })
198
- .pipe(Effect.provide(buildLayer([]))));
199
- expect(Exit.isFailure(exit)).toBe(true);
200
- }
201
- finally {
202
- if (descriptor)
203
- Object.defineProperty(process.stdin, 'isTTY', descriptor);
204
- }
205
- });
206
- it('edit: no-change exits without a PATCH', async () => {
207
- const calls = [];
208
- const responses = {
209
- '/projects/900000000000000001': {
210
- id: '900000000000000001',
211
- name: 'kami',
212
- description: 'k',
213
- previewUrl: null,
214
- docUrl: null,
215
- projectUrl: null,
216
- avatar: null,
217
- images: null,
218
- text: null,
219
- },
220
- };
221
- const editor = {
222
- openEditor: (opts) => Effect.succeed(opts.initialContent),
223
- prompt: () => Effect.succeed(''),
224
- confirm: () => Effect.succeed(true),
225
- readFileOrStdin: () => Effect.succeed(''),
226
- };
227
- const stdout = captureStdout();
228
- try {
229
- const exit = await Effect.runPromiseExit(editProject
230
- .handler({ nameOrId: 'kami', open: false, silent: false })
231
- .pipe(Effect.provide(buildLayer(calls, responses, editor)), Renderer.withOptions(rendererJson)));
232
- expect(Exit.isSuccess(exit)).toBe(true);
233
- expect(calls).toHaveLength(1);
234
- expect(calls[0].path).toBe('/projects/900000000000000001');
235
- }
236
- finally {
237
- stdout.restore();
238
- }
239
- });
240
- it('edit: round-trip change PATCHes parsed JSON', async () => {
241
- const calls = [];
242
- const responses = {
243
- '/projects/900000000000000001': {
244
- id: '900000000000000001',
245
- name: 'kami',
246
- description: 'k',
247
- previewUrl: null,
248
- docUrl: null,
249
- projectUrl: null,
250
- avatar: null,
251
- images: null,
252
- text: null,
253
- },
254
- };
255
- const editor = {
256
- openEditor: () => Effect.succeed(JSON.stringify({
257
- name: 'kami',
258
- description: 'renamed',
259
- previewUrl: 'https://k.test',
260
- docUrl: null,
261
- projectUrl: null,
262
- avatar: null,
263
- images: null,
264
- text: null,
265
- }, null, 2)),
266
- prompt: () => Effect.succeed(''),
267
- confirm: () => Effect.succeed(true),
268
- readFileOrStdin: () => Effect.succeed(''),
269
- };
270
- const exit = await Effect.runPromiseExit(editProject
271
- .handler({ nameOrId: 'kami', open: false, silent: true })
272
- .pipe(Effect.provide(buildLayer(calls, responses, editor)), Renderer.withOptions(rendererJson)));
273
- expect(Exit.isSuccess(exit)).toBe(true);
274
- expect(calls).toHaveLength(2);
275
- expect(calls[1]).toMatchObject({
276
- path: '/projects/900000000000000001',
277
- options: { method: 'PATCH' },
278
- });
279
- const body = calls[1].options.body;
280
- expect(body).toMatchObject({
281
- description: 'renamed',
282
- previewUrl: 'https://k.test',
283
- });
284
- });
285
- it('edit: malformed JSON fails with ValidationJson', async () => {
286
- const calls = [];
287
- const responses = {
288
- '/projects/900000000000000001': {
289
- id: '900000000000000001',
290
- name: 'kami',
291
- description: 'k',
292
- previewUrl: null,
293
- docUrl: null,
294
- projectUrl: null,
295
- avatar: null,
296
- images: null,
297
- text: null,
298
- },
299
- };
300
- const editor = {
301
- openEditor: () => Effect.succeed('not json at all'),
302
- prompt: () => Effect.succeed(''),
303
- confirm: () => Effect.succeed(true),
304
- readFileOrStdin: () => Effect.succeed(''),
305
- };
306
- const exit = await Effect.runPromiseExit(editProject
307
- .handler({ nameOrId: 'kami', open: false, silent: false })
308
- .pipe(Effect.provide(buildLayer(calls, responses, editor))));
309
- expect(Exit.isFailure(exit)).toBe(true);
310
- if (Exit.isFailure(exit)) {
311
- const failure = exit.cause.toString();
312
- expect(failure).toContain('ValidationJson');
313
- }
314
- });
315
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,216 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { renderLexicalAnsi } from '../../../src/cli/render/lexical';
3
- import { visibleLen } from '../../../src/cli/render/markdown';
4
- const plain = (xml) => renderLexicalAnsi(xml, { color: false });
5
- const styled = (xml) => renderLexicalAnsi(xml, { color: true });
6
- // `SEPARATOR_WIDTH` constant from `src/cli/render/helpers.ts`. Hard-coded
7
- // here so the test breaks loudly if the visual width changes (the renderer's
8
- // box-drawing depends on it).
9
- const RULE = '─'.repeat(64);
10
- describe('renderLexicalAnsi — blocks', () => {
11
- it('renders a paragraph as its inline children', () => {
12
- expect(plain('<p>hello world</p>')).toBe('hello world');
13
- });
14
- it('joins multiple paragraphs with a blank line', () => {
15
- expect(plain('<p>a</p><p>b</p>')).toBe('a\n\nb');
16
- });
17
- it('drops pretty-print whitespace text nodes between blocks', () => {
18
- expect(plain('<p>a</p>\n <p>b</p>')).toBe('a\n\nb');
19
- });
20
- it('renders h1 with an underline rule sized to the title', () => {
21
- expect(plain('<h1>Title</h1>')).toBe('Title\n─────');
22
- });
23
- it('renders h2 with an underline rule sized to the title', () => {
24
- expect(plain('<h2>Sub</h2>')).toBe('Sub\n───');
25
- });
26
- it('renders h3-h6 as bold-only (no rule)', () => {
27
- expect(plain('<h3>Three</h3>')).toBe('Three');
28
- expect(plain('<h4>Four</h4>')).toBe('Four');
29
- expect(plain('<h5>Five</h5>')).toBe('Five');
30
- expect(plain('<h6>Six</h6>')).toBe('Six');
31
- });
32
- it('prefixes blockquote body lines with `| `', () => {
33
- expect(plain('<blockquote><p>quoted</p></blockquote>')).toBe('│ quoted');
34
- });
35
- it('appends a blockquote attribution line', () => {
36
- expect(plain('<blockquote attribution="Alice"><p>q</p></blockquote>')).toBe('│ q\n — Alice');
37
- });
38
- it('emits only the attribution line for an empty quote body', () => {
39
- expect(plain('<blockquote attribution="Alice"></blockquote>')).toBe(' — Alice');
40
- });
41
- it('renders <hr/> as a 64-wide dim rule', () => {
42
- expect(plain('<hr/>')).toBe(RULE);
43
- });
44
- it('renders ul items with `- ` bullets', () => {
45
- expect(plain('<ul><li>a</li><li>b</li></ul>')).toBe('- a\n- b');
46
- });
47
- it('renders ol items with right-aligned ordinals', () => {
48
- expect(plain('<ol><li>a</li><li>b</li><li>c</li></ol>')).toBe('1. a\n2. b\n3. c');
49
- });
50
- it('renders checked list items with [x]/[ ] markers', () => {
51
- expect(plain('<ul><li checked="true">done</li><li checked="false">todo</li></ul>')).toBe('[x] done\n[ ] todo');
52
- });
53
- it('indents nested lists by 2 spaces', () => {
54
- expect(plain('<ul><li>a<ul><li>b</li></ul></li></ul>')).toBe('- a\n - b');
55
- });
56
- it('keeps multi-paragraph li body aligned under the bullet', () => {
57
- expect(plain('<ul><li><p>a</p><p>b</p></li></ul>')).toBe('- a\n b');
58
- });
59
- it('renders a table header row in bold with a separator', () => {
60
- expect(plain('<table><tr><th>A</th><th>B</th></tr><tr><td>1</td><td>2</td></tr></table>')).toBe('A │ B\n──┼──\n1 │ 2');
61
- });
62
- it('renders a table without a header (no rule)', () => {
63
- expect(plain('<table><tr><td>1</td><td>2</td></tr></table>')).toBe('1 │ 2');
64
- });
65
- it('renders an alert as label + framed body', () => {
66
- expect(plain('<alert type="warning"><p>watch out</p></alert>')).toBe(`WARNING\n${RULE}\n│ watch out\n${RULE}`);
67
- });
68
- it('defaults alert label to INFO when type is missing', () => {
69
- expect(plain('<alert><p>hi</p></alert>')).toBe(`INFO\n${RULE}\n│ hi\n${RULE}`);
70
- });
71
- it('renders a banner with the same shape as alert', () => {
72
- expect(plain('<banner type="info"><p>hi</p></banner>')).toBe(`INFO\n${RULE}\n│ hi\n${RULE}`);
73
- });
74
- it('renders details with a summary head and indented body', () => {
75
- expect(plain('<details summary="more"><p>hidden</p></details>')).toBe('▸ more\n hidden');
76
- });
77
- it('omits the body when details has no children', () => {
78
- expect(plain('<details summary="empty"></details>')).toBe('▸ empty');
79
- });
80
- it('renders spoiler as dim text', () => {
81
- expect(plain('<spoiler>secret</spoiler>')).toBe('secret');
82
- });
83
- });
84
- describe('renderLexicalAnsi — inlines', () => {
85
- it('returns plain text when color is off', () => {
86
- expect(plain('<p><b>x</b></p>')).toBe('x');
87
- });
88
- it('wraps bold with bold open/close (color on)', () => {
89
- expect(styled('<p><b>x</b></p>')).toBe('\x1B[1mx\x1B[22m');
90
- });
91
- it('survives nested format reset (italic inside bold)', () => {
92
- expect(styled('<p><b>a <i>b</i> c</b></p>')).toBe('\x1B[1ma \x1B[3mb\x1B[23m c\x1B[22m');
93
- });
94
- it('uses the strike open/close pair', () => {
95
- expect(styled('<p><s>x</s></p>')).toBe('\x1B[9mx\x1B[29m');
96
- });
97
- it('uses the underline open/close pair', () => {
98
- expect(styled('<p><u>x</u></p>')).toBe('\x1B[4mx\x1B[24m');
99
- });
100
- it('uses dim for inline code', () => {
101
- expect(styled('<p><code>x</code></p>')).toBe('\x1B[2mx\x1B[22m');
102
- });
103
- it('uses reverse-video for mark', () => {
104
- expect(styled('<p><mark>x</mark></p>')).toBe('\x1B[7mx\x1B[27m');
105
- });
106
- it('renders sub and sup as dim (degraded for TTY)', () => {
107
- expect(styled('<p><sub>2</sub><sup>3</sup></p>')).toBe('\x1B[2m2\x1B[22m\x1B[2m3\x1B[22m');
108
- });
109
- it('appends a visible href when link text differs from href', () => {
110
- expect(plain('<p><a href="https://x.com">click</a></p>')).toBe('click (https://x.com)');
111
- });
112
- it('suppresses the href suffix when text already equals href', () => {
113
- expect(plain('<p><a href="https://x.com">https://x.com</a></p>')).toBe('https://x.com');
114
- });
115
- it('renders <a> without href as just its text', () => {
116
- expect(plain('<p><a>noref</a></p>')).toBe('noref');
117
- });
118
- it('renders <br/> as a newline', () => {
119
- expect(plain('<p>line1<br/>line2</p>')).toBe('line1\nline2');
120
- });
121
- it('renders mention with @ prefix and display fallback', () => {
122
- expect(plain('<p><mention handle="alice">Alice</mention></p>')).toBe('@Alice');
123
- expect(plain('<p><mention handle="bob"></mention></p>')).toBe('@bob');
124
- });
125
- it('renders tag with # prefix', () => {
126
- expect(plain('<p><tag>js</tag></p>')).toBe('#js');
127
- });
128
- it('renders comment as dim passthrough', () => {
129
- expect(plain('<p><comment>aside</comment></p>')).toBe('aside');
130
- });
131
- it('renders footnote as [^ref]', () => {
132
- expect(plain('<p><footnote ref="1"/></p>')).toBe('[^1]');
133
- });
134
- it('renders ruby with a dim (rt) suffix when present', () => {
135
- expect(plain('<p><ruby rt="kanji">漢</ruby></p>')).toBe('漢 (kanji)');
136
- });
137
- it('renders ruby without rt as just the base', () => {
138
- expect(plain('<p><ruby>漢</ruby></p>')).toBe('漢');
139
- });
140
- });
141
- describe('renderLexicalAnsi — embeds', () => {
142
- it('renders img with alt text as the label', () => {
143
- expect(plain('<img alt="cat" src="/a/b/cat.png"/>')).toBe('[image: cat]');
144
- });
145
- it('falls back to the src basename when alt is absent', () => {
146
- expect(plain('<img src="/path/img.png"/>')).toBe('[image: img.png]');
147
- });
148
- it('renders bare img as [image]', () => {
149
- expect(plain('<img/>')).toBe('[image]');
150
- });
151
- it('appends a caption line when present', () => {
152
- expect(plain('<img alt="x" src="y" caption="cap"/>')).toBe('[image: x]\ncap');
153
- });
154
- it('renders video with the src in the label', () => {
155
- expect(plain('<video src="https://x/y.mp4"/>')).toBe('[video: https://x/y.mp4]');
156
- });
157
- it('renders link-card with title, description, and url', () => {
158
- expect(plain('<link-card url="https://ex.com" title="T" description="D"/>')).toBe('┌ T\n│ D\n└ https://ex.com');
159
- });
160
- it('renders link-card without description (no middle line)', () => {
161
- expect(plain('<link-card url="https://ex.com" title="T"/>')).toBe('┌ T\n└ https://ex.com');
162
- });
163
- it('renders link-card without title as a one-line [link: ...]', () => {
164
- expect(plain('<link-card url="https://ex.com"/>')).toBe('[link: https://ex.com]');
165
- });
166
- it('renders embed with source prefix when source is set', () => {
167
- expect(plain('<embed url="u" source="yt"/>')).toBe('[embed: yt u]');
168
- });
169
- it('renders embed without source as just the url', () => {
170
- expect(plain('<embed url="u"/>')).toBe('[embed: u]');
171
- });
172
- });
173
- describe('renderLexicalAnsi — codeblock', () => {
174
- it('prepends a dim language label when lang is set', () => {
175
- expect(plain('<codeblock lang="ts">const a = 1;</codeblock>')).toBe('ts\nconst a = 1;');
176
- });
177
- it('strips trailing newlines from the body', () => {
178
- expect(plain('<codeblock lang="ts">const a = 1;\n\n</codeblock>')).toBe('ts\nconst a = 1;');
179
- });
180
- it('emits just the body when lang is absent', () => {
181
- expect(plain('<codeblock>plain text</codeblock>')).toBe('plain text');
182
- });
183
- });
184
- describe('renderLexicalAnsi — robustness', () => {
185
- it('returns empty string for empty input', () => {
186
- expect(plain('')).toBe('');
187
- });
188
- it('returns empty string for malformed XML (no throw)', () => {
189
- expect(() => plain('<<<bad')).not.toThrow();
190
- expect(plain('<<<bad')).toBe('');
191
- });
192
- it('falls back to rendering children of unknown tags', () => {
193
- expect(plain('<unknown>fallback</unknown>')).toBe('fallback');
194
- expect(plain('<unknown><p>nested</p></unknown>')).toBe('nested');
195
- });
196
- it('trims trailing newlines from the final output', () => {
197
- // `renderLexicalAnsi` strips trailing newlines from the output as a
198
- // post-processing step — exercise it via details which renders as
199
- // `head\n body` with no trailing newline of its own.
200
- expect(plain('<details summary="x"><p>y</p></details>')).toBe('▸ x\n y');
201
- });
202
- });
203
- describe('renderLexicalAnsi — table alignment', () => {
204
- it('keeps every row the same visible width with CJK columns', () => {
205
- const xml = '<table>' +
206
- '<tr><th>指标</th><th>Next.js</th><th>占优</th></tr>' +
207
- '<tr><td>Performance</td><td>64</td><td>Remix</td></tr>' +
208
- '<tr><td>FCP</td><td>3037 ms</td><td>Remix +19</td></tr>' +
209
- '</table>';
210
- const lines = plain(xml)
211
- .split('\n')
212
- .filter((line) => line.length > 0);
213
- const widths = new Set(lines.map((line) => visibleLen(line)));
214
- expect(widths.size).toBe(1);
215
- });
216
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,39 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { renderMarkdownToAnsi, visibleLen, } from '../../../src/cli/render/markdown';
3
- describe('visibleLen', () => {
4
- it('counts ASCII as one column each', () => {
5
- expect(visibleLen('hello')).toBe(5);
6
- });
7
- it('counts CJK characters as two columns each', () => {
8
- expect(visibleLen('中文')).toBe(4);
9
- expect(visibleLen('指标')).toBe(4);
10
- });
11
- it('counts mixed CJK and ASCII by display width', () => {
12
- expect(visibleLen('中a文')).toBe(5);
13
- });
14
- it('counts fullwidth punctuation as two columns', () => {
15
- expect(visibleLen('()')).toBe(4);
16
- });
17
- it('ignores ANSI escape sequences', () => {
18
- const esc = String.fromCharCode(0x1b);
19
- expect(visibleLen(`${esc}[1m中${esc}[0m`)).toBe(2);
20
- });
21
- it('counts an astral-plane CJK character as a single wide unit', () => {
22
- expect(visibleLen('𠀀')).toBe(2);
23
- });
24
- });
25
- describe('renderMarkdownToAnsi — table alignment', () => {
26
- it('keeps every row the same visible width with CJK columns', () => {
27
- const md = [
28
- '| 指标 | Next.js | 占优 |',
29
- '| --- | --- | --- |',
30
- '| Performance | 64 | Remix |',
31
- '| FCP | 3037 ms | Remix +19 |',
32
- ].join('\n');
33
- const lines = renderMarkdownToAnsi(md, { color: false })
34
- .split('\n')
35
- .filter((line) => line.length > 0);
36
- const widths = new Set(lines.map((line) => visibleLen(line)));
37
- expect(widths.size).toBe(1);
38
- });
39
- });
@@ -1 +0,0 @@
1
- export {};