@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,13 @@
1
+ import { Context, Layer } from 'effect';
2
+ import type { Generic } from '../../domain/errors';
3
+ import { Api, type ApiService } from '../Api';
4
+ import type { AiService } from './types';
5
+ export type * from './types';
6
+ export declare const make: (api: ApiService) => AiService;
7
+ export type _Generic = Generic;
8
+ declare const Ai_base: Context.TagClass<Ai, "Ai", AiService>;
9
+ export declare class Ai extends Ai_base {
10
+ static Default: Layer.Layer<Ai, never, Api>;
11
+ }
12
+ /** Build an Ai layer from an explicit ApiService (tests). */
13
+ export declare const layer: (api: ApiService) => Layer.Layer<Ai>;
@@ -0,0 +1,127 @@
1
+ import { Context, Effect, Layer } from 'effect';
2
+ import { Api } from '../Api';
3
+ import { makeOverview } from './overview';
4
+ import { makeByArticle, makeList, makeMatchById } from './resources';
5
+ import { makeCreateTask, makeWaitForTask } from './tasks';
6
+ export const make = (api) => {
7
+ const createTask = makeCreateTask(api);
8
+ const list = makeList(api);
9
+ const matchById = makeMatchById(api);
10
+ const byArticle = makeByArticle(api);
11
+ const translationsByArticle = (refId, opts) => opts?.lang
12
+ ? api.request(`/ai/translations/article/${refId}`, {
13
+ query: { lang: opts.lang },
14
+ })
15
+ : api.request(`/ai/translations/ref/${refId}`);
16
+ return {
17
+ // -- generate
18
+ regenSummary: (input) => createTask('summary', '/ai/summaries/task', {
19
+ refId: input.refId,
20
+ ...(input.targetLanguages?.length
21
+ ? { targetLanguages: [...input.targetLanguages] }
22
+ : {}),
23
+ ...(input.force ? { force: true } : {}),
24
+ }),
25
+ translate: (input) => createTask('translation', '/ai/translations/task', {
26
+ refId: input.refId,
27
+ targetLanguages: [...input.targetLanguages],
28
+ ...(input.force ? { force: true } : {}),
29
+ }),
30
+ refreshInsights: (input) => createTask('insights', '/ai/insights/task', {
31
+ refId: input.refId,
32
+ ...(input.targetLanguages?.length
33
+ ? { targetLanguages: [...input.targetLanguages] }
34
+ : {}),
35
+ ...(input.force ? { force: true } : {}),
36
+ }),
37
+ translateSummary: (input) => createTask('summary_translation', '/ai/summaries/task/translate', {
38
+ refId: input.refId,
39
+ targetLang: input.targetLang,
40
+ ...(input.force ? { force: true } : {}),
41
+ }, {
42
+ sourceMissingHint: 'no base summary to translate — run `mxs ai summary regen` first',
43
+ }),
44
+ translateInsights: (input) => createTask('insights_translation', '/ai/insights/task/translate', {
45
+ refId: input.refId,
46
+ targetLang: input.targetLang,
47
+ ...(input.force ? { force: true } : {}),
48
+ }, {
49
+ sourceMissingHint: 'no base insights to translate — run `mxs ai insights refresh` first',
50
+ }),
51
+ runTts: (input) => createTask('tts', '/ai/tts/task', {
52
+ refId: input.refId,
53
+ ...(input.targetLanguages?.length
54
+ ? { langs: [...input.targetLanguages] }
55
+ : {}),
56
+ ...(input.force ? { force: true } : {}),
57
+ }),
58
+ waitForTask: makeWaitForTask(api),
59
+ // -- tts
60
+ listTts: list('/ai/tts', '/', '/grouped'),
61
+ getTtsByArticle: (refId) => api.request(`/ai/tts/ref/${refId}`),
62
+ discoverTtsVoices: (q) => api.request('/ai/tts/voices', {
63
+ query: { providerId: q.providerId, model: q.model },
64
+ }),
65
+ deleteTts: (id) => api.request(`/ai/tts/${id}`, { method: 'DELETE' }).pipe(Effect.asVoid),
66
+ // -- overview
67
+ ...makeOverview(api),
68
+ // -- summary
69
+ listSummaries: list('/ai/summaries', '/', '/grouped'),
70
+ getSummary: (id) => matchById('/ai/summaries', id, ['summaries']),
71
+ getSummariesByArticle: byArticle('/ai/summaries'),
72
+ updateSummary: (id, patch) => api.request(`/ai/summaries/${id}`, { method: 'PATCH', body: patch }),
73
+ deleteSummary: (id) => api
74
+ .request(`/ai/summaries/${id}`, { method: 'DELETE' })
75
+ .pipe(Effect.asVoid),
76
+ // -- translation
77
+ listTranslations: list('/ai/translations', null, '/grouped'),
78
+ getTranslation: (id) => matchById('/ai/translations', id, ['translations']),
79
+ getTranslationsByArticle: translationsByArticle,
80
+ getTranslationLanguages: (refId) => api.request(`/ai/translations/article/${refId}/languages`),
81
+ updateTranslation: (id, patch) => api.request(`/ai/translations/${id}`, { method: 'PATCH', body: patch }),
82
+ deleteTranslation: (id) => api
83
+ .request(`/ai/translations/${id}`, { method: 'DELETE' })
84
+ .pipe(Effect.asVoid),
85
+ // -- insights
86
+ listInsights: list('/ai/insights', '/', '/grouped'),
87
+ getInsights: (id) => matchById('/ai/insights', id, ['insights']),
88
+ getInsightsByArticle: byArticle('/ai/insights'),
89
+ updateInsights: (id, patch) => api.request(`/ai/insights/${id}`, { method: 'PATCH', body: patch }),
90
+ deleteInsights: (id) => api
91
+ .request(`/ai/insights/${id}`, { method: 'DELETE' })
92
+ .pipe(Effect.asVoid),
93
+ // -- entries
94
+ listEntries: (q) => api.request('/ai/translations/entries', {
95
+ query: {
96
+ page: q.page,
97
+ size: q.size,
98
+ keyPath: q.keyPath,
99
+ lang: q.lang,
100
+ },
101
+ }),
102
+ generateEntries: (input) => api.request('/ai/translations/entries/generate', {
103
+ method: 'POST',
104
+ body: {
105
+ ...(input.keyPaths?.length ? { keyPaths: [...input.keyPaths] } : {}),
106
+ ...(input.targetLangs?.length
107
+ ? { targetLangs: [...input.targetLangs] }
108
+ : {}),
109
+ },
110
+ }),
111
+ updateEntry: (id, patch) => api.request(`/ai/translations/entries/${id}`, {
112
+ method: 'PATCH',
113
+ body: patch,
114
+ }),
115
+ deleteEntry: (id) => api
116
+ .request(`/ai/translations/entries/${id}`, { method: 'DELETE' })
117
+ .pipe(Effect.asVoid),
118
+ };
119
+ };
120
+ export class Ai extends Context.Tag('Ai')() {
121
+ static Default = Layer.effect(Ai, Effect.gen(function* () {
122
+ const api = yield* Api;
123
+ return make(api);
124
+ }));
125
+ }
126
+ /** Build an Ai layer from an explicit ApiService (tests). */
127
+ export const layer = (api) => Layer.succeed(Ai, make(api));
@@ -0,0 +1,7 @@
1
+ import type { Effect } from 'effect';
2
+ import type { ApiError, ApiService } from '../Api';
3
+ import type { AiOverviewListQuery } from './types';
4
+ export declare const makeOverview: (api: ApiService) => {
5
+ listOverview: (q: AiOverviewListQuery) => Effect.Effect<unknown, ApiError>;
6
+ getOverviewByArticle: (refId: string) => Effect.Effect<unknown, ApiError>;
7
+ };
@@ -0,0 +1,11 @@
1
+ export const makeOverview = (api) => ({
2
+ listOverview: (q) => api.request('/ai/overview/grouped', {
3
+ query: {
4
+ page: q.page,
5
+ size: q.size,
6
+ search: q.search,
7
+ type: q.type,
8
+ },
9
+ }),
10
+ getOverviewByArticle: (refId) => api.request(`/ai/overview/article/${refId}`),
11
+ });
@@ -0,0 +1,7 @@
1
+ import { Effect } from 'effect';
2
+ import { AiRecordNotFound } from '../../domain/errors';
3
+ import type { ApiError, ApiService } from '../Api';
4
+ import type { AiByArticleOptions, AiListQuery } from './types';
5
+ export declare const makeList: (api: ApiService) => <Q extends AiListQuery>(base: string, flatPath: string | null, groupedPath: string) => (q: Q) => Effect.Effect<unknown, ApiError>;
6
+ export declare const makeMatchById: (api: ApiService) => (base: string, id: string, itemKeys: ReadonlyArray<string>) => Effect.Effect<unknown, AiRecordNotFound | ApiError>;
7
+ export declare const makeByArticle: (api: ApiService) => (base: string) => (refId: string, opts?: AiByArticleOptions) => Effect.Effect<unknown, ApiError>;
@@ -0,0 +1,59 @@
1
+ import { Effect } from 'effect';
2
+ import { AiRecordNotFound } from '../../domain/errors';
3
+ import { asRecord, unwrapData } from './shared';
4
+ export const makeList = (api) => (base, flatPath, groupedPath) => (q) => api.request(q.grouped || flatPath === null
5
+ ? `${base}${groupedPath}`
6
+ : `${base}${flatPath}`, {
7
+ query: {
8
+ page: q.page,
9
+ size: q.size,
10
+ search: q.search,
11
+ },
12
+ });
13
+ const groupedItems = (group, itemKeys) => {
14
+ const record = asRecord(group);
15
+ for (const key of itemKeys) {
16
+ const value = record[key];
17
+ if (Array.isArray(value))
18
+ return value;
19
+ }
20
+ return [];
21
+ };
22
+ export const makeMatchById = (api) => (base, id, itemKeys) => Effect.gen(function* () {
23
+ // Try grouped pagination; flatten and match by id. Capped scan to avoid
24
+ // unbounded pagination on enormous datasets.
25
+ const MAX_PAGES = 50;
26
+ const SIZE = 50;
27
+ for (let page = 1; page <= MAX_PAGES; page++) {
28
+ const raw = yield* api.request(`${base}/grouped`, {
29
+ query: { page, size: SIZE },
30
+ });
31
+ const data = unwrapData(raw);
32
+ const groups = Array.isArray(data) ? data : [];
33
+ for (const group of groups) {
34
+ for (const item of groupedItems(group, itemKeys)) {
35
+ const r = asRecord(item);
36
+ if (typeof r.id === 'string' && r.id === id)
37
+ return item;
38
+ }
39
+ }
40
+ const pagination = asRecord(asRecord(asRecord(raw).meta).pagination);
41
+ const totalPages = typeof pagination.totalPages === 'number'
42
+ ? pagination.totalPages
43
+ : groups.length < SIZE
44
+ ? page
45
+ : page + 1;
46
+ if (page >= totalPages)
47
+ break;
48
+ }
49
+ return yield* Effect.fail(new AiRecordNotFound({
50
+ message: `AI record not found: ${id}`,
51
+ ref: id,
52
+ }));
53
+ });
54
+ export const makeByArticle = (api) => (base) => (refId, opts) => api.request(`${base}/article/${refId}`, {
55
+ query: {
56
+ lang: opts?.lang,
57
+ onlyDb: opts?.onlyDb,
58
+ },
59
+ });
@@ -0,0 +1,2 @@
1
+ export declare const unwrapData: (raw: unknown) => unknown;
2
+ export declare const asRecord: (value: unknown) => Record<string, unknown>;
@@ -0,0 +1,11 @@
1
+ export const unwrapData = (raw) => {
2
+ if (raw && typeof raw === 'object' && !Array.isArray(raw)) {
3
+ const env = raw;
4
+ if ('data' in env)
5
+ return env.data;
6
+ }
7
+ return raw;
8
+ };
9
+ export const asRecord = (value) => value && typeof value === 'object' && !Array.isArray(value)
10
+ ? value
11
+ : {};
@@ -0,0 +1,8 @@
1
+ import { Effect } from 'effect';
2
+ import { AiTaskCreateFailed, AiTaskFailed } from '../../domain/errors';
3
+ import type { ApiError, ApiService } from '../Api';
4
+ import type { AiTaskCreateResult, AiTaskFinalView, AiTaskType, AiWaitOptions } from './types';
5
+ export declare const makeCreateTask: (api: ApiService) => (type: AiTaskType, path: string, body: Record<string, unknown>, opts?: {
6
+ sourceMissingHint?: string;
7
+ }) => Effect.Effect<AiTaskCreateResult, AiTaskCreateFailed | ApiError>;
8
+ export declare const makeWaitForTask: (api: ApiService) => (taskId: string, options: AiWaitOptions) => Effect.Effect<AiTaskFinalView, AiTaskFailed | ApiError>;
@@ -0,0 +1,144 @@
1
+ import { Effect } from 'effect';
2
+ import { AiTaskCreateFailed, AiTaskFailed } from '../../domain/errors';
3
+ import { asRecord, unwrapData } from './shared';
4
+ const readCreateTask = (raw) => {
5
+ const inner = asRecord(unwrapData(raw));
6
+ return {
7
+ taskId: typeof inner.taskId === 'string' ? inner.taskId : undefined,
8
+ created: typeof inner.created === 'boolean' ? inner.created : undefined,
9
+ reason: typeof inner.reason === 'string' ? inner.reason : undefined,
10
+ };
11
+ };
12
+ const readTaskRecord = (raw) => {
13
+ const inner = asRecord(unwrapData(raw));
14
+ const result = asRecord(inner.result);
15
+ const payload = asRecord(inner.payload);
16
+ const errField = inner.error;
17
+ return {
18
+ status: typeof inner.status === 'string'
19
+ ? inner.status
20
+ : undefined,
21
+ totalCost: typeof inner.totalCost === 'number' || typeof inner.totalCost === 'string'
22
+ ? inner.totalCost
23
+ : undefined,
24
+ totalTokens: typeof inner.totalTokens === 'number' ||
25
+ typeof inner.totalTokens === 'string'
26
+ ? inner.totalTokens
27
+ : undefined,
28
+ resultIds: Array.isArray(inner.resultIds)
29
+ ? inner.resultIds
30
+ : Array.isArray(result.resultIds)
31
+ ? result.resultIds
32
+ : undefined,
33
+ payload: {
34
+ refId: typeof payload.refId === 'string' ? payload.refId : undefined,
35
+ targetLanguages: Array.isArray(payload.targetLanguages)
36
+ ? payload.targetLanguages
37
+ : undefined,
38
+ },
39
+ error: typeof errField === 'string'
40
+ ? { message: errField }
41
+ : errField && typeof errField === 'object'
42
+ ? errField
43
+ : undefined,
44
+ errorMessage: typeof inner.errorMessage === 'string' ? inner.errorMessage : undefined,
45
+ };
46
+ };
47
+ const toNumber = (v) => {
48
+ if (typeof v === 'number' && Number.isFinite(v))
49
+ return v;
50
+ if (typeof v === 'string' && v.trim() !== '') {
51
+ const n = Number(v);
52
+ if (Number.isFinite(n))
53
+ return n;
54
+ }
55
+ return undefined;
56
+ };
57
+ const TERMINAL = new Set([
58
+ 'completed',
59
+ 'partial_failed',
60
+ 'succeeded',
61
+ 'failed',
62
+ 'cancelled',
63
+ ]);
64
+ const DEFAULT_POLL_MS = 1000;
65
+ const resolvePollMs = (override) => {
66
+ const envRaw = process.env.MXS_AI_POLL_MS;
67
+ if (override && override > 0)
68
+ return override;
69
+ if (envRaw) {
70
+ const n = Number(envRaw);
71
+ if (Number.isFinite(n) && n > 0)
72
+ return n;
73
+ }
74
+ return DEFAULT_POLL_MS;
75
+ };
76
+ export const makeCreateTask = (api) => (type, path, body, opts) => Effect.gen(function* () {
77
+ const raw = yield* api.request(path, { method: 'POST', body });
78
+ const env = readCreateTask(raw);
79
+ if (!env.taskId) {
80
+ return yield* Effect.fail(new AiTaskCreateFailed({
81
+ message: env.reason === 'source-missing' && opts?.sourceMissingHint
82
+ ? opts.sourceMissingHint
83
+ : 'server returned no taskId',
84
+ details: raw,
85
+ }));
86
+ }
87
+ return {
88
+ taskId: env.taskId,
89
+ created: env.created ?? true,
90
+ type,
91
+ refId: typeof body.refId === 'string' ? body.refId : '',
92
+ targetLanguages: Array.isArray(body.targetLanguages)
93
+ ? body.targetLanguages
94
+ : Array.isArray(body.langs)
95
+ ? body.langs
96
+ : typeof body.targetLang === 'string'
97
+ ? [body.targetLang]
98
+ : undefined,
99
+ };
100
+ });
101
+ export const makeWaitForTask = (api) => (taskId, options) => Effect.gen(function* () {
102
+ const pollMs = resolvePollMs(options.pollMs);
103
+ let lastStatus;
104
+ const pollOnce = () => api.request(`/tasks/${taskId}`).pipe(Effect.flatMap((raw) => {
105
+ const rec = readTaskRecord(raw);
106
+ const status = (rec.status ?? 'pending');
107
+ if (status !== lastStatus) {
108
+ lastStatus = status;
109
+ options.onProgress?.(`[ai] task ${status}…`);
110
+ }
111
+ if (TERMINAL.has(status))
112
+ return Effect.succeed({ rec, status });
113
+ return Effect.sleep(`${pollMs} millis`).pipe(Effect.flatMap(() => pollOnce()));
114
+ }));
115
+ const { rec, status } = yield* pollOnce();
116
+ const final = {
117
+ type: options.type,
118
+ taskId,
119
+ status,
120
+ refId: rec.payload?.refId,
121
+ targetLanguages: rec.payload?.targetLanguages,
122
+ totalTokens: toNumber(rec.totalTokens),
123
+ totalCost: toNumber(rec.totalCost),
124
+ resultIds: rec.resultIds,
125
+ error: typeof rec.error === 'object'
126
+ ? rec.error.message
127
+ ? { message: rec.error.message }
128
+ : undefined
129
+ : rec.errorMessage
130
+ ? { message: rec.errorMessage }
131
+ : undefined,
132
+ };
133
+ if (status === 'failed' ||
134
+ status === 'cancelled' ||
135
+ status === 'partial_failed') {
136
+ return yield* Effect.fail(new AiTaskFailed({
137
+ taskId,
138
+ status,
139
+ message: final.error?.message ?? `AI task ${status} (id=${taskId})`,
140
+ details: final,
141
+ }));
142
+ }
143
+ return final;
144
+ });
@@ -0,0 +1,130 @@
1
+ import type { Effect } from 'effect';
2
+ import type { AiRecordNotFound, AiTaskCreateFailed, AiTaskFailed } from '../../domain/errors';
3
+ import type { ApiError } from '../Api';
4
+ export type AiTaskType = 'summary' | 'summary_translation' | 'translation' | 'insights' | 'insights_translation' | 'tts';
5
+ export type AiTaskStatus = 'pending' | 'queued' | 'running' | 'completed' | 'partial_failed' | 'succeeded' | 'failed' | 'cancelled';
6
+ export interface AiTaskCreateResult {
7
+ readonly taskId: string;
8
+ readonly created: boolean;
9
+ readonly type: AiTaskType;
10
+ readonly refId: string;
11
+ readonly targetLanguages?: ReadonlyArray<string>;
12
+ }
13
+ export interface AiTaskFinalView {
14
+ readonly type: AiTaskType;
15
+ readonly taskId: string;
16
+ readonly status: AiTaskStatus;
17
+ readonly refId?: string;
18
+ readonly targetLanguages?: ReadonlyArray<string>;
19
+ readonly totalTokens?: number;
20
+ readonly totalCost?: number;
21
+ readonly resultIds?: ReadonlyArray<string>;
22
+ readonly error?: {
23
+ readonly message: string;
24
+ };
25
+ }
26
+ export interface AiTaskCreateInput {
27
+ readonly refId: string;
28
+ readonly targetLanguages?: ReadonlyArray<string>;
29
+ readonly force?: boolean;
30
+ }
31
+ export interface AiTaskTranslateInput {
32
+ readonly refId: string;
33
+ readonly targetLanguages: ReadonlyArray<string>;
34
+ readonly force?: boolean;
35
+ }
36
+ export interface AiSingleTranslateInput {
37
+ readonly refId: string;
38
+ readonly targetLang: string;
39
+ readonly force?: boolean;
40
+ }
41
+ export interface AiWaitOptions {
42
+ readonly type: AiTaskType;
43
+ readonly pollMs?: number;
44
+ /** Stderr progress emitter; receives a transition message per state change. */
45
+ readonly onProgress?: (message: string) => void;
46
+ }
47
+ export interface AiListQuery {
48
+ readonly page?: number;
49
+ readonly size?: number;
50
+ readonly grouped?: boolean;
51
+ readonly search?: string;
52
+ }
53
+ export interface AiVoicesQuery {
54
+ readonly providerId: string;
55
+ readonly model: string;
56
+ }
57
+ export type AiOverviewType = 'post' | 'note' | 'page';
58
+ export interface AiOverviewListQuery {
59
+ readonly page?: number;
60
+ readonly size?: number;
61
+ readonly search?: string;
62
+ readonly type?: AiOverviewType;
63
+ }
64
+ export interface AiEntryListQuery {
65
+ readonly page?: number;
66
+ readonly size?: number;
67
+ readonly keyPath?: string;
68
+ readonly lang?: string;
69
+ }
70
+ export interface AiEntryGenerateInput {
71
+ readonly keyPaths?: ReadonlyArray<string>;
72
+ readonly targetLangs?: ReadonlyArray<string>;
73
+ }
74
+ export interface AiSummaryPatch {
75
+ readonly summary: string;
76
+ }
77
+ export interface AiInsightsPatch {
78
+ readonly content: string;
79
+ }
80
+ export interface AiTranslationPatch {
81
+ title?: string;
82
+ text?: string;
83
+ subtitle?: string | null;
84
+ summary?: string;
85
+ tags?: ReadonlyArray<string>;
86
+ content?: string;
87
+ }
88
+ export interface AiEntryPatch {
89
+ readonly translatedText: string;
90
+ }
91
+ export interface AiByArticleOptions {
92
+ readonly lang?: string;
93
+ readonly onlyDb?: boolean;
94
+ }
95
+ export type AiServiceError = ApiError | AiTaskCreateFailed | AiTaskFailed | AiRecordNotFound;
96
+ export interface AiService {
97
+ readonly regenSummary: (input: AiTaskCreateInput) => Effect.Effect<AiTaskCreateResult, AiTaskCreateFailed | ApiError>;
98
+ readonly translate: (input: AiTaskTranslateInput) => Effect.Effect<AiTaskCreateResult, AiTaskCreateFailed | ApiError>;
99
+ readonly refreshInsights: (input: AiTaskCreateInput) => Effect.Effect<AiTaskCreateResult, AiTaskCreateFailed | ApiError>;
100
+ readonly translateSummary: (input: AiSingleTranslateInput) => Effect.Effect<AiTaskCreateResult, AiTaskCreateFailed | ApiError>;
101
+ readonly translateInsights: (input: AiSingleTranslateInput) => Effect.Effect<AiTaskCreateResult, AiTaskCreateFailed | ApiError>;
102
+ readonly runTts: (input: AiTaskCreateInput) => Effect.Effect<AiTaskCreateResult, AiTaskCreateFailed | ApiError>;
103
+ readonly waitForTask: (taskId: string, options: AiWaitOptions) => Effect.Effect<AiTaskFinalView, AiTaskFailed | ApiError>;
104
+ readonly listSummaries: (q: AiListQuery) => Effect.Effect<unknown, ApiError>;
105
+ readonly getSummary: (id: string) => Effect.Effect<unknown, AiRecordNotFound | ApiError>;
106
+ readonly getSummariesByArticle: (refId: string, opts?: AiByArticleOptions) => Effect.Effect<unknown, ApiError>;
107
+ readonly updateSummary: (id: string, patch: AiSummaryPatch) => Effect.Effect<unknown, ApiError>;
108
+ readonly deleteSummary: (id: string) => Effect.Effect<void, ApiError>;
109
+ readonly listTranslations: (q: AiListQuery) => Effect.Effect<unknown, ApiError>;
110
+ readonly getTranslation: (id: string) => Effect.Effect<unknown, AiRecordNotFound | ApiError>;
111
+ readonly getTranslationsByArticle: (refId: string, opts?: AiByArticleOptions) => Effect.Effect<unknown, ApiError>;
112
+ readonly getTranslationLanguages: (refId: string) => Effect.Effect<unknown, ApiError>;
113
+ readonly updateTranslation: (id: string, patch: AiTranslationPatch) => Effect.Effect<unknown, ApiError>;
114
+ readonly deleteTranslation: (id: string) => Effect.Effect<void, ApiError>;
115
+ readonly listInsights: (q: AiListQuery) => Effect.Effect<unknown, ApiError>;
116
+ readonly getInsights: (id: string) => Effect.Effect<unknown, AiRecordNotFound | ApiError>;
117
+ readonly getInsightsByArticle: (refId: string, opts?: AiByArticleOptions) => Effect.Effect<unknown, ApiError>;
118
+ readonly updateInsights: (id: string, patch: AiInsightsPatch) => Effect.Effect<unknown, ApiError>;
119
+ readonly deleteInsights: (id: string) => Effect.Effect<void, ApiError>;
120
+ readonly listTts: (q: AiListQuery) => Effect.Effect<unknown, ApiError>;
121
+ readonly getTtsByArticle: (refId: string) => Effect.Effect<unknown, ApiError>;
122
+ readonly discoverTtsVoices: (q: AiVoicesQuery) => Effect.Effect<unknown, ApiError>;
123
+ readonly deleteTts: (id: string) => Effect.Effect<void, ApiError>;
124
+ readonly listOverview: (q: AiOverviewListQuery) => Effect.Effect<unknown, ApiError>;
125
+ readonly getOverviewByArticle: (refId: string) => Effect.Effect<unknown, ApiError>;
126
+ readonly listEntries: (q: AiEntryListQuery) => Effect.Effect<unknown, ApiError>;
127
+ readonly generateEntries: (input: AiEntryGenerateInput) => Effect.Effect<unknown, ApiError>;
128
+ readonly updateEntry: (id: string, patch: AiEntryPatch) => Effect.Effect<unknown, ApiError>;
129
+ readonly deleteEntry: (id: string) => Effect.Effect<void, ApiError>;
130
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,67 @@
1
+ import { HttpClient } from '@effect/platform';
2
+ import type { Schema } from 'effect';
3
+ import { Context, Effect, Layer } from 'effect';
4
+ import { AuthDenied, AuthExpired, Generic, NetworkDns, NetworkRefused, NetworkTimeout, ResourceNotFound, ServerError, ValidationFailed, WriteRequiresExplicit } from '../domain/errors';
5
+ import { Auth } from './Auth';
6
+ import { Config, type StoreOverrides } from './Config';
7
+ export type ApiMethod = 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE';
8
+ export interface ApiRequestOptions<A = unknown, I = unknown> {
9
+ readonly method?: ApiMethod;
10
+ readonly body?: unknown;
11
+ readonly query?: Readonly<Record<string, unknown>>;
12
+ readonly headers?: Readonly<Record<string, string>>;
13
+ readonly signal?: AbortSignal;
14
+ /**
15
+ * Decoder for the response payload. When omitted, the raw parsed body is
16
+ * returned (likely an object or string, never undefined for non-204
17
+ * responses).
18
+ */
19
+ readonly schema?: Schema.Schema<A, I>;
20
+ }
21
+ /**
22
+ * Per-run overrides + UX flags that Wave 2 command code can supply when
23
+ * instantiating the Api layer via `Api.layer(...)`.
24
+ *
25
+ * - `overrides`: passed straight to `Config.resolve` — supports the global
26
+ * flags `--api-url`, `--token`, `--api-key`, `--profile` and their env
27
+ * equivalents.
28
+ * - `verbose` / `quiet`: control the production banner and `METHOD URL →
29
+ * STATUS (Xms)` verbose log lines; they match the today's CLI behavior.
30
+ */
31
+ export interface ApiOptions {
32
+ readonly overrides?: StoreOverrides;
33
+ readonly verbose?: boolean;
34
+ readonly quiet?: boolean;
35
+ /**
36
+ * When true, short-circuit writes (POST / PATCH / PUT / DELETE) BEFORE any
37
+ * network call. The body that would have been sent is surfaced via the
38
+ * returned value (`{ ok: true, dryRun: true, ... }`); reads pass through
39
+ * unchanged. Mirrors the v0.2.x `--dry-run` global flag.
40
+ */
41
+ readonly dryRun?: boolean;
42
+ /**
43
+ * When set, append `?lang=<code>` to GET / read-only requests so the server
44
+ * returns the localized variant. Writes are untouched. Mirrors the v0.2.x
45
+ * `--lang <code>` flag.
46
+ */
47
+ readonly lang?: string;
48
+ }
49
+ export type ApiError = AuthExpired | AuthDenied | ValidationFailed | ResourceNotFound | ServerError | NetworkTimeout | NetworkDns | NetworkRefused | WriteRequiresExplicit | Generic;
50
+ export interface ApiService {
51
+ /** Issue a request against the active profile's `apiBase`. */
52
+ readonly request: <A = unknown, I = unknown>(path: string, options?: ApiRequestOptions<A, I>) => Effect.Effect<A, ApiError>;
53
+ /** Lower-level helper returning the raw parsed body without schema decoding. */
54
+ readonly raw: (path: string, options?: Omit<ApiRequestOptions, 'schema'>) => Effect.Effect<unknown, ApiError>;
55
+ }
56
+ declare const Api_base: Context.TagClass<Api, "Api", ApiService>;
57
+ export declare class Api extends Api_base {
58
+ /**
59
+ * Default Layer: no overrides, banner + verbose enabled per env / config.
60
+ * Wave 2 entry-point (`bin/mxs.ts`) should use `Api.layer({...})` to wire
61
+ * flag-derived overrides through.
62
+ */
63
+ static Default: Layer.Layer<Api, never, Config | Auth | HttpClient.HttpClient>;
64
+ /** Build an Api Layer with command-specified overrides + UX flags. */
65
+ static layer(opts: ApiOptions): Layer.Layer<Api, never, Config | Auth | HttpClient.HttpClient>;
66
+ }
67
+ export {};