@mx-space/cli 0.15.0 → 0.15.1

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 (615) hide show
  1. package/README.md +1 -1
  2. package/dist/{Lexical.dev-Cck4n26y.mjs → Lexical.dev-BSvx45_E.mjs} +127 -94
  3. package/dist/{Lexical.node-D6wf2D5M.mjs → Lexical.node-kAh5GM2n.mjs} +1 -1
  4. package/dist/{Lexical.prod-DCwS1oTq.mjs → Lexical.prod-Bqwgb3ez.mjs} +4 -2
  5. package/dist/{LexicalClipboard.dev-CMkPHV7O.mjs → LexicalClipboard.dev-BWU3KXIa.mjs} +18 -14
  6. package/dist/{LexicalClipboard.node-m4nZ7IYw.mjs → LexicalClipboard.node-BygAdNdF.mjs} +1 -1
  7. package/dist/{LexicalClipboard.prod-B_rN1vE1.mjs → LexicalClipboard.prod-BtMuKNyT.mjs} +10 -10
  8. package/dist/{LexicalCodeCore.dev-DyJw3i8V.mjs → LexicalCodeCore.dev-CD2xgvDs.mjs} +43 -25
  9. package/dist/{LexicalCodeCore.prod-DPXLHQLF.mjs → LexicalCodeCore.prod-Bl6FFMc7.mjs} +6 -6
  10. package/dist/{LexicalDragon.dev-ZkNfMwrE.mjs → LexicalDragon.dev-BwdYhm4K.mjs} +2 -2
  11. package/dist/{LexicalDragon.node-Ds9oLUFh.mjs → LexicalDragon.node-CpJhkCVV.mjs} +1 -1
  12. package/dist/{LexicalDragon.prod-B58ic2av.mjs → LexicalDragon.prod-CvXmWwo1.mjs} +2 -2
  13. package/dist/{LexicalExtension.dev-DvwHs1Xv.mjs → LexicalExtension.dev-LcRLXI5Z.mjs} +25 -13
  14. package/dist/{LexicalExtension.node-5OymZQfy.mjs → LexicalExtension.node-BwJt2LXV.mjs} +1 -1
  15. package/dist/{LexicalExtension.prod-Ce0T5smQ.mjs → LexicalExtension.prod-lg8_33-H.mjs} +16 -13
  16. package/dist/{LexicalHeadless.dev-DA0WldSR.mjs → LexicalHeadless.dev-BeUbKBes.mjs} +1 -1
  17. package/dist/{LexicalHeadless.prod-1kQgKB6c.mjs → LexicalHeadless.prod-4gbIA8HM.mjs} +1 -1
  18. package/dist/{LexicalHtml.dev-BDB7CUrx.mjs → LexicalHtml.dev-BLdZWTCJ.mjs} +20 -14
  19. package/dist/{LexicalHtml.node-DpVNt7It.mjs → LexicalHtml.node-BeuJMvvt.mjs} +1 -1
  20. package/dist/{LexicalHtml.prod-HkxM5scw.mjs → LexicalHtml.prod-CHUyCocN.mjs} +4 -4
  21. package/dist/{LexicalLink.dev-C5zNJlrm.mjs → LexicalLink.dev-DgsFRqw0.mjs} +28 -21
  22. package/dist/{LexicalLink.prod-Bkt9hQAt.mjs → LexicalLink.prod-CkXkeKY2.mjs} +6 -5
  23. package/dist/{LexicalList.dev-B7VgME-m.mjs → LexicalList.dev-OOms3kQi.mjs} +4 -4
  24. package/dist/{LexicalList.prod-B8c7TDjH.mjs → LexicalList.prod-DzMBeqHn.mjs} +4 -4
  25. package/dist/{LexicalMarkdown.dev-B5z9kLbV.mjs → LexicalMarkdown.dev-DJLKbZtD.mjs} +40 -29
  26. package/dist/{LexicalMarkdown.prod-wKzw7FFH.mjs → LexicalMarkdown.prod-Cp21kDCU.mjs} +10 -7
  27. package/dist/{LexicalRichText.dev-CUd6Li5F.mjs → LexicalRichText.dev-0rkAGjUf.mjs} +15 -11
  28. package/dist/{LexicalRichText.node-BKfaQ-CH.mjs → LexicalRichText.node-Cd-BySPE.mjs} +4 -4
  29. package/dist/{LexicalRichText.prod-SBewjJHx.mjs → LexicalRichText.prod-DTQiEr8C.mjs} +17 -11
  30. package/dist/{LexicalSelection.dev-D27JOCqj.mjs → LexicalSelection.dev-Bi0VlUEv.mjs} +28 -24
  31. package/dist/{LexicalSelection.node-DBEwPjBu.mjs → LexicalSelection.node-t2U46EF_.mjs} +1 -1
  32. package/dist/{LexicalSelection.prod-OaYhXHOL.mjs → LexicalSelection.prod-CrFG111g.mjs} +2 -2
  33. package/dist/{LexicalTable.dev-6IFFOAE0.mjs → LexicalTable.dev-D-sFhO-o.mjs} +33 -28
  34. package/dist/{LexicalTable.prod-2CaLZ7fH.mjs → LexicalTable.prod-DwYaa_dN.mjs} +10 -9
  35. package/dist/{LexicalUtils.dev-DJA7J_7v.mjs → LexicalUtils.dev-Q2q3-UDM.mjs} +8 -5
  36. package/dist/{LexicalUtils.node-Df9oPTlA.mjs → LexicalUtils.node-Dl7OvqJV.mjs} +1 -1
  37. package/dist/{LexicalUtils.prod-Bb7V4Ewg.mjs → LexicalUtils.prod-CBnq_iEV.mjs} +7 -6
  38. package/dist/bin/mxs.mjs +1 -1
  39. package/dist/esm-CNZ7kdTg.mjs +2 -0
  40. package/dist/{esm-DLzrv7gD.mjs → esm-ZXjJmLEC.mjs} +257 -260
  41. package/dist/index.mjs +1 -1
  42. package/dist/{mxs-BIRW5Axj.mjs → mxs-DC9zR3f2.mjs} +759 -539
  43. package/dist/{rolldown-runtime-JspESFgx.mjs → rolldown-runtime-B4iAMlE-.mjs} +1 -1
  44. package/dist/src/bin/mxs.d.ts +2 -0
  45. package/dist/src/bin/mxs.js +310 -0
  46. package/dist/src/cli/ai/_poll.d.ts +12 -0
  47. package/dist/src/cli/ai/_poll.js +38 -0
  48. package/dist/src/cli/ai/_resolve.d.ts +8 -0
  49. package/dist/src/cli/ai/_resolve.js +27 -0
  50. package/dist/src/cli/ai/index.d.ts +127 -0
  51. package/dist/src/cli/ai/index.js +46 -0
  52. package/dist/src/cli/ai/insights/by-article.d.ts +10 -0
  53. package/dist/src/cli/ai/insights/by-article.js +21 -0
  54. package/dist/src/cli/ai/insights/delete.d.ts +7 -0
  55. package/dist/src/cli/ai/insights/delete.js +18 -0
  56. package/dist/src/cli/ai/insights/edit.d.ts +8 -0
  57. package/dist/src/cli/ai/insights/edit.js +54 -0
  58. package/dist/src/cli/ai/insights/get.d.ts +6 -0
  59. package/dist/src/cli/ai/insights/get.js +11 -0
  60. package/dist/src/cli/ai/insights/index.d.ts +30 -0
  61. package/dist/src/cli/ai/insights/index.js +17 -0
  62. package/dist/src/cli/ai/insights/list.d.ts +10 -0
  63. package/dist/src/cli/ai/insights/list.js +20 -0
  64. package/dist/src/cli/ai/insights/refresh.d.ts +10 -0
  65. package/dist/src/cli/ai/insights/refresh.js +25 -0
  66. package/dist/src/cli/ai/insights/translate.d.ts +10 -0
  67. package/dist/src/cli/ai/insights/translate.js +25 -0
  68. package/dist/src/cli/ai/overview/by-article.d.ts +7 -0
  69. package/dist/src/cli/ai/overview/by-article.js +15 -0
  70. package/dist/src/cli/ai/overview/index.d.ts +11 -0
  71. package/dist/src/cli/ai/overview/index.js +4 -0
  72. package/dist/src/cli/ai/overview/list.d.ts +10 -0
  73. package/dist/src/cli/ai/overview/list.js +20 -0
  74. package/dist/src/cli/ai/summary/by-article.d.ts +10 -0
  75. package/dist/src/cli/ai/summary/by-article.js +21 -0
  76. package/dist/src/cli/ai/summary/delete.d.ts +7 -0
  77. package/dist/src/cli/ai/summary/delete.js +18 -0
  78. package/dist/src/cli/ai/summary/edit.d.ts +8 -0
  79. package/dist/src/cli/ai/summary/edit.js +54 -0
  80. package/dist/src/cli/ai/summary/get.d.ts +6 -0
  81. package/dist/src/cli/ai/summary/get.js +11 -0
  82. package/dist/src/cli/ai/summary/index.d.ts +30 -0
  83. package/dist/src/cli/ai/summary/index.js +9 -0
  84. package/dist/src/cli/ai/summary/list.d.ts +10 -0
  85. package/dist/src/cli/ai/summary/list.js +20 -0
  86. package/dist/src/cli/ai/summary/regen.d.ts +10 -0
  87. package/dist/src/cli/ai/summary/regen.js +25 -0
  88. package/dist/src/cli/ai/summary/translate.d.ts +10 -0
  89. package/dist/src/cli/ai/summary/translate.js +25 -0
  90. package/dist/src/cli/ai/translate/by-article.d.ts +9 -0
  91. package/dist/src/cli/ai/translate/by-article.js +19 -0
  92. package/dist/src/cli/ai/translate/delete.d.ts +7 -0
  93. package/dist/src/cli/ai/translate/delete.js +18 -0
  94. package/dist/src/cli/ai/translate/edit.d.ts +8 -0
  95. package/dist/src/cli/ai/translate/edit.js +97 -0
  96. package/dist/src/cli/ai/translate/entries/delete.d.ts +7 -0
  97. package/dist/src/cli/ai/translate/entries/delete.js +18 -0
  98. package/dist/src/cli/ai/translate/entries/edit.d.ts +8 -0
  99. package/dist/src/cli/ai/translate/entries/edit.js +73 -0
  100. package/dist/src/cli/ai/translate/entries/generate.d.ts +7 -0
  101. package/dist/src/cli/ai/translate/entries/generate.js +15 -0
  102. package/dist/src/cli/ai/translate/entries/index.d.ts +17 -0
  103. package/dist/src/cli/ai/translate/entries/index.js +6 -0
  104. package/dist/src/cli/ai/translate/entries/list.d.ts +10 -0
  105. package/dist/src/cli/ai/translate/entries/list.js +20 -0
  106. package/dist/src/cli/ai/translate/get.d.ts +6 -0
  107. package/dist/src/cli/ai/translate/get.js +11 -0
  108. package/dist/src/cli/ai/translate/index.d.ts +40 -0
  109. package/dist/src/cli/ai/translate/index.js +19 -0
  110. package/dist/src/cli/ai/translate/languages.d.ts +7 -0
  111. package/dist/src/cli/ai/translate/languages.js +15 -0
  112. package/dist/src/cli/ai/translate/list.d.ts +9 -0
  113. package/dist/src/cli/ai/translate/list.js +19 -0
  114. package/dist/src/cli/ai/translate/run.d.ts +10 -0
  115. package/dist/src/cli/ai/translate/run.js +31 -0
  116. package/dist/src/cli/ai/tts/by-article.d.ts +7 -0
  117. package/dist/src/cli/ai/tts/by-article.js +15 -0
  118. package/dist/src/cli/ai/tts/delete.d.ts +7 -0
  119. package/dist/src/cli/ai/tts/delete.js +18 -0
  120. package/dist/src/cli/ai/tts/index.d.ts +22 -0
  121. package/dist/src/cli/ai/tts/index.js +7 -0
  122. package/dist/src/cli/ai/tts/list.d.ts +10 -0
  123. package/dist/src/cli/ai/tts/list.js +20 -0
  124. package/dist/src/cli/ai/tts/run.d.ts +10 -0
  125. package/dist/src/cli/ai/tts/run.js +25 -0
  126. package/dist/src/cli/ai/tts/voices.d.ts +7 -0
  127. package/dist/src/cli/ai/tts/voices.js +12 -0
  128. package/dist/src/cli/ai/views.d.ts +3 -0
  129. package/dist/src/cli/ai/views.js +45 -0
  130. package/dist/src/cli/auth/index.d.ts +6 -0
  131. package/dist/src/cli/auth/index.js +22 -0
  132. package/dist/src/cli/auth/login.d.ts +11 -0
  133. package/dist/src/cli/auth/login.js +168 -0
  134. package/dist/src/cli/auth/logout.d.ts +6 -0
  135. package/dist/src/cli/auth/logout.js +21 -0
  136. package/dist/src/cli/auth/status.d.ts +4 -0
  137. package/dist/src/cli/auth/status.js +31 -0
  138. package/dist/src/cli/auth/view.d.ts +25 -0
  139. package/dist/src/cli/auth/view.js +46 -0
  140. package/dist/src/cli/auth/whoami.d.ts +7 -0
  141. package/dist/src/cli/auth/whoami.js +44 -0
  142. package/dist/src/cli/category/create.d.ts +10 -0
  143. package/dist/src/cli/category/create.js +24 -0
  144. package/dist/src/cli/category/delete.d.ts +8 -0
  145. package/dist/src/cli/category/delete.js +21 -0
  146. package/dist/src/cli/category/get.d.ts +6 -0
  147. package/dist/src/cli/category/get.js +11 -0
  148. package/dist/src/cli/category/index.d.ts +20 -0
  149. package/dist/src/cli/category/index.js +41 -0
  150. package/dist/src/cli/category/list.d.ts +4 -0
  151. package/dist/src/cli/category/list.js +10 -0
  152. package/dist/src/cli/category/update.d.ts +12 -0
  153. package/dist/src/cli/category/update.js +34 -0
  154. package/dist/src/cli/comment/_flags.d.ts +28 -0
  155. package/dist/src/cli/comment/_flags.js +48 -0
  156. package/dist/src/cli/comment/approve.d.ts +9 -0
  157. package/dist/src/cli/comment/approve.js +23 -0
  158. package/dist/src/cli/comment/delete.d.ts +9 -0
  159. package/dist/src/cli/comment/delete.js +24 -0
  160. package/dist/src/cli/comment/get.d.ts +6 -0
  161. package/dist/src/cli/comment/get.js +12 -0
  162. package/dist/src/cli/comment/index.d.ts +34 -0
  163. package/dist/src/cli/comment/index.js +53 -0
  164. package/dist/src/cli/comment/list.d.ts +9 -0
  165. package/dist/src/cli/comment/list.js +20 -0
  166. package/dist/src/cli/comment/reject.d.ts +9 -0
  167. package/dist/src/cli/comment/reject.js +23 -0
  168. package/dist/src/cli/comment/reply.d.ts +9 -0
  169. package/dist/src/cli/comment/reply.js +31 -0
  170. package/dist/src/cli/comment/unread.d.ts +7 -0
  171. package/dist/src/cli/comment/unread.js +21 -0
  172. package/dist/src/cli/comment/view.d.ts +3 -0
  173. package/dist/src/cli/comment/view.js +197 -0
  174. package/dist/src/cli/config/edit.d.ts +5 -0
  175. package/dist/src/cli/config/edit.js +36 -0
  176. package/dist/src/cli/config/get.d.ts +6 -0
  177. package/dist/src/cli/config/get.js +11 -0
  178. package/dist/src/cli/config/index.d.ts +10 -0
  179. package/dist/src/cli/config/index.js +22 -0
  180. package/dist/src/cli/config/list.d.ts +4 -0
  181. package/dist/src/cli/config/list.js +10 -0
  182. package/dist/src/cli/config/set.d.ts +9 -0
  183. package/dist/src/cli/config/set.js +48 -0
  184. package/dist/src/cli/draft/_shared.d.ts +27 -0
  185. package/dist/src/cli/draft/_shared.js +85 -0
  186. package/dist/src/cli/draft/create.d.ts +21 -0
  187. package/dist/src/cli/draft/create.js +34 -0
  188. package/dist/src/cli/draft/delete.d.ts +7 -0
  189. package/dist/src/cli/draft/delete.js +20 -0
  190. package/dist/src/cli/draft/get.d.ts +6 -0
  191. package/dist/src/cli/draft/get.js +11 -0
  192. package/dist/src/cli/draft/index.d.ts +54 -0
  193. package/dist/src/cli/draft/index.js +42 -0
  194. package/dist/src/cli/draft/list.d.ts +11 -0
  195. package/dist/src/cli/draft/list.js +23 -0
  196. package/dist/src/cli/draft/publish.d.ts +8 -0
  197. package/dist/src/cli/draft/publish.js +64 -0
  198. package/dist/src/cli/draft/update.d.ts +22 -0
  199. package/dist/src/cli/draft/update.js +29 -0
  200. package/dist/src/cli/file/_shared.d.ts +6 -0
  201. package/dist/src/cli/file/_shared.js +5 -0
  202. package/dist/src/cli/file/delete.d.ts +8 -0
  203. package/dist/src/cli/file/delete.js +21 -0
  204. package/dist/src/cli/file/index.d.ts +19 -0
  205. package/dist/src/cli/file/index.js +33 -0
  206. package/dist/src/cli/file/list.d.ts +6 -0
  207. package/dist/src/cli/file/list.js +11 -0
  208. package/dist/src/cli/file/rename.d.ts +8 -0
  209. package/dist/src/cli/file/rename.js +16 -0
  210. package/dist/src/cli/file/upload.d.ts +9 -0
  211. package/dist/src/cli/file/upload.js +32 -0
  212. package/dist/src/cli/help/index.d.ts +62 -0
  213. package/dist/src/cli/help/index.js +276 -0
  214. package/dist/src/cli/help/registry.d.ts +28 -0
  215. package/dist/src/cli/help/registry.js +29 -0
  216. package/dist/src/cli/note/_flags.d.ts +66 -0
  217. package/dist/src/cli/note/_flags.js +73 -0
  218. package/dist/src/cli/note/create.d.ts +23 -0
  219. package/dist/src/cli/note/create.js +25 -0
  220. package/dist/src/cli/note/delete.d.ts +8 -0
  221. package/dist/src/cli/note/delete.js +21 -0
  222. package/dist/src/cli/note/edit.d.ts +28 -0
  223. package/dist/src/cli/note/edit.js +114 -0
  224. package/dist/src/cli/note/get.d.ts +6 -0
  225. package/dist/src/cli/note/get.js +29 -0
  226. package/dist/src/cli/note/index.d.ts +77 -0
  227. package/dist/src/cli/note/index.js +63 -0
  228. package/dist/src/cli/note/list.d.ts +10 -0
  229. package/dist/src/cli/note/list.js +22 -0
  230. package/dist/src/cli/note/publish.d.ts +7 -0
  231. package/dist/src/cli/note/publish.js +17 -0
  232. package/dist/src/cli/note/unpublish.d.ts +7 -0
  233. package/dist/src/cli/note/unpublish.js +17 -0
  234. package/dist/src/cli/note/update.d.ts +25 -0
  235. package/dist/src/cli/note/update.js +36 -0
  236. package/dist/src/cli/note/view.d.ts +3 -0
  237. package/dist/src/cli/note/view.js +162 -0
  238. package/dist/src/cli/page/create.d.ts +41 -0
  239. package/dist/src/cli/page/create.js +56 -0
  240. package/dist/src/cli/page/delete.d.ts +7 -0
  241. package/dist/src/cli/page/delete.js +37 -0
  242. package/dist/src/cli/page/edit.d.ts +19 -0
  243. package/dist/src/cli/page/edit.js +117 -0
  244. package/dist/src/cli/page/get.d.ts +6 -0
  245. package/dist/src/cli/page/get.js +16 -0
  246. package/dist/src/cli/page/index.d.ts +44 -0
  247. package/dist/src/cli/page/index.js +38 -0
  248. package/dist/src/cli/page/list.d.ts +4 -0
  249. package/dist/src/cli/page/list.js +10 -0
  250. package/dist/src/cli/page/update.d.ts +16 -0
  251. package/dist/src/cli/page/update.js +48 -0
  252. package/dist/src/cli/page/view.d.ts +2 -0
  253. package/dist/src/cli/page/view.js +79 -0
  254. package/dist/src/cli/post/_flags.d.ts +66 -0
  255. package/dist/src/cli/post/_flags.js +96 -0
  256. package/dist/src/cli/post/apply.d.ts +7 -0
  257. package/dist/src/cli/post/apply.js +70 -0
  258. package/dist/src/cli/post/create.d.ts +21 -0
  259. package/dist/src/cli/post/create.js +24 -0
  260. package/dist/src/cli/post/delete.d.ts +8 -0
  261. package/dist/src/cli/post/delete.js +21 -0
  262. package/dist/src/cli/post/edit.d.ts +26 -0
  263. package/dist/src/cli/post/edit.js +115 -0
  264. package/dist/src/cli/post/get.d.ts +7 -0
  265. package/dist/src/cli/post/get.js +15 -0
  266. package/dist/src/cli/post/index.d.ts +91 -0
  267. package/dist/src/cli/post/index.js +73 -0
  268. package/dist/src/cli/post/list.d.ts +10 -0
  269. package/dist/src/cli/post/list.js +23 -0
  270. package/dist/src/cli/post/publish.d.ts +7 -0
  271. package/dist/src/cli/post/publish.js +17 -0
  272. package/dist/src/cli/post/stage.d.ts +23 -0
  273. package/dist/src/cli/post/stage.js +55 -0
  274. package/dist/src/cli/post/unpublish.d.ts +7 -0
  275. package/dist/src/cli/post/unpublish.js +17 -0
  276. package/dist/src/cli/post/update.d.ts +23 -0
  277. package/dist/src/cli/post/update.js +38 -0
  278. package/dist/src/cli/post/view.d.ts +3 -0
  279. package/dist/src/cli/post/view.js +150 -0
  280. package/dist/src/cli/preview/index.d.ts +13 -0
  281. package/dist/src/cli/preview/index.js +226 -0
  282. package/dist/src/cli/profile/index.d.ts +14 -0
  283. package/dist/src/cli/profile/index.js +36 -0
  284. package/dist/src/cli/profile/ls.d.ts +5 -0
  285. package/dist/src/cli/profile/ls.js +26 -0
  286. package/dist/src/cli/profile/mark.d.ts +9 -0
  287. package/dist/src/cli/profile/mark.js +23 -0
  288. package/dist/src/cli/profile/rm.d.ts +12 -0
  289. package/dist/src/cli/profile/rm.js +50 -0
  290. package/dist/src/cli/profile/show.d.ts +9 -0
  291. package/dist/src/cli/profile/show.js +40 -0
  292. package/dist/src/cli/profile/use.d.ts +6 -0
  293. package/dist/src/cli/profile/use.js +11 -0
  294. package/dist/src/cli/profile/view.d.ts +8 -0
  295. package/dist/src/cli/profile/view.js +21 -0
  296. package/dist/src/cli/project/_flags.d.ts +56 -0
  297. package/dist/src/cli/project/_flags.js +130 -0
  298. package/dist/src/cli/project/create.d.ts +17 -0
  299. package/dist/src/cli/project/create.js +25 -0
  300. package/dist/src/cli/project/delete.d.ts +8 -0
  301. package/dist/src/cli/project/delete.js +22 -0
  302. package/dist/src/cli/project/edit.d.ts +11 -0
  303. package/dist/src/cli/project/edit.js +61 -0
  304. package/dist/src/cli/project/get.d.ts +7 -0
  305. package/dist/src/cli/project/get.js +14 -0
  306. package/dist/src/cli/project/index.d.ts +43 -0
  307. package/dist/src/cli/project/index.js +52 -0
  308. package/dist/src/cli/project/list.d.ts +8 -0
  309. package/dist/src/cli/project/list.js +19 -0
  310. package/dist/src/cli/project/update.d.ts +18 -0
  311. package/dist/src/cli/project/update.js +24 -0
  312. package/dist/src/cli/project/view-cmd.d.ts +7 -0
  313. package/dist/src/cli/project/view-cmd.js +15 -0
  314. package/dist/src/cli/project/view.d.ts +3 -0
  315. package/dist/src/cli/project/view.js +102 -0
  316. package/dist/src/cli/render/codehighlight.d.ts +8 -0
  317. package/dist/src/cli/render/codehighlight.js +264 -0
  318. package/dist/src/cli/render/envelope.d.ts +7 -0
  319. package/dist/src/cli/render/envelope.js +23 -0
  320. package/dist/src/cli/render/frontmatter.d.ts +8 -0
  321. package/dist/src/cli/render/frontmatter.js +50 -0
  322. package/dist/src/cli/render/helpers.d.ts +2 -0
  323. package/dist/src/cli/render/helpers.js +11 -0
  324. package/dist/src/cli/render/index.d.ts +7 -0
  325. package/dist/src/cli/render/index.js +10 -0
  326. package/dist/src/cli/render/lexical/blocks.d.ts +19 -0
  327. package/dist/src/cli/render/lexical/blocks.js +208 -0
  328. package/dist/src/cli/render/lexical/code.d.ts +2 -0
  329. package/dist/src/cli/render/lexical/code.js +22 -0
  330. package/dist/src/cli/render/lexical/embeds.d.ts +6 -0
  331. package/dist/src/cli/render/lexical/embeds.js +51 -0
  332. package/dist/src/cli/render/lexical/index.d.ts +9 -0
  333. package/dist/src/cli/render/lexical/index.js +25 -0
  334. package/dist/src/cli/render/lexical/inlines.d.ts +17 -0
  335. package/dist/src/cli/render/lexical/inlines.js +76 -0
  336. package/dist/src/cli/render/lexical/parser.d.ts +10 -0
  337. package/dist/src/cli/render/lexical/parser.js +64 -0
  338. package/dist/src/cli/render/lexical/walker.d.ts +21 -0
  339. package/dist/src/cli/render/lexical/walker.js +51 -0
  340. package/dist/src/cli/render/markdown.d.ts +18 -0
  341. package/dist/src/cli/render/markdown.js +196 -0
  342. package/dist/src/cli/render/metadata-block.d.ts +14 -0
  343. package/dist/src/cli/render/metadata-block.js +50 -0
  344. package/dist/src/cli/skill/all.d.ts +4 -0
  345. package/dist/src/cli/skill/all.js +11 -0
  346. package/dist/src/cli/skill/get.d.ts +6 -0
  347. package/dist/src/cli/skill/get.js +12 -0
  348. package/dist/src/cli/skill/index.d.ts +10 -0
  349. package/dist/src/cli/skill/index.js +34 -0
  350. package/dist/src/cli/skill/list.d.ts +4 -0
  351. package/dist/src/cli/skill/list.js +11 -0
  352. package/dist/src/cli/skill/search.d.ts +6 -0
  353. package/dist/src/cli/skill/search.js +12 -0
  354. package/dist/src/cli/skill/views.d.ts +6 -0
  355. package/dist/src/cli/skill/views.js +90 -0
  356. package/dist/src/cli/snippet/_flags.d.ts +57 -0
  357. package/dist/src/cli/snippet/_flags.js +123 -0
  358. package/dist/src/cli/snippet/_resolve.d.ts +4 -0
  359. package/dist/src/cli/snippet/_resolve.js +32 -0
  360. package/dist/src/cli/snippet/_sync.d.ts +5 -0
  361. package/dist/src/cli/snippet/_sync.js +54 -0
  362. package/dist/src/cli/snippet/create.d.ts +19 -0
  363. package/dist/src/cli/snippet/create.js +35 -0
  364. package/dist/src/cli/snippet/delete.d.ts +8 -0
  365. package/dist/src/cli/snippet/delete.js +28 -0
  366. package/dist/src/cli/snippet/edit.d.ts +7 -0
  367. package/dist/src/cli/snippet/edit.js +29 -0
  368. package/dist/src/cli/snippet/get.d.ts +6 -0
  369. package/dist/src/cli/snippet/get.js +12 -0
  370. package/dist/src/cli/snippet/index.d.ts +43 -0
  371. package/dist/src/cli/snippet/index.js +58 -0
  372. package/dist/src/cli/snippet/list.d.ts +9 -0
  373. package/dist/src/cli/snippet/list.js +20 -0
  374. package/dist/src/cli/snippet/pull.d.ts +8 -0
  375. package/dist/src/cli/snippet/pull.js +33 -0
  376. package/dist/src/cli/snippet/push.d.ts +10 -0
  377. package/dist/src/cli/snippet/push.js +31 -0
  378. package/dist/src/cli/snippet/update.d.ts +8 -0
  379. package/dist/src/cli/snippet/update.js +16 -0
  380. package/dist/src/cli/topic/create.d.ts +10 -0
  381. package/dist/src/cli/topic/create.js +24 -0
  382. package/dist/src/cli/topic/delete.d.ts +7 -0
  383. package/dist/src/cli/topic/delete.js +37 -0
  384. package/dist/src/cli/topic/get.d.ts +6 -0
  385. package/dist/src/cli/topic/get.js +15 -0
  386. package/dist/src/cli/topic/index.d.ts +20 -0
  387. package/dist/src/cli/topic/index.js +32 -0
  388. package/dist/src/cli/topic/list.d.ts +4 -0
  389. package/dist/src/cli/topic/list.js +10 -0
  390. package/dist/src/cli/topic/update.d.ts +11 -0
  391. package/dist/src/cli/topic/update.js +51 -0
  392. package/dist/src/cli/ui/index.d.ts +24 -0
  393. package/dist/src/cli/ui/index.js +83 -0
  394. package/dist/src/cli/update/index.d.ts +10 -0
  395. package/dist/src/cli/update/index.js +142 -0
  396. package/dist/src/domain/admin-link.d.ts +12 -0
  397. package/dist/src/domain/admin-link.js +45 -0
  398. package/dist/src/domain/content-spec.d.ts +20 -0
  399. package/dist/src/domain/content-spec.js +78 -0
  400. package/dist/src/domain/envelope-compat.d.ts +68 -0
  401. package/dist/src/domain/envelope-compat.js +121 -0
  402. package/dist/src/domain/envelope.d.ts +34 -0
  403. package/dist/src/domain/envelope.js +355 -0
  404. package/dist/src/domain/errors.d.ts +336 -0
  405. package/dist/src/domain/errors.js +239 -0
  406. package/dist/src/domain/gate.d.ts +14 -0
  407. package/dist/src/domain/gate.js +18 -0
  408. package/dist/src/domain/payload.d.ts +64 -0
  409. package/dist/src/domain/payload.js +237 -0
  410. package/dist/src/domain/preflight-guards.d.ts +54 -0
  411. package/dist/src/domain/preflight-guards.js +130 -0
  412. package/dist/src/domain/runtime-flags.d.ts +33 -0
  413. package/dist/src/domain/runtime-flags.js +166 -0
  414. package/dist/src/domain/schema/api-envelope.d.ts +67 -0
  415. package/dist/src/domain/schema/api-envelope.js +65 -0
  416. package/dist/src/domain/schema/category.d.ts +23 -0
  417. package/dist/src/domain/schema/category.js +19 -0
  418. package/dist/src/domain/schema/config.d.ts +13 -0
  419. package/dist/src/domain/schema/config.js +18 -0
  420. package/dist/src/domain/schema/note.d.ts +76 -0
  421. package/dist/src/domain/schema/note.js +35 -0
  422. package/dist/src/domain/schema/page.d.ts +40 -0
  423. package/dist/src/domain/schema/page.js +22 -0
  424. package/dist/src/domain/schema/post.d.ts +68 -0
  425. package/dist/src/domain/schema/post.js +35 -0
  426. package/dist/src/domain/schema/profile.d.ts +14 -0
  427. package/dist/src/domain/schema/profile.js +22 -0
  428. package/dist/src/domain/schema/topic.d.ts +24 -0
  429. package/dist/src/domain/schema/topic.js +16 -0
  430. package/dist/src/domain/version.d.ts +15 -0
  431. package/dist/src/domain/version.js +43 -0
  432. package/dist/src/index.d.ts +4 -0
  433. package/dist/src/index.js +8 -0
  434. package/dist/src/layers/App.d.ts +30 -0
  435. package/dist/src/layers/App.js +39 -0
  436. package/dist/src/services/Ai/index.d.ts +13 -0
  437. package/dist/src/services/Ai/index.js +127 -0
  438. package/dist/src/services/Ai/overview.d.ts +7 -0
  439. package/dist/src/services/Ai/overview.js +11 -0
  440. package/dist/src/services/Ai/resources.d.ts +7 -0
  441. package/dist/src/services/Ai/resources.js +59 -0
  442. package/dist/src/services/Ai/shared.d.ts +2 -0
  443. package/dist/src/services/Ai/shared.js +11 -0
  444. package/dist/src/services/Ai/tasks.d.ts +8 -0
  445. package/dist/src/services/Ai/tasks.js +144 -0
  446. package/dist/src/services/Ai/types.d.ts +130 -0
  447. package/dist/src/services/Ai/types.js +1 -0
  448. package/dist/src/services/Api.d.ts +67 -0
  449. package/dist/src/services/Api.js +348 -0
  450. package/dist/src/services/Auth.d.ts +101 -0
  451. package/dist/src/services/Auth.js +402 -0
  452. package/dist/src/services/Backup.d.ts +8 -0
  453. package/dist/src/services/Backup.js +4 -0
  454. package/dist/src/services/Cache.d.ts +8 -0
  455. package/dist/src/services/Cache.js +4 -0
  456. package/dist/src/services/Comment.d.ts +48 -0
  457. package/dist/src/services/Comment.js +102 -0
  458. package/dist/src/services/Config.d.ts +95 -0
  459. package/dist/src/services/Config.js +359 -0
  460. package/dist/src/services/Editor.d.ts +28 -0
  461. package/dist/src/services/Editor.js +95 -0
  462. package/dist/src/services/Lexical.d.ts +27 -0
  463. package/dist/src/services/Lexical.js +56 -0
  464. package/dist/src/services/Migration.d.ts +31 -0
  465. package/dist/src/services/Migration.js +177 -0
  466. package/dist/src/services/Profile.d.ts +29 -0
  467. package/dist/src/services/Profile.js +115 -0
  468. package/dist/src/services/Renderer/content.d.ts +16 -0
  469. package/dist/src/services/Renderer/content.js +110 -0
  470. package/dist/src/services/Renderer/datetime.d.ts +38 -0
  471. package/dist/src/services/Renderer/datetime.js +147 -0
  472. package/dist/src/services/Renderer/errors.d.ts +3 -0
  473. package/dist/src/services/Renderer/errors.js +59 -0
  474. package/dist/src/services/Renderer/index.d.ts +13 -0
  475. package/dist/src/services/Renderer/index.js +11 -0
  476. package/dist/src/services/Renderer/lists.d.ts +1 -0
  477. package/dist/src/services/Renderer/lists.js +101 -0
  478. package/dist/src/services/Renderer/options.d.ts +10 -0
  479. package/dist/src/services/Renderer/options.js +13 -0
  480. package/dist/src/services/Renderer/primitives.d.ts +4 -0
  481. package/dist/src/services/Renderer/primitives.js +12 -0
  482. package/dist/src/services/Renderer/service.d.ts +35 -0
  483. package/dist/src/services/Renderer/service.js +123 -0
  484. package/dist/src/services/Renderer/view.d.ts +16 -0
  485. package/dist/src/services/Renderer/view.js +1 -0
  486. package/dist/src/services/Resolver.d.ts +47 -0
  487. package/dist/src/services/Resolver.js +269 -0
  488. package/dist/src/services/Skill.d.ts +29 -0
  489. package/dist/src/services/Skill.js +421 -0
  490. package/dist/src/services/UpdateNotifier.d.ts +162 -0
  491. package/dist/src/services/UpdateNotifier.js +572 -0
  492. package/dist/test/cli/ai/ai.test.d.ts +1 -0
  493. package/dist/test/cli/ai/ai.test.js +507 -0
  494. package/dist/test/cli/ai/verbs.test.d.ts +1 -0
  495. package/dist/test/cli/ai/verbs.test.js +235 -0
  496. package/dist/test/cli/auth/login.test.d.ts +1 -0
  497. package/dist/test/cli/auth/login.test.js +236 -0
  498. package/dist/test/cli/auth/logout-whoami.test.d.ts +1 -0
  499. package/dist/test/cli/auth/logout-whoami.test.js +124 -0
  500. package/dist/test/cli/auth/status.test.d.ts +1 -0
  501. package/dist/test/cli/auth/status.test.js +90 -0
  502. package/dist/test/cli/category/category.test.d.ts +1 -0
  503. package/dist/test/cli/category/category.test.js +175 -0
  504. package/dist/test/cli/comment/comment.test.d.ts +1 -0
  505. package/dist/test/cli/comment/comment.test.js +445 -0
  506. package/dist/test/cli/config/config.test.d.ts +1 -0
  507. package/dist/test/cli/config/config.test.js +281 -0
  508. package/dist/test/cli/edit-roundtrip.test.d.ts +1 -0
  509. package/dist/test/cli/edit-roundtrip.test.js +259 -0
  510. package/dist/test/cli/file/file.test.d.ts +1 -0
  511. package/dist/test/cli/file/file.test.js +185 -0
  512. package/dist/test/cli/help.test.d.ts +1 -0
  513. package/dist/test/cli/help.test.js +289 -0
  514. package/dist/test/cli/note/create.test.d.ts +1 -0
  515. package/dist/test/cli/note/create.test.js +155 -0
  516. package/dist/test/cli/note/list.test.d.ts +1 -0
  517. package/dist/test/cli/note/list.test.js +115 -0
  518. package/dist/test/cli/note/publish.test.d.ts +1 -0
  519. package/dist/test/cli/note/publish.test.js +123 -0
  520. package/dist/test/cli/page/page.test.d.ts +1 -0
  521. package/dist/test/cli/page/page.test.js +185 -0
  522. package/dist/test/cli/post/create.test.d.ts +1 -0
  523. package/dist/test/cli/post/create.test.js +172 -0
  524. package/dist/test/cli/post/list.test.d.ts +1 -0
  525. package/dist/test/cli/post/list.test.js +133 -0
  526. package/dist/test/cli/post/publish.test.d.ts +1 -0
  527. package/dist/test/cli/post/publish.test.js +139 -0
  528. package/dist/test/cli/post/stage-apply.test.d.ts +1 -0
  529. package/dist/test/cli/post/stage-apply.test.js +215 -0
  530. package/dist/test/cli/post/update.test.d.ts +1 -0
  531. package/dist/test/cli/post/update.test.js +160 -0
  532. package/dist/test/cli/post-note-crud.test.d.ts +1 -0
  533. package/dist/test/cli/post-note-crud.test.js +362 -0
  534. package/dist/test/cli/profile/ls.test.d.ts +1 -0
  535. package/dist/test/cli/profile/ls.test.js +93 -0
  536. package/dist/test/cli/profile/mark-use.test.d.ts +1 -0
  537. package/dist/test/cli/profile/mark-use.test.js +216 -0
  538. package/dist/test/cli/project-crud.test.d.ts +1 -0
  539. package/dist/test/cli/project-crud.test.js +315 -0
  540. package/dist/test/cli/render/lexical.test.d.ts +1 -0
  541. package/dist/test/cli/render/lexical.test.js +216 -0
  542. package/dist/test/cli/render/markdown.test.d.ts +1 -0
  543. package/dist/test/cli/render/markdown.test.js +39 -0
  544. package/dist/test/cli/snippet-crud.test.d.ts +1 -0
  545. package/dist/test/cli/snippet-crud.test.js +293 -0
  546. package/dist/test/cli/topic/topic.test.d.ts +1 -0
  547. package/dist/test/cli/topic/topic.test.js +181 -0
  548. package/dist/test/cli/update.test.d.ts +1 -0
  549. package/dist/test/cli/update.test.js +395 -0
  550. package/dist/test/domain/content-spec.test.d.ts +1 -0
  551. package/dist/test/domain/content-spec.test.js +126 -0
  552. package/dist/test/domain/envelope-compat.test.d.ts +1 -0
  553. package/dist/test/domain/envelope-compat.test.js +126 -0
  554. package/dist/test/domain/envelope.test.d.ts +1 -0
  555. package/dist/test/domain/envelope.test.js +149 -0
  556. package/dist/test/domain/errors.test.d.ts +1 -0
  557. package/dist/test/domain/errors.test.js +127 -0
  558. package/dist/test/domain/gate.test.d.ts +1 -0
  559. package/dist/test/domain/gate.test.js +128 -0
  560. package/dist/test/domain/payload.test.d.ts +1 -0
  561. package/dist/test/domain/payload.test.js +259 -0
  562. package/dist/test/helper/test-fs.d.ts +24 -0
  563. package/dist/test/helper/test-fs.js +161 -0
  564. package/dist/test/helper/test-http.d.ts +31 -0
  565. package/dist/test/helper/test-http.js +66 -0
  566. package/dist/test/integration/_helpers.d.ts +5 -0
  567. package/dist/test/integration/_helpers.js +24 -0
  568. package/dist/test/integration/cli-error-envelope.test.d.ts +1 -0
  569. package/dist/test/integration/cli-error-envelope.test.js +137 -0
  570. package/dist/test/integration/cli-help-render.test.d.ts +1 -0
  571. package/dist/test/integration/cli-help-render.test.js +149 -0
  572. package/dist/test/integration/cli-help.test.d.ts +1 -0
  573. package/dist/test/integration/cli-help.test.js +67 -0
  574. package/dist/test/integration/cli-post-list.test.d.ts +1 -0
  575. package/dist/test/integration/cli-post-list.test.js +140 -0
  576. package/dist/test/integration/cli-skill.test.d.ts +1 -0
  577. package/dist/test/integration/cli-skill.test.js +74 -0
  578. package/dist/test/integration/cli-version.test.d.ts +1 -0
  579. package/dist/test/integration/cli-version.test.js +37 -0
  580. package/dist/test/services/Api.test.d.ts +1 -0
  581. package/dist/test/services/Api.test.js +553 -0
  582. package/dist/test/services/Auth.test.d.ts +1 -0
  583. package/dist/test/services/Auth.test.js +650 -0
  584. package/dist/test/services/Config.test.d.ts +1 -0
  585. package/dist/test/services/Config.test.js +510 -0
  586. package/dist/test/services/Datetime.test.d.ts +1 -0
  587. package/dist/test/services/Datetime.test.js +113 -0
  588. package/dist/test/services/Editor.test.d.ts +1 -0
  589. package/dist/test/services/Editor.test.js +205 -0
  590. package/dist/test/services/Lexical.errors.test.d.ts +1 -0
  591. package/dist/test/services/Lexical.errors.test.js +60 -0
  592. package/dist/test/services/Lexical.test.d.ts +1 -0
  593. package/dist/test/services/Lexical.test.js +68 -0
  594. package/dist/test/services/Migration.test.d.ts +1 -0
  595. package/dist/test/services/Migration.test.js +376 -0
  596. package/dist/test/services/Profile.test.d.ts +1 -0
  597. package/dist/test/services/Profile.test.js +277 -0
  598. package/dist/test/services/Renderer.test.d.ts +1 -0
  599. package/dist/test/services/Renderer.test.js +538 -0
  600. package/dist/test/services/Resolver.test.d.ts +1 -0
  601. package/dist/test/services/Resolver.test.js +320 -0
  602. package/dist/test/services/Skill.test.d.ts +1 -0
  603. package/dist/test/services/Skill.test.js +261 -0
  604. package/dist/test/services/UpdateNotifier.spawn.test.d.ts +1 -0
  605. package/dist/test/services/UpdateNotifier.spawn.test.js +73 -0
  606. package/dist/test/services/UpdateNotifier.test.d.ts +1 -0
  607. package/dist/test/services/UpdateNotifier.test.js +912 -0
  608. package/dist/vendor/litexml/cli.mjs +19 -4
  609. package/dist/vendor/litexml/litexml-html-preview-client.css +98 -13
  610. package/dist/vendor/litexml/litexml-html-preview-client.js +5794 -4976
  611. package/dist/vendor/litexml/style.css +5 -5
  612. package/package.json +29 -26
  613. package/skills/safety.md +1 -1
  614. package/LICENSE +0 -33
  615. package/dist/esm-CDcJmHkG.mjs +0 -2
