emdash 0.20.0 → 0.22.0

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 (685) hide show
  1. package/dist/{adapters-BzIHV3sw.d.mts → adapters-hUy8vOB-.d.mts} +1 -1
  2. package/dist/{adapters-BzIHV3sw.d.mts.map → adapters-hUy8vOB-.d.mts.map} +1 -1
  3. package/dist/after-B1IIdH3Y.mjs +29 -0
  4. package/dist/after-B1IIdH3Y.mjs.map +1 -0
  5. package/dist/{allowed-origins-B1u7Qnvg.mjs → allowed-origins-DjlhyfNN.mjs} +2 -2
  6. package/dist/{allowed-origins-B1u7Qnvg.mjs.map → allowed-origins-DjlhyfNN.mjs.map} +1 -1
  7. package/dist/api/route-utils.d.mts +3 -3
  8. package/dist/api/route-utils.mjs +20 -18
  9. package/dist/api/route-utils.mjs.map +1 -1
  10. package/dist/api/schemas/index.d.mts +2 -2
  11. package/dist/api/schemas/index.mjs +4 -3
  12. package/dist/{api-DStv36ik.mjs → api-BDuM4bEy.mjs} +31 -25
  13. package/dist/api-BDuM4bEy.mjs.map +1 -0
  14. package/dist/{api-tokens-DPfhPu5V.mjs → api-tokens-ViYKeIp9.mjs} +13 -3
  15. package/dist/api-tokens-ViYKeIp9.mjs.map +1 -0
  16. package/dist/{apply-Dr7snAMT.mjs → apply-wDqQoxX4.mjs} +18 -18
  17. package/dist/{apply-Dr7snAMT.mjs.map → apply-wDqQoxX4.mjs.map} +1 -1
  18. package/dist/astro/image-endpoint.d.mts +8 -0
  19. package/dist/astro/image-endpoint.d.mts.map +1 -0
  20. package/dist/astro/image-endpoint.mjs +55 -0
  21. package/dist/astro/image-endpoint.mjs.map +1 -0
  22. package/dist/astro/index.d.mts +36 -11
  23. package/dist/astro/index.d.mts.map +1 -1
  24. package/dist/astro/index.mjs +160 -35
  25. package/dist/astro/index.mjs.map +1 -1
  26. package/dist/astro/middleware/auth.d.mts +9 -9
  27. package/dist/astro/middleware/auth.d.mts.map +1 -1
  28. package/dist/astro/middleware/auth.mjs +12 -10
  29. package/dist/astro/middleware/auth.mjs.map +1 -1
  30. package/dist/astro/middleware/redirect.d.mts.map +1 -1
  31. package/dist/astro/middleware/redirect.mjs +14 -5
  32. package/dist/astro/middleware/redirect.mjs.map +1 -1
  33. package/dist/astro/middleware/request-context.mjs +5 -4
  34. package/dist/astro/middleware/request-context.mjs.map +1 -1
  35. package/dist/astro/middleware/setup.mjs +1 -1
  36. package/dist/astro/middleware.d.mts +1 -1
  37. package/dist/astro/middleware.d.mts.map +1 -1
  38. package/dist/astro/middleware.mjs +157 -80
  39. package/dist/astro/middleware.mjs.map +1 -1
  40. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +7 -6
  41. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -1
  42. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +7 -6
  43. package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -1
  44. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +5 -5
  45. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
  46. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +6 -6
  47. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +10 -9
  48. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs.map +1 -1
  49. package/dist/astro/routes/api/admin/byline-fields/index.mjs +10 -9
  50. package/dist/astro/routes/api/admin/byline-fields/index.mjs.map +1 -1
  51. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +10 -9
  52. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs.map +1 -1
  53. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +17 -14
  54. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  55. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +17 -14
  56. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  57. package/dist/astro/routes/api/admin/bylines/index.mjs +17 -14
  58. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  59. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +15 -12
  60. package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -1
  61. package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -6
  62. package/dist/astro/routes/api/admin/comments/_id_.mjs.map +1 -1
  63. package/dist/astro/routes/api/admin/comments/bulk.mjs +12 -9
  64. package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -1
  65. package/dist/astro/routes/api/admin/comments/counts.mjs +8 -6
  66. package/dist/astro/routes/api/admin/comments/counts.mjs.map +1 -1
  67. package/dist/astro/routes/api/admin/comments/index.mjs +12 -9
  68. package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -1
  69. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -6
  70. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -5
  71. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +5 -5
  72. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +5 -5
  73. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +40 -37
  74. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
  75. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +40 -37
  76. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
  77. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +39 -36
  78. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  79. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +39 -36
  80. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  81. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +39 -36
  82. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  83. package/dist/astro/routes/api/admin/plugins/index.mjs +39 -36
  84. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  85. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +4 -4
  86. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +39 -36
  87. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  88. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +39 -36
  89. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  90. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +39 -36
  91. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  92. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +39 -36
  93. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  94. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +40 -37
  95. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  96. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +39 -36
  97. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  98. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +40 -37
  99. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  100. package/dist/astro/routes/api/admin/plugins/updates.mjs +39 -36
  101. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  102. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +39 -36
  103. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  104. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +4 -4
  105. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +39 -36
  106. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  107. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +4 -4
  108. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +3 -3
  109. package/dist/astro/routes/api/admin/users/_id_/index.mjs +8 -7
  110. package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -1
  111. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +5 -5
  112. package/dist/astro/routes/api/admin/users/index.mjs +7 -6
  113. package/dist/astro/routes/api/admin/users/index.mjs.map +1 -1
  114. package/dist/astro/routes/api/auth/dev-bypass.mjs +6 -6
  115. package/dist/astro/routes/api/auth/invite/accept.mjs +3 -3
  116. package/dist/astro/routes/api/auth/invite/complete.mjs +12 -11
  117. package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -1
  118. package/dist/astro/routes/api/auth/invite/index.mjs +9 -8
  119. package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -1
  120. package/dist/astro/routes/api/auth/invite/register-options.mjs +11 -10
  121. package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -1
  122. package/dist/astro/routes/api/auth/logout.mjs +4 -4
  123. package/dist/astro/routes/api/auth/magic-link/send.mjs +11 -10
  124. package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -1
  125. package/dist/astro/routes/api/auth/magic-link/verify.mjs +4 -4
  126. package/dist/astro/routes/api/auth/me.mjs +8 -7
  127. package/dist/astro/routes/api/auth/me.mjs.map +1 -1
  128. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  129. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +4 -4
  130. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  131. package/dist/astro/routes/api/auth/passkey/_id_.mjs +7 -6
  132. package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -1
  133. package/dist/astro/routes/api/auth/passkey/index.mjs +3 -3
  134. package/dist/astro/routes/api/auth/passkey/options.mjs +13 -12
  135. package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -1
  136. package/dist/astro/routes/api/auth/passkey/register/options.mjs +11 -10
  137. package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -1
  138. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +12 -11
  139. package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -1
  140. package/dist/astro/routes/api/auth/passkey/verify.mjs +12 -11
  141. package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -1
  142. package/dist/astro/routes/api/auth/signup/complete.mjs +12 -11
  143. package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -1
  144. package/dist/astro/routes/api/auth/signup/request.mjs +11 -10
  145. package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -1
  146. package/dist/astro/routes/api/auth/signup/verify.mjs +3 -3
  147. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +16 -13
  148. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs.map +1 -1
  149. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.d.mts +9 -0
  150. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.d.mts.map +1 -0
  151. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +179 -0
  152. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs.map +1 -0
  153. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +4 -4
  154. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +4 -4
  155. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +4 -4
  156. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +4 -4
  157. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +13 -11
  158. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
  159. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +8 -7
  160. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  161. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +4 -4
  162. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +4 -4
  163. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +8 -7
  164. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
  165. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +17 -14
  166. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  167. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +4 -4
  168. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +4 -4
  169. package/dist/astro/routes/api/content/_collection_/_id_.mjs +8 -7
  170. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  171. package/dist/astro/routes/api/content/_collection_/authors.mjs +4 -4
  172. package/dist/astro/routes/api/content/_collection_/index.mjs +8 -7
  173. package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
  174. package/dist/astro/routes/api/content/_collection_/trash.mjs +8 -7
  175. package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -1
  176. package/dist/astro/routes/api/dashboard.mjs +10 -8
  177. package/dist/astro/routes/api/dashboard.mjs.map +1 -1
  178. package/dist/astro/routes/api/dev/emails.mjs +4 -4
  179. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  180. package/dist/astro/routes/api/import/probe.mjs +12 -11
  181. package/dist/astro/routes/api/import/probe.mjs.map +1 -1
  182. package/dist/astro/routes/api/import/wordpress/analyze.mjs +5 -5
  183. package/dist/astro/routes/api/import/wordpress/execute.d.mts +9 -9
  184. package/dist/astro/routes/api/import/wordpress/execute.mjs +16 -14
  185. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
  186. package/dist/astro/routes/api/import/wordpress/media.mjs +10 -9
  187. package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -1
  188. package/dist/astro/routes/api/import/wordpress/prepare.mjs +11 -10
  189. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
  190. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +10 -9
  191. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  192. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  193. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +12 -11
  194. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
  195. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
  196. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +1 -1
  197. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +18 -15
  198. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  199. package/dist/astro/routes/api/manifest.mjs +5 -5
  200. package/dist/astro/routes/api/mcp.mjs +213 -45
  201. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  202. package/dist/astro/routes/api/media/_id_/confirm.mjs +8 -7
  203. package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -1
  204. package/dist/astro/routes/api/media/_id_.mjs +8 -7
  205. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  206. package/dist/astro/routes/api/media/file/_...key_.mjs +3 -3
  207. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +4 -4
  208. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +4 -4
  209. package/dist/astro/routes/api/media/providers/index.mjs +4 -4
  210. package/dist/astro/routes/api/media/upload-url.mjs +10 -9
  211. package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
  212. package/dist/astro/routes/api/media.mjs +13 -12
  213. package/dist/astro/routes/api/media.mjs.map +1 -1
  214. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +11 -8
  215. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  216. package/dist/astro/routes/api/menus/_name_/items.mjs +11 -8
  217. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  218. package/dist/astro/routes/api/menus/_name_/reorder.mjs +11 -8
  219. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  220. package/dist/astro/routes/api/menus/_name_/translations.mjs +11 -8
  221. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  222. package/dist/astro/routes/api/menus/_name_.mjs +11 -8
  223. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  224. package/dist/astro/routes/api/menus/index.mjs +11 -8
  225. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  226. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  227. package/dist/astro/routes/api/oauth/device/authorize.mjs +7 -7
  228. package/dist/astro/routes/api/oauth/device/code.mjs +10 -10
  229. package/dist/astro/routes/api/oauth/device/token.mjs +9 -9
  230. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  231. package/dist/astro/routes/api/oauth/token/refresh.mjs +7 -7
  232. package/dist/astro/routes/api/oauth/token/revoke.mjs +7 -7
  233. package/dist/astro/routes/api/oauth/token.mjs +7 -7
  234. package/dist/astro/routes/api/openapi.json.mjs +5 -4
  235. package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
  236. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +5 -5
  237. package/dist/astro/routes/api/redirects/404s/index.mjs +11 -10
  238. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
  239. package/dist/astro/routes/api/redirects/404s/summary.mjs +11 -10
  240. package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
  241. package/dist/astro/routes/api/redirects/_id_.mjs +12 -11
  242. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
  243. package/dist/astro/routes/api/redirects/index.mjs +12 -11
  244. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  245. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +4 -4
  246. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +4 -4
  247. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +39 -36
  248. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  249. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +39 -36
  250. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  251. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +39 -36
  252. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  253. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +39 -36
  254. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  255. package/dist/astro/routes/api/schema/collections/index.mjs +39 -36
  256. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  257. package/dist/astro/routes/api/schema/index.mjs +7 -7
  258. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +39 -36
  259. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  260. package/dist/astro/routes/api/schema/orphans/index.mjs +39 -36
  261. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  262. package/dist/astro/routes/api/search/enable.mjs +11 -10
  263. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  264. package/dist/astro/routes/api/search/index.mjs +10 -9
  265. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  266. package/dist/astro/routes/api/search/rebuild.mjs +11 -10
  267. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  268. package/dist/astro/routes/api/search/stats.mjs +7 -7
  269. package/dist/astro/routes/api/search/suggest.mjs +10 -9
  270. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  271. package/dist/astro/routes/api/sections/_slug_.mjs +10 -9
  272. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  273. package/dist/astro/routes/api/sections/index.mjs +10 -9
  274. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  275. package/dist/astro/routes/api/settings/email.mjs +6 -6
  276. package/dist/astro/routes/api/settings.mjs +16 -13
  277. package/dist/astro/routes/api/settings.mjs.map +1 -1
  278. package/dist/astro/routes/api/setup/admin-verify.mjs +13 -12
  279. package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
  280. package/dist/astro/routes/api/setup/admin.mjs +12 -11
  281. package/dist/astro/routes/api/setup/admin.mjs.map +1 -1
  282. package/dist/astro/routes/api/setup/dev-bypass.d.mts.map +1 -1
  283. package/dist/astro/routes/api/setup/dev-bypass.mjs +29 -26
  284. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  285. package/dist/astro/routes/api/setup/dev-reset.mjs +4 -4
  286. package/dist/astro/routes/api/setup/index.mjs +29 -26
  287. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  288. package/dist/astro/routes/api/setup/status.mjs +5 -5
  289. package/dist/astro/routes/api/snapshot.d.mts.map +1 -1
  290. package/dist/astro/routes/api/snapshot.mjs +10 -8
  291. package/dist/astro/routes/api/snapshot.mjs.map +1 -1
  292. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +16 -13
  293. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  294. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +16 -13
  295. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  296. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +16 -13
  297. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  298. package/dist/astro/routes/api/taxonomies/index.mjs +16 -13
  299. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  300. package/dist/astro/routes/api/themes/preview.mjs +8 -7
  301. package/dist/astro/routes/api/themes/preview.mjs.map +1 -1
  302. package/dist/astro/routes/api/typegen.mjs +6 -6
  303. package/dist/astro/routes/api/well-known/auth.mjs +2 -2
  304. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  305. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  306. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +8 -7
  307. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  308. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +11 -10
  309. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  310. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +11 -10
  311. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  312. package/dist/astro/routes/api/widget-areas/_name_.mjs +7 -7
  313. package/dist/astro/routes/api/widget-areas/index.mjs +11 -10
  314. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  315. package/dist/astro/routes/api/widget-components.mjs +4 -4
  316. package/dist/astro/routes/robots.txt.mjs +10 -8
  317. package/dist/astro/routes/robots.txt.mjs.map +1 -1
  318. package/dist/astro/routes/sitemap-_collection_.xml.mjs +13 -11
  319. package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
  320. package/dist/astro/routes/sitemap.xml.mjs +11 -9
  321. package/dist/astro/routes/sitemap.xml.mjs.map +1 -1
  322. package/dist/astro/types.d.mts +16 -12
  323. package/dist/astro/types.d.mts.map +1 -1
  324. package/dist/auth/providers/github.d.mts +1 -1
  325. package/dist/auth/providers/google.d.mts +1 -1
  326. package/dist/{authorize-DsMSVSaY.mjs → authorize-C0EYoUeV.mjs} +2 -2
  327. package/dist/{authorize-DsMSVSaY.mjs.map → authorize-C0EYoUeV.mjs.map} +1 -1
  328. package/dist/{base64-CqR-7kqF.mjs → base64-CmWvODNW.mjs} +1 -1
  329. package/dist/{base64-CqR-7kqF.mjs.map → base64-CmWvODNW.mjs.map} +1 -1
  330. package/dist/{byline-DUx48sJp.mjs → byline-CC0WS4Gu.mjs} +40 -18
  331. package/dist/byline-CC0WS4Gu.mjs.map +1 -0
  332. package/dist/{byline-fields-8TMtkBnH.mjs → byline-fields-53i9Et0x.mjs} +3 -3
  333. package/dist/{byline-fields-8TMtkBnH.mjs.map → byline-fields-53i9Et0x.mjs.map} +1 -1
  334. package/dist/{byline-fields--WxSNS79.mjs → byline-fields-DNp0HNKc.mjs} +2 -2
  335. package/dist/{byline-fields--WxSNS79.mjs.map → byline-fields-DNp0HNKc.mjs.map} +1 -1
  336. package/dist/{byline-fields-DbibsvTl.d.mts → byline-fields-jy07PZJM.d.mts} +9 -4
  337. package/dist/byline-fields-jy07PZJM.d.mts.map +1 -0
  338. package/dist/{byline-registry-CWP7I71B.mjs → byline-registry-BOjqDOim.mjs} +3 -3
  339. package/dist/{byline-registry-CWP7I71B.mjs.map → byline-registry-BOjqDOim.mjs.map} +1 -1
  340. package/dist/{bylines-s8c2DXbH.mjs → bylines-CCO1CYnH.mjs} +8 -8
  341. package/dist/{bylines-s8c2DXbH.mjs.map → bylines-CCO1CYnH.mjs.map} +1 -1
  342. package/dist/{bylines-BdxWCnPL.mjs → bylines-DGekMGGm.mjs} +10 -4
  343. package/dist/{bylines-BdxWCnPL.mjs.map → bylines-DGekMGGm.mjs.map} +1 -1
  344. package/dist/{cache-B_HzASVT.mjs → cache-pXTpun6s.mjs} +3 -3
  345. package/dist/{cache-B_HzASVT.mjs.map → cache-pXTpun6s.mjs.map} +1 -1
  346. package/dist/{challenge-store-DXX3rfdI.mjs → challenge-store-C6E_kWTs.mjs} +1 -1
  347. package/dist/{challenge-store-DXX3rfdI.mjs.map → challenge-store-C6E_kWTs.mjs.map} +1 -1
  348. package/dist/{chunks-BerYVuve.mjs → chunks-SyjZaYwV.mjs} +2 -2
  349. package/dist/{chunks-BerYVuve.mjs.map → chunks-SyjZaYwV.mjs.map} +1 -1
  350. package/dist/cli/index.mjs +29 -27
  351. package/dist/cli/index.mjs.map +1 -1
  352. package/dist/client/cf-access.d.mts +1 -1
  353. package/dist/client/index.d.mts +1 -1
  354. package/dist/client/index.mjs +2 -1
  355. package/dist/client/index.mjs.map +1 -1
  356. package/dist/{comment-sqQxNpN3.mjs → comment-80UyJJUR.mjs} +11 -3
  357. package/dist/comment-80UyJJUR.mjs.map +1 -0
  358. package/dist/comment-reaction-B6AdcpXw.mjs +85 -0
  359. package/dist/comment-reaction-B6AdcpXw.mjs.map +1 -0
  360. package/dist/{comments-Vkivawyl.mjs → comments-CtPkT2tp.mjs} +3 -3
  361. package/dist/{comments-Vkivawyl.mjs.map → comments-CtPkT2tp.mjs.map} +1 -1
  362. package/dist/{components-CK0cuUoH.mjs → components-D6ZnrzbB.mjs} +1 -1
  363. package/dist/{components-CK0cuUoH.mjs.map → components-D6ZnrzbB.mjs.map} +1 -1
  364. package/dist/{content-BIlVx-RX.mjs → content-2PTDNnoh.mjs} +22 -7
  365. package/dist/content-2PTDNnoh.mjs.map +1 -0
  366. package/dist/{context-Y7BRkWes.mjs → context-f1__jpzF.mjs} +11 -11
  367. package/dist/{context-Y7BRkWes.mjs.map → context-f1__jpzF.mjs.map} +1 -1
  368. package/dist/{cron-BJ2ClIlj.mjs → cron-CQPxBjYs.mjs} +1 -1
  369. package/dist/{cron-BJ2ClIlj.mjs.map → cron-CQPxBjYs.mjs.map} +1 -1
  370. package/dist/{dashboard-2JgAMWxK.mjs → dashboard-BOESNcwE.mjs} +4 -4
  371. package/dist/{dashboard-2JgAMWxK.mjs.map → dashboard-BOESNcwE.mjs.map} +1 -1
  372. package/dist/database/instrumentation.d.mts +19 -0
  373. package/dist/database/instrumentation.d.mts.map +1 -1
  374. package/dist/database/instrumentation.mjs +8 -1
  375. package/dist/database/instrumentation.mjs.map +1 -1
  376. package/dist/db/index.d.mts +3 -3
  377. package/dist/db/index.mjs +1 -1
  378. package/dist/db/libsql.d.mts +1 -1
  379. package/dist/db/postgres.d.mts +1 -1
  380. package/dist/db/sqlite.d.mts +1 -1
  381. package/dist/{db-errors-CtzxKBxe.mjs → db-errors-CrC5w3Jz.mjs} +1 -1
  382. package/dist/{db-errors-CtzxKBxe.mjs.map → db-errors-CrC5w3Jz.mjs.map} +1 -1
  383. package/dist/{default-IlBaTFxM.mjs → default-CpBEPn6a.mjs} +1 -1
  384. package/dist/{default-IlBaTFxM.mjs.map → default-CpBEPn6a.mjs.map} +1 -1
  385. package/dist/{device-flow-R23SIbQ2.mjs → device-flow-Bn-qiDrw.mjs} +5 -5
  386. package/dist/{device-flow-R23SIbQ2.mjs.map → device-flow-Bn-qiDrw.mjs.map} +1 -1
  387. package/dist/{email-console-DHT2Fbpj.mjs → email-console-B9VS6eN4.mjs} +1 -1
  388. package/dist/{email-console-DHT2Fbpj.mjs.map → email-console-B9VS6eN4.mjs.map} +1 -1
  389. package/dist/{error-RwM4dD35.mjs → error-BQ1pxs0L.mjs} +2 -2
  390. package/dist/{error-RwM4dD35.mjs.map → error-BQ1pxs0L.mjs.map} +1 -1
  391. package/dist/{escape-Ds07EEyu.mjs → escape-BtbJWyaW.mjs} +1 -1
  392. package/dist/{escape-Ds07EEyu.mjs.map → escape-BtbJWyaW.mjs.map} +1 -1
  393. package/dist/{fts-manager-1RgHmopc.mjs → fts-manager-DtiWqwNJ.mjs} +2 -2
  394. package/dist/{fts-manager-1RgHmopc.mjs.map → fts-manager-DtiWqwNJ.mjs.map} +1 -1
  395. package/dist/{hash-9w3pd3-m.mjs → hash-BowcuPwv.mjs} +1 -1
  396. package/dist/{hash-9w3pd3-m.mjs.map → hash-BowcuPwv.mjs.map} +1 -1
  397. package/dist/{import-Dh8bWmyq.mjs → import-DqSGOlmR.mjs} +4 -4
  398. package/dist/{import-Dh8bWmyq.mjs.map → import-DqSGOlmR.mjs.map} +1 -1
  399. package/dist/{index-B1keaX5Y.d.mts → index-C2dLNT6S.d.mts} +169 -14
  400. package/dist/index-C2dLNT6S.d.mts.map +1 -0
  401. package/dist/{index-DR56od45.d.mts → index-ZDEwR7qW.d.mts} +3 -3
  402. package/dist/{index-DR56od45.d.mts.map → index-ZDEwR7qW.d.mts.map} +1 -1
  403. package/dist/index.d.mts +18 -17
  404. package/dist/index.mjs +63 -59
  405. package/dist/init-lock-6b309ZrF.mjs +56 -0
  406. package/dist/init-lock-6b309ZrF.mjs.map +1 -0
  407. package/dist/{load-BBetCvLC.mjs → load-Dtoo7KcJ.mjs} +2 -2
  408. package/dist/{load-BBetCvLC.mjs.map → load-Dtoo7KcJ.mjs.map} +1 -1
  409. package/dist/{loader-ZN1ll-d-.mjs → loader-C8Z48Uof.mjs} +4 -4
  410. package/dist/{loader-ZN1ll-d-.mjs.map → loader-C8Z48Uof.mjs.map} +1 -1
  411. package/dist/{manifest-schema-BtwbL_vj.mjs → manifest-schema-DDSbwkAL.mjs} +1 -1
  412. package/dist/{manifest-schema-BtwbL_vj.mjs.map → manifest-schema-DDSbwkAL.mjs.map} +1 -1
  413. package/dist/media/image-endpoint.d.mts +74 -0
  414. package/dist/media/image-endpoint.d.mts.map +1 -0
  415. package/dist/media/image-endpoint.mjs +162 -0
  416. package/dist/media/image-endpoint.mjs.map +1 -0
  417. package/dist/media/index.d.mts +1 -1
  418. package/dist/media/index.mjs +2 -2
  419. package/dist/media/local-runtime.d.mts +11 -11
  420. package/dist/media/local-runtime.mjs +9 -7
  421. package/dist/media/local-runtime.mjs.map +1 -1
  422. package/dist/{media-JOf3pNkw.mjs → media-Bw0sA6rb.mjs} +2 -2
  423. package/dist/{media-JOf3pNkw.mjs.map → media-Bw0sA6rb.mjs.map} +1 -1
  424. package/dist/{media-allowlist-Dknq-OFY.mjs → media-allowlist-DunzrKFM.mjs} +2 -2
  425. package/dist/{media-allowlist-Dknq-OFY.mjs.map → media-allowlist-DunzrKFM.mjs.map} +1 -1
  426. package/dist/{media-url-VClf8glU.mjs → media-url-S22B6aPr.mjs} +1 -1
  427. package/dist/{media-url-VClf8glU.mjs.map → media-url-S22B6aPr.mjs.map} +1 -1
  428. package/dist/{menus-DX4_E01q.mjs → menus-CYs0WZoL.mjs} +20 -6
  429. package/dist/menus-CYs0WZoL.mjs.map +1 -0
  430. package/dist/{menus-DrQLusqj.mjs → menus-DOs1MQJg.mjs} +120 -20
  431. package/dist/menus-DOs1MQJg.mjs.map +1 -0
  432. package/dist/{mime-CCEzze7W.mjs → mime-DYpsOAny.mjs} +1 -1
  433. package/dist/{mime-CCEzze7W.mjs.map → mime-DYpsOAny.mjs.map} +1 -1
  434. package/dist/{mode-CO2vQHfq.mjs → mode-CFh8Dw8G.mjs} +1 -1
  435. package/dist/{mode-CO2vQHfq.mjs.map → mode-CFh8Dw8G.mjs.map} +1 -1
  436. package/dist/{normalize-CK5o04zr.mjs → normalize-Uam4_Vkr.mjs} +1 -1
  437. package/dist/{normalize-CK5o04zr.mjs.map → normalize-Uam4_Vkr.mjs.map} +1 -1
  438. package/dist/{oauth-authorization-Bw4NdF_S.mjs → oauth-authorization-BN-t83Uy.mjs} +5 -5
  439. package/dist/{oauth-authorization-Bw4NdF_S.mjs.map → oauth-authorization-BN-t83Uy.mjs.map} +1 -1
  440. package/dist/{oauth-clients-BGGFp57s.mjs → oauth-clients-R6I_V0qz.mjs} +1 -1
  441. package/dist/{oauth-clients-BGGFp57s.mjs.map → oauth-clients-R6I_V0qz.mjs.map} +1 -1
  442. package/dist/{oauth-state-store-97x0xtN2.mjs → oauth-state-store-Csoc6kkR.mjs} +1 -1
  443. package/dist/{oauth-state-store-97x0xtN2.mjs.map → oauth-state-store-Csoc6kkR.mjs.map} +1 -1
  444. package/dist/{oauth-user-lookup-B_vnZHKO.mjs → oauth-user-lookup-d7VYjTpx.mjs} +1 -1
  445. package/dist/{oauth-user-lookup-B_vnZHKO.mjs.map → oauth-user-lookup-d7VYjTpx.mjs.map} +1 -1
  446. package/dist/object-cache/memory.d.mts +15 -0
  447. package/dist/object-cache/memory.d.mts.map +1 -0
  448. package/dist/object-cache/memory.mjs +56 -0
  449. package/dist/object-cache/memory.mjs.map +1 -0
  450. package/dist/object-cache-SEb2IM4Z.mjs +373 -0
  451. package/dist/object-cache-SEb2IM4Z.mjs.map +1 -0
  452. package/dist/{options-DyYIYpPd.d.mts → options-DFFpvNJU.d.mts} +3 -3
  453. package/dist/{options-DyYIYpPd.d.mts.map → options-DFFpvNJU.d.mts.map} +1 -1
  454. package/dist/{options-BPCVnesz.mjs → options-DTTML-Tx.mjs} +1 -1
  455. package/dist/{options-BPCVnesz.mjs.map → options-DTTML-Tx.mjs.map} +1 -1
  456. package/dist/page/index.d.mts +2 -2
  457. package/dist/{parse-CrGndy1A.mjs → parse-qrHlnzTy.mjs} +2 -2
  458. package/dist/{parse-CrGndy1A.mjs.map → parse-qrHlnzTy.mjs.map} +1 -1
  459. package/dist/{passkey-config-C3QgnQnU.mjs → passkey-config-BJTbcnI5.mjs} +1 -1
  460. package/dist/{passkey-config-C3QgnQnU.mjs.map → passkey-config-BJTbcnI5.mjs.map} +1 -1
  461. package/dist/{patterns-p-RBdTbM.mjs → patterns-BKmjvM7K.mjs} +1 -1
  462. package/dist/{patterns-p-RBdTbM.mjs.map → patterns-BKmjvM7K.mjs.map} +1 -1
  463. package/dist/{placeholder-BZxr8W1j.mjs → placeholder-CIDCpyEY.mjs} +1 -1
  464. package/dist/{placeholder-BZxr8W1j.mjs.map → placeholder-CIDCpyEY.mjs.map} +1 -1
  465. package/dist/{placeholder-CVBv5z8k.d.mts → placeholder-CirPauNG.d.mts} +1 -1
  466. package/dist/{placeholder-CVBv5z8k.d.mts.map → placeholder-CirPauNG.d.mts.map} +1 -1
  467. package/dist/plugin-types.d.mts +1 -1
  468. package/dist/plugin-utils.d.mts +9 -9
  469. package/dist/plugins/adapt-sandbox-entry.d.mts +9 -9
  470. package/dist/plugins/adapt-sandbox-entry.mjs +4 -2
  471. package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
  472. package/dist/{transport-CmpLD7W3.mjs → portable-text-BIFhrU6T.mjs} +2 -135
  473. package/dist/portable-text-BIFhrU6T.mjs.map +1 -0
  474. package/dist/{preview-BfuRkVKW.mjs → preview-IDye9SPQ.mjs} +2 -2
  475. package/dist/{preview-BfuRkVKW.mjs.map → preview-IDye9SPQ.mjs.map} +1 -1
  476. package/dist/{public-url-BFVC2OTJ.mjs → public-url-8lFyQ8ZF.mjs} +1 -1
  477. package/dist/{public-url-BFVC2OTJ.mjs.map → public-url-8lFyQ8ZF.mjs.map} +1 -1
  478. package/dist/{query-CbUcI4Xk.mjs → query-B1RVFUNM.mjs} +159 -31
  479. package/dist/query-B1RVFUNM.mjs.map +1 -0
  480. package/dist/{rate-limit-C7hjdkS5.mjs → rate-limit-DfNAqIWW.mjs} +2 -2
  481. package/dist/{rate-limit-C7hjdkS5.mjs.map → rate-limit-DfNAqIWW.mjs.map} +1 -1
  482. package/dist/{redirect-B_q19j4v.mjs → redirect-B4wuX2A5.mjs} +1 -1
  483. package/dist/{redirect-B_q19j4v.mjs.map → redirect-B4wuX2A5.mjs.map} +1 -1
  484. package/dist/{redirect-CRWIt8Zj.mjs → redirect-Bifv_yHv.mjs} +3 -3
  485. package/dist/{redirect-CRWIt8Zj.mjs.map → redirect-Bifv_yHv.mjs.map} +1 -1
  486. package/dist/{redirects-DxVoR7PI.mjs → redirects-CT_vb3NV.mjs} +24 -18
  487. package/dist/redirects-CT_vb3NV.mjs.map +1 -0
  488. package/dist/{redirects-CCbCqCCd.mjs → redirects-DUvXgzCX.mjs} +14 -10
  489. package/dist/redirects-DUvXgzCX.mjs.map +1 -0
  490. package/dist/{registry-brYh-rAT.mjs → registry-CjK96fHD.mjs} +6 -6
  491. package/dist/{registry-brYh-rAT.mjs.map → registry-CjK96fHD.mjs.map} +1 -1
  492. package/dist/{request-cache-D32LpnmI.mjs → request-cache-KCNHp_RJ.mjs} +1 -1
  493. package/dist/{request-cache-D32LpnmI.mjs.map → request-cache-KCNHp_RJ.mjs.map} +1 -1
  494. package/dist/{request-meta-7ByVLxB-.mjs → request-meta-ei3ATilC.mjs} +2 -2
  495. package/dist/{request-meta-7ByVLxB-.mjs.map → request-meta-ei3ATilC.mjs.map} +1 -1
  496. package/dist/{resolve-BqYMVG0D.mjs → resolve-CpbBglV0.mjs} +1 -1
  497. package/dist/{resolve-BqYMVG0D.mjs.map → resolve-CpbBglV0.mjs.map} +1 -1
  498. package/dist/{runner--4wMWwKM.mjs → runner-DYYnW530.mjs} +201 -170
  499. package/dist/runner-DYYnW530.mjs.map +1 -0
  500. package/dist/{runner-DTdhuI9i.d.mts → runner-jdXtFEd3.d.mts} +2 -2
  501. package/dist/{runner-DTdhuI9i.d.mts.map → runner-jdXtFEd3.d.mts.map} +1 -1
  502. package/dist/runtime.d.mts +10 -10
  503. package/dist/runtime.mjs +3 -3
  504. package/dist/{schema-C1E70ug_.mjs → schema-5z2Jfnbm.mjs} +13 -8
  505. package/dist/schema-5z2Jfnbm.mjs.map +1 -0
  506. package/dist/{search-B3SGZw91.mjs → search-D9FkoM-k.mjs} +4 -4
  507. package/dist/{search-B3SGZw91.mjs.map → search-D9FkoM-k.mjs.map} +1 -1
  508. package/dist/{secrets-ChPTmy9x.mjs → secrets-BUE5UQys.mjs} +23 -13
  509. package/dist/secrets-BUE5UQys.mjs.map +1 -0
  510. package/dist/{sections-D_lVzwRZ.mjs → sections-DWYZo6HK.mjs} +3 -3
  511. package/dist/{sections-D_lVzwRZ.mjs.map → sections-DWYZo6HK.mjs.map} +1 -1
  512. package/dist/seed/index.d.mts +2 -2
  513. package/dist/seed/index.mjs +22 -20
  514. package/dist/seo/index.d.mts +1 -1
  515. package/dist/seo/index.mjs +1 -1
  516. package/dist/{seo-B5e6y9Wk.mjs → seo-Cu47j3mJ.mjs} +5 -2
  517. package/dist/seo-Cu47j3mJ.mjs.map +1 -0
  518. package/dist/{seo-D_LPkOtu.mjs → seo-DRnqnstF.mjs} +1 -1
  519. package/dist/{seo-D_LPkOtu.mjs.map → seo-DRnqnstF.mjs.map} +1 -1
  520. package/dist/{service-ChDcsTBs.mjs → service-DTmtqCnw.mjs} +3 -3
  521. package/dist/{service-ChDcsTBs.mjs.map → service-DTmtqCnw.mjs.map} +1 -1
  522. package/dist/session-user-DmtPMNa1.mjs +51 -0
  523. package/dist/session-user-DmtPMNa1.mjs.map +1 -0
  524. package/dist/{settings-Cv47v9u8.mjs → settings-DUrVDN0c.mjs} +3 -3
  525. package/dist/{settings-Cv47v9u8.mjs.map → settings-DUrVDN0c.mjs.map} +1 -1
  526. package/dist/settings-yaxu9mU-.mjs +245 -0
  527. package/dist/settings-yaxu9mU-.mjs.map +1 -0
  528. package/dist/{setup-complete-yvPE4OsP.mjs → setup-complete-BWFHzgvZ.mjs} +2 -2
  529. package/dist/{setup-complete-yvPE4OsP.mjs.map → setup-complete-BWFHzgvZ.mjs.map} +1 -1
  530. package/dist/{setup-nonce-C9aFzb94.mjs → setup-nonce-DFWG-J5c.mjs} +1 -1
  531. package/dist/{setup-nonce-C9aFzb94.mjs.map → setup-nonce-DFWG-J5c.mjs.map} +1 -1
  532. package/dist/single-flight-cache-B5p5cNOL.mjs +104 -0
  533. package/dist/single-flight-cache-B5p5cNOL.mjs.map +1 -0
  534. package/dist/{site-url-CnHlmAs9.mjs → site-url-BOTPgmeM.mjs} +2 -2
  535. package/dist/{site-url-CnHlmAs9.mjs.map → site-url-BOTPgmeM.mjs.map} +1 -1
  536. package/dist/{slugify-Cjh1ssOZ.mjs → slugify-Cce3dTdg.mjs} +1 -1
  537. package/dist/{slugify-Cjh1ssOZ.mjs.map → slugify-Cce3dTdg.mjs.map} +1 -1
  538. package/dist/{ssrf-BsVGIE0Z.mjs → ssrf-B0VeRLrp.mjs} +1 -1
  539. package/dist/{ssrf-BsVGIE0Z.mjs.map → ssrf-B0VeRLrp.mjs.map} +1 -1
  540. package/dist/status-CB2basWJ.mjs +30 -0
  541. package/dist/status-CB2basWJ.mjs.map +1 -0
  542. package/dist/storage/local.d.mts +1 -1
  543. package/dist/storage/local.mjs +2 -2
  544. package/dist/storage/s3.d.mts +1 -1
  545. package/dist/storage/s3.mjs +1 -1
  546. package/dist/{taxonomies-BdAmbOwx.mjs → taxonomies-Be9B1jEj.mjs} +156 -122
  547. package/dist/taxonomies-Be9B1jEj.mjs.map +1 -0
  548. package/dist/{taxonomies-BILwiyGk.mjs → taxonomies-CJmkEpdS.mjs} +7 -7
  549. package/dist/{taxonomies-BILwiyGk.mjs.map → taxonomies-CJmkEpdS.mjs.map} +1 -1
  550. package/dist/{taxonomy-CdllE4oq.mjs → taxonomy-B2HQuVf5.mjs} +19 -6
  551. package/dist/taxonomy-B2HQuVf5.mjs.map +1 -0
  552. package/dist/{tokens-Bx2afeT-.mjs → tokens-BvrJvIB6.mjs} +2 -2
  553. package/dist/{tokens-Bx2afeT-.mjs.map → tokens-BvrJvIB6.mjs.map} +1 -1
  554. package/dist/{transaction-x2tJQ-A1.mjs → transaction-qfqpPVpu.mjs} +1 -1
  555. package/dist/{transaction-x2tJQ-A1.mjs.map → transaction-qfqpPVpu.mjs.map} +1 -1
  556. package/dist/transport-B4rXnSTf.mjs +135 -0
  557. package/dist/transport-B4rXnSTf.mjs.map +1 -0
  558. package/dist/{transport-B7PPP2CC.d.mts → transport-k7YjfmEn.d.mts} +1 -1
  559. package/dist/{transport-B7PPP2CC.d.mts.map → transport-k7YjfmEn.d.mts.map} +1 -1
  560. package/dist/{trusted-proxy-B4AfnoAp.mjs → trusted-proxy-DY1_UqHr.mjs} +1 -1
  561. package/dist/{trusted-proxy-B4AfnoAp.mjs.map → trusted-proxy-DY1_UqHr.mjs.map} +1 -1
  562. package/dist/{types-CPAPl93j.d.mts → types-CIKX2HO5.d.mts} +2 -2
  563. package/dist/{types-CPAPl93j.d.mts.map → types-CIKX2HO5.d.mts.map} +1 -1
  564. package/dist/{types-D4kUqbHh.d.mts → types-CKNXt63n.d.mts} +1 -1
  565. package/dist/{types-D4kUqbHh.d.mts.map → types-CKNXt63n.d.mts.map} +1 -1
  566. package/dist/{types-DTniiNto.d.mts → types-CWGYDYqF.d.mts} +2 -2
  567. package/dist/{types-DTniiNto.d.mts.map → types-CWGYDYqF.d.mts.map} +1 -1
  568. package/dist/{types-BH8-30hc.d.mts → types-CgvhU-hF.d.mts} +1 -1
  569. package/dist/{types-BH8-30hc.d.mts.map → types-CgvhU-hF.d.mts.map} +1 -1
  570. package/dist/{types-BFgrqwSk.d.mts → types-CmivgZbp.d.mts} +1 -1
  571. package/dist/{types-BFgrqwSk.d.mts.map → types-CmivgZbp.d.mts.map} +1 -1
  572. package/dist/{types-BPzXTV9x.d.mts → types-Czg1S3gB.d.mts} +9 -1
  573. package/dist/{types-BPzXTV9x.d.mts.map → types-Czg1S3gB.d.mts.map} +1 -1
  574. package/dist/types-DCNNfeCv.d.mts +124 -0
  575. package/dist/types-DCNNfeCv.d.mts.map +1 -0
  576. package/dist/{types-BUUVn1zr.d.mts → types-DPCpkzvS.d.mts} +1 -1
  577. package/dist/{types-BUUVn1zr.d.mts.map → types-DPCpkzvS.d.mts.map} +1 -1
  578. package/dist/{types-S15DXXNi.d.mts → types-DXLVzV2w.d.mts} +1 -1
  579. package/dist/{types-S15DXXNi.d.mts.map → types-DXLVzV2w.d.mts.map} +1 -1
  580. package/dist/{types-BXSUSAjt.mjs → types-DXOIbece.mjs} +3 -3
  581. package/dist/{types-BXSUSAjt.mjs.map → types-DXOIbece.mjs.map} +1 -1
  582. package/dist/{types-DpFmlNyB.mjs → types-DYF2_Vf4.mjs} +1 -1
  583. package/dist/{types-DpFmlNyB.mjs.map → types-DYF2_Vf4.mjs.map} +1 -1
  584. package/dist/{types-DZk_y-MU.mjs → types-tM44hEcf.mjs} +1 -1
  585. package/dist/{types-DZk_y-MU.mjs.map → types-tM44hEcf.mjs.map} +1 -1
  586. package/dist/{user-C0um7wrg.mjs → user-Db-Rti_z.mjs} +3 -3
  587. package/dist/{user-C0um7wrg.mjs.map → user-Db-Rti_z.mjs.map} +1 -1
  588. package/dist/{utils-C4Ih4DML.mjs → utils-LbHcSRTj.mjs} +2 -2
  589. package/dist/{utils-C4Ih4DML.mjs.map → utils-LbHcSRTj.mjs.map} +1 -1
  590. package/dist/{validate-Bz4vqcX1.mjs → validate-Bwl64sxv.mjs} +3 -3
  591. package/dist/{validate-Bz4vqcX1.mjs.map → validate-Bwl64sxv.mjs.map} +1 -1
  592. package/dist/{validate-CNwkPWzz.d.mts → validate-CE2M0nvx.d.mts} +5 -5
  593. package/dist/{validate-CNwkPWzz.d.mts.map → validate-CE2M0nvx.d.mts.map} +1 -1
  594. package/dist/{validation-DgGTJm3u.mjs → validation-C_yOvFaO.mjs} +6 -6
  595. package/dist/{validation-DgGTJm3u.mjs.map → validation-C_yOvFaO.mjs.map} +1 -1
  596. package/dist/version-RnYXYjzD.mjs +7 -0
  597. package/dist/{version-D-5txk2m.mjs.map → version-RnYXYjzD.mjs.map} +1 -1
  598. package/dist/{widgets-DZfmAbE4.mjs → widgets-8GONuRHo.mjs} +4 -4
  599. package/dist/{widgets-DZfmAbE4.mjs.map → widgets-8GONuRHo.mjs.map} +1 -1
  600. package/dist/{zod-generator-Djo_VHCt.mjs → zod-generator-D481JjzD.mjs} +3 -3
  601. package/dist/{zod-generator-Djo_VHCt.mjs.map → zod-generator-D481JjzD.mjs.map} +1 -1
  602. package/package.json +18 -6
  603. package/src/api/handlers/api-tokens.ts +19 -0
  604. package/src/api/handlers/comment-reactions.ts +165 -0
  605. package/src/api/handlers/redirects.ts +24 -13
  606. package/src/api/handlers/schema.ts +8 -0
  607. package/src/api/schemas/comments.ts +10 -0
  608. package/src/api/schemas/redirects.ts +11 -4
  609. package/src/astro/image-endpoint.ts +84 -0
  610. package/src/astro/index.ts +6 -0
  611. package/src/astro/integration/index.ts +127 -30
  612. package/src/astro/integration/routes.ts +51 -9
  613. package/src/astro/integration/runtime.ts +65 -1
  614. package/src/astro/integration/virtual-modules.ts +32 -0
  615. package/src/astro/integration/vite-config.ts +16 -0
  616. package/src/astro/middleware/auth.ts +4 -3
  617. package/src/astro/middleware/redirect.ts +12 -0
  618. package/src/astro/middleware/stream-end-metrics.ts +11 -1
  619. package/src/astro/middleware.ts +41 -3
  620. package/src/astro/object-cache/adapters.ts +50 -0
  621. package/src/astro/prefetch.ts +77 -0
  622. package/src/astro/routes/api/comments/[collection]/[contentId]/reactions.ts +97 -0
  623. package/src/astro/routes/api/setup/dev-bypass.ts +5 -1
  624. package/src/astro/routes/api/snapshot.ts +3 -1
  625. package/src/astro/session-user.ts +57 -0
  626. package/src/astro/types.ts +1 -0
  627. package/src/bylines/field-defs-cache.ts +70 -20
  628. package/src/cli/commands/doctor.ts +1 -1
  629. package/src/comments/query.ts +78 -7
  630. package/src/comments/ranking.ts +58 -0
  631. package/src/components/Comments.astro +136 -1
  632. package/src/config/secrets.ts +28 -14
  633. package/src/database/instrumentation.ts +21 -1
  634. package/src/database/migrations/044_comment_reactions.ts +56 -0
  635. package/src/database/migrations/runner.ts +2 -0
  636. package/src/database/repositories/byline.ts +13 -0
  637. package/src/database/repositories/comment-reaction.ts +132 -0
  638. package/src/database/repositories/comment.ts +10 -0
  639. package/src/database/repositories/content.ts +25 -3
  640. package/src/database/repositories/menu.ts +13 -1
  641. package/src/database/repositories/seo.ts +3 -0
  642. package/src/database/repositories/taxonomy.ts +13 -1
  643. package/src/database/types.ts +9 -0
  644. package/src/emdash-runtime.ts +23 -9
  645. package/src/index.ts +22 -0
  646. package/src/mcp/server.ts +307 -20
  647. package/src/media/image-endpoint.ts +167 -0
  648. package/src/menus/index.ts +11 -4
  649. package/src/object-cache/codec.ts +73 -0
  650. package/src/object-cache/index.ts +495 -0
  651. package/src/object-cache/memory.ts +91 -0
  652. package/src/object-cache/types.ts +124 -0
  653. package/src/plugins/adapt-sandbox-entry.ts +11 -1
  654. package/src/query.ts +196 -17
  655. package/src/redirects/status.ts +27 -0
  656. package/src/schema/query.ts +11 -4
  657. package/src/settings/index.ts +30 -17
  658. package/src/taxonomies/index.ts +237 -165
  659. package/src/utils/{isolate-cache.ts → single-flight-cache.ts} +26 -21
  660. package/src/virtual-modules.d.ts +11 -0
  661. package/dist/api-DStv36ik.mjs.map +0 -1
  662. package/dist/api-tokens-DPfhPu5V.mjs.map +0 -1
  663. package/dist/byline-DUx48sJp.mjs.map +0 -1
  664. package/dist/byline-fields-DbibsvTl.d.mts.map +0 -1
  665. package/dist/comment-sqQxNpN3.mjs.map +0 -1
  666. package/dist/content-BIlVx-RX.mjs.map +0 -1
  667. package/dist/index-B1keaX5Y.d.mts.map +0 -1
  668. package/dist/menus-DX4_E01q.mjs.map +0 -1
  669. package/dist/menus-DrQLusqj.mjs.map +0 -1
  670. package/dist/query-CbUcI4Xk.mjs.map +0 -1
  671. package/dist/redirects-CCbCqCCd.mjs.map +0 -1
  672. package/dist/redirects-DxVoR7PI.mjs.map +0 -1
  673. package/dist/runner--4wMWwKM.mjs.map +0 -1
  674. package/dist/schema-C1E70ug_.mjs.map +0 -1
  675. package/dist/secrets-ChPTmy9x.mjs.map +0 -1
  676. package/dist/seo-B5e6y9Wk.mjs.map +0 -1
  677. package/dist/settings-DfxiWY_s.mjs +0 -411
  678. package/dist/settings-DfxiWY_s.mjs.map +0 -1
  679. package/dist/taxonomies-BdAmbOwx.mjs.map +0 -1
  680. package/dist/taxonomy-CdllE4oq.mjs.map +0 -1
  681. package/dist/transport-CmpLD7W3.mjs.map +0 -1
  682. package/dist/version-D-5txk2m.mjs +0 -7
  683. /package/dist/{api-tokens-Oq39ba-Z.mjs → api-tokens-BVH-H8Z9.mjs} +0 -0
  684. /package/dist/{ssrf-BvgVcfNQ.mjs → ssrf-Cz1e2QPn.mjs} +0 -0
  685. /package/dist/{types-CZI4E3qG.mjs → types-Bfr2Pj6z.mjs} +0 -0
@@ -1,10 +1,12 @@
1
- import "../../../base64-CqR-7kqF.mjs";
2
- import "../../../types-BXSUSAjt.mjs";
3
- import { t as apiError } from "../../../error-RwM4dD35.mjs";
4
- import { En as contentBylineInputSchema, ln as contentSeoInput } from "../../../redirects-CCbCqCCd.mjs";
5
- import "../../../byline-fields-8TMtkBnH.mjs";
1
+ import "../../../base64-CmWvODNW.mjs";
2
+ import "../../../types-DXOIbece.mjs";
3
+ import { t as apiError } from "../../../error-BQ1pxs0L.mjs";
4
+ import { Dn as contentBylineInputSchema, Tn as bylineUpdateBody, un as contentSeoInput, yn as bylineCreateBody } from "../../../redirects-DUvXgzCX.mjs";
5
+ import "../../../byline-fields-53i9Et0x.mjs";
6
+ import "../../../status-CB2basWJ.mjs";
6
7
  import "../../../api/schemas/index.mjs";
7
- import { i as hasScope } from "../../../api-tokens-Oq39ba-Z.mjs";
8
+ import { i as hasScope } from "../../../api-tokens-BVH-H8Z9.mjs";
9
+ import { n as convertDataForWrite, t as convertDataForRead } from "../../../portable-text-BIFhrU6T.mjs";
8
10
  import { z } from "zod";
9
11
  import { Role, canActOnOwn, hasPermission } from "@emdash-cms/auth";
10
12
  import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
@@ -153,6 +155,40 @@ function getExtra(extra) {
153
155
  function getEmDash(extra) {
154
156
  return getExtra(extra).emdash;
155
157
  }
158
+ async function getCollectionFields(ec, collection) {
159
+ try {
160
+ const { SchemaRegistry } = await import("../../../schema-5z2Jfnbm.mjs").then((n) => n.t);
161
+ const col = await new SchemaRegistry(ec.db).getCollectionWithFields(collection);
162
+ return col ? col.fields : null;
163
+ } catch {
164
+ return null;
165
+ }
166
+ }
167
+ /**
168
+ * Convert markdown strings to Portable Text for `portableText` fields on write.
169
+ * Non-string values pass through, so callers may still send Portable Text. If
170
+ * the schema can't be loaded, data is returned unchanged for the handler to
171
+ * validate.
172
+ */
173
+ async function convertWriteData(ec, collection, data) {
174
+ const fields = await getCollectionFields(ec, collection);
175
+ if (!fields) return data;
176
+ return convertDataForWrite(data, fields);
177
+ }
178
+ /**
179
+ * Convert `portableText` field values on each item's `data` to markdown,
180
+ * mutating in place. Inverse of {@link convertWriteData}, gated on the read
181
+ * tools' `markdown` argument.
182
+ */
183
+ async function applyReadMarkdown(ec, collection, items) {
184
+ const fields = await getCollectionFields(ec, collection);
185
+ if (!fields) return;
186
+ for (const item of items) if (item.data && typeof item.data === "object") item.data = convertDataForRead(item.data, fields, false);
187
+ }
188
+ async function invalidateBylines() {
189
+ const { invalidateBylineCache } = await import("../../../bylines-CCO1CYnH.mjs").then((n) => n.t);
190
+ invalidateBylineCache();
191
+ }
156
192
  /**
157
193
  * Enforce a scope requirement on the current request.
158
194
  *
@@ -259,21 +295,27 @@ function createMcpServer() {
259
295
  cursor: z.string().min(1).max(2048).optional().describe("Pagination cursor from a previous response"),
260
296
  orderBy: z.string().optional().describe("Field to sort by (e.g. 'created_at', 'updated_at')"),
261
297
  order: z.enum(["asc", "desc"]).optional().describe("Sort direction (default 'desc')"),
262
- locale: z.string().optional().describe("Filter by locale (e.g. 'en', 'fr'). Only relevant when i18n is enabled.")
298
+ locale: z.string().optional().describe("Filter by locale (e.g. 'en', 'fr'). Only relevant when i18n is enabled."),
299
+ markdown: z.boolean().optional().describe("Return rich text (portableText) fields as Markdown strings instead of Portable Text arrays (default false).")
263
300
  }),
264
301
  annotations: { readOnlyHint: true }
265
302
  }, async (args, extra) => {
266
303
  requireScope(extra, "content:read");
267
304
  const ec = getEmDash(extra);
268
305
  const status = canReadDrafts(extra) ? args.status : "published";
269
- return unwrap(await ec.handleContentList(args.collection, {
306
+ const result = await ec.handleContentList(args.collection, {
270
307
  status,
271
308
  limit: args.limit,
272
309
  cursor: args.cursor,
273
310
  orderBy: args.orderBy,
274
311
  order: args.order,
275
312
  locale: args.locale
276
- }));
313
+ });
314
+ if (result.success && args.markdown) {
315
+ const payload = result.data;
316
+ if (payload && typeof payload === "object" && "items" in payload && Array.isArray(payload.items)) await applyReadMarkdown(ec, args.collection, payload.items);
317
+ }
318
+ return unwrap(result);
277
319
  });
278
320
  server.registerTool("content_get", {
279
321
  title: "Get Content",
@@ -281,12 +323,14 @@ function createMcpServer() {
281
323
  inputSchema: z.object({
282
324
  collection: z.string().describe("Collection slug (e.g. 'posts', 'pages')"),
283
325
  id: z.string().describe("Content item ID (ULID) or slug"),
284
- locale: z.string().optional().describe("Locale to scope slug lookup (e.g. 'fr'). Only affects slug resolution; IDs are globally unique.")
326
+ locale: z.string().optional().describe("Locale to scope slug lookup (e.g. 'fr'). Only affects slug resolution; IDs are globally unique."),
327
+ markdown: z.boolean().optional().describe("Return rich text (portableText) fields as Markdown strings instead of Portable Text arrays (default false).")
285
328
  }),
286
329
  annotations: { readOnlyHint: true }
287
330
  }, async (args, extra) => {
288
331
  requireScope(extra, "content:read");
289
- const result = await getEmDash(extra).handleContentGet(args.collection, args.id, args.locale);
332
+ const ec = getEmDash(extra);
333
+ const result = await ec.handleContentGet(args.collection, args.id, args.locale);
290
334
  if (result.success && !canReadDrafts(extra)) {
291
335
  const data = result.data && typeof result.data === "object" ? result.data : void 0;
292
336
  const item = data?.item && typeof data.item === "object" ? data.item : void 0;
@@ -298,18 +342,20 @@ function createMcpServer() {
298
342
  }
299
343
  });
300
344
  }
345
+ if (result.success && args.markdown && result.data?.item) await applyReadMarkdown(ec, args.collection, [result.data.item]);
301
346
  return unwrap(result);
302
347
  });
303
348
  server.registerTool("content_create", {
304
349
  title: "Create Content",
305
- description: "Create a new content item in a collection. The 'data' object should contain field values matching the collection's schema (use schema_get_collection to check). Rich text fields accept Portable Text JSON arrays. A slug is auto-generated if not provided. Items are created as 'draft' by default — use content_publish to make them live.",
350
+ description: "Create a new content item in a collection. The 'data' object should contain field values matching the collection's schema (use schema_get_collection to check). For rich text (portableText) fields, pass a Markdown string — converted to Portable Text automatically; prefer this. Pass a Portable Text JSON array only for complex content Markdown can't express (custom blocks, embeds). A slug is auto-generated if not provided. Items are created as 'draft' by default — use content_publish to make them live.",
306
351
  inputSchema: z.object({
307
352
  collection: z.string().describe("Collection slug (e.g. 'posts', 'pages')"),
308
353
  data: z.record(z.string(), z.unknown()).describe("Field values as key-value pairs matching the collection schema"),
309
354
  slug: z.string().optional().describe("URL slug (auto-generated from title if omitted)"),
310
355
  status: z.enum(["draft", "published"]).optional().describe("Initial status (default 'draft'). Requires publish permission."),
311
356
  locale: z.string().optional().describe("Locale for this content (e.g. 'fr'). Defaults to default locale."),
312
- translationOf: z.string().optional().describe("ID of the content item this is a translation of. Links items in the same translation group.")
357
+ translationOf: z.string().optional().describe("ID of the content item this is a translation of. Links items in the same translation group."),
358
+ bylines: z.array(contentBylineInputSchema).optional().describe("Bylines to credit. Each entry references an existing byline by id (see byline_list / byline_create) with an optional roleLabel. The first entry becomes the primary byline.")
313
359
  }),
314
360
  annotations: { destructiveHint: false }
315
361
  }, async (args, extra) => {
@@ -321,17 +367,19 @@ function createMcpServer() {
321
367
  if (!source.success) return unwrap(source);
322
368
  requireOwnership(extra, extractContentAuthorId(source.data), "content:edit_own", "content:edit_any");
323
369
  }
370
+ const data = await convertWriteData(emdash, args.collection, args.data);
324
371
  if (args.status === "published") {
325
372
  if (!hasPermission({
326
373
  id: userId,
327
374
  role: getExtra(extra).userRole
328
375
  }, "content:publish_own")) throw new EmDashAuthError("Insufficient permissions: publishing requires content:publish_own", "INSUFFICIENT_PERMISSIONS");
329
376
  const result = await emdash.handleContentCreate(args.collection, {
330
- data: args.data,
377
+ data,
331
378
  slug: args.slug,
332
379
  authorId: userId,
333
380
  locale: args.locale,
334
- translationOf: args.translationOf
381
+ translationOf: args.translationOf,
382
+ bylines: args.bylines
335
383
  });
336
384
  if (!result.success) return unwrap(result);
337
385
  const itemId = extractContentId(result.data);
@@ -339,16 +387,17 @@ function createMcpServer() {
339
387
  return unwrap(result);
340
388
  }
341
389
  return unwrap(await emdash.handleContentCreate(args.collection, {
342
- data: args.data,
390
+ data,
343
391
  slug: args.slug,
344
392
  authorId: userId,
345
393
  locale: args.locale,
346
- translationOf: args.translationOf
394
+ translationOf: args.translationOf,
395
+ bylines: args.bylines
347
396
  }));
348
397
  });
349
398
  server.registerTool("content_update", {
350
399
  title: "Update Content",
351
- description: "Update an existing content item. Only include fields you want to change in the 'data' object — unspecified fields are left unchanged. Pass the _rev token from content_get to enable optimistic concurrency checking (the update fails if the item was modified since you read it). `seo` and `bylines` are persisted alongside the field updates in a single transaction. `publishedAt` requires the content:publish_any permission and is useful for migrations or correcting historical dates.",
400
+ description: "Update an existing content item. Only include fields you want to change in the 'data' object — unspecified fields are left unchanged. Rich text (portableText) fields accept a Markdown string (recommended, converted automatically); use a Portable Text JSON array only for complex content Markdown can't express (custom blocks, embeds). Pass the _rev token from content_get to enable optimistic concurrency checking (the update fails if the item was modified since you read it). `seo` and `bylines` are persisted alongside the field updates in a single transaction. `publishedAt` requires the content:publish_any permission and is useful for migrations or correcting historical dates.",
352
401
  inputSchema: z.object({
353
402
  collection: z.string().describe("Collection slug"),
354
403
  id: z.string().describe("Content item ID or slug"),
@@ -372,6 +421,7 @@ function createMcpServer() {
372
421
  if (!existing.success) return unwrap(existing);
373
422
  const ownerId = extractContentAuthorId(existing.data);
374
423
  requireOwnership(extra, ownerId, "content:edit_own", "content:edit_any");
424
+ const data = args.data ? await convertWriteData(emdash, args.collection, args.data) : args.data;
375
425
  if (args.publishedAt !== void 0) {
376
426
  if (!hasPermission({
377
427
  id: userId,
@@ -383,7 +433,7 @@ function createMcpServer() {
383
433
  requireOwnership(extra, ownerId, "content:publish_own", "content:publish_any");
384
434
  if (args.data || args.slug || args.seo !== void 0 || args.bylines !== void 0 || args.publishedAt !== void 0) {
385
435
  const updateResult = await emdash.handleContentUpdate(args.collection, resolvedId, {
386
- data: args.data,
436
+ data,
387
437
  slug: args.slug,
388
438
  authorId: userId,
389
439
  locale: args.locale,
@@ -400,7 +450,7 @@ function createMcpServer() {
400
450
  requireOwnership(extra, ownerId, "content:publish_own", "content:publish_any");
401
451
  if (args.data || args.slug || args.seo !== void 0 || args.bylines !== void 0 || args.publishedAt !== void 0) {
402
452
  const updateResult = await emdash.handleContentUpdate(args.collection, resolvedId, {
403
- data: args.data,
453
+ data,
404
454
  slug: args.slug,
405
455
  authorId: userId,
406
456
  locale: args.locale,
@@ -414,7 +464,7 @@ function createMcpServer() {
414
464
  return unwrap(await emdash.handleContentUnpublish(args.collection, resolvedId));
415
465
  }
416
466
  return unwrap(await emdash.handleContentUpdate(args.collection, resolvedId, {
417
- data: args.data,
467
+ data,
418
468
  slug: args.slug,
419
469
  authorId: userId,
420
470
  locale: args.locale,
@@ -635,6 +685,124 @@ function createMcpServer() {
635
685
  }
636
686
  return unwrap(result);
637
687
  });
688
+ server.registerTool("byline_list", {
689
+ title: "List Bylines",
690
+ description: "List bylines (author/contributor credits) with optional filtering and pagination. Bylines are standalone records referenced by content items; use the returned id with content_create/content_update or byline_get. Use the nextCursor value from the response to fetch the next page.",
691
+ inputSchema: z.object({
692
+ search: z.string().optional().describe("Filter by display name or slug substring"),
693
+ isGuest: z.boolean().optional().describe("Filter by guest (true) or linked-user (false)"),
694
+ userId: z.string().optional().describe("Filter to the byline linked to a CMS user ID"),
695
+ locale: z.string().optional().describe("Filter by locale (omit for all)"),
696
+ limit: z.number().int().min(1).max(100).optional().describe("Max items (default 50)"),
697
+ cursor: z.string().min(1).max(2048).optional().describe("Pagination cursor")
698
+ }),
699
+ annotations: { readOnlyHint: true }
700
+ }, async (args, extra) => {
701
+ requireScope(extra, "content:read");
702
+ const ec = getEmDash(extra);
703
+ try {
704
+ const { BylineRepository } = await import("../../../byline-CC0WS4Gu.mjs").then((n) => n.n);
705
+ return jsonResult(await new BylineRepository(ec.db).findMany({
706
+ search: args.search,
707
+ isGuest: args.isGuest,
708
+ userId: args.userId,
709
+ locale: args.locale,
710
+ limit: args.limit,
711
+ cursor: args.cursor
712
+ }));
713
+ } catch (error) {
714
+ return respondHandlerError(error, "BYLINE_LIST_ERROR");
715
+ }
716
+ });
717
+ server.registerTool("byline_get", {
718
+ title: "Get Byline",
719
+ description: "Get a single byline by its ID, including bio, avatar, website, linked user, and any custom fields.",
720
+ inputSchema: z.object({ id: z.string().describe("Byline ID") }),
721
+ annotations: { readOnlyHint: true }
722
+ }, async (args, extra) => {
723
+ requireScope(extra, "content:read");
724
+ const ec = getEmDash(extra);
725
+ try {
726
+ const { BylineRepository } = await import("../../../byline-CC0WS4Gu.mjs").then((n) => n.n);
727
+ const byline = await new BylineRepository(ec.db).findById(args.id);
728
+ if (!byline) return respondError("NOT_FOUND", `Byline '${args.id}' not found`);
729
+ return jsonResult(byline);
730
+ } catch (error) {
731
+ return respondHandlerError(error, "BYLINE_GET_ERROR");
732
+ }
733
+ });
734
+ server.registerTool("byline_create", {
735
+ title: "Create Byline",
736
+ description: "Create a new byline (author/contributor credit). The slug must be unique and contain only lowercase letters, digits, and hyphens. Link the byline to a CMS user via userId, or leave it as a standalone guest credit. The returned id can then be passed to content_create/content_update bylines.",
737
+ inputSchema: z.object({ ...bylineCreateBody.shape }),
738
+ annotations: { destructiveHint: false }
739
+ }, async (args, extra) => {
740
+ requireScope(extra, "content:write");
741
+ requireRole(extra, Role.EDITOR);
742
+ const ec = getEmDash(extra);
743
+ try {
744
+ const { handleBylineCreate } = await import("../../../bylines-DGekMGGm.mjs").then((n) => n.t);
745
+ const result = await handleBylineCreate(ec.db, args);
746
+ if (result.success) await invalidateBylines();
747
+ return unwrap(result);
748
+ } catch (error) {
749
+ return respondHandlerError(error, "BYLINE_CREATE_ERROR");
750
+ }
751
+ });
752
+ server.registerTool("byline_update", {
753
+ title: "Update Byline",
754
+ description: "Update an existing byline. Any field can be omitted to leave it unchanged. Renaming the slug must not collide with another byline.",
755
+ inputSchema: z.object({
756
+ id: z.string().describe("Byline ID to update"),
757
+ ...bylineUpdateBody.shape
758
+ })
759
+ }, async (args, extra) => {
760
+ requireScope(extra, "content:write");
761
+ requireRole(extra, Role.EDITOR);
762
+ const ec = getEmDash(extra);
763
+ try {
764
+ const { handleBylineUpdate } = await import("../../../bylines-DGekMGGm.mjs").then((n) => n.t);
765
+ const { id, ...input } = args;
766
+ const result = await handleBylineUpdate(ec.db, id, input);
767
+ if (result.success) await invalidateBylines();
768
+ return unwrap(result);
769
+ } catch (error) {
770
+ return respondHandlerError(error, "BYLINE_UPDATE_ERROR");
771
+ }
772
+ });
773
+ server.registerTool("byline_delete", {
774
+ title: "Delete Byline",
775
+ description: "Permanently delete a byline. Any content crediting this byline loses the association, and it is cleared as a primary byline where set.",
776
+ inputSchema: z.object({ id: z.string().describe("Byline ID to delete") }),
777
+ annotations: { destructiveHint: true }
778
+ }, async (args, extra) => {
779
+ requireScope(extra, "content:write");
780
+ requireRole(extra, Role.EDITOR);
781
+ const ec = getEmDash(extra);
782
+ try {
783
+ const { BylineRepository } = await import("../../../byline-CC0WS4Gu.mjs").then((n) => n.n);
784
+ if (!await new BylineRepository(ec.db).delete(args.id)) return respondError("NOT_FOUND", `Byline '${args.id}' not found`);
785
+ await invalidateBylines();
786
+ return jsonResult({ deleted: args.id });
787
+ } catch (error) {
788
+ return respondHandlerError(error, "BYLINE_DELETE_ERROR");
789
+ }
790
+ });
791
+ server.registerTool("byline_translations", {
792
+ title: "List Byline Translations",
793
+ description: "Return every locale variant of a byline, identified via its shared translation_group.",
794
+ inputSchema: z.object({ id: z.string().describe("Byline id (or translation_group)") }),
795
+ annotations: { readOnlyHint: true }
796
+ }, async (args, extra) => {
797
+ requireScope(extra, "content:read");
798
+ const ec = getEmDash(extra);
799
+ try {
800
+ const { handleBylineTranslations } = await import("../../../bylines-DGekMGGm.mjs").then((n) => n.t);
801
+ return unwrap(await handleBylineTranslations(ec.db, args.id));
802
+ } catch (error) {
803
+ return respondHandlerError(error, "BYLINE_TRANSLATIONS_ERROR");
804
+ }
805
+ });
638
806
  server.registerTool("schema_list_collections", {
639
807
  title: "List Collections",
640
808
  description: "List all content collections defined in the CMS. Each collection represents a content type (e.g. posts, pages, products) with its own schema and database table. Returns slug, label, supported features, and timestamps.",
@@ -645,7 +813,7 @@ function createMcpServer() {
645
813
  requireRole(extra, Role.EDITOR);
646
814
  const ec = getEmDash(extra);
647
815
  try {
648
- const { SchemaRegistry } = await import("../../../schema-C1E70ug_.mjs").then((n) => n.t);
816
+ const { SchemaRegistry } = await import("../../../schema-5z2Jfnbm.mjs").then((n) => n.t);
649
817
  return jsonResult({ items: await new SchemaRegistry(ec.db).listCollections() });
650
818
  } catch (error) {
651
819
  return respondHandlerError(error, "SCHEMA_LIST_ERROR");
@@ -661,7 +829,7 @@ function createMcpServer() {
661
829
  requireRole(extra, Role.EDITOR);
662
830
  const ec = getEmDash(extra);
663
831
  try {
664
- const { SchemaRegistry } = await import("../../../schema-C1E70ug_.mjs").then((n) => n.t);
832
+ const { SchemaRegistry } = await import("../../../schema-5z2Jfnbm.mjs").then((n) => n.t);
665
833
  const collection = await new SchemaRegistry(ec.db).getCollectionWithFields(args.slug);
666
834
  if (!collection) return respondError("NOT_FOUND", `Collection '${args.slug}' not found`);
667
835
  return jsonResult(collection);
@@ -691,7 +859,7 @@ function createMcpServer() {
691
859
  requireRole(extra, Role.ADMIN);
692
860
  const ec = getEmDash(extra);
693
861
  try {
694
- const { SchemaRegistry } = await import("../../../schema-C1E70ug_.mjs").then((n) => n.t);
862
+ const { SchemaRegistry } = await import("../../../schema-5z2Jfnbm.mjs").then((n) => n.t);
695
863
  const collection = await new SchemaRegistry(ec.db).createCollection({
696
864
  slug: args.slug,
697
865
  label: args.label,
@@ -719,7 +887,7 @@ function createMcpServer() {
719
887
  requireRole(extra, Role.ADMIN);
720
888
  const ec = getEmDash(extra);
721
889
  try {
722
- const { SchemaRegistry } = await import("../../../schema-C1E70ug_.mjs").then((n) => n.t);
890
+ const { SchemaRegistry } = await import("../../../schema-5z2Jfnbm.mjs").then((n) => n.t);
723
891
  await new SchemaRegistry(ec.db).deleteCollection(args.slug, { force: args.force });
724
892
  ec.invalidateUrlPatternCache();
725
893
  return jsonResult({ deleted: args.slug });
@@ -773,7 +941,7 @@ function createMcpServer() {
773
941
  requireRole(extra, Role.ADMIN);
774
942
  const ec = getEmDash(extra);
775
943
  try {
776
- const { SchemaRegistry } = await import("../../../schema-C1E70ug_.mjs").then((n) => n.t);
944
+ const { SchemaRegistry } = await import("../../../schema-5z2Jfnbm.mjs").then((n) => n.t);
777
945
  return jsonResult(await new SchemaRegistry(ec.db).createField(args.collection, {
778
946
  slug: args.slug,
779
947
  label: args.label,
@@ -803,7 +971,7 @@ function createMcpServer() {
803
971
  requireRole(extra, Role.ADMIN);
804
972
  const ec = getEmDash(extra);
805
973
  try {
806
- const { SchemaRegistry } = await import("../../../schema-C1E70ug_.mjs").then((n) => n.t);
974
+ const { SchemaRegistry } = await import("../../../schema-5z2Jfnbm.mjs").then((n) => n.t);
807
975
  await new SchemaRegistry(ec.db).deleteField(args.collection, args.fieldSlug);
808
976
  return jsonResult({
809
977
  deleted: args.fieldSlug,
@@ -924,7 +1092,7 @@ function createMcpServer() {
924
1092
  requireScope(extra, "content:read");
925
1093
  const ec = getEmDash(extra);
926
1094
  try {
927
- const { searchWithDb } = await import("../../../search-B3SGZw91.mjs").then((n) => n.t);
1095
+ const { searchWithDb } = await import("../../../search-D9FkoM-k.mjs").then((n) => n.t);
928
1096
  return jsonResult(await searchWithDb(ec.db, args.query, {
929
1097
  collections: args.collections,
930
1098
  locale: args.locale,
@@ -943,7 +1111,7 @@ function createMcpServer() {
943
1111
  requireScope(extra, "content:read");
944
1112
  const ec = getEmDash(extra);
945
1113
  try {
946
- const { handleTaxonomyList } = await import("../../../taxonomies-BILwiyGk.mjs").then((n) => n.l);
1114
+ const { handleTaxonomyList } = await import("../../../taxonomies-CJmkEpdS.mjs").then((n) => n.l);
947
1115
  return unwrap(await handleTaxonomyList(ec.db, { locale: args.locale }));
948
1116
  } catch (error) {
949
1117
  return respondHandlerError(error, "TAXONOMY_LIST_ERROR");
@@ -963,12 +1131,12 @@ function createMcpServer() {
963
1131
  requireScope(extra, "content:read");
964
1132
  const ec = getEmDash(extra);
965
1133
  try {
966
- const { handleTaxonomyList } = await import("../../../taxonomies-BILwiyGk.mjs").then((n) => n.l);
1134
+ const { handleTaxonomyList } = await import("../../../taxonomies-CJmkEpdS.mjs").then((n) => n.l);
967
1135
  const listResult = await handleTaxonomyList(ec.db, { locale: args.locale });
968
1136
  if (!listResult.success) return unwrap(listResult);
969
1137
  if (!listResult.data.taxonomies.find((t) => t.name === args.taxonomy)) return respondError("NOT_FOUND", `Taxonomy '${args.taxonomy}' not found`);
970
- const { TaxonomyRepository } = await import("../../../taxonomy-CdllE4oq.mjs").then((n) => n.n);
971
- const { decodeCursor, encodeCursor, InvalidCursorError } = await import("../../../types-BXSUSAjt.mjs").then((n) => n.o);
1138
+ const { TaxonomyRepository } = await import("../../../taxonomy-B2HQuVf5.mjs").then((n) => n.n);
1139
+ const { decodeCursor, encodeCursor, InvalidCursorError } = await import("../../../types-DXOIbece.mjs").then((n) => n.o);
972
1140
  const repo = new TaxonomyRepository(ec.db);
973
1141
  const limit = Math.min(args.limit ?? 50, 100);
974
1142
  const terms = await repo.findByName(args.taxonomy, { locale: args.locale });
@@ -1022,7 +1190,7 @@ function createMcpServer() {
1022
1190
  requireRole(extra, Role.EDITOR);
1023
1191
  const ec = getEmDash(extra);
1024
1192
  try {
1025
- const { handleTermCreate } = await import("../../../taxonomies-BILwiyGk.mjs").then((n) => n.l);
1193
+ const { handleTermCreate } = await import("../../../taxonomies-CJmkEpdS.mjs").then((n) => n.l);
1026
1194
  return unwrap(await handleTermCreate(ec.db, args.taxonomy, {
1027
1195
  slug: args.slug,
1028
1196
  label: args.label,
@@ -1051,7 +1219,7 @@ function createMcpServer() {
1051
1219
  requireRole(extra, Role.EDITOR);
1052
1220
  const ec = getEmDash(extra);
1053
1221
  try {
1054
- const { handleTermUpdate } = await import("../../../taxonomies-BILwiyGk.mjs").then((n) => n.l);
1222
+ const { handleTermUpdate } = await import("../../../taxonomies-CJmkEpdS.mjs").then((n) => n.l);
1055
1223
  return unwrap(await handleTermUpdate(ec.db, args.taxonomy, args.termSlug, {
1056
1224
  slug: args.slug,
1057
1225
  label: args.label,
@@ -1075,7 +1243,7 @@ function createMcpServer() {
1075
1243
  requireRole(extra, Role.EDITOR);
1076
1244
  const ec = getEmDash(extra);
1077
1245
  try {
1078
- const { handleTermDelete } = await import("../../../taxonomies-BILwiyGk.mjs").then((n) => n.l);
1246
+ const { handleTermDelete } = await import("../../../taxonomies-CJmkEpdS.mjs").then((n) => n.l);
1079
1247
  return unwrap(await handleTermDelete(ec.db, args.taxonomy, args.termSlug));
1080
1248
  } catch (error) {
1081
1249
  return respondHandlerError(error, "TAXONOMY_TERM_DELETE_ERROR");
@@ -1090,7 +1258,7 @@ function createMcpServer() {
1090
1258
  requireScope(extra, "content:read");
1091
1259
  const ec = getEmDash(extra);
1092
1260
  try {
1093
- const { handleTermTranslations } = await import("../../../taxonomies-BILwiyGk.mjs").then((n) => n.l);
1261
+ const { handleTermTranslations } = await import("../../../taxonomies-CJmkEpdS.mjs").then((n) => n.l);
1094
1262
  return unwrap(await handleTermTranslations(ec.db, args.id));
1095
1263
  } catch (error) {
1096
1264
  return respondHandlerError(error, "TERM_TRANSLATIONS_ERROR");
@@ -1105,7 +1273,7 @@ function createMcpServer() {
1105
1273
  requireScope(extra, "content:read");
1106
1274
  const ec = getEmDash(extra);
1107
1275
  try {
1108
- const { handleMenuList } = await import("../../../menus-DX4_E01q.mjs").then((n) => n.d);
1276
+ const { handleMenuList } = await import("../../../menus-CYs0WZoL.mjs").then((n) => n.d);
1109
1277
  return unwrap(await handleMenuList(ec.db, { locale: args.locale }));
1110
1278
  } catch (error) {
1111
1279
  return respondHandlerError(error, "MENU_LIST_ERROR");
@@ -1123,7 +1291,7 @@ function createMcpServer() {
1123
1291
  requireScope(extra, "content:read");
1124
1292
  const ec = getEmDash(extra);
1125
1293
  try {
1126
- const { handleMenuGet } = await import("../../../menus-DX4_E01q.mjs").then((n) => n.d);
1294
+ const { handleMenuGet } = await import("../../../menus-CYs0WZoL.mjs").then((n) => n.d);
1127
1295
  return unwrap(await handleMenuGet(ec.db, args.name, { locale: args.locale }));
1128
1296
  } catch (error) {
1129
1297
  return respondHandlerError(error, "MENU_GET_ERROR");
@@ -1138,7 +1306,7 @@ function createMcpServer() {
1138
1306
  requireScope(extra, "content:read");
1139
1307
  const ec = getEmDash(extra);
1140
1308
  try {
1141
- const { handleMenuTranslations } = await import("../../../menus-DX4_E01q.mjs").then((n) => n.d);
1309
+ const { handleMenuTranslations } = await import("../../../menus-CYs0WZoL.mjs").then((n) => n.d);
1142
1310
  return unwrap(await handleMenuTranslations(ec.db, args.id));
1143
1311
  } catch (error) {
1144
1312
  return respondHandlerError(error, "MENU_TRANSLATIONS_ERROR");
@@ -1158,7 +1326,7 @@ function createMcpServer() {
1158
1326
  requireRole(extra, Role.EDITOR);
1159
1327
  const ec = getEmDash(extra);
1160
1328
  try {
1161
- const { handleMenuCreate } = await import("../../../menus-DX4_E01q.mjs").then((n) => n.d);
1329
+ const { handleMenuCreate } = await import("../../../menus-CYs0WZoL.mjs").then((n) => n.d);
1162
1330
  return unwrap(await handleMenuCreate(ec.db, {
1163
1331
  name: args.name,
1164
1332
  label: args.label,
@@ -1182,7 +1350,7 @@ function createMcpServer() {
1182
1350
  requireRole(extra, Role.EDITOR);
1183
1351
  const ec = getEmDash(extra);
1184
1352
  try {
1185
- const { handleMenuUpdate } = await import("../../../menus-DX4_E01q.mjs").then((n) => n.d);
1353
+ const { handleMenuUpdate } = await import("../../../menus-CYs0WZoL.mjs").then((n) => n.d);
1186
1354
  return unwrap(await handleMenuUpdate(ec.db, args.name, {
1187
1355
  label: args.label,
1188
1356
  locale: args.locale
@@ -1204,7 +1372,7 @@ function createMcpServer() {
1204
1372
  requireRole(extra, Role.EDITOR);
1205
1373
  const ec = getEmDash(extra);
1206
1374
  try {
1207
- const { handleMenuDelete } = await import("../../../menus-DX4_E01q.mjs").then((n) => n.d);
1375
+ const { handleMenuDelete } = await import("../../../menus-CYs0WZoL.mjs").then((n) => n.d);
1208
1376
  return unwrap(await handleMenuDelete(ec.db, args.name, { locale: args.locale }));
1209
1377
  } catch (error) {
1210
1378
  return respondHandlerError(error, "MENU_DELETE_ERROR");
@@ -1239,7 +1407,7 @@ function createMcpServer() {
1239
1407
  requireRole(extra, Role.EDITOR);
1240
1408
  const ec = getEmDash(extra);
1241
1409
  try {
1242
- const { handleMenuSetItems } = await import("../../../menus-DX4_E01q.mjs").then((n) => n.d);
1410
+ const { handleMenuSetItems } = await import("../../../menus-CYs0WZoL.mjs").then((n) => n.d);
1243
1411
  return unwrap(await handleMenuSetItems(ec.db, args.name, args.items, { locale: args.locale }));
1244
1412
  } catch (error) {
1245
1413
  return respondHandlerError(error, "MENU_SET_ITEMS_ERROR");
@@ -1286,7 +1454,7 @@ function createMcpServer() {
1286
1454
  requireRole(extra, Role.EDITOR);
1287
1455
  const ec = getEmDash(extra);
1288
1456
  try {
1289
- const { handleSettingsGet } = await import("../../../settings-Cv47v9u8.mjs").then((n) => n.r);
1457
+ const { handleSettingsGet } = await import("../../../settings-DUrVDN0c.mjs").then((n) => n.r);
1290
1458
  return unwrap(await handleSettingsGet(ec.db, ec.storage));
1291
1459
  } catch (error) {
1292
1460
  return respondHandlerError(error, "SETTINGS_READ_ERROR");
@@ -1312,7 +1480,7 @@ function createMcpServer() {
1312
1480
  requireRole(extra, Role.ADMIN);
1313
1481
  const ec = getEmDash(extra);
1314
1482
  try {
1315
- const { handleSettingsUpdate } = await import("../../../settings-Cv47v9u8.mjs").then((n) => n.r);
1483
+ const { handleSettingsUpdate } = await import("../../../settings-DUrVDN0c.mjs").then((n) => n.r);
1316
1484
  return unwrap(await handleSettingsUpdate(ec.db, ec.storage, args));
1317
1485
  } catch (error) {
1318
1486
  return respondHandlerError(error, "SETTINGS_UPDATE_ERROR");