@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,197 +0,0 @@
1
- import { stateCodeToName } from '../../services/Comment';
2
- import { asRecord, first, firstString, formatScalar, unwrapDocument, } from '../../services/Renderer/content';
3
- import { tryFormatTimestamp } from '../../services/Renderer/datetime';
4
- import { ANSI, formatStateBadge, frontmatter, renderMarkdownToAnsi, renderMetadataBlock, SEPARATOR_WIDTH, visibleLen, wrap, } from '../render';
5
- // ---------------------------------------------------------------------------
6
- // Field helpers (shared by single + list views)
7
- // ---------------------------------------------------------------------------
8
- const normalize = (data) => asRecord(unwrapDocument(data));
9
- const stateLabel = (raw) => {
10
- if (typeof raw === 'number')
11
- return stateCodeToName(raw) ?? String(raw);
12
- if (typeof raw === 'string')
13
- return raw;
14
- return '';
15
- };
16
- const colorForCommentState = (raw, color) => {
17
- const label = stateLabel(raw);
18
- if (!label)
19
- return undefined;
20
- if (label === 'unread')
21
- return wrap(ANSI.yellow, label, color);
22
- if (label === 'read')
23
- return wrap(ANSI.green, label, color);
24
- if (label === 'junk')
25
- return wrap(ANSI.red, label, color);
26
- return formatStateBadge(label, color) ?? label;
27
- };
28
- const indentBody = (s, indent = ' ') => s
29
- .replace(/\s+$/, '')
30
- .split('\n')
31
- .map((line) => `${indent}${line}`)
32
- .join('\n');
33
- const authorOf = (doc) => {
34
- const reader = asRecord(first(doc, 'reader'));
35
- if (Object.keys(reader).length > 0) {
36
- const name = firstString(reader, 'nickname', 'name');
37
- if (name)
38
- return name;
39
- }
40
- return firstString(doc, 'author') || '(anonymous)';
41
- };
42
- const refLabel = (doc) => {
43
- const refType = firstString(doc, 'ref_type', 'refType');
44
- const ref = asRecord(first(doc, 'ref'));
45
- const title = firstString(ref, 'title', 'slug', 'id');
46
- if (refType && title)
47
- return `${refType}:${title}`;
48
- if (refType)
49
- return refType;
50
- return '';
51
- };
52
- const collectDetailFields = (doc) => {
53
- const fields = [
54
- ['id', first(doc, 'id')],
55
- ['author', authorOf(doc)],
56
- ['mail', first(doc, 'mail')],
57
- ['url', first(doc, 'url')],
58
- ['ip', first(doc, 'ip')],
59
- ['location', first(doc, 'location')],
60
- ['ref', refLabel(doc)],
61
- ['state', stateLabel(first(doc, 'state'))],
62
- ['pin', first(doc, 'pin')],
63
- ['is_whispers', first(doc, 'is_whispers', 'isWhispers')],
64
- ['created_at', first(doc, 'created_at', 'createdAt')],
65
- ];
66
- return fields.filter(([, value]) => value !== undefined && value !== null && value !== '');
67
- };
68
- // ---------------------------------------------------------------------------
69
- // Single-comment view
70
- // ---------------------------------------------------------------------------
71
- const renderCommentReadable = (data, color) => {
72
- const doc = normalize(data);
73
- const author = authorOf(doc);
74
- const title = `comment from ${author}`;
75
- return renderMetadataBlock({
76
- title,
77
- kind: 'comment',
78
- fields: collectDetailFields(doc),
79
- body: firstString(doc, 'text') || undefined,
80
- bodyFormat: 'markdown',
81
- }, { color });
82
- };
83
- const renderCommentLlm = (data) => {
84
- const doc = normalize(data);
85
- const fm = frontmatter({
86
- title: `comment ${firstString(doc, 'id') || ''}`.trim(),
87
- fields: collectDetailFields(doc),
88
- });
89
- const text = firstString(doc, 'text');
90
- return text ? `${fm}\n\n${text}` : fm;
91
- };
92
- export const commentView = {
93
- kind: 'comment',
94
- modes: new Set(['readable', 'llm']),
95
- readable: (data, ctx) => renderCommentReadable(data, ctx.color),
96
- llm: (data) => renderCommentLlm(data),
97
- };
98
- // ---------------------------------------------------------------------------
99
- // List view
100
- // ---------------------------------------------------------------------------
101
- const renderListHeader = (payload, rowCount, color) => {
102
- const envelopeMeta = asRecord(first(payload, 'meta'));
103
- const pagination = asRecord(first(envelopeMeta, 'pagination'));
104
- const page = first(pagination, 'page', 'currentPage');
105
- const size = first(pagination, 'size', 'pageSize');
106
- const total = first(pagination, 'total', 'totalCount', 'total_count');
107
- const headerParts = [`count: ${rowCount}`];
108
- if (page !== undefined)
109
- headerParts.push(`page: ${formatScalar(page)}`);
110
- if (size !== undefined)
111
- headerParts.push(`size: ${formatScalar(size)}`);
112
- if (total !== undefined)
113
- headerParts.push(`total: ${formatScalar(total)}`);
114
- const heading = wrap(ANSI.bold, 'Comments', color);
115
- const ruleLen = Math.min(Math.max(visibleLen('Comments'), 24), SEPARATOR_WIDTH);
116
- const rule = wrap(ANSI.dim, '─'.repeat(ruleLen), color);
117
- const metaLine = wrap(ANSI.dim, headerParts.join(' · '), color);
118
- return `${heading}\n${rule}\n${metaLine}`;
119
- };
120
- const renderListItem = (doc, index, color) => {
121
- const author = authorOf(doc);
122
- const id = firstString(doc, 'id');
123
- const stateBadge = colorForCommentState(first(doc, 'state'), color) ??
124
- stateLabel(first(doc, 'state'));
125
- const ref = refLabel(doc);
126
- const created = first(doc, 'created_at', 'createdAt');
127
- const lines = [];
128
- // Header: "1. <author> [state] <id>"
129
- const indexLabel = wrap(ANSI.dim, `${index + 1}.`, color);
130
- const authorBold = wrap(ANSI.bold, author, color);
131
- const idDim = id ? wrap(ANSI.dim, `#${id}`, color) : '';
132
- const header = [indexLabel, authorBold, `[${stateBadge}]`, idDim]
133
- .filter(Boolean)
134
- .join(' ');
135
- lines.push(header);
136
- // Meta line: ref · created_at
137
- const metaParts = [];
138
- if (ref)
139
- metaParts.push(ref);
140
- if (created !== undefined) {
141
- metaParts.push(tryFormatTimestamp(created, { style: 'rel' }) ?? formatScalar(created));
142
- }
143
- if (metaParts.length > 0) {
144
- lines.push(wrap(ANSI.dim, ` ${metaParts.join(' · ')}`, color));
145
- }
146
- // Body — full text, indented to align with list item.
147
- const text = firstString(doc, 'text');
148
- if (text)
149
- lines.push(indentBody(text));
150
- return lines.join('\n');
151
- };
152
- const renderCommentListReadable = (data, color) => {
153
- const payload = asRecord(data);
154
- const rows = Array.isArray(payload.data)
155
- ? payload.data
156
- : Array.isArray(data)
157
- ? data
158
- : [];
159
- const header = renderListHeader(payload, rows.length, color);
160
- if (rows.length === 0) {
161
- const empty = wrap(ANSI.dim, '(no comments)', color);
162
- return `${header}\n\n${empty}`;
163
- }
164
- const items = rows.map((row, index) => renderListItem(asRecord(row), index, color));
165
- return `${header}\n\n${items.join('\n\n')}`;
166
- };
167
- const renderCommentListLlm = (data) => {
168
- const payload = asRecord(data);
169
- const rows = Array.isArray(payload.data)
170
- ? payload.data
171
- : Array.isArray(data)
172
- ? data
173
- : [];
174
- if (rows.length === 0) {
175
- // Render the markdown shape so consumers still see a header.
176
- return renderMarkdownToAnsi('# Comments\n\n_no comments_\n', {
177
- color: false,
178
- });
179
- }
180
- return rows
181
- .map((row) => {
182
- const doc = asRecord(row);
183
- const fm = frontmatter({
184
- title: `comment ${firstString(doc, 'id') || ''}`.trim(),
185
- fields: collectDetailFields(doc),
186
- });
187
- const text = firstString(doc, 'text');
188
- return text ? `${fm}\n\n${text}` : fm;
189
- })
190
- .join('\n\n---\n\n');
191
- };
192
- export const commentListView = {
193
- kind: 'comment-list',
194
- modes: new Set(['readable', 'llm']),
195
- readable: (data, ctx) => renderCommentListReadable(data, ctx.color),
196
- llm: (data) => renderCommentListLlm(data),
197
- };
@@ -1,5 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Api } from '../../services/Api';
3
- import { Editor } from '../../services/Editor';
4
- import { Renderer } from '../../services/Renderer';
5
- export declare const edit: Command.Command<"edit", Api | Renderer | Editor, import("../../services/Api").ApiError, {}>;
@@ -1,36 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { ValidationFailed } from '../../domain/errors';
4
- import { Api } from '../../services/Api';
5
- import { Editor } from '../../services/Editor';
6
- import { Renderer } from '../../services/Renderer';
7
- export const edit = Command.make('edit', {}, () => Effect.gen(function* () {
8
- const api = yield* Api;
9
- const editor = yield* Editor;
10
- const renderer = yield* Renderer;
11
- const current = yield* api.request('/options');
12
- const initial = JSON.stringify(current ?? {}, null, 2);
13
- const next = yield* editor.openEditor({
14
- filename: 'mxs-config.json',
15
- initialContent: initial,
16
- });
17
- if (next.trim() === initial.trim()) {
18
- yield* renderer.emitInfo('no changes');
19
- return;
20
- }
21
- const parsed = yield* Effect.try({
22
- try: () => JSON.parse(next),
23
- catch: (err) => new ValidationFailed({
24
- message: `invalid JSON: ${err?.message ?? String(err)}`,
25
- }),
26
- });
27
- const results = {};
28
- for (const [k, v] of Object.entries(parsed)) {
29
- const r = yield* api.request(`/options/${encodeURIComponent(k)}`, {
30
- method: 'PATCH',
31
- body: v,
32
- });
33
- results[k] = r;
34
- }
35
- yield* renderer.emitSuccess(results);
36
- }));
@@ -1,6 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Api } from '../../services/Api';
3
- import { Renderer } from '../../services/Renderer';
4
- export declare const get: Command.Command<"get", Api | Renderer, import("../../services/Api").ApiError, {
5
- readonly key: string;
6
- }>;
@@ -1,11 +0,0 @@
1
- import { Args, Command } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { Api } from '../../services/Api';
4
- import { Renderer } from '../../services/Renderer';
5
- const key = Args.text({ name: 'key' });
6
- export const get = Command.make('get', { key }, ({ key }) => Effect.gen(function* () {
7
- const api = yield* Api;
8
- const renderer = yield* Renderer;
9
- const res = yield* api.request(`/options/${encodeURIComponent(key)}`);
10
- yield* renderer.emitSuccess(res);
11
- }));
@@ -1,10 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- export declare const configCmd: Command.Command<"config", import("../../services/Api").Api | import("../ai/_poll").Renderer | import("../../services/Editor").Editor, import("../../services/Api").ApiError, {
3
- readonly subcommand: import("effect/Option").Option<{} | {
4
- readonly key: string;
5
- } | {} | {
6
- readonly key: string;
7
- readonly value: string;
8
- readonly type: import("effect/Option").Option<"string" | "number" | "json" | "bool">;
9
- }>;
10
- }>;
@@ -1,22 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { registerCommandHelp } from '../help/registry';
3
- import { edit } from './edit';
4
- import { get } from './get';
5
- import { list } from './list';
6
- import { set } from './set';
7
- const help = registerCommandHelp({
8
- name: 'config',
9
- description: 'manage server options',
10
- skillChapter: 'commands-config',
11
- verbs: [
12
- { name: 'list', description: 'list all server options' },
13
- { name: 'get', args: ['<key>'], description: 'read one server option' },
14
- {
15
- name: 'set',
16
- args: ['<key>', '<value>', '[--type <json/string/number/bool>]'],
17
- description: 'set a server option',
18
- },
19
- { name: 'edit', description: 'edit all server options via $EDITOR' },
20
- ],
21
- });
22
- export const configCmd = Command.make('config').pipe(Command.withDescription(help.description), Command.withSubcommands([list, get, set, edit]));
@@ -1,4 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Api } from '../../services/Api';
3
- import { Renderer } from '../../services/Renderer';
4
- export declare const list: Command.Command<"list", Api | Renderer, import("../../services/Api").ApiError, {}>;
@@ -1,10 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { Api } from '../../services/Api';
4
- import { Renderer } from '../../services/Renderer';
5
- export const list = Command.make('list', {}, () => Effect.gen(function* () {
6
- const api = yield* Api;
7
- const renderer = yield* Renderer;
8
- const res = yield* api.request('/options');
9
- yield* renderer.emitSuccess(res);
10
- }));
@@ -1,9 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Option } from 'effect';
3
- import { Api } from '../../services/Api';
4
- import { Renderer } from '../../services/Renderer';
5
- export declare const set: Command.Command<"set", Api | Renderer, import("../../services/Api").ApiError, {
6
- readonly key: string;
7
- readonly value: string;
8
- readonly type: Option.Option<"string" | "number" | "json" | "bool">;
9
- }>;
@@ -1,48 +0,0 @@
1
- import { Args, Command, Options } from '@effect/cli';
2
- import { Effect, Option } from 'effect';
3
- import { ValidationFailed } from '../../domain/errors';
4
- import { Api } from '../../services/Api';
5
- import { Renderer } from '../../services/Renderer';
6
- const key = Args.text({ name: 'key' });
7
- const value = Args.text({ name: 'value' });
8
- const type_ = Options.choice('type', [
9
- 'json',
10
- 'string',
11
- 'number',
12
- 'bool',
13
- ]).pipe(Options.optional);
14
- const coerce = (raw, type) => {
15
- if (type === 'string')
16
- return Effect.succeed(raw);
17
- if (type === 'number') {
18
- const n = Number(raw);
19
- if (Number.isNaN(n)) {
20
- return Effect.fail(new ValidationFailed({ message: `invalid number: ${raw}` }));
21
- }
22
- return Effect.succeed(n);
23
- }
24
- if (type === 'bool')
25
- return Effect.succeed(raw === 'true');
26
- // json | undefined → try JSON.parse; on failure fall back to raw string when
27
- // type was not explicitly 'json', else fail.
28
- try {
29
- return Effect.succeed(JSON.parse(raw));
30
- }
31
- catch {
32
- if (type === 'json') {
33
- return Effect.fail(new ValidationFailed({ message: `invalid JSON: ${raw}` }));
34
- }
35
- return Effect.succeed(raw);
36
- }
37
- };
38
- export const set = Command.make('set', { key, value, type: type_ }, ({ key, value, type }) => Effect.gen(function* () {
39
- const t = Option.getOrUndefined(type);
40
- const coerced = yield* coerce(value, t);
41
- const api = yield* Api;
42
- const renderer = yield* Renderer;
43
- const res = yield* api.request(`/options/${encodeURIComponent(key)}`, {
44
- method: 'PATCH',
45
- body: coerced,
46
- });
47
- yield* renderer.emitSuccess(res);
48
- }));
@@ -1,27 +0,0 @@
1
- export type DraftRefType = 'post' | 'note' | 'page';
2
- export declare const REF_TYPE_TO_RESOURCE: Record<DraftRefType, string>;
3
- export interface DraftRow {
4
- id?: string;
5
- refType?: DraftRefType;
6
- refId?: string | null;
7
- title?: string;
8
- text?: string;
9
- content?: string | null;
10
- contentFormat?: string;
11
- meta?: Record<string, unknown> | null;
12
- typeSpecificData?: Record<string, unknown> | string | null;
13
- }
14
- export declare const splitDraftBody: (payload: Record<string, unknown>) => Record<string, unknown>;
15
- export declare const parseTypeSpecificData: (raw: DraftRow["typeSpecificData"]) => Record<string, unknown>;
16
- /**
17
- * The response interceptor snake_cases keys at every depth, but the request
18
- * pipe only camelizes the body's top level — nested subtrees (like `meta`)
19
- * must be restored before being sent back, or `skillIds` round-trips into a
20
- * stored `skill_ids`. Best-effort inverse: keys that legitimately contained
21
- * underscores were already mangled by the response side.
22
- */
23
- export declare const camelizeDeep: (value: unknown) => unknown;
24
- /** The server serializes response keys to snake_case; normalize back. */
25
- export declare const normalizeDraftRow: (row: unknown) => DraftRow;
26
- /** Single-object responses may arrive wrapped in an outer `data` envelope. */
27
- export declare const unwrapData: <T>(res: unknown) => T;
@@ -1,85 +0,0 @@
1
- /** Draft-native fields; everything else rides along in `typeSpecificData`. */
2
- const DRAFT_CORE_KEYS = new Set([
3
- 'title',
4
- 'text',
5
- 'content',
6
- 'contentFormat',
7
- 'meta',
8
- ]);
9
- export const REF_TYPE_TO_RESOURCE = {
10
- post: 'posts',
11
- note: 'notes',
12
- page: 'pages',
13
- };
14
- export const splitDraftBody = (payload) => {
15
- const draftBody = {};
16
- const typeSpecificData = {};
17
- for (const [key, value] of Object.entries(payload)) {
18
- if (DRAFT_CORE_KEYS.has(key))
19
- draftBody[key] = value;
20
- else
21
- typeSpecificData[key] = value;
22
- }
23
- if (Object.keys(typeSpecificData).length > 0) {
24
- draftBody.typeSpecificData = typeSpecificData;
25
- }
26
- return draftBody;
27
- };
28
- export const parseTypeSpecificData = (raw) => {
29
- if (!raw)
30
- return {};
31
- if (typeof raw === 'object')
32
- return raw;
33
- try {
34
- const parsed = JSON.parse(raw);
35
- return typeof parsed === 'object' && parsed !== null ? parsed : {};
36
- }
37
- catch {
38
- return {};
39
- }
40
- };
41
- /**
42
- * The response interceptor snake_cases keys at every depth, but the request
43
- * pipe only camelizes the body's top level — nested subtrees (like `meta`)
44
- * must be restored before being sent back, or `skillIds` round-trips into a
45
- * stored `skill_ids`. Best-effort inverse: keys that legitimately contained
46
- * underscores were already mangled by the response side.
47
- */
48
- export const camelizeDeep = (value) => {
49
- if (Array.isArray(value))
50
- return value.map(camelizeDeep);
51
- if (value && typeof value === 'object') {
52
- return Object.fromEntries(Object.entries(value).map(([k, v]) => [
53
- k.replaceAll(/_([\da-z])/g, (_, c) => c.toUpperCase()),
54
- camelizeDeep(v),
55
- ]));
56
- }
57
- return value;
58
- };
59
- /** The server serializes response keys to snake_case; normalize back. */
60
- export const normalizeDraftRow = (row) => {
61
- if (!row || typeof row !== 'object')
62
- return {};
63
- const r = row;
64
- const pick = (camel, snake) => (r[camel] ?? r[snake]);
65
- return {
66
- id: pick('id', 'id'),
67
- refType: pick('refType', 'ref_type'),
68
- refId: pick('refId', 'ref_id'),
69
- title: pick('title', 'title'),
70
- text: pick('text', 'text'),
71
- content: pick('content', 'content'),
72
- contentFormat: pick('contentFormat', 'content_format'),
73
- meta: pick('meta', 'meta'),
74
- typeSpecificData: pick('typeSpecificData', 'type_specific_data'),
75
- };
76
- };
77
- /** Single-object responses may arrive wrapped in an outer `data` envelope. */
78
- export const unwrapData = (res) => {
79
- if (res && typeof res === 'object' && 'data' in res) {
80
- const inner = res.data;
81
- if (inner && typeof inner === 'object')
82
- return inner;
83
- }
84
- return res;
85
- };
@@ -1,21 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Api } from '../../services/Api';
3
- import { Renderer } from '../../services/Renderer';
4
- export declare const create: Command.Command<"create", import("@effect/platform/Path").Path | import("@effect/platform/FileSystem").FileSystem | Api | Renderer | import("../../services/Resolver").Resolver | import("../../services/Lexical").Lexical, import("../../domain/errors").ValidationXml | import("../../services/Api").ApiError, {
5
- readonly title: import("effect/Option").Option<string>;
6
- readonly slug: import("effect/Option").Option<string>;
7
- readonly category: import("effect/Option").Option<string>;
8
- readonly content: import("effect/Option").Option<string>;
9
- readonly format: import("effect/Option").Option<"markdown" | "lexical">;
10
- readonly summary: import("effect/Option").Option<string>;
11
- readonly state: import("effect/Option").Option<"draft" | "publish">;
12
- readonly tags: import("effect/Option").Option<string>;
13
- readonly copyright: import("effect/Option").Option<string>;
14
- readonly pin: import("effect/Option").Option<string>;
15
- readonly pinOrder: import("effect/Option").Option<number>;
16
- readonly related: import("effect/Option").Option<string>;
17
- readonly meta: import("effect/Option").Option<string>;
18
- readonly file: import("effect/Option").Option<string>;
19
- readonly open: boolean;
20
- readonly silent: boolean;
21
- }>;
@@ -1,34 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { openAdminDraftEdit } from '../../domain/admin-link';
4
- import { ValidationFailed } from '../../domain/errors';
5
- import { buildPostPayload } from '../../domain/payload';
6
- import { Api } from '../../services/Api';
7
- import { Renderer } from '../../services/Renderer';
8
- import { extractId, postWriteOptions, resolveCategoryRefs, toPostFlagInputs, } from '../post/_flags';
9
- import { splitDraftBody } from './_shared';
10
- export const create = Command.make('create', postWriteOptions, (opts) => Effect.gen(function* () {
11
- const flags = toPostFlagInputs(opts);
12
- const built = yield* buildPostPayload(flags);
13
- const payload = yield* resolveCategoryRefs({ ...built.payload });
14
- // Drafts have no publish state; it is decided at `draft publish`.
15
- delete payload.isPublished;
16
- const changedKeys = Object.keys(payload).filter((k) => k !== 'contentFormat');
17
- if (changedKeys.length === 0) {
18
- return yield* Effect.fail(new ValidationFailed({
19
- message: 'nothing to save: provide --file or content/meta flags',
20
- }));
21
- }
22
- const body = splitDraftBody(payload);
23
- const api = yield* Api;
24
- const renderer = yield* Renderer;
25
- const res = yield* api.request('/drafts', {
26
- method: 'POST',
27
- body: { refType: 'post', ...body },
28
- });
29
- const id = extractId(res);
30
- yield* renderer.emitSuccess(opts.silent ? { ok: true, id } : res);
31
- if (opts.open && id) {
32
- yield* openAdminDraftEdit('posts', id);
33
- }
34
- })).pipe(Command.withDescription('create a standalone post draft (not linked to any published post; publish later with `draft publish`)'));
@@ -1,7 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Api } from '../../services/Api';
3
- import { Renderer } from '../../services/Renderer';
4
- export declare const del: Command.Command<"delete", Api | Renderer, import("../../services/Api").ApiError, {
5
- readonly id: string;
6
- readonly force: boolean;
7
- }>;
@@ -1,20 +0,0 @@
1
- import { Args, Command, Options } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { ValidationFailed } from '../../domain/errors';
4
- import { Api } from '../../services/Api';
5
- import { Renderer } from '../../services/Renderer';
6
- const id = Args.text({ name: 'id' });
7
- const force = Options.boolean('force');
8
- export const del = Command.make('delete', { id, force }, ({ id, force }) => Effect.gen(function* () {
9
- if (!force && !process.stdin.isTTY) {
10
- return yield* Effect.fail(new ValidationFailed({
11
- message: 'refusing to delete without --force in non-TTY context',
12
- }));
13
- }
14
- const api = yield* Api;
15
- const renderer = yield* Renderer;
16
- yield* api.request(`/drafts/${encodeURIComponent(id)}`, {
17
- method: 'DELETE',
18
- });
19
- yield* renderer.emitSuccess({ deleted: id });
20
- })).pipe(Command.withDescription('delete a draft'));
@@ -1,6 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- import { Api } from '../../services/Api';
3
- import { Renderer } from '../../services/Renderer';
4
- export declare const get: Command.Command<"get", Api | Renderer, import("../../services/Api").ApiError, {
5
- readonly id: string;
6
- }>;
@@ -1,11 +0,0 @@
1
- import { Args, Command } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { Api } from '../../services/Api';
4
- import { Renderer } from '../../services/Renderer';
5
- const id = Args.text({ name: 'id' });
6
- export const get = Command.make('get', { id }, ({ id }) => Effect.gen(function* () {
7
- const api = yield* Api;
8
- const renderer = yield* Renderer;
9
- const res = yield* api.request(`/drafts/${encodeURIComponent(id)}`);
10
- yield* renderer.emitSuccess(res);
11
- })).pipe(Command.withDescription('show a single draft by id'));
@@ -1,54 +0,0 @@
1
- import { Command } from '@effect/cli';
2
- export declare const draftCmd: Command.Command<"draft", import("@effect/platform/Path").Path | import("@effect/platform/FileSystem").FileSystem | import("../../services/Api").Api | import("../ai/_poll").Renderer | import("../../services/Resolver").Resolver | import("../../services/Lexical").Lexical, import("../../domain/errors").ValidationXml | import("../../services/Api").ApiError, {
3
- readonly subcommand: import("effect/Option").Option<{
4
- readonly title: import("effect/Option").Option<string>;
5
- readonly slug: import("effect/Option").Option<string>;
6
- readonly category: import("effect/Option").Option<string>;
7
- readonly content: import("effect/Option").Option<string>;
8
- readonly format: import("effect/Option").Option<"markdown" | "lexical">;
9
- readonly summary: import("effect/Option").Option<string>;
10
- readonly state: import("effect/Option").Option<"draft" | "publish">;
11
- readonly tags: import("effect/Option").Option<string>;
12
- readonly copyright: import("effect/Option").Option<string>;
13
- readonly pin: import("effect/Option").Option<string>;
14
- readonly pinOrder: import("effect/Option").Option<number>;
15
- readonly related: import("effect/Option").Option<string>;
16
- readonly meta: import("effect/Option").Option<string>;
17
- readonly file: import("effect/Option").Option<string>;
18
- readonly open: boolean;
19
- readonly silent: boolean;
20
- } | {
21
- readonly id: string;
22
- readonly force: boolean;
23
- } | {
24
- readonly id: string;
25
- } | {
26
- readonly page: import("effect/Option").Option<number>;
27
- readonly size: import("effect/Option").Option<number>;
28
- readonly type: import("effect/Option").Option<"post" | "note" | "page">;
29
- readonly new: boolean;
30
- readonly linked: boolean;
31
- } | {
32
- readonly id: string;
33
- readonly open: boolean;
34
- readonly silent: boolean;
35
- } | {
36
- readonly title: import("effect/Option").Option<string>;
37
- readonly slug: import("effect/Option").Option<string>;
38
- readonly category: import("effect/Option").Option<string>;
39
- readonly content: import("effect/Option").Option<string>;
40
- readonly format: import("effect/Option").Option<"markdown" | "lexical">;
41
- readonly summary: import("effect/Option").Option<string>;
42
- readonly state: import("effect/Option").Option<"draft" | "publish">;
43
- readonly tags: import("effect/Option").Option<string>;
44
- readonly copyright: import("effect/Option").Option<string>;
45
- readonly pin: import("effect/Option").Option<string>;
46
- readonly pinOrder: import("effect/Option").Option<number>;
47
- readonly related: import("effect/Option").Option<string>;
48
- readonly meta: import("effect/Option").Option<string>;
49
- readonly file: import("effect/Option").Option<string>;
50
- readonly open: boolean;
51
- readonly silent: boolean;
52
- readonly id: string;
53
- }>;
54
- }>;