@@ -0,0 +1,59 @@
1
+ import { codeForTag, defaultMessageFor, toErrorEnvelope, } from '../../domain/errors';
2
+ import { color, writeStderr, writeStdout } from './primitives';
3
+ const formatIssue = (issue) => {
4
+ if (!issue || typeof issue !== 'object')
5
+ return String(issue);
6
+ const obj = issue;
7
+ const path = Array.isArray(obj.path) ? obj.path.join('.') : '';
8
+ const message = typeof obj.message === 'string' ? obj.message : JSON.stringify(obj);
9
+ const line = typeof obj.line === 'number' ? ` (line ${obj.line})` : '';
10
+ const suggestions = Array.isArray(obj.suggestions)
11
+ ? ` — did you mean ${obj.suggestions.join(', ')}?`
12
+ : '';
13
+ return `${path ? `${path}: ` : ''}${message}${line}${suggestions}`;
14
+ };
15
+ const formatDetails = (details) => {
16
+ if (!details || typeof details !== 'object')
17
+ return [String(details)];
18
+ if (Array.isArray(details)) {
19
+ return details.map((item) => formatIssue(item));
20
+ }
21
+ if ('issues' in details &&
22
+ Array.isArray(details.issues)) {
23
+ return details.issues.map((issue) => formatIssue(issue));
24
+ }
25
+ return [JSON.stringify(details)];
26
+ };
27
+ export const emitErrorSync = (err, opts) => {
28
+ const tag = err._tag;
29
+ if (opts.json) {
30
+ if (tag === 'WriteRequiresExplicit') {
31
+ // Preserve legacy special-case JSON shape for the production write
32
+ // gate (`error`, `profile`, `api_url`, `hint`).
33
+ const e = err;
34
+ writeStdout(`${JSON.stringify({
35
+ ok: false,
36
+ error: codeForTag(tag),
37
+ profile: e.profile ?? null,
38
+ api_url: e.apiUrl ?? null,
39
+ hint: e.hint ?? null,
40
+ })}\n`);
41
+ return;
42
+ }
43
+ writeStdout(`${JSON.stringify(toErrorEnvelope(err))}\n`);
44
+ return;
45
+ }
46
+ const message = 'message' in err && typeof err.message === 'string' && err.message
47
+ ? err.message
48
+ : defaultMessageFor(tag);
49
+ writeStderr(`${color(process.stderr, 31, '✘')} ${message}\n`);
50
+ if ('details' in err && err.details !== undefined) {
51
+ const detailLines = formatDetails(err.details);
52
+ for (const line of detailLines) {
53
+ writeStderr(` · ${line}\n`);
54
+ }
55
+ }
56
+ if ('hint' in err && typeof err.hint === 'string' && err.hint.length > 0) {
57
+ writeStderr(`\nhint: ${err.hint}\n`);
58
+ }
59
+ };
@@ -0,0 +1,13 @@
1
+ import { Context, Effect, Layer } from 'effect';
2
+ import { type RendererService } from './service';
3
+ export { type DateTimeStyle, formatAbsoluteDateTime, formatDateTime, type FormatDateTimeOptions, formatRelativeTime, looksLikeTimestamp, toDate, tryFormatTimestamp, } from './datetime';
4
+ export { renderReadableGeneric } from './lists';
5
+ export { currentOutputOptions, defaultOutputOptions, type OutputMode, type OutputOptions, } from './options';
6
+ export type { RendererService } from './service';
7
+ export type { View, ViewCtx } from './view';
8
+ declare const Renderer_base: Context.TagClass<Renderer, "Renderer", RendererService>;
9
+ export declare class Renderer extends Renderer_base {
10
+ static Default: Layer.Layer<Renderer>;
11
+ /** Apply the given `OutputOptions` for the duration of `effect`. */
12
+ static withOptions: <A, E, R>(options: import('./options').OutputOptions) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
13
+ }
@@ -0,0 +1,11 @@
1
+ import { Context, Effect, Layer } from 'effect';
2
+ import { currentOutputOptions } from './options';
3
+ import { makeService } from './service';
4
+ export { formatAbsoluteDateTime, formatDateTime, formatRelativeTime, looksLikeTimestamp, toDate, tryFormatTimestamp, } from './datetime';
5
+ export { renderReadableGeneric } from './lists';
6
+ export { currentOutputOptions, defaultOutputOptions, } from './options';
7
+ export class Renderer extends Context.Tag('Renderer')() {
8
+ static Default = Layer.succeed(Renderer, makeService());
9
+ /** Apply the given `OutputOptions` for the duration of `effect`. */
10
+ static withOptions = (options) => (effect) => Effect.locally(effect, currentOutputOptions, options);
11
+ }
@@ -0,0 +1 @@
1
+ export declare const renderReadableGeneric: (data: unknown) => string;
@@ -0,0 +1,101 @@
1
+ import { formatScalar } from './content';
2
+ import { tryFormatTimestamp } from './datetime';
3
+ // Generic readable renderer for arbitrary payloads. Drives the default
4
+ // `--output readable` rendering for commands that emit ad-hoc objects via
5
+ // `emitSuccess` (mutation responses for auth/profile/config/update/category/
6
+ // topic/...). Keep the shape close to YAML so the output remains pasteable
7
+ // into prose.
8
+ const isPlainObject = (value) => Boolean(value) &&
9
+ typeof value === 'object' &&
10
+ !Array.isArray(value) &&
11
+ !(value instanceof Date);
12
+ // Auto-detect timestamps inside arbitrary payloads and route them through
13
+ // the friendlier formatter so the raw machine form never leaks into the
14
+ // readable output.
15
+ const formatLeaf = (value) => tryFormatTimestamp(value, { style: 'both' }) ?? formatScalar(value);
16
+ const renderReadableLines = (data, indent) => {
17
+ const pad = ' '.repeat(indent);
18
+ if (data === null || data === undefined)
19
+ return [];
20
+ if (data instanceof Date) {
21
+ return [`${pad}${formatLeaf(data)}`];
22
+ }
23
+ if (typeof data === 'string') {
24
+ if (data.length === 0)
25
+ return [];
26
+ const ts = tryFormatTimestamp(data, { style: 'both' });
27
+ if (ts !== null)
28
+ return [`${pad}${ts}`];
29
+ return data.split('\n').map((line) => `${pad}${line}`);
30
+ }
31
+ if (typeof data === 'number' || typeof data === 'boolean') {
32
+ return [`${pad}${String(data)}`];
33
+ }
34
+ if (Array.isArray(data)) {
35
+ const lines = [];
36
+ for (const item of data) {
37
+ if (isPlainObject(item)) {
38
+ const inner = renderReadableLines(item, indent + 1);
39
+ if (inner.length === 0)
40
+ continue;
41
+ // Replace the first line's leading pad with "- " marker.
42
+ const first = inner[0];
43
+ const stripped = first.startsWith(pad + ' ')
44
+ ? first.slice((pad + ' ').length)
45
+ : first.trimStart();
46
+ lines.push(`${pad}- ${stripped}`);
47
+ for (let i = 1; i < inner.length; i++)
48
+ lines.push(inner[i]);
49
+ }
50
+ else if (Array.isArray(item)) {
51
+ const inner = renderReadableLines(item, indent + 1);
52
+ if (inner.length === 0)
53
+ continue;
54
+ lines.push(`${pad}-`);
55
+ lines.push(...inner);
56
+ }
57
+ else if (item !== null && item !== undefined) {
58
+ lines.push(`${pad}- ${formatLeaf(item)}`);
59
+ }
60
+ }
61
+ return lines;
62
+ }
63
+ if (isPlainObject(data)) {
64
+ const lines = [];
65
+ for (const [key, value] of Object.entries(data)) {
66
+ if (value === null || value === undefined || value === '')
67
+ continue;
68
+ if (Array.isArray(value)) {
69
+ if (value.length === 0)
70
+ continue;
71
+ const allScalar = value.every((v) => v === null ||
72
+ v === undefined ||
73
+ v instanceof Date ||
74
+ typeof v !== 'object');
75
+ if (allScalar) {
76
+ const parts = value
77
+ .filter((v) => v !== null && v !== undefined)
78
+ .map((v) => formatLeaf(v));
79
+ lines.push(`${pad}${key}: ${parts.join(', ')}`);
80
+ }
81
+ else {
82
+ lines.push(`${pad}${key}:`);
83
+ lines.push(...renderReadableLines(value, indent + 1));
84
+ }
85
+ }
86
+ else if (isPlainObject(value)) {
87
+ const inner = renderReadableLines(value, indent + 1);
88
+ if (inner.length === 0)
89
+ continue;
90
+ lines.push(`${pad}${key}:`);
91
+ lines.push(...inner);
92
+ }
93
+ else {
94
+ lines.push(`${pad}${key}: ${formatLeaf(value)}`);
95
+ }
96
+ }
97
+ return lines;
98
+ }
99
+ return [`${pad}${String(data)}`];
100
+ };
101
+ export const renderReadableGeneric = (data) => renderReadableLines(data, 0).join('\n');
@@ -0,0 +1,10 @@
1
+ import { FiberRef } from 'effect';
2
+ export type OutputMode = 'pretty-json' | 'json' | 'readable' | 'llm' | 'xml';
3
+ export interface OutputOptions {
4
+ readonly json: boolean;
5
+ readonly output: OutputMode;
6
+ readonly quiet: boolean;
7
+ readonly verbose: boolean;
8
+ }
9
+ export declare const defaultOutputOptions: OutputOptions;
10
+ export declare const currentOutputOptions: FiberRef.FiberRef<OutputOptions>;
@@ -0,0 +1,13 @@
1
+ import { FiberRef } from 'effect';
2
+ export const defaultOutputOptions = {
3
+ json: false,
4
+ output: 'readable',
5
+ quiet: false,
6
+ verbose: false,
7
+ };
8
+ // One FiberRef carries the per-run output options. The bin entry sets it once
9
+ // at the root after parsing global flags; tests override it per-Effect via
10
+ // `Effect.locally(currentOutputOptions, ...)`. Choosing a FiberRef over a
11
+ // command-level context parameter keeps every `Api`/`Renderer`/command body
12
+ // free of an explicit options argument while still being fully testable.
13
+ export const currentOutputOptions = FiberRef.unsafeMake(defaultOutputOptions);
@@ -0,0 +1,4 @@
1
+ export declare const isTTY: (stream: NodeJS.WriteStream) => boolean;
2
+ export declare const color: (stream: NodeJS.WriteStream, code: number, text: string) => string;
3
+ export declare const writeStdout: (s: string) => void;
4
+ export declare const writeStderr: (s: string) => void;
@@ -0,0 +1,12 @@
1
+ export const isTTY = (stream) => Boolean(stream.isTTY);
2
+ export const color = (stream, code, text) => {
3
+ if (!isTTY(stream))
4
+ return text;
5
+ return `\x1B[${code}m${text}\x1B[0m`;
6
+ };
7
+ export const writeStdout = (s) => {
8
+ process.stdout.write(s);
9
+ };
10
+ export const writeStderr = (s) => {
11
+ process.stderr.write(s);
12
+ };
@@ -0,0 +1,35 @@
1
+ import { Effect } from 'effect';
2
+ import type { CliError } from '../../domain/errors';
3
+ import { type OutputOptions } from './options';
4
+ import type { View } from './view';
5
+ export interface RendererService {
6
+ /** Active output configuration in the current fiber. */
7
+ readonly options: Effect.Effect<OutputOptions>;
8
+ /** Typed view dispatch — primary path. */
9
+ readonly emit: <T>(view: View<T>, data: T) => Effect.Effect<void>;
10
+ /** Generic success payload for ad-hoc data (mutation responses, etc.). */
11
+ readonly emitSuccess: (data: unknown) => Effect.Effect<void>;
12
+ /** Info line on stderr (suppressed by `--quiet` / `--json`). */
13
+ readonly emitInfo: (message: string) => Effect.Effect<void>;
14
+ /** Warning line on stderr (suppressed by `--json`). */
15
+ readonly emitWarn: (message: string) => Effect.Effect<void>;
16
+ /** Error envelope or pretty error to stderr/stdout per output mode. */
17
+ readonly emitError: (err: CliError) => Effect.Effect<void>;
18
+ /**
19
+ * Emit a bespoke ANSI/text view (ad-hoc, no schema — banners). In `--json`
20
+ * mode the function is never called — `data` is wrapped as a JSON envelope.
21
+ */
22
+ readonly emitView: (data: unknown, view: (ctx: {
23
+ readonly color: boolean;
24
+ }) => string) => Effect.Effect<void>;
25
+ /** Convenience for `emitView` whose body is a markdown source string. */
26
+ readonly emitMarkdown: (data: unknown, markdown: () => string) => Effect.Effect<void>;
27
+ /**
28
+ * Multi-line info block on stderr. Honours `--quiet` / `--json` like
29
+ * `emitInfo`; useful for boxed banners (device-code, etc.).
30
+ */
31
+ readonly emitInfoBlock: (block: (ctx: {
32
+ readonly color: boolean;
33
+ }) => string) => Effect.Effect<void>;
34
+ }
35
+ export declare const makeService: () => RendererService;
@@ -0,0 +1,123 @@
1
+ import { Effect, FiberRef } from 'effect';
2
+ import { isColorEnabled, renderMarkdownToAnsi } from '../../cli/render';
3
+ import { emitErrorSync } from './errors';
4
+ import { renderReadableGeneric } from './lists';
5
+ import { currentOutputOptions, } from './options';
6
+ import { color, writeStderr, writeStdout } from './primitives';
7
+ export const makeService = () => {
8
+ const getOpts = FiberRef.get(currentOutputOptions);
9
+ const emitSuccessSync = (data, opts) => {
10
+ if (opts.json || opts.output === 'json') {
11
+ writeStdout(`${JSON.stringify({ ok: true, data })}\n`);
12
+ return;
13
+ }
14
+ if (data === null || data === undefined)
15
+ return;
16
+ if (typeof data === 'string') {
17
+ writeStdout(`${data}\n`);
18
+ return;
19
+ }
20
+ if (opts.output === 'readable') {
21
+ const rendered = renderReadableGeneric(data);
22
+ if (rendered)
23
+ writeStdout(`${rendered}\n`);
24
+ return;
25
+ }
26
+ writeStdout(`${JSON.stringify(data, null, 2)}\n`);
27
+ };
28
+ return {
29
+ options: getOpts,
30
+ emit: (view, data) => Effect.flatMap(getOpts, (opts) => Effect.sync(() => {
31
+ // JSON family bypasses the view entirely — kind-agnostic envelope.
32
+ if (opts.json || opts.output === 'json') {
33
+ writeStdout(`${JSON.stringify({ ok: true, data })}\n`);
34
+ return;
35
+ }
36
+ if (opts.output === 'pretty-json') {
37
+ writeStdout(`${JSON.stringify(data, null, 2)}\n`);
38
+ return;
39
+ }
40
+ const mode = opts.output;
41
+ if (!view.modes.has(mode)) {
42
+ writeStderr(`${color(process.stderr, 31, '✘')} unsupported --output value for ${view.kind}: ${mode}\n`);
43
+ return;
44
+ }
45
+ let text;
46
+ if (mode === 'xml' && view.xml) {
47
+ text = view.xml(data);
48
+ }
49
+ else if (mode === 'llm' && view.llm) {
50
+ text = view.llm(data);
51
+ }
52
+ else if (mode === 'llm') {
53
+ // Fallback: render readable with color disabled — strips all ANSI.
54
+ const ctx = { color: false, verbose: opts.verbose };
55
+ text = view.readable(data, ctx);
56
+ }
57
+ else {
58
+ const ctx = {
59
+ color: isColorEnabled(process.stdout),
60
+ verbose: opts.verbose,
61
+ };
62
+ text = view.readable(data, ctx);
63
+ }
64
+ writeStdout(`${text}\n`);
65
+ })),
66
+ emitSuccess: (data) => Effect.flatMap(getOpts, (opts) => Effect.sync(() => emitSuccessSync(data, opts))),
67
+ emitInfo: (message) => Effect.flatMap(getOpts, (opts) => Effect.sync(() => {
68
+ if (opts.quiet || opts.json)
69
+ return;
70
+ writeStderr(`${message}\n`);
71
+ })),
72
+ emitWarn: (message) => Effect.flatMap(getOpts, (opts) => Effect.sync(() => {
73
+ if (opts.json)
74
+ return;
75
+ writeStderr(`${color(process.stderr, 33, 'warn')}: ${message}\n`);
76
+ })),
77
+ emitError: (err) => Effect.flatMap(getOpts, (opts) => Effect.sync(() => emitErrorSync(err, opts))),
78
+ emitView: (data, view) => Effect.flatMap(getOpts, (opts) => Effect.sync(() => {
79
+ if (opts.json || opts.output === 'json') {
80
+ writeStdout(`${JSON.stringify({ ok: true, data })}\n`);
81
+ return;
82
+ }
83
+ if (opts.output === 'pretty-json') {
84
+ if (data !== null && data !== undefined) {
85
+ writeStdout(`${JSON.stringify(data, null, 2)}\n`);
86
+ }
87
+ return;
88
+ }
89
+ if (data === null || data === undefined)
90
+ return;
91
+ const color = isColorEnabled(process.stdout);
92
+ const text = view({ color });
93
+ if (text)
94
+ writeStdout(`${text}\n`);
95
+ })),
96
+ emitMarkdown: (data, markdown) => Effect.flatMap(getOpts, (opts) => Effect.sync(() => {
97
+ if (opts.json || opts.output === 'json') {
98
+ writeStdout(`${JSON.stringify({ ok: true, data })}\n`);
99
+ return;
100
+ }
101
+ if (opts.output === 'pretty-json') {
102
+ if (data !== null && data !== undefined) {
103
+ writeStdout(`${JSON.stringify(data, null, 2)}\n`);
104
+ }
105
+ return;
106
+ }
107
+ if (data === null || data === undefined)
108
+ return;
109
+ const color = isColorEnabled(process.stdout);
110
+ const text = renderMarkdownToAnsi(markdown(), { color });
111
+ if (text)
112
+ writeStdout(`${text}\n`);
113
+ })),
114
+ emitInfoBlock: (block) => Effect.flatMap(getOpts, (opts) => Effect.sync(() => {
115
+ if (opts.quiet || opts.json)
116
+ return;
117
+ const color = isColorEnabled(process.stderr);
118
+ const text = block({ color });
119
+ if (text)
120
+ writeStderr(`${text}\n`);
121
+ })),
122
+ };
123
+ };
@@ -0,0 +1,16 @@
1
+ import type { OutputMode } from './options';
2
+ export interface ViewCtx {
3
+ readonly color: boolean;
4
+ /** Reserved for per-view verbosity toggles (e.g. `whoami --verbose`). */
5
+ readonly verbose: boolean;
6
+ }
7
+ export interface View<T> {
8
+ /** Human-readable kind label used only in error messages. Not a lookup key. */
9
+ readonly kind: string;
10
+ /** Modes this view supports. `json` / `pretty-json` are always supported by the service. */
11
+ readonly modes: ReadonlySet<OutputMode>;
12
+ readonly readable: (data: T, ctx: ViewCtx) => string;
13
+ /** Optional. Missing llm falls back to readable with color disabled. */
14
+ readonly llm?: (data: T) => string;
15
+ readonly xml?: (data: T) => string;
16
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,47 @@
1
+ import { Context, Effect, Layer } from 'effect';
2
+ import { Generic, ResourceNotFound, ValidationFailed } from '../domain/errors';
3
+ import { Api, type ApiService } from './Api';
4
+ export type ResolverKind = 'category' | 'topic' | 'project';
5
+ export interface ResolvableItem {
6
+ readonly id: string;
7
+ readonly slug?: string;
8
+ readonly name?: string;
9
+ }
10
+ export interface ResolverService {
11
+ /** Resolve a slug/name/id to an id. Snowflake ids pass through unchanged. */
12
+ readonly resolveCategory: (value: string) => Effect.Effect<string, ValidationFailed | Generic>;
13
+ readonly resolveTopic: (value: string) => Effect.Effect<string, ValidationFailed | Generic>;
14
+ /** Resolve a list of refs (category slugs/ids) to ids. */
15
+ readonly resolveCategoryRefs: (refs: ReadonlyArray<string>) => Effect.Effect<ReadonlyArray<string>, ValidationFailed | Generic>;
16
+ /** Resolve a post slug/id to a snowflake id. */
17
+ readonly resolvePostId: (slugOrId: string) => Effect.Effect<string, ResourceNotFound | ValidationFailed | Generic>;
18
+ /** Build the read path (`/posts/<category>/<slug>` or `/posts/<id>`). */
19
+ readonly resolvePostReadPath: (slugOrId: string) => Effect.Effect<string, ResourceNotFound | ValidationFailed | Generic>;
20
+ /** Resolve a note slug or numeric nid to its snowflake id. */
21
+ readonly resolveNoteId: (slugOrId: string) => Effect.Effect<string, ResourceNotFound | ValidationFailed | Generic>;
22
+ /** Resolve a category slug to its snowflake id (via /categories/:slug). */
23
+ readonly resolveCategoryId: (slugOrId: string) => Effect.Effect<string, ResourceNotFound | ValidationFailed | Generic>;
24
+ /** Resolve a project name or snowflake id to its id (via /projects/all). */
25
+ readonly resolveProjectId: (nameOrId: string) => Effect.Effect<string, ResourceNotFound | ValidationFailed | Generic>;
26
+ /** Bust cache for a given kind, or all if omitted. */
27
+ readonly invalidate: (kind?: ResolverKind) => Effect.Effect<void>;
28
+ }
29
+ export declare const isSnowflakeId: (value: string) => boolean;
30
+ export declare function matchItem(items: ReadonlyArray<ResolvableItem>, value: string): ResolvableItem | null;
31
+ export declare function levenshtein(a: string, b: string): number;
32
+ export declare function fuzzySuggest(items: ReadonlyArray<ResolvableItem>, value: string, maxDistance?: number): string[];
33
+ export interface ResolverDeps {
34
+ readonly ttlMs?: number;
35
+ }
36
+ export declare const make: (api: ApiService, deps?: ResolverDeps) => ResolverService;
37
+ declare const Resolver_base: Context.TagClass<Resolver, "Resolver", ResolverService>;
38
+ export declare class Resolver extends Resolver_base {
39
+ /**
40
+ * Default layer composes `Resolver` from the ambient `Api` service. Tests can
41
+ * provide an alternate layer via {@link layer}.
42
+ */
43
+ static Default: Layer.Layer<Resolver, never, Api>;
44
+ }
45
+ /** Build a Resolver layer from an explicit `ApiService` (tests). */
46
+ export declare const layer: (api: ApiService, deps?: ResolverDeps) => Layer.Layer<Resolver>;
47
+ export {};