emdash 0.35.0 → 0.37.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 (971) hide show
  1. package/dist/activation-K0kGBWuJ.mjs +382 -0
  2. package/dist/activation-K0kGBWuJ.mjs.map +1 -0
  3. package/dist/{adapters-Bb1vG41D.d.mts → adapters-BDQwg236.d.mts} +6 -4
  4. package/dist/{adapters-Bb1vG41D.d.mts.map → adapters-BDQwg236.d.mts.map} +1 -1
  5. package/dist/{allowed-origins-DW7sYyqg.mjs → allowed-origins-BGglilcs.mjs} +2 -2
  6. package/dist/{allowed-origins-DW7sYyqg.mjs.map → allowed-origins-BGglilcs.mjs.map} +1 -1
  7. package/dist/api/route-utils.d.mts +3 -3
  8. package/dist/api/route-utils.mjs +23 -21
  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 +5 -5
  12. package/dist/api-Dz6rgoa3.mjs +10040 -0
  13. package/dist/api-Dz6rgoa3.mjs.map +1 -0
  14. package/dist/{api-tokens-KO24G1Fd.mjs → api-tokens-BSsQACNe.mjs} +2 -2
  15. package/dist/{api-tokens-KO24G1Fd.mjs.map → api-tokens-BSsQACNe.mjs.map} +1 -1
  16. package/dist/{apply-kUDt80-G.mjs → apply-B4SIOxR1.mjs} +34 -35
  17. package/dist/{apply-kUDt80-G.mjs.map → apply-B4SIOxR1.mjs.map} +1 -1
  18. package/dist/astro/image-endpoint.mjs +2 -2
  19. package/dist/astro/image-endpoint.mjs.map +1 -1
  20. package/dist/astro/index.d.mts +12 -12
  21. package/dist/astro/index.d.mts.map +1 -1
  22. package/dist/astro/index.mjs +128 -44
  23. package/dist/astro/index.mjs.map +1 -1
  24. package/dist/astro/middleware/auth.d.mts +10 -10
  25. package/dist/astro/middleware/auth.d.mts.map +1 -1
  26. package/dist/astro/middleware/auth.mjs +10 -7
  27. package/dist/astro/middleware/auth.mjs.map +1 -1
  28. package/dist/astro/middleware/media-usage-write-fence.mjs +2 -2
  29. package/dist/astro/middleware/redirect.mjs +4 -4
  30. package/dist/astro/middleware/request-context.mjs +3 -3
  31. package/dist/astro/middleware/setup.mjs +1 -1
  32. package/dist/astro/middleware.d.mts +11 -12
  33. package/dist/astro/middleware.d.mts.map +1 -1
  34. package/dist/astro/middleware.mjs +237 -1412
  35. package/dist/astro/middleware.mjs.map +1 -1
  36. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +6 -6
  37. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +6 -6
  38. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +3 -3
  39. package/dist/astro/routes/api/admin/api-tokens/index.d.mts.map +1 -1
  40. package/dist/astro/routes/api/admin/api-tokens/index.mjs +5 -5
  41. package/dist/astro/routes/api/admin/api-tokens/index.mjs.map +1 -1
  42. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
  43. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +9 -9
  44. package/dist/astro/routes/api/admin/byline-fields/index.mjs +9 -9
  45. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +9 -9
  46. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +16 -16
  47. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +16 -16
  48. package/dist/astro/routes/api/admin/bylines/index.mjs +16 -16
  49. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +13 -13
  50. package/dist/astro/routes/api/admin/comments/_id_.mjs +5 -5
  51. package/dist/astro/routes/api/admin/comments/bulk.mjs +10 -10
  52. package/dist/astro/routes/api/admin/comments/counts.mjs +5 -5
  53. package/dist/astro/routes/api/admin/comments/index.mjs +10 -10
  54. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +4 -4
  55. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
  56. package/dist/astro/routes/api/admin/media-usage/activation.d.mts +9 -0
  57. package/dist/astro/routes/api/admin/media-usage/activation.d.mts.map +1 -0
  58. package/dist/astro/routes/api/admin/media-usage/activation.mjs +46 -0
  59. package/dist/astro/routes/api/admin/media-usage/activation.mjs.map +1 -0
  60. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +14 -13
  61. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs.map +1 -1
  62. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +14 -13
  63. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs.map +1 -1
  64. package/dist/astro/routes/api/admin/media-usage/progress.d.mts +9 -0
  65. package/dist/astro/routes/api/admin/media-usage/progress.d.mts.map +1 -0
  66. package/dist/astro/routes/api/admin/media-usage/progress.mjs +44 -0
  67. package/dist/astro/routes/api/admin/media-usage/progress.mjs.map +1 -0
  68. package/dist/astro/routes/api/admin/media-usage/repair.mjs +16 -11
  69. package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
  70. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +14 -13
  71. package/dist/astro/routes/api/admin/media-usage/work/index.mjs.map +1 -1
  72. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +14 -13
  73. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs.map +1 -1
  74. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +4 -4
  75. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs.map +1 -1
  76. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +4 -4
  77. package/dist/astro/routes/api/admin/oauth-clients/index.mjs.map +1 -1
  78. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +55 -49
  79. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
  80. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +55 -49
  81. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
  82. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +53 -47
  83. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  84. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +4 -4
  85. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +53 -47
  86. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  87. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +54 -48
  88. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  89. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +54 -48
  90. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  91. package/dist/astro/routes/api/admin/plugins/index.mjs +53 -47
  92. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  93. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  94. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +53 -47
  95. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  96. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +54 -48
  97. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  98. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +53 -47
  99. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  100. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +54 -48
  101. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  102. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.d.mts.map +1 -1
  103. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +60 -50
  104. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  105. package/dist/astro/routes/api/admin/plugins/registry/artifact.d.mts.map +1 -1
  106. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +179 -139
  107. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  108. package/dist/astro/routes/api/admin/plugins/registry/install.d.mts.map +1 -1
  109. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +61 -51
  110. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  111. package/dist/astro/routes/api/admin/plugins/registry/verify.d.mts +8 -0
  112. package/dist/astro/routes/api/admin/plugins/registry/verify.d.mts.map +1 -0
  113. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +93 -0
  114. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -0
  115. package/dist/astro/routes/api/admin/plugins/updates.mjs +53 -47
  116. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  117. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +53 -47
  118. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  119. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  120. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +53 -47
  121. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  122. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +2 -2
  123. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
  124. package/dist/astro/routes/api/admin/users/_id_/index.mjs +7 -7
  125. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +3 -3
  126. package/dist/astro/routes/api/admin/users/index.mjs +6 -6
  127. package/dist/astro/routes/api/auth/dev-bypass.mjs +3 -3
  128. package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
  129. package/dist/astro/routes/api/auth/invite/complete.mjs +11 -11
  130. package/dist/astro/routes/api/auth/invite/index.mjs +8 -8
  131. package/dist/astro/routes/api/auth/invite/register-options.mjs +10 -10
  132. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  133. package/dist/astro/routes/api/auth/magic-link/send.mjs +10 -10
  134. package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
  135. package/dist/astro/routes/api/auth/me.d.mts.map +1 -1
  136. package/dist/astro/routes/api/auth/me.mjs +19 -9
  137. package/dist/astro/routes/api/auth/me.mjs.map +1 -1
  138. package/dist/astro/routes/api/auth/mode.mjs +2 -2
  139. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +4 -4
  140. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  141. package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -6
  142. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  143. package/dist/astro/routes/api/auth/passkey/options.mjs +12 -12
  144. package/dist/astro/routes/api/auth/passkey/register/options.mjs +10 -10
  145. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +11 -11
  146. package/dist/astro/routes/api/auth/passkey/verify.mjs +11 -11
  147. package/dist/astro/routes/api/auth/signup/complete.mjs +11 -11
  148. package/dist/astro/routes/api/auth/signup/request.mjs +10 -10
  149. package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
  150. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +14 -14
  151. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +13 -13
  152. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  153. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -1
  154. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +14 -5
  155. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
  156. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +3 -3
  157. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +2 -2
  158. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +11 -11
  159. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +13 -10
  160. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  161. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +17 -15
  162. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  163. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +17 -15
  164. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  165. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +3 -3
  166. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  167. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +8 -8
  168. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +14 -14
  169. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  170. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -1
  171. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +14 -5
  172. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
  173. package/dist/astro/routes/api/content/_collection_/_id_.mjs +8 -8
  174. package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
  175. package/dist/astro/routes/api/content/_collection_/index.mjs +8 -8
  176. package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -7
  177. package/dist/astro/routes/api/dashboard.mjs +8 -8
  178. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  179. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  180. package/dist/astro/routes/api/import/probe.mjs +17 -17
  181. package/dist/astro/routes/api/import/wordpress/analyze.mjs +2 -2
  182. package/dist/astro/routes/api/import/wordpress/execute.d.mts +11 -11
  183. package/dist/astro/routes/api/import/wordpress/execute.mjs +13 -13
  184. package/dist/astro/routes/api/import/wordpress/media.d.mts +10 -10
  185. package/dist/astro/routes/api/import/wordpress/media.mjs +11 -11
  186. package/dist/astro/routes/api/import/wordpress/prepare.mjs +9 -9
  187. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +11 -11
  188. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +12 -10
  189. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  190. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  191. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +17 -17
  192. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +11 -11
  193. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +27 -27
  194. package/dist/astro/routes/api/manifest.mjs +4 -4
  195. package/dist/astro/routes/api/manifest.mjs.map +1 -1
  196. package/dist/astro/routes/api/mcp.mjs +188 -65
  197. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  198. package/dist/astro/routes/api/media/_id_/confirm.mjs +11 -11
  199. package/dist/astro/routes/api/media/_id_/replace.d.mts +8 -0
  200. package/dist/astro/routes/api/media/_id_/replace.d.mts.map +1 -0
  201. package/dist/astro/routes/api/media/_id_/replace.mjs +91 -0
  202. package/dist/astro/routes/api/media/_id_/replace.mjs.map +1 -0
  203. package/dist/astro/routes/api/media/_id_/upload.mjs +6 -6
  204. package/dist/astro/routes/api/media/_id_/usage.mjs +18 -13
  205. package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
  206. package/dist/astro/routes/api/media/_id_.d.mts.map +1 -1
  207. package/dist/astro/routes/api/media/_id_.mjs +21 -13
  208. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  209. package/dist/astro/routes/api/media/file/_...key_.d.mts.map +1 -1
  210. package/dist/astro/routes/api/media/file/_...key_.mjs +3 -2
  211. package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
  212. package/dist/astro/routes/api/media/folders/_id_.d.mts +10 -0
  213. package/dist/astro/routes/api/media/folders/_id_.d.mts.map +1 -0
  214. package/dist/astro/routes/api/media/folders/_id_.mjs +52 -0
  215. package/dist/astro/routes/api/media/folders/_id_.mjs.map +1 -0
  216. package/dist/astro/routes/api/media/folders/index.d.mts +9 -0
  217. package/dist/astro/routes/api/media/folders/index.d.mts.map +1 -0
  218. package/dist/astro/routes/api/media/folders/index.mjs +41 -0
  219. package/dist/astro/routes/api/media/folders/index.mjs.map +1 -0
  220. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  221. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  222. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  223. package/dist/astro/routes/api/media/upload-url.mjs +16 -14
  224. package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
  225. package/dist/astro/routes/api/media.d.mts.map +1 -1
  226. package/dist/astro/routes/api/media.mjs +59 -27
  227. package/dist/astro/routes/api/media.mjs.map +1 -1
  228. package/dist/astro/routes/api/menus/_name_/items/_id_.d.mts.map +1 -1
  229. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +20 -13
  230. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  231. package/dist/astro/routes/api/menus/_name_/items.d.mts.map +1 -1
  232. package/dist/astro/routes/api/menus/_name_/items.mjs +15 -11
  233. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  234. package/dist/astro/routes/api/menus/_name_/reorder.d.mts.map +1 -1
  235. package/dist/astro/routes/api/menus/_name_/reorder.mjs +15 -11
  236. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  237. package/dist/astro/routes/api/menus/_name_/translations.d.mts.map +1 -1
  238. package/dist/astro/routes/api/menus/_name_/translations.mjs +16 -12
  239. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  240. package/dist/astro/routes/api/menus/_name_.d.mts.map +1 -1
  241. package/dist/astro/routes/api/menus/_name_.mjs +21 -14
  242. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  243. package/dist/astro/routes/api/menus/index.d.mts.map +1 -1
  244. package/dist/astro/routes/api/menus/index.mjs +15 -11
  245. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  246. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  247. package/dist/astro/routes/api/oauth/device/authorize.mjs +5 -5
  248. package/dist/astro/routes/api/oauth/device/code.mjs +8 -8
  249. package/dist/astro/routes/api/oauth/device/token.mjs +7 -7
  250. package/dist/astro/routes/api/oauth/register.mjs +2 -2
  251. package/dist/astro/routes/api/oauth/token/refresh.mjs +5 -5
  252. package/dist/astro/routes/api/oauth/token/revoke.mjs +5 -5
  253. package/dist/astro/routes/api/oauth/token.mjs +5 -5
  254. package/dist/astro/routes/api/openapi.json.mjs +253 -40
  255. package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
  256. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
  257. package/dist/astro/routes/api/redirects/404s/index.mjs +10 -10
  258. package/dist/astro/routes/api/redirects/404s/summary.mjs +10 -10
  259. package/dist/astro/routes/api/redirects/_id_.mjs +11 -11
  260. package/dist/astro/routes/api/redirects/index.mjs +11 -11
  261. package/dist/astro/routes/api/relations/_id_/index.mjs +17 -15
  262. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  263. package/dist/astro/routes/api/relations/_id_/translations.mjs +12 -10
  264. package/dist/astro/routes/api/relations/_id_/translations.mjs.map +1 -1
  265. package/dist/astro/routes/api/relations/index.mjs +17 -15
  266. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  267. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  268. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +3 -3
  269. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +53 -47
  270. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  271. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +53 -47
  272. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  273. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +53 -47
  274. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  275. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +53 -47
  276. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  277. package/dist/astro/routes/api/schema/collections/index.mjs +53 -47
  278. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  279. package/dist/astro/routes/api/schema/collections/reorder.mjs +53 -47
  280. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  281. package/dist/astro/routes/api/schema/index.mjs +10 -8
  282. package/dist/astro/routes/api/schema/index.mjs.map +1 -1
  283. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +53 -47
  284. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  285. package/dist/astro/routes/api/schema/orphans/index.mjs +53 -47
  286. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  287. package/dist/astro/routes/api/search/enable.mjs +10 -10
  288. package/dist/astro/routes/api/search/index.mjs +9 -9
  289. package/dist/astro/routes/api/search/rebuild.mjs +10 -10
  290. package/dist/astro/routes/api/search/stats.mjs +5 -5
  291. package/dist/astro/routes/api/search/suggest.mjs +9 -9
  292. package/dist/astro/routes/api/sections/_slug_.mjs +9 -9
  293. package/dist/astro/routes/api/sections/index.mjs +9 -9
  294. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +6 -6
  295. package/dist/astro/routes/api/settings/backups/archives/index.mjs +5 -5
  296. package/dist/astro/routes/api/settings/backups/export.mjs +6 -6
  297. package/dist/astro/routes/api/settings/backups/index.mjs +7 -7
  298. package/dist/astro/routes/api/settings/email.mjs +5 -5
  299. package/dist/astro/routes/api/settings/email.mjs.map +1 -1
  300. package/dist/astro/routes/api/settings.d.mts.map +1 -1
  301. package/dist/astro/routes/api/settings.mjs +20 -16
  302. package/dist/astro/routes/api/settings.mjs.map +1 -1
  303. package/dist/astro/routes/api/setup/admin-verify.mjs +12 -12
  304. package/dist/astro/routes/api/setup/admin.mjs +11 -11
  305. package/dist/astro/routes/api/setup/dev-bypass.d.mts.map +1 -1
  306. package/dist/astro/routes/api/setup/dev-bypass.mjs +35 -28
  307. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  308. package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
  309. package/dist/astro/routes/api/setup/index.mjs +32 -30
  310. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  311. package/dist/astro/routes/api/setup/status.mjs +3 -3
  312. package/dist/astro/routes/api/snapshot.mjs +7 -7
  313. package/dist/astro/routes/api/taxonomies/_name_/reorder.d.mts.map +1 -1
  314. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +20 -16
  315. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
  316. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.d.mts.map +1 -1
  317. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +21 -17
  318. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  319. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts.map +1 -1
  320. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +25 -18
  321. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  322. package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts.map +1 -1
  323. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +20 -16
  324. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  325. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +14 -14
  326. package/dist/astro/routes/api/taxonomies/_name_.d.mts.map +1 -1
  327. package/dist/astro/routes/api/taxonomies/_name_.mjs +26 -19
  328. package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
  329. package/dist/astro/routes/api/taxonomies/index.d.mts.map +1 -1
  330. package/dist/astro/routes/api/taxonomies/index.mjs +20 -16
  331. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  332. package/dist/astro/routes/api/themes/preview.mjs +5 -5
  333. package/dist/astro/routes/api/typegen.mjs +4 -4
  334. package/dist/astro/routes/api/well-known/auth.mjs +2 -2
  335. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  336. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  337. package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts.map +1 -1
  338. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +10 -8
  339. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  340. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts.map +1 -1
  341. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +17 -13
  342. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  343. package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts.map +1 -1
  344. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +15 -12
  345. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  346. package/dist/astro/routes/api/widget-areas/_name_.d.mts.map +1 -1
  347. package/dist/astro/routes/api/widget-areas/_name_.mjs +8 -6
  348. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
  349. package/dist/astro/routes/api/widget-areas/index.d.mts.map +1 -1
  350. package/dist/astro/routes/api/widget-areas/index.mjs +15 -12
  351. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  352. package/dist/astro/routes/api/widget-components.mjs +2 -2
  353. package/dist/astro/routes/robots.txt.mjs +7 -7
  354. package/dist/astro/routes/sitemap-_collection_.xml.mjs +10 -10
  355. package/dist/astro/routes/sitemap.xml.mjs +8 -8
  356. package/dist/astro/types.d.mts +37 -17
  357. package/dist/astro/types.d.mts.map +1 -1
  358. package/dist/auth/providers/github.d.mts +1 -1
  359. package/dist/auth/providers/google.d.mts +1 -1
  360. package/dist/{authorize-DUElxgOQ.mjs → authorize-Bkf_UHhD.mjs} +2 -2
  361. package/dist/{authorize-DUElxgOQ.mjs.map → authorize-Bkf_UHhD.mjs.map} +1 -1
  362. package/dist/{backup-DWYpJlLj.mjs → backup-rwVAl9NI.mjs} +5 -5
  363. package/dist/{backup-DWYpJlLj.mjs.map → backup-rwVAl9NI.mjs.map} +1 -1
  364. package/dist/{bundle-vn56sLos.mjs → bundle-C8S2Zl6U.mjs} +4 -4
  365. package/dist/{bundle-vn56sLos.mjs.map → bundle-C8S2Zl6U.mjs.map} +1 -1
  366. package/dist/{byline-yjvWq4ip.mjs → byline-DuhF7NWl.mjs} +27 -14
  367. package/dist/byline-DuhF7NWl.mjs.map +1 -0
  368. package/dist/{byline-fields-txaLGoME.mjs → byline-fields-BovY4KYM.mjs} +2 -2
  369. package/dist/{byline-fields-txaLGoME.mjs.map → byline-fields-BovY4KYM.mjs.map} +1 -1
  370. package/dist/{byline-registry-DDun8sxh.mjs → byline-registry-Bpu9-MVs.mjs} +2 -2
  371. package/dist/{byline-registry-DDun8sxh.mjs.map → byline-registry-Bpu9-MVs.mjs.map} +1 -1
  372. package/dist/{bylines-DjXS5p0P.mjs → bylines-CJ5nd6Lw.mjs} +7 -7
  373. package/dist/{bylines-DjXS5p0P.mjs.map → bylines-CJ5nd6Lw.mjs.map} +1 -1
  374. package/dist/{bylines-Bu7pchQ4.mjs → bylines-RwBAeOF1.mjs} +3 -3
  375. package/dist/{bylines-Bu7pchQ4.mjs.map → bylines-RwBAeOF1.mjs.map} +1 -1
  376. package/dist/{cache-C46-3Irl.mjs → cache-BF5Kvn59.mjs} +4 -4
  377. package/dist/{cache-C46-3Irl.mjs.map → cache-BF5Kvn59.mjs.map} +1 -1
  378. package/dist/capture-triggers-CNW1q3HK.mjs +362 -0
  379. package/dist/capture-triggers-CNW1q3HK.mjs.map +1 -0
  380. package/dist/{challenge-store-SIL5DsF2.mjs → challenge-store-DQN_Yrck.mjs} +5 -3
  381. package/dist/challenge-store-DQN_Yrck.mjs.map +1 -0
  382. package/dist/chrome-tags-D8fiZG94.mjs +24 -0
  383. package/dist/chrome-tags-D8fiZG94.mjs.map +1 -0
  384. package/dist/{chunks-fiZ8G9RJ.mjs → chunks-C4szrD8o.mjs} +2 -2
  385. package/dist/{chunks-fiZ8G9RJ.mjs.map → chunks-C4szrD8o.mjs.map} +1 -1
  386. package/dist/cli/index.mjs +37 -53
  387. package/dist/cli/index.mjs.map +1 -1
  388. package/dist/client/cf-access.d.mts +1 -1
  389. package/dist/client/index.d.mts +74 -4
  390. package/dist/client/index.d.mts.map +1 -1
  391. package/dist/client/index.mjs +54 -2
  392. package/dist/client/index.mjs.map +1 -1
  393. package/dist/{collection-deletion-DQPvMD8R.mjs → collection-deletion-Bj07NHbj.mjs} +13 -356
  394. package/dist/collection-deletion-Bj07NHbj.mjs.map +1 -0
  395. package/dist/{comment-reaction-D-2J84UE.mjs → comment-reaction-BhrvSHml.mjs} +2 -2
  396. package/dist/{comment-reaction-D-2J84UE.mjs.map → comment-reaction-BhrvSHml.mjs.map} +1 -1
  397. package/dist/{comment-Dxlep6cE.mjs → comment-vxOzWbZN.mjs} +2 -2
  398. package/dist/{comment-Dxlep6cE.mjs.map → comment-vxOzWbZN.mjs.map} +1 -1
  399. package/dist/{comments-CTfZtLmM.mjs → comments-Ct4ensnf.mjs} +2 -2
  400. package/dist/{comments-CTfZtLmM.mjs.map → comments-Ct4ensnf.mjs.map} +1 -1
  401. package/dist/{components-CQy3lh9x.mjs → components-DJbo1z0S.mjs} +1 -1
  402. package/dist/{components-CQy3lh9x.mjs.map → components-DJbo1z0S.mjs.map} +1 -1
  403. package/dist/{config-COQzTe5Q.d.mts → config-B9eZ340f.d.mts} +1 -1
  404. package/dist/{config-COQzTe5Q.d.mts.map → config-B9eZ340f.d.mts.map} +1 -1
  405. package/dist/config-it29yDLA.mjs +1163 -0
  406. package/dist/config-it29yDLA.mjs.map +1 -0
  407. package/dist/{content-ZHCc1ngN.mjs → content-DjvM0T92.mjs} +86 -45
  408. package/dist/content-DjvM0T92.mjs.map +1 -0
  409. package/dist/{content-list-query-wJ2WN8Vp.d.mts → content-list-query-Btqd4uV2.d.mts} +1 -1
  410. package/dist/{content-list-query-wJ2WN8Vp.d.mts.map → content-list-query-Btqd4uV2.d.mts.map} +1 -1
  411. package/dist/{content-refresh-B_8SJzuU.mjs → content-refresh-Bwp-8yGy.mjs} +1139 -111
  412. package/dist/content-refresh-Bwp-8yGy.mjs.map +1 -0
  413. package/dist/{media-usage-BZCydfvu.mjs → content-repair-Czdp7jz5.mjs} +5 -196
  414. package/dist/content-repair-Czdp7jz5.mjs.map +1 -0
  415. package/dist/{context-ZldbZcle.mjs → context-CX6gxOLW.mjs} +55 -20
  416. package/dist/context-CX6gxOLW.mjs.map +1 -0
  417. package/dist/{cron-Y9aLtgrA.mjs → cron-C6o7VppJ.mjs} +1 -1
  418. package/dist/{cron-Y9aLtgrA.mjs.map → cron-C6o7VppJ.mjs.map} +1 -1
  419. package/dist/{dashboard-DvHbk_cv.mjs → dashboard-C2kTeeRI.mjs} +5 -5
  420. package/dist/{dashboard-DvHbk_cv.mjs.map → dashboard-C2kTeeRI.mjs.map} +1 -1
  421. package/dist/db/index.d.mts +3 -3
  422. package/dist/db/index.mjs +3 -3
  423. package/dist/db/index.mjs.map +1 -1
  424. package/dist/db/libsql-migrations.d.mts +1 -1
  425. package/dist/db/libsql-migrations.mjs +4 -4
  426. package/dist/db/libsql.d.mts +1 -1
  427. package/dist/db/postgres-migrations.d.mts +1 -1
  428. package/dist/db/postgres-migrations.mjs +4 -4
  429. package/dist/db/postgres.d.mts +1 -1
  430. package/dist/db/postgres.d.mts.map +1 -1
  431. package/dist/db/postgres.mjs +19 -3
  432. package/dist/db/postgres.mjs.map +1 -1
  433. package/dist/db/sqlite-migrations.d.mts +1 -1
  434. package/dist/db/sqlite-migrations.mjs +4 -4
  435. package/dist/db/sqlite.d.mts +1 -1
  436. package/dist/db/sqlite.mjs +3 -3
  437. package/dist/db/sqlite.mjs.map +1 -1
  438. package/dist/{default-DdDl3fxv.mjs → default-Clra32mw.mjs} +1 -1
  439. package/dist/{default-DdDl3fxv.mjs.map → default-Clra32mw.mjs.map} +1 -1
  440. package/dist/{deferred-tasks-SDWxrgzJ.d.mts → deferred-tasks-CvDETTJO.d.mts} +1 -1
  441. package/dist/{deferred-tasks-SDWxrgzJ.d.mts.map → deferred-tasks-CvDETTJO.d.mts.map} +1 -1
  442. package/dist/dev-typegen-DzOPfsNj.mjs +29 -0
  443. package/dist/dev-typegen-DzOPfsNj.mjs.map +1 -0
  444. package/dist/{device-flow-C0GdD_z8.mjs → device-flow-D2oCWvLJ.mjs} +5 -5
  445. package/dist/{device-flow-C0GdD_z8.mjs.map → device-flow-D2oCWvLJ.mjs.map} +1 -1
  446. package/dist/{direct-executor-CDXeJCSs.mjs → direct-executor-Bfa5_ToE.mjs} +3 -3
  447. package/dist/{direct-executor-CDXeJCSs.mjs.map → direct-executor-Bfa5_ToE.mjs.map} +1 -1
  448. package/dist/{dist-D_6CKR8z.mjs → dist-89xCrGqi.mjs} +1 -1
  449. package/dist/{dist-D_6CKR8z.mjs.map → dist-89xCrGqi.mjs.map} +1 -1
  450. package/dist/{email-console-BHNjIwiB.mjs → email-console-Dzb6uGYa.mjs} +1 -1
  451. package/dist/{email-console-BHNjIwiB.mjs.map → email-console-Dzb6uGYa.mjs.map} +1 -1
  452. package/dist/{enrich-_ySMEvEE.mjs → enrich-BX0IDp4z.mjs} +3 -3
  453. package/dist/{enrich-_ySMEvEE.mjs.map → enrich-BX0IDp4z.mjs.map} +1 -1
  454. package/dist/{error-DupyJZE2.mjs → error-DFrQjppn.mjs} +2 -2
  455. package/dist/{error-DupyJZE2.mjs.map → error-DFrQjppn.mjs.map} +1 -1
  456. package/dist/{errors-CLUPm7aD.mjs → errors-DsVoDUjJ.mjs} +24 -2
  457. package/dist/errors-DsVoDUjJ.mjs.map +1 -0
  458. package/dist/{escape-DUY2r2Zs.mjs → escape-HmHTC1Is.mjs} +1 -1
  459. package/dist/{escape-DUY2r2Zs.mjs.map → escape-HmHTC1Is.mjs.map} +1 -1
  460. package/dist/{field-defs-cache-BzwBlJrR.mjs → field-defs-cache-BM4SIRqH.mjs} +5 -5
  461. package/dist/{field-defs-cache-BzwBlJrR.mjs.map → field-defs-cache-BM4SIRqH.mjs.map} +1 -1
  462. package/dist/focal-point-BeWFo6Xx.mjs +23 -0
  463. package/dist/focal-point-BeWFo6Xx.mjs.map +1 -0
  464. package/dist/{fts-manager-DyZEohZC.mjs → fts-manager-Do1BlW2r.mjs} +3 -3
  465. package/dist/{fts-manager-DyZEohZC.mjs.map → fts-manager-Do1BlW2r.mjs.map} +1 -1
  466. package/dist/{hash-Cg0TXJPV.mjs → hash-3JJPlHF2.mjs} +1 -1
  467. package/dist/{hash-Cg0TXJPV.mjs.map → hash-3JJPlHF2.mjs.map} +1 -1
  468. package/dist/hook-result-DCh2WUpe.d.mts +31 -0
  469. package/dist/hook-result-DCh2WUpe.d.mts.map +1 -0
  470. package/dist/{hreflang-DwT2E0Sa.d.mts → hreflang-B6hbAuuO.d.mts} +2 -2
  471. package/dist/{hreflang-DwT2E0Sa.d.mts.map → hreflang-B6hbAuuO.d.mts.map} +1 -1
  472. package/dist/{hreflang-BBe83kKa.mjs → hreflang-DQbPZliA.mjs} +7 -7
  473. package/dist/{hreflang-BBe83kKa.mjs.map → hreflang-DQbPZliA.mjs.map} +1 -1
  474. package/dist/{identity-Ys6Dlc9C.mjs → identity-DksvEazf.mjs} +3 -3
  475. package/dist/{identity-Ys6Dlc9C.mjs.map → identity-DksvEazf.mjs.map} +1 -1
  476. package/dist/{import-DPkLmeXO.mjs → import-CJpaBBBT.mjs} +6 -6
  477. package/dist/{import-DPkLmeXO.mjs.map → import-CJpaBBBT.mjs.map} +1 -1
  478. package/dist/{index-BVBZj4-7.d.mts → index-BJNMCWmu.d.mts} +267 -82
  479. package/dist/index-BJNMCWmu.d.mts.map +1 -0
  480. package/dist/{index-C9KuQyO-.d.mts → index-Du8K7bWa.d.mts} +3 -3
  481. package/dist/{index-C9KuQyO-.d.mts.map → index-Du8K7bWa.d.mts.map} +1 -1
  482. package/dist/index.d.mts +22 -21
  483. package/dist/index.mjs +79 -73
  484. package/dist/{init-lock-6b309ZrF.mjs → init-lock-DJkX6Hto.mjs} +1 -1
  485. package/dist/{init-lock-6b309ZrF.mjs.map → init-lock-DJkX6Hto.mjs.map} +1 -1
  486. package/dist/{load-YJ2xl3ra.mjs → load-CawHjTOH.mjs} +2 -2
  487. package/dist/{load-YJ2xl3ra.mjs.map → load-CawHjTOH.mjs.map} +1 -1
  488. package/dist/{loader-CdG_Ci3H.mjs → loader-Z8vl7zTq.mjs} +48 -13
  489. package/dist/loader-Z8vl7zTq.mjs.map +1 -0
  490. package/dist/{manifest-builder-B252yQUf.mjs → manifest-builder-COtzuca2.mjs} +2 -2
  491. package/dist/{manifest-builder-B252yQUf.mjs.map → manifest-builder-COtzuca2.mjs.map} +1 -1
  492. package/dist/{manifest-schema-BXbUAHod.mjs → manifest-schema-BNWwR8Vd.mjs} +5 -5
  493. package/dist/manifest-schema-BNWwR8Vd.mjs.map +1 -0
  494. package/dist/media/image-endpoint.d.mts +4 -2
  495. package/dist/media/image-endpoint.d.mts.map +1 -1
  496. package/dist/media/image-endpoint.mjs +6 -4
  497. package/dist/media/image-endpoint.mjs.map +1 -1
  498. package/dist/media/index.d.mts +1 -1
  499. package/dist/media/index.mjs +13 -3
  500. package/dist/media/index.mjs.map +1 -1
  501. package/dist/media/local-runtime.d.mts +14 -12
  502. package/dist/media/local-runtime.d.mts.map +1 -1
  503. package/dist/media/local-runtime.mjs +12 -6
  504. package/dist/media/local-runtime.mjs.map +1 -1
  505. package/dist/{media-CzhAn2--.mjs → media-BBm8Wg3f.mjs} +69 -12
  506. package/dist/media-BBm8Wg3f.mjs.map +1 -0
  507. package/dist/{media-BWWWb8kg.mjs → media-BHjus86Y.mjs} +133 -9
  508. package/dist/media-BHjus86Y.mjs.map +1 -0
  509. package/dist/{media-allowlist-D6x-Us02.mjs → media-allowlist-CoTBWoDp.mjs} +3 -2
  510. package/dist/media-allowlist-CoTBWoDp.mjs.map +1 -0
  511. package/dist/media-folders-BGkATs8n.mjs +210 -0
  512. package/dist/media-folders-BGkATs8n.mjs.map +1 -0
  513. package/dist/{media-upload-CHBVn6m-.mjs → media-upload-BCidR-EY.mjs} +9 -9
  514. package/dist/{media-upload-CHBVn6m-.mjs.map → media-upload-BCidR-EY.mjs.map} +1 -1
  515. package/dist/{media-url-BvoX88FA.mjs → media-url-DHoPr0hq.mjs} +1 -1
  516. package/dist/{media-url-BvoX88FA.mjs.map → media-url-DHoPr0hq.mjs.map} +1 -1
  517. package/dist/media-usage-CdY5jhSR.mjs +1833 -0
  518. package/dist/media-usage-CdY5jhSR.mjs.map +1 -0
  519. package/dist/media-usage-activation-BgeMtK5C.mjs +78 -0
  520. package/dist/media-usage-activation-BgeMtK5C.mjs.map +1 -0
  521. package/dist/{media-usage-work-CLo_6tct.mjs → media-usage-work-CnGCdHxx.mjs} +4 -4
  522. package/dist/{media-usage-work-CLo_6tct.mjs.map → media-usage-work-CnGCdHxx.mjs.map} +1 -1
  523. package/dist/{media-usage-work-DrCbqBcl.mjs → media-usage-work-D6D9sMCA.mjs} +221 -59
  524. package/dist/media-usage-work-D6D9sMCA.mjs.map +1 -0
  525. package/dist/{media-usage-write-fence-aHEgN1zB.mjs → media-usage-write-fence-hjeD4u7s.mjs} +2 -2
  526. package/dist/{media-usage-write-fence-aHEgN1zB.mjs.map → media-usage-write-fence-hjeD4u7s.mjs.map} +1 -1
  527. package/dist/{menus-DSo5QeW0.mjs → menus-6qSwTNxG.mjs} +375 -107
  528. package/dist/menus-6qSwTNxG.mjs.map +1 -0
  529. package/dist/{menus-TCNSd2vp.mjs → menus-uvPLXMZf.mjs} +4 -4
  530. package/dist/{menus-TCNSd2vp.mjs.map → menus-uvPLXMZf.mjs.map} +1 -1
  531. package/dist/migrations/index.d.mts +1 -1
  532. package/dist/migrations/index.mjs +3 -3
  533. package/dist/{mime-DfIVjNkr.mjs → mime-CUIG6x84.mjs} +1 -1
  534. package/dist/mime-CUIG6x84.mjs.map +1 -0
  535. package/dist/{mode-BDoH_WcF.mjs → mode-DN_WneRx.mjs} +1 -1
  536. package/dist/{mode-BDoH_WcF.mjs.map → mode-DN_WneRx.mjs.map} +1 -1
  537. package/dist/node-sqlite-compat-BuJXIeMz.mjs +46 -0
  538. package/dist/node-sqlite-compat-BuJXIeMz.mjs.map +1 -0
  539. package/dist/{normalize-Bc-s_r-a.mjs → normalize-C2xNjTSG.mjs} +36 -5
  540. package/dist/normalize-C2xNjTSG.mjs.map +1 -0
  541. package/dist/{oauth-authorization-iOikmrJd.mjs → oauth-authorization-Dj6Kwc21.mjs} +5 -5
  542. package/dist/{oauth-authorization-iOikmrJd.mjs.map → oauth-authorization-Dj6Kwc21.mjs.map} +1 -1
  543. package/dist/{oauth-clients-CvI0nHMJ.mjs → oauth-clients-FD7I0J8m.mjs} +1 -1
  544. package/dist/{oauth-clients-CvI0nHMJ.mjs.map → oauth-clients-FD7I0J8m.mjs.map} +1 -1
  545. package/dist/{oauth-state-store-Ba8KZlwW.mjs → oauth-state-store-DkmDOmHs.mjs} +1 -1
  546. package/dist/{oauth-state-store-Ba8KZlwW.mjs.map → oauth-state-store-DkmDOmHs.mjs.map} +1 -1
  547. package/dist/{oauth-user-lookup-C5SQwGYC.mjs → oauth-user-lookup-CvIwGpYd.mjs} +1 -1
  548. package/dist/{oauth-user-lookup-C5SQwGYC.mjs.map → oauth-user-lookup-CvIwGpYd.mjs.map} +1 -1
  549. package/dist/object-cache/memory.d.mts +1 -1
  550. package/dist/{object-cache-71tPfV4A.mjs → object-cache-DVKnyOfy.mjs} +19 -3
  551. package/dist/object-cache-DVKnyOfy.mjs.map +1 -0
  552. package/dist/{options-CBXIHUoT.mjs → options-BHPeIbBd.mjs} +1 -1
  553. package/dist/{options-CBXIHUoT.mjs.map → options-BHPeIbBd.mjs.map} +1 -1
  554. package/dist/{options--hhz-jZ1.d.mts → options-CYb4y7hM.d.mts} +24 -11
  555. package/dist/options-CYb4y7hM.d.mts.map +1 -0
  556. package/dist/page/index.d.mts +2 -2
  557. package/dist/{parse-DFbuc-Fh.mjs → parse-Ckpg-Qfp.mjs} +2 -2
  558. package/dist/{parse-DFbuc-Fh.mjs.map → parse-Ckpg-Qfp.mjs.map} +1 -1
  559. package/dist/{passkey-config-DFAmUyuE.mjs → passkey-config-O_lj3y0k.mjs} +1 -1
  560. package/dist/{passkey-config-DFAmUyuE.mjs.map → passkey-config-O_lj3y0k.mjs.map} +1 -1
  561. package/dist/{patterns-CiyXeDgr.mjs → patterns-D9iDO3j8.mjs} +1 -1
  562. package/dist/{patterns-CiyXeDgr.mjs.map → patterns-D9iDO3j8.mjs.map} +1 -1
  563. package/dist/{placeholder-Dp0K3RkD.d.mts → placeholder-4X9BrRrp.d.mts} +7 -1
  564. package/dist/placeholder-4X9BrRrp.d.mts.map +1 -0
  565. package/dist/plugin-types.d.mts +8 -3
  566. package/dist/plugin-types.d.mts.map +1 -1
  567. package/dist/plugin-utils.d.mts +10 -10
  568. package/dist/plugins/adapt-sandbox-entry.d.mts +10 -10
  569. package/dist/plugins/adapt-sandbox-entry.mjs +2 -2
  570. package/dist/{policy-TluUIxuu.mjs → policy-Dhtwntrt.mjs} +2 -2
  571. package/dist/{policy-TluUIxuu.mjs.map → policy-Dhtwntrt.mjs.map} +1 -1
  572. package/dist/{portable-text-imBW5cHK.mjs → portable-text-U85hOafW.mjs} +1 -1
  573. package/dist/{portable-text-imBW5cHK.mjs.map → portable-text-U85hOafW.mjs.map} +1 -1
  574. package/dist/{preview-PW-nOnq4.mjs → preview-B_vJLvf8.mjs} +2 -2
  575. package/dist/{preview-PW-nOnq4.mjs.map → preview-B_vJLvf8.mjs.map} +1 -1
  576. package/dist/{protocol-DjsJHTlK.d.mts → protocol-JdD2YhY9.d.mts} +2 -2
  577. package/dist/{protocol-DjsJHTlK.d.mts.map → protocol-JdD2YhY9.d.mts.map} +1 -1
  578. package/dist/{public-url-CWoFhQT8.mjs → public-url-CarhZJgf.mjs} +1 -1
  579. package/dist/{public-url-CWoFhQT8.mjs.map → public-url-CarhZJgf.mjs.map} +1 -1
  580. package/dist/{query-zTVAR1Sl.mjs → query-BZKZcG5b.mjs} +15 -15
  581. package/dist/{query-zTVAR1Sl.mjs.map → query-BZKZcG5b.mjs.map} +1 -1
  582. package/dist/{query-BWs7O5Il.mjs → query-BndaFxxp.mjs} +5 -5
  583. package/dist/{query-BWs7O5Il.mjs.map → query-BndaFxxp.mjs.map} +1 -1
  584. package/dist/{rate-limit-Bx4g9m3p.mjs → rate-limit-BZmATC6W.mjs} +2 -2
  585. package/dist/{rate-limit-Bx4g9m3p.mjs.map → rate-limit-BZmATC6W.mjs.map} +1 -1
  586. package/dist/{redirect-COsS6SWJ.mjs → redirect-CZkbozu9.mjs} +2 -2
  587. package/dist/{redirect-COsS6SWJ.mjs.map → redirect-CZkbozu9.mjs.map} +1 -1
  588. package/dist/{redirect-BgAOGHDq.mjs → redirect-CzqnLxK-.mjs} +1 -1
  589. package/dist/{redirect-BgAOGHDq.mjs.map → redirect-CzqnLxK-.mjs.map} +1 -1
  590. package/dist/{redirects-DTDHWH31.mjs → redirects-BLNOWQTn.mjs} +64 -29
  591. package/dist/redirects-BLNOWQTn.mjs.map +1 -0
  592. package/dist/{redirects-DyChwDkG.mjs → redirects-CqzNM0KM.mjs} +5 -5
  593. package/dist/{redirects-DyChwDkG.mjs.map → redirects-CqzNM0KM.mjs.map} +1 -1
  594. package/dist/{registry-Cqa2I749.mjs → registry-AZAsRsor.mjs} +30 -126
  595. package/dist/registry-AZAsRsor.mjs.map +1 -0
  596. package/dist/{relation-BnHB0T4J.mjs → relation-04DfKRTO.mjs} +2 -2
  597. package/dist/{relation-BnHB0T4J.mjs.map → relation-04DfKRTO.mjs.map} +1 -1
  598. package/dist/{relations-BBApI4e2.mjs → relations-C4htk5sb.mjs} +7 -7
  599. package/dist/relations-C4htk5sb.mjs.map +1 -0
  600. package/dist/{relations-D5sM5fW0.mjs → relations-CcFwDJdJ.mjs} +4 -4
  601. package/dist/{relations-D5sM5fW0.mjs.map → relations-CcFwDJdJ.mjs.map} +1 -1
  602. package/dist/{relations-BHo5A8Zf.d.mts → relations-DnRK4YIT.d.mts} +347 -54
  603. package/dist/relations-DnRK4YIT.d.mts.map +1 -0
  604. package/dist/{request-cache-BSUptuJR.mjs → request-cache-DH9zdCOD.mjs} +1 -1
  605. package/dist/{request-cache-BSUptuJR.mjs.map → request-cache-DH9zdCOD.mjs.map} +1 -1
  606. package/dist/request-context.d.mts +1 -1
  607. package/dist/{request-meta-DgZJh3zG.mjs → request-meta-DYxLlnmz.mjs} +2 -2
  608. package/dist/{request-meta-DgZJh3zG.mjs.map → request-meta-DYxLlnmz.mjs.map} +1 -1
  609. package/dist/{resolve-DOhVEvty.mjs → resolve-prZ3mP7l.mjs} +1 -1
  610. package/dist/{resolve-DOhVEvty.mjs.map → resolve-prZ3mP7l.mjs.map} +1 -1
  611. package/dist/{runner-C1T11CfC.mjs → runner-BLIDKpmA.mjs} +471 -290
  612. package/dist/runner-BLIDKpmA.mjs.map +1 -0
  613. package/dist/{runner-BYHZn3Jy.d.mts → runner-YKfIMnaF.d.mts} +3 -2
  614. package/dist/runner-YKfIMnaF.d.mts.map +1 -0
  615. package/dist/runtime.d.mts +11 -11
  616. package/dist/runtime.mjs +1 -1
  617. package/dist/{schema-DZ5YVVZj.mjs → schema-CGnBeLiW.mjs} +3 -3
  618. package/dist/{schema-DZ5YVVZj.mjs.map → schema-CGnBeLiW.mjs.map} +1 -1
  619. package/dist/{schema-2AOsSn2v.mjs → schema-DYr-Vd-L.mjs} +36 -6
  620. package/dist/{schema-2AOsSn2v.mjs.map → schema-DYr-Vd-L.mjs.map} +1 -1
  621. package/dist/{scopes-8ClPF2bC.mjs → scopes-BhWvBavj.mjs} +3 -3
  622. package/dist/{scopes-8ClPF2bC.mjs.map → scopes-BhWvBavj.mjs.map} +1 -1
  623. package/dist/{search-u1QYdOCG.mjs → search-C-qDk4kx.mjs} +4 -4
  624. package/dist/{search-u1QYdOCG.mjs.map → search-C-qDk4kx.mjs.map} +1 -1
  625. package/dist/{secrets-BEgsAQEU.mjs → secrets-rEtHt-6z.mjs} +3 -3
  626. package/dist/{secrets-BEgsAQEU.mjs.map → secrets-rEtHt-6z.mjs.map} +1 -1
  627. package/dist/{sections-DmHviGyM.mjs → sections-B_nYvlwn.mjs} +2 -2
  628. package/dist/{sections-DmHviGyM.mjs.map → sections-B_nYvlwn.mjs.map} +1 -1
  629. package/dist/seed/index.d.mts +2 -2
  630. package/dist/seed/index.mjs +25 -23
  631. package/dist/seo/index.d.mts +3 -3
  632. package/dist/seo/index.mjs +17 -15
  633. package/dist/seo/index.mjs.map +1 -1
  634. package/dist/{seo-Dq4G-RrO.mjs → seo-926NRIgt.mjs} +3 -3
  635. package/dist/{seo-Dq4G-RrO.mjs.map → seo-926NRIgt.mjs.map} +1 -1
  636. package/dist/{seo-AFpVvTqr.mjs → seo-CVWkdv6x.mjs} +1 -1
  637. package/dist/{seo-AFpVvTqr.mjs.map → seo-CVWkdv6x.mjs.map} +1 -1
  638. package/dist/{service-BpArayPr.mjs → service-CJl3ZAYs.mjs} +3 -3
  639. package/dist/{service-BpArayPr.mjs.map → service-CJl3ZAYs.mjs.map} +1 -1
  640. package/dist/{session-user-BEorKVT-.mjs → session-user-BlMgqCHS.mjs} +1 -1
  641. package/dist/{session-user-BEorKVT-.mjs.map → session-user-BlMgqCHS.mjs.map} +1 -1
  642. package/dist/{settings-xRdoUZr0.mjs → settings--wobrkkC.mjs} +21 -8
  643. package/dist/settings--wobrkkC.mjs.map +1 -0
  644. package/dist/{settings-DE9xtzqd.mjs → settings-Cwm6o2jY.mjs} +3 -3
  645. package/dist/{settings-DE9xtzqd.mjs.map → settings-Cwm6o2jY.mjs.map} +1 -1
  646. package/dist/{setup-complete-BnT8pq_C.mjs → setup-complete-DQbClIN2.mjs} +2 -2
  647. package/dist/{setup-complete-BnT8pq_C.mjs.map → setup-complete-DQbClIN2.mjs.map} +1 -1
  648. package/dist/{setup-nonce-CBitf_oQ.mjs → setup-nonce-DZCFS2sn.mjs} +1 -1
  649. package/dist/{setup-nonce-CBitf_oQ.mjs.map → setup-nonce-DZCFS2sn.mjs.map} +1 -1
  650. package/dist/{single-flight-cache-B0eLKS6K.mjs → single-flight-cache-BPuGPdcN.mjs} +2 -2
  651. package/dist/{single-flight-cache-B0eLKS6K.mjs.map → single-flight-cache-BPuGPdcN.mjs.map} +1 -1
  652. package/dist/{site-url-DjpIXMXJ.mjs → site-url-BrxA_E9H.mjs} +3 -3
  653. package/dist/{site-url-DjpIXMXJ.mjs.map → site-url-BrxA_E9H.mjs.map} +1 -1
  654. package/dist/{snapshot-BBlGkb2q.mjs → snapshot--OCDTqdb.mjs} +1 -1
  655. package/dist/{snapshot-BBlGkb2q.mjs.map → snapshot--OCDTqdb.mjs.map} +1 -1
  656. package/dist/{ssrf-Cpvg_n3A.mjs → ssrf-5sIM5jzl.mjs} +23 -6
  657. package/dist/{ssrf-Cpvg_n3A.mjs.map → ssrf-5sIM5jzl.mjs.map} +1 -1
  658. package/dist/{state-DYwPue40.mjs → state-BpFVsJZB.mjs} +12 -4
  659. package/dist/state-BpFVsJZB.mjs.map +1 -0
  660. package/dist/{status-CWVYpbD8.mjs → status-B777-dXz.mjs} +1 -1
  661. package/dist/{status-CWVYpbD8.mjs.map → status-B777-dXz.mjs.map} +1 -1
  662. package/dist/storage/local.d.mts +2 -1
  663. package/dist/storage/local.d.mts.map +1 -1
  664. package/dist/storage/local.mjs +1 -1
  665. package/dist/storage/local.mjs.map +1 -1
  666. package/dist/storage/s3.d.mts +2 -1
  667. package/dist/storage/s3.d.mts.map +1 -1
  668. package/dist/storage/s3.mjs +3 -2
  669. package/dist/storage/s3.mjs.map +1 -1
  670. package/dist/{target-DixqqV5i.mjs → target-BmR0iTwz.mjs} +1 -1
  671. package/dist/{target-DixqqV5i.mjs.map → target-BmR0iTwz.mjs.map} +1 -1
  672. package/dist/{taxonomies-OHUIiIpI.mjs → taxonomies-DkAkMupr.mjs} +17 -14
  673. package/dist/taxonomies-DkAkMupr.mjs.map +1 -0
  674. package/dist/{taxonomies-BlrncHi9.mjs → taxonomies-Wfy_Lg12.mjs} +43 -17
  675. package/dist/taxonomies-Wfy_Lg12.mjs.map +1 -0
  676. package/dist/{taxonomy-BqCZ1TdU.mjs → taxonomy-tJepplLL.mjs} +5 -5
  677. package/dist/{taxonomy-BqCZ1TdU.mjs.map → taxonomy-tJepplLL.mjs.map} +1 -1
  678. package/dist/{tokens-C39klX8R.mjs → tokens-BCO1oruF.mjs} +1 -1
  679. package/dist/{tokens-C39klX8R.mjs.map → tokens-BCO1oruF.mjs.map} +1 -1
  680. package/dist/{transaction-NQj4VJ7Z.mjs → transaction-0KOpOyMu.mjs} +2 -1
  681. package/dist/{transaction-NQj4VJ7Z.mjs.map → transaction-0KOpOyMu.mjs.map} +1 -1
  682. package/dist/{transport-DBJwa-Si.mjs → transport-Dr3qtwXC.mjs} +4 -3
  683. package/dist/{transport-DBJwa-Si.mjs.map → transport-Dr3qtwXC.mjs.map} +1 -1
  684. package/dist/{transport-RQE36APG.d.mts → transport-xh6YKW2G.d.mts} +1 -1
  685. package/dist/{transport-RQE36APG.d.mts.map → transport-xh6YKW2G.d.mts.map} +1 -1
  686. package/dist/{trusted-proxy-CEVekpby.mjs → trusted-proxy-BR5F1Otp.mjs} +1 -1
  687. package/dist/{trusted-proxy-CEVekpby.mjs.map → trusted-proxy-BR5F1Otp.mjs.map} +1 -1
  688. package/dist/{types-BW1syrlw.mjs → types-3qNFPlci.mjs} +1 -1
  689. package/dist/{types-BW1syrlw.mjs.map → types-3qNFPlci.mjs.map} +1 -1
  690. package/dist/types-75KIqzL9.mjs.map +1 -1
  691. package/dist/{types-DrJrVCT1.d.mts → types-B6GrPic4.d.mts} +9 -3
  692. package/dist/{types-DrJrVCT1.d.mts.map → types-B6GrPic4.d.mts.map} +1 -1
  693. package/dist/{types-DN64_zzZ.d.mts → types-BuHW4xDE.d.mts} +11 -10
  694. package/dist/types-BuHW4xDE.d.mts.map +1 -0
  695. package/dist/{types-DWRhk9xZ.d.mts → types-C00oyCZp.d.mts} +1 -1
  696. package/dist/{types-DWRhk9xZ.d.mts.map → types-C00oyCZp.d.mts.map} +1 -1
  697. package/dist/{types-BntycPTF.d.mts → types-CDtkNSFQ.d.mts} +1 -1
  698. package/dist/{types-BntycPTF.d.mts.map → types-CDtkNSFQ.d.mts.map} +1 -1
  699. package/dist/{types-Dfk8KI5R.d.mts → types-CPeXo1wF.d.mts} +1 -1
  700. package/dist/{types-Dfk8KI5R.d.mts.map → types-CPeXo1wF.d.mts.map} +1 -1
  701. package/dist/types-CQPWhPxE.mjs.map +1 -1
  702. package/dist/{types-BcqdcT-r.d.mts → types-CXFkwEGC.d.mts} +3 -2
  703. package/dist/types-CXFkwEGC.d.mts.map +1 -0
  704. package/dist/{types-CtzytVXn.mjs → types-DM3vioBY.mjs} +1 -1
  705. package/dist/{types-CtzytVXn.mjs.map → types-DM3vioBY.mjs.map} +1 -1
  706. package/dist/{types-CXnOzDe1.d.mts → types-DczELMop.d.mts} +1 -1
  707. package/dist/{types-CXnOzDe1.d.mts.map → types-DczELMop.d.mts.map} +1 -1
  708. package/dist/types-DfuTR6dL.mjs +3 -0
  709. package/dist/{types-DQIDRKF2.d.mts → types-FV23hEoW.d.mts} +10 -1
  710. package/dist/types-FV23hEoW.d.mts.map +1 -0
  711. package/dist/{types-C2pMvO62.d.mts → types-xDMtUFnO.d.mts} +2 -1
  712. package/dist/types-xDMtUFnO.d.mts.map +1 -0
  713. package/dist/{upload-attempts-D4FS8LT6.mjs → upload-attempts-BsqoQ1fn.mjs} +1 -1
  714. package/dist/{upload-attempts-D4FS8LT6.mjs.map → upload-attempts-BsqoQ1fn.mjs.map} +1 -1
  715. package/dist/{url-pattern-BHS0V5Ng.mjs → url-pattern-D4c2czpJ.mjs} +1 -1
  716. package/dist/{url-pattern-BHS0V5Ng.mjs.map → url-pattern-D4c2czpJ.mjs.map} +1 -1
  717. package/dist/{user-DJZfUJVE.mjs → user-BTZ40aq6.mjs} +2 -2
  718. package/dist/{user-DJZfUJVE.mjs.map → user-BTZ40aq6.mjs.map} +1 -1
  719. package/dist/{utils-D4vD_Y98.mjs → utils-BKvNjjhY.mjs} +1 -1
  720. package/dist/{utils-D4vD_Y98.mjs.map → utils-BKvNjjhY.mjs.map} +1 -1
  721. package/dist/{validate-BMLBvxOC.mjs → validate-DE_LRwo9.mjs} +2 -2
  722. package/dist/{validate-BMLBvxOC.mjs.map → validate-DE_LRwo9.mjs.map} +1 -1
  723. package/dist/{validate-CTqt5nuE.d.mts → validate-DUP27OYD.d.mts} +5 -5
  724. package/dist/{validate-CTqt5nuE.d.mts.map → validate-DUP27OYD.d.mts.map} +1 -1
  725. package/dist/{validation-npvENUCB.mjs → validation-BMImFJ11.mjs} +10 -8
  726. package/dist/{validation-npvENUCB.mjs.map → validation-BMImFJ11.mjs.map} +1 -1
  727. package/dist/version-Bii3suaO.mjs +7 -0
  728. package/dist/{version-DB_fqCSI.mjs.map → version-Bii3suaO.mjs.map} +1 -1
  729. package/dist/{widgets-BD3ho7Rq.mjs → widgets-D3gJ10xU.mjs} +18 -5
  730. package/dist/widgets-D3gJ10xU.mjs.map +1 -0
  731. package/dist/{wxr-taxonomies-Ca68766D.d.mts → wxr-taxonomies-B2Og_6rU.d.mts} +1 -1
  732. package/dist/{wxr-taxonomies-Ca68766D.d.mts.map → wxr-taxonomies-B2Og_6rU.d.mts.map} +1 -1
  733. package/dist/{wxr-taxonomies-B1R3vBoD.mjs → wxr-taxonomies-Cxngsjwo.mjs} +4 -4
  734. package/dist/{wxr-taxonomies-B1R3vBoD.mjs.map → wxr-taxonomies-Cxngsjwo.mjs.map} +1 -1
  735. package/dist/{zod-generator-LC-on_Vb.mjs → zod-generator-BuYSQJB7.mjs} +32 -22
  736. package/dist/zod-generator-BuYSQJB7.mjs.map +1 -0
  737. package/package.json +20 -9
  738. package/src/api/errors.ts +22 -0
  739. package/src/api/handlers/content.ts +49 -11
  740. package/src/api/handlers/index.ts +18 -0
  741. package/src/api/handlers/manifest.ts +161 -12
  742. package/src/api/handlers/media-allowlist.ts +1 -0
  743. package/src/api/handlers/media-folders.ts +130 -0
  744. package/src/api/handlers/media-usage-activation.ts +102 -0
  745. package/src/api/handlers/media-usage.ts +108 -0
  746. package/src/api/handlers/media.ts +92 -2
  747. package/src/api/handlers/registry.ts +483 -561
  748. package/src/api/handlers/taxonomies.ts +16 -9
  749. package/src/api/openapi/document.ts +277 -7
  750. package/src/api/parse.ts +1 -1
  751. package/src/api/schemas/auth.ts +4 -4
  752. package/src/api/schemas/bylines.ts +3 -3
  753. package/src/api/schemas/comments.ts +1 -1
  754. package/src/api/schemas/common.ts +3 -2
  755. package/src/api/schemas/content.ts +78 -22
  756. package/src/api/schemas/media-usage.ts +77 -0
  757. package/src/api/schemas/media.ts +121 -0
  758. package/src/api/schemas/redirects.ts +6 -1
  759. package/src/api/schemas/schema.ts +4 -0
  760. package/src/api/schemas/setup.ts +1 -1
  761. package/src/api/schemas/taxonomies.ts +2 -2
  762. package/src/api/schemas/users.ts +1 -1
  763. package/src/api/types.ts +23 -10
  764. package/src/astro/dev-typegen.ts +35 -0
  765. package/src/astro/image-endpoint.ts +2 -2
  766. package/src/astro/integration/dev-typegen.ts +91 -0
  767. package/src/astro/integration/index.ts +9 -44
  768. package/src/astro/integration/routes.ts +23 -0
  769. package/src/astro/integration/vite-config.ts +23 -9
  770. package/src/astro/middleware/auth.ts +4 -0
  771. package/src/astro/middleware.ts +5 -7
  772. package/src/astro/routes/api/admin/api-tokens/index.ts +4 -1
  773. package/src/astro/routes/api/admin/media-usage/activation.ts +42 -0
  774. package/src/astro/routes/api/admin/media-usage/progress.ts +37 -0
  775. package/src/astro/routes/api/admin/oauth-clients/[id].ts +1 -1
  776. package/src/astro/routes/api/admin/oauth-clients/index.ts +1 -1
  777. package/src/astro/routes/api/admin/plugins/registry/[id]/update.ts +4 -0
  778. package/src/astro/routes/api/admin/plugins/registry/artifact.ts +247 -101
  779. package/src/astro/routes/api/admin/plugins/registry/install.ts +4 -0
  780. package/src/astro/routes/api/admin/plugins/registry/verify.ts +60 -0
  781. package/src/astro/routes/api/auth/me.ts +14 -2
  782. package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +8 -2
  783. package/src/astro/routes/api/content/[collection]/[id]/publish.ts +2 -1
  784. package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +6 -2
  785. package/src/astro/routes/api/manifest.ts +1 -1
  786. package/src/astro/routes/api/media/[id]/replace.ts +114 -0
  787. package/src/astro/routes/api/media/[id].ts +3 -0
  788. package/src/astro/routes/api/media/file/[...key].ts +4 -1
  789. package/src/astro/routes/api/media/folders/[id].ts +55 -0
  790. package/src/astro/routes/api/media/folders/index.ts +37 -0
  791. package/src/astro/routes/api/media/upload-url.ts +8 -4
  792. package/src/astro/routes/api/media.ts +66 -10
  793. package/src/astro/routes/api/menus/[name]/items/[id].ts +7 -2
  794. package/src/astro/routes/api/menus/[name]/items.ts +4 -1
  795. package/src/astro/routes/api/menus/[name]/reorder.ts +4 -1
  796. package/src/astro/routes/api/menus/[name]/translations.ts +4 -1
  797. package/src/astro/routes/api/menus/[name].ts +7 -2
  798. package/src/astro/routes/api/menus/index.ts +4 -1
  799. package/src/astro/routes/api/settings/email.ts +1 -1
  800. package/src/astro/routes/api/settings.ts +4 -1
  801. package/src/astro/routes/api/setup/dev-bypass.ts +12 -0
  802. package/src/astro/routes/api/taxonomies/[name]/reorder.ts +4 -1
  803. package/src/astro/routes/api/taxonomies/[name]/terms/[slug]/translations.ts +4 -1
  804. package/src/astro/routes/api/taxonomies/[name]/terms/[slug].ts +7 -2
  805. package/src/astro/routes/api/taxonomies/[name]/terms/index.ts +4 -1
  806. package/src/astro/routes/api/taxonomies/[name].ts +7 -2
  807. package/src/astro/routes/api/taxonomies/index.ts +4 -1
  808. package/src/astro/routes/api/widget-areas/[name]/reorder.ts +3 -1
  809. package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +5 -2
  810. package/src/astro/routes/api/widget-areas/[name]/widgets.ts +3 -1
  811. package/src/astro/routes/api/widget-areas/[name].ts +3 -1
  812. package/src/astro/routes/api/widget-areas/index.ts +3 -1
  813. package/src/astro/types.ts +34 -6
  814. package/src/auth/challenge-store.ts +3 -1
  815. package/src/aws-sdk.d.ts +1 -0
  816. package/src/cache/chrome-tags.ts +24 -0
  817. package/src/client/index.ts +140 -2
  818. package/src/client/transport.ts +6 -2
  819. package/src/components/EmDashImage.astro +156 -51
  820. package/src/components/EmDashMedia.astro +2 -1
  821. package/src/components/Gallery.astro +7 -0
  822. package/src/components/InlinePortableTextEditor.tsx +136 -2
  823. package/src/components/LiveSearch.astro +23 -0
  824. package/src/components/inline-code-block.tsx +180 -49
  825. package/src/components/widgets/Archives.astro +2 -37
  826. package/src/content/converters/gallery.ts +2 -0
  827. package/src/content/converters/index.ts +2 -0
  828. package/src/content/converters/mark-safety.ts +1 -0
  829. package/src/content/converters/portable-text-identity.ts +139 -0
  830. package/src/content/converters/portable-text-to-prosemirror.ts +202 -69
  831. package/src/content/converters/prosemirror-to-portable-text.ts +96 -25
  832. package/src/content/converters/types.ts +3 -0
  833. package/src/database/connection.ts +2 -31
  834. package/src/database/index.ts +1 -1
  835. package/src/database/json-recordset.ts +16 -0
  836. package/src/database/migrations/017_authorization_codes.ts +14 -4
  837. package/src/database/migrations/019_i18n.ts +1 -1
  838. package/src/database/migrations/071_restore_content_bylines_table.ts +43 -0
  839. package/src/database/migrations/072_media_folders.ts +72 -0
  840. package/src/database/migrations/073_media_focal_point.ts +57 -0
  841. package/src/database/migrations/074_content_deleted_scheduled_index.ts +55 -0
  842. package/src/database/migrations/runner.ts +11 -3
  843. package/src/database/repositories/byline.ts +32 -16
  844. package/src/database/repositories/content.ts +119 -51
  845. package/src/database/repositories/media-folders.ts +115 -0
  846. package/src/database/repositories/media-usage-work.ts +395 -111
  847. package/src/database/repositories/media-usage.ts +1104 -47
  848. package/src/database/repositories/media.ts +156 -29
  849. package/src/database/repositories/plugin-storage.ts +74 -9
  850. package/src/database/repositories/types.ts +8 -7
  851. package/src/database/transaction.ts +1 -0
  852. package/src/database/types.ts +13 -0
  853. package/src/db/adapters.ts +10 -3
  854. package/src/db/node-sqlite-compat.ts +78 -0
  855. package/src/db/postgres.ts +23 -0
  856. package/src/db/sqlite.ts +3 -3
  857. package/src/emdash-runtime.ts +186 -251
  858. package/src/fields/boolean.ts +1 -1
  859. package/src/fields/datetime.ts +1 -1
  860. package/src/fields/file.ts +1 -1
  861. package/src/fields/image.ts +7 -1
  862. package/src/fields/integer.ts +1 -1
  863. package/src/fields/json.ts +1 -1
  864. package/src/fields/multiselect.ts +1 -1
  865. package/src/fields/number.ts +1 -1
  866. package/src/fields/portable-text.ts +1 -1
  867. package/src/fields/richtext.ts +1 -1
  868. package/src/fields/select.ts +1 -1
  869. package/src/fields/slug.ts +1 -1
  870. package/src/fields/text.ts +1 -1
  871. package/src/fields/textarea.ts +1 -1
  872. package/src/fields/types.ts +8 -4
  873. package/src/index.ts +30 -3
  874. package/src/loader.ts +63 -10
  875. package/src/mcp/server.ts +228 -24
  876. package/src/media/focal-point.ts +37 -0
  877. package/src/media/image-endpoint.ts +5 -2
  878. package/src/media/local-runtime.ts +8 -0
  879. package/src/media/mime.ts +1 -0
  880. package/src/media/normalize.ts +25 -4
  881. package/src/media/types.ts +10 -0
  882. package/src/media/usage/activation.ts +162 -35
  883. package/src/media/usage/capture-triggers.ts +19 -3
  884. package/src/media/usage/cleanup.ts +9 -8
  885. package/src/media/usage/collection-deletion-processor.ts +7 -3
  886. package/src/media/usage/collection-deletion.ts +10 -0
  887. package/src/media/usage/content-refresh.ts +258 -39
  888. package/src/media/usage/content-snapshots.ts +128 -31
  889. package/src/media/usage/extractor.ts +32 -13
  890. package/src/media/usage/maintenance-engine.ts +166 -0
  891. package/src/media/usage/reconciliation-processor.ts +106 -29
  892. package/src/media/usage/reconciliation.ts +90 -7
  893. package/src/media/usage/work-processor.ts +342 -101
  894. package/src/menus/index.ts +16 -0
  895. package/src/object-cache/index.ts +44 -2
  896. package/src/plugin-types.ts +18 -1
  897. package/src/plugins/hooks.ts +4 -1
  898. package/src/plugins/index.ts +7 -0
  899. package/src/plugins/manager.ts +2 -1
  900. package/src/plugins/manifest-schema.ts +1 -1
  901. package/src/plugins/routes.ts +3 -1
  902. package/src/plugins/sandbox/hook-result.ts +52 -0
  903. package/src/plugins/sandbox/index.ts +10 -0
  904. package/src/plugins/save-rejection.ts +20 -0
  905. package/src/plugins/scheduler/node.ts +1 -13
  906. package/src/plugins/scheduler/types.ts +0 -2
  907. package/src/plugins/state.ts +13 -3
  908. package/src/plugins/types.ts +6 -0
  909. package/src/registry/artifact-checksum.ts +15 -0
  910. package/src/registry/artifact-fetch.ts +530 -0
  911. package/src/registry/artifact-verification.ts +85 -0
  912. package/src/registry/authoritative-records.ts +180 -0
  913. package/src/registry/config.ts +24 -6
  914. package/src/registry/record-labels.ts +28 -0
  915. package/src/registry/types.ts +12 -15
  916. package/src/schema/registry.ts +26 -3
  917. package/src/schema/types.ts +1 -0
  918. package/src/schema/zod-generator.ts +28 -17
  919. package/src/security/ssrf.ts +26 -4
  920. package/src/seed/apply.ts +4 -4
  921. package/src/settings/index.ts +16 -0
  922. package/src/storage/local.ts +1 -0
  923. package/src/storage/s3.ts +2 -0
  924. package/src/storage/types.ts +2 -0
  925. package/src/taxonomies/index.ts +40 -20
  926. package/src/ui.ts +2 -0
  927. package/src/widgets/archives.ts +67 -0
  928. package/src/widgets/index.ts +16 -0
  929. package/dist/api-BeBglVxU.mjs +0 -4695
  930. package/dist/api-BeBglVxU.mjs.map +0 -1
  931. package/dist/byline-yjvWq4ip.mjs.map +0 -1
  932. package/dist/challenge-store-SIL5DsF2.mjs.map +0 -1
  933. package/dist/collection-deletion-DQPvMD8R.mjs.map +0 -1
  934. package/dist/content-ZHCc1ngN.mjs.map +0 -1
  935. package/dist/content-refresh-B_8SJzuU.mjs.map +0 -1
  936. package/dist/context-ZldbZcle.mjs.map +0 -1
  937. package/dist/errors-CLUPm7aD.mjs.map +0 -1
  938. package/dist/index-BVBZj4-7.d.mts.map +0 -1
  939. package/dist/loader-CdG_Ci3H.mjs.map +0 -1
  940. package/dist/manifest-schema-BXbUAHod.mjs.map +0 -1
  941. package/dist/media-BWWWb8kg.mjs.map +0 -1
  942. package/dist/media-CzhAn2--.mjs.map +0 -1
  943. package/dist/media-allowlist-D6x-Us02.mjs.map +0 -1
  944. package/dist/media-usage-BZCydfvu.mjs.map +0 -1
  945. package/dist/media-usage-work-DrCbqBcl.mjs.map +0 -1
  946. package/dist/menus-DSo5QeW0.mjs.map +0 -1
  947. package/dist/mime-DfIVjNkr.mjs.map +0 -1
  948. package/dist/normalize-Bc-s_r-a.mjs.map +0 -1
  949. package/dist/object-cache-71tPfV4A.mjs.map +0 -1
  950. package/dist/options--hhz-jZ1.d.mts.map +0 -1
  951. package/dist/placeholder-Dp0K3RkD.d.mts.map +0 -1
  952. package/dist/redirects-DTDHWH31.mjs.map +0 -1
  953. package/dist/registry-Cqa2I749.mjs.map +0 -1
  954. package/dist/relations-BBApI4e2.mjs.map +0 -1
  955. package/dist/relations-BHo5A8Zf.d.mts.map +0 -1
  956. package/dist/runner-BYHZn3Jy.d.mts.map +0 -1
  957. package/dist/runner-C1T11CfC.mjs.map +0 -1
  958. package/dist/settings-xRdoUZr0.mjs.map +0 -1
  959. package/dist/state-DYwPue40.mjs.map +0 -1
  960. package/dist/taxonomies-BlrncHi9.mjs.map +0 -1
  961. package/dist/taxonomies-OHUIiIpI.mjs.map +0 -1
  962. package/dist/types-BcqdcT-r.d.mts.map +0 -1
  963. package/dist/types-C2pMvO62.d.mts.map +0 -1
  964. package/dist/types-CP1CflWf.mjs +0 -3
  965. package/dist/types-DN64_zzZ.d.mts.map +0 -1
  966. package/dist/types-DQIDRKF2.d.mts.map +0 -1
  967. package/dist/version-DB_fqCSI.mjs +0 -7
  968. package/dist/widgets-BD3ho7Rq.mjs.map +0 -1
  969. package/dist/zod-generator-LC-on_Vb.mjs.map +0 -1
  970. /package/dist/{api-tokens-rIXC6LdE.mjs → api-tokens-BfYts-sq.mjs} +0 -0
  971. /package/dist/{ssrf-DpXgKsna.mjs → ssrf-Dg3cIT-b.mjs} +0 -0
@@ -1,14 +1,14 @@
1
1
  import "../../../config-C3EBstHi.mjs";
2
2
  import { i as encodeBase64, t as decodeBase64 } from "../../../base64-CvLhUKQv.mjs";
3
3
  import { i as InvalidCursorError, o as decodeCursor } from "../../../types-CQPWhPxE.mjs";
4
- import { t as apiError } from "../../../error-DupyJZE2.mjs";
5
- import { t as CONTENT_TYPE_RE } from "../../../media-BWWWb8kg.mjs";
6
- import { Gt as updateFieldBody, Pt as createCollectionBody, Wt as updateCollectionBody, in as contentSeoInput, pn as bylineCreateBody, xn as contentBylineInputSchema, yn as bylineUpdateBody } from "../../../redirects-DTDHWH31.mjs";
7
- import "../../../relations-BBApI4e2.mjs";
8
- import "../../../status-CWVYpbD8.mjs";
4
+ import { t as apiError } from "../../../error-DFrQjppn.mjs";
5
+ import { t as CONTENT_TYPE_RE } from "../../../media-BHjus86Y.mjs";
6
+ import { Cn as contentBylineInputSchema, Gt as updateFieldBody, Pt as createCollectionBody, V as createTaxonomyDefBody, Wt as updateCollectionBody, an as contentSeoInput, hn as bylineCreateBody, nt as updateTaxonomyDefBody, xn as bylineUpdateBody } from "../../../redirects-BLNOWQTn.mjs";
7
+ import "../../../relations-C4htk5sb.mjs";
8
+ import "../../../status-B777-dXz.mjs";
9
9
  import "../../../api/schemas/index.mjs";
10
- import { i as hasScope$1 } from "../../../api-tokens-rIXC6LdE.mjs";
11
- import { n as convertDataForWrite, t as convertDataForRead } from "../../../portable-text-imBW5cHK.mjs";
10
+ import { i as hasScope$1 } from "../../../api-tokens-BfYts-sq.mjs";
11
+ import { n as convertDataForWrite, t as convertDataForRead } from "../../../portable-text-U85hOafW.mjs";
12
12
  import { z } from "zod";
13
13
  import { Permissions, Role, canActOnOwn, hasPermission } from "@emdash-cms/auth";
14
14
  import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
@@ -18,8 +18,26 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
18
18
  const COLLECTION_SLUG_PATTERN = /^[a-z][a-z0-9_]*$/;
19
19
  /** http(s) scheme matcher used by `settings_update` URL validation. */
20
20
  const HTTP_SCHEME_PATTERN = /^https?:\/\//i;
21
+ /**
22
+ * Shared wording for the `_rev` parameter on write tools. Agents only see the
23
+ * tool schema, so the retry protocol is stated here.
24
+ */
25
+ const REV_PARAM_DESCRIPTION = "Revision token proving you have read the current item. Call content_get first and pass back the _rev it returns. If this call fails with CONFLICT the item changed in the meantime: call content_get again and retry with the new token.";
26
+ /**
27
+ * Replaces Zod's "expected string, received undefined" for a caller that never
28
+ * read the schema, so the message says where the token comes from.
29
+ */
30
+ const REV_MISSING_ERROR = "_rev is required: call content_get for this item and pass back the _rev it returns.";
21
31
  const TAXONOMY_CURSOR_VERSION = 2;
22
32
  const MAX_TAXONOMY_CURSOR_LENGTH = 2048;
33
+ const contentDateTimeInputSchema = z.iso.datetime({
34
+ offset: true,
35
+ message: "must be an ISO 8601 datetime"
36
+ }).or(z.iso.datetime({
37
+ offset: true,
38
+ precision: -1,
39
+ message: "must be an ISO 8601 datetime"
40
+ }));
23
41
  const settingsMediaReferenceSchema = z.object({
24
42
  mediaId: z.string().describe("Media item ID (use media_create or media_list)"),
25
43
  alt: z.string().optional().describe("Alt text for the media reference")
@@ -67,7 +85,9 @@ const schemaUpdateCollectionToolSchema = z.object({
67
85
  commentsEnabled: updateCollectionBody.shape.commentsEnabled.describe("Whether comments are enabled for this collection"),
68
86
  commentsModeration: updateCollectionBody.shape.commentsModeration.describe("Comment moderation policy"),
69
87
  commentsClosedAfterDays: updateCollectionBody.shape.commentsClosedAfterDays.describe("Close comments after this many days; 0 keeps them open"),
70
- commentsAutoApproveUsers: updateCollectionBody.shape.commentsAutoApproveUsers.describe("Whether comments from authenticated users are automatically approved")
88
+ commentsAutoApproveUsers: updateCollectionBody.shape.commentsAutoApproveUsers.describe("Whether comments from authenticated users are automatically approved"),
89
+ titleField: updateCollectionBody.shape.titleField.describe("Field slug to use as the Title column in admin lists; pass null to fall back to the default"),
90
+ dateField: updateCollectionBody.shape.dateField.describe("Datetime field slug to use as the Date column in admin lists; pass null to fall back to the default")
71
91
  });
72
92
  const schemaUpdateFieldToolSchema = z.object({
73
93
  collection: z.string().min(1).max(63).regex(COLLECTION_SLUG_PATTERN, "Invalid collection slug").describe("Collection slug containing the field"),
@@ -234,7 +254,7 @@ function getEmDash(extra) {
234
254
  }
235
255
  async function getCollectionFields(ec, collection) {
236
256
  try {
237
- const { SchemaRegistry } = await import("../../../schema-DZ5YVVZj.mjs").then((n) => n.t);
257
+ const { SchemaRegistry } = await import("../../../schema-CGnBeLiW.mjs").then((n) => n.t);
238
258
  const col = await new SchemaRegistry(ec.db).getCollectionWithFields(collection);
239
259
  return col ? col.fields : null;
240
260
  } catch {
@@ -263,7 +283,7 @@ async function applyReadMarkdown(ec, collection, items) {
263
283
  for (const item of items) if (item.data && typeof item.data === "object") item.data = convertDataForRead(item.data, fields, false);
264
284
  }
265
285
  async function invalidateBylines() {
266
- const { invalidateBylineCache } = await import("../../../bylines-DjXS5p0P.mjs").then((n) => n.t);
286
+ const { invalidateBylineCache } = await import("../../../bylines-CJ5nd6Lw.mjs").then((n) => n.t);
267
287
  invalidateBylineCache();
268
288
  }
269
289
  /**
@@ -342,6 +362,12 @@ function extractContentId(data) {
342
362
  const item = obj.item && typeof obj.item === "object" ? obj.item : obj;
343
363
  return typeof item?.id === "string" ? item.id : void 0;
344
364
  }
365
+ /** Extract the `_rev` token from a content handler response. */
366
+ function extractContentRev(data) {
367
+ if (!data || typeof data !== "object") return void 0;
368
+ const rev = data._rev;
369
+ return typeof rev === "string" ? rev : void 0;
370
+ }
345
371
  function createMcpServer(pluginTools = [], request) {
346
372
  const server = new McpServer({
347
373
  name: "emdash",
@@ -430,7 +456,7 @@ function createMcpServer(pluginTools = [], request) {
430
456
  });
431
457
  server.registerTool("content_get", {
432
458
  title: "Get Content",
433
- description: "Get a single content item by its ID or slug. Returns the full content data including all field values, metadata, and a _rev token for optimistic concurrency (pass _rev back when updating to detect conflicts).",
459
+ description: "Get a single content item by its ID or slug. Returns the full content data including all field values, metadata, and a _rev token. content_update, content_publish, content_unpublish and content_discard_draft require that token, so read the item here before calling them.",
434
460
  inputSchema: z.object({
435
461
  collection: z.string().describe("Collection slug (e.g. 'posts', 'pages')"),
436
462
  id: z.string().describe("Content item ID (ULID) or slug"),
@@ -511,7 +537,7 @@ function createMcpServer(pluginTools = [], request) {
511
537
  });
512
538
  server.registerTool("content_update", {
513
539
  title: "Update Content",
514
- 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.",
540
+ 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). Requires the _rev token from content_get, so read the item before updating it: the update fails if the item changed since that read. When status is not set, a change to a published item is staged as a draft, so the response shows the new values while the live version keeps the old ones until content_publish. `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.",
515
541
  inputSchema: z.object({
516
542
  collection: z.string().describe("Collection slug"),
517
543
  id: z.string().describe("Content item ID or slug"),
@@ -522,11 +548,8 @@ function createMcpServer(pluginTools = [], request) {
522
548
  seo: contentSeoInput.optional().describe("Per-content SEO metadata. Only valid for collections with SEO enabled (see schema_get_collection.hasSeo). Fields not included are left unchanged; pass null to clear."),
523
549
  bylines: z.array(contentBylineInputSchema).optional().describe("Replace the byline list for this item. The first entry becomes the primary byline. Pass an empty array to clear all bylines."),
524
550
  taxonomies: z.record(z.string(), z.array(z.string())).optional().describe("Replace taxonomy term assignments as { taxonomyName: [termSlug, ...] }. Term slugs are resolved in the entry's locale. Only named taxonomies are touched; other taxonomies are left unchanged. Pass an empty array to clear a taxonomy."),
525
- publishedAt: z.iso.datetime({
526
- offset: true,
527
- message: "must be an ISO 8601 datetime"
528
- }).nullish().describe("Override the publication timestamp (ISO 8601). Requires content:publish_any permission. Pass null to clear. Useful for content migrations."),
529
- _rev: z.string().optional().describe("Revision token from content_get for conflict detection")
551
+ publishedAt: contentDateTimeInputSchema.nullish().describe("Override the publication timestamp (ISO 8601). Requires content:publish_any permission. Pass null to clear. Useful for content migrations."),
552
+ _rev: z.string({ error: REV_MISSING_ERROR }).describe(REV_PARAM_DESCRIPTION)
530
553
  })
531
554
  }, async (args, extra) => {
532
555
  requireScope(extra, "content:write");
@@ -546,6 +569,7 @@ function createMcpServer(pluginTools = [], request) {
546
569
  const resolvedId = extractContentId(existing.data) ?? args.id;
547
570
  if (args.status === "published") {
548
571
  requireOwnership(extra, ownerId, "content:publish_own", "content:publish_any");
572
+ let rev = args._rev;
549
573
  if (args.data || args.slug || args.seo !== void 0 || args.bylines !== void 0 || args.taxonomies !== void 0 || args.publishedAt !== void 0) {
550
574
  const updateResult = await emdash.handleContentUpdate(args.collection, resolvedId, {
551
575
  data,
@@ -559,11 +583,13 @@ function createMcpServer(pluginTools = [], request) {
559
583
  _rev: args._rev
560
584
  });
561
585
  if (!updateResult.success) return unwrap(updateResult);
586
+ rev = extractContentRev(updateResult.data);
562
587
  }
563
- return unwrap(await emdash.handleContentPublish(args.collection, resolvedId));
588
+ return unwrap(await emdash.handleContentPublish(args.collection, resolvedId, { _rev: rev }));
564
589
  }
565
590
  if (args.status === "draft") {
566
591
  requireOwnership(extra, ownerId, "content:publish_own", "content:publish_any");
592
+ let rev = args._rev;
567
593
  if (args.data || args.slug || args.seo !== void 0 || args.bylines !== void 0 || args.taxonomies !== void 0 || args.publishedAt !== void 0) {
568
594
  const updateResult = await emdash.handleContentUpdate(args.collection, resolvedId, {
569
595
  data,
@@ -577,8 +603,9 @@ function createMcpServer(pluginTools = [], request) {
577
603
  _rev: args._rev
578
604
  });
579
605
  if (!updateResult.success) return unwrap(updateResult);
606
+ rev = extractContentRev(updateResult.data);
580
607
  }
581
- return unwrap(await emdash.handleContentUnpublish(args.collection, resolvedId));
608
+ return unwrap(await emdash.handleContentUnpublish(args.collection, resolvedId, { _rev: rev }));
582
609
  }
583
610
  return unwrap(await emdash.handleContentUpdate(args.collection, resolvedId, {
584
611
  data,
@@ -646,10 +673,8 @@ function createMcpServer(pluginTools = [], request) {
646
673
  inputSchema: z.object({
647
674
  collection: z.string().describe("Collection slug"),
648
675
  id: z.string().describe("Content item ID or slug"),
649
- publishedAt: z.iso.datetime({
650
- offset: true,
651
- message: "must be an ISO 8601 datetime"
652
- }).optional().describe("Override publication timestamp (ISO 8601). Requires content:publish_any permission. Useful when importing content with original publish dates.")
676
+ _rev: z.string({ error: REV_MISSING_ERROR }).describe(REV_PARAM_DESCRIPTION),
677
+ publishedAt: contentDateTimeInputSchema.optional().describe("Override publication timestamp (ISO 8601). Requires content:publish_any permission. Useful when importing content with original publish dates.")
653
678
  })
654
679
  }, async (args, extra) => {
655
680
  requireScope(extra, "content:write");
@@ -665,14 +690,18 @@ function createMcpServer(pluginTools = [], request) {
665
690
  }, "content:publish_any")) throw new EmDashAuthError("Setting publishedAt requires content:publish_any permission", "INSUFFICIENT_PERMISSIONS");
666
691
  }
667
692
  const resolvedId = extractContentId(existing.data) ?? args.id;
668
- return unwrap(await emdash.handleContentPublish(args.collection, resolvedId, { publishedAt: args.publishedAt }));
693
+ return unwrap(await emdash.handleContentPublish(args.collection, resolvedId, {
694
+ publishedAt: args.publishedAt,
695
+ _rev: args._rev
696
+ }));
669
697
  });
670
698
  server.registerTool("content_unpublish", {
671
699
  title: "Unpublish Content",
672
- description: "Unpublish a content item, reverting it to draft status. It will no longer be visible on the live site but its content is preserved.",
700
+ description: "Unpublish a content item, reverting it to draft status. It will no longer be visible on the live site, but its content and publication date are preserved.",
673
701
  inputSchema: z.object({
674
702
  collection: z.string().describe("Collection slug"),
675
- id: z.string().describe("Content item ID or slug")
703
+ id: z.string().describe("Content item ID or slug"),
704
+ _rev: z.string({ error: REV_MISSING_ERROR }).describe(REV_PARAM_DESCRIPTION)
676
705
  })
677
706
  }, async (args, extra) => {
678
707
  requireScope(extra, "content:write");
@@ -682,7 +711,7 @@ function createMcpServer(pluginTools = [], request) {
682
711
  if (!existing.success) return unwrap(existing);
683
712
  requireOwnership(extra, extractContentAuthorId(existing.data), "content:publish_own", "content:publish_any");
684
713
  const resolvedId = extractContentId(existing.data) ?? args.id;
685
- return unwrap(await ec.handleContentUnpublish(args.collection, resolvedId));
714
+ return unwrap(await ec.handleContentUnpublish(args.collection, resolvedId, { _rev: args._rev }));
686
715
  });
687
716
  server.registerTool("content_schedule", {
688
717
  title: "Schedule Content",
@@ -737,7 +766,8 @@ function createMcpServer(pluginTools = [], request) {
737
766
  description: "Discard the current draft changes and revert to the last published version. Only works on items that have been published at least once.",
738
767
  inputSchema: z.object({
739
768
  collection: z.string().describe("Collection slug"),
740
- id: z.string().describe("Content item ID or slug")
769
+ id: z.string().describe("Content item ID or slug"),
770
+ _rev: z.string({ error: REV_MISSING_ERROR }).describe(REV_PARAM_DESCRIPTION)
741
771
  }),
742
772
  annotations: { destructiveHint: true }
743
773
  }, async (args, extra) => {
@@ -748,7 +778,7 @@ function createMcpServer(pluginTools = [], request) {
748
778
  if (!existing.success) return unwrap(existing);
749
779
  requireOwnership(extra, extractContentAuthorId(existing.data), "content:edit_own", "content:edit_any");
750
780
  const resolvedId = extractContentId(existing.data) ?? args.id;
751
- return unwrap(await ec.handleContentDiscardDraft(args.collection, resolvedId));
781
+ return unwrap(await ec.handleContentDiscardDraft(args.collection, resolvedId, { _rev: args._rev }));
752
782
  });
753
783
  server.registerTool("content_list_trashed", {
754
784
  title: "List Trashed Content",
@@ -819,7 +849,7 @@ function createMcpServer(pluginTools = [], request) {
819
849
  requireScope(extra, "content:read");
820
850
  const ec = getEmDash(extra);
821
851
  try {
822
- const { BylineRepository } = await import("../../../byline-yjvWq4ip.mjs").then((n) => n.n);
852
+ const { BylineRepository } = await import("../../../byline-DuhF7NWl.mjs").then((n) => n.n);
823
853
  return jsonResult(await new BylineRepository(ec.db).findMany({
824
854
  search: args.search,
825
855
  isGuest: args.isGuest,
@@ -841,7 +871,7 @@ function createMcpServer(pluginTools = [], request) {
841
871
  requireScope(extra, "content:read");
842
872
  const ec = getEmDash(extra);
843
873
  try {
844
- const { BylineRepository } = await import("../../../byline-yjvWq4ip.mjs").then((n) => n.n);
874
+ const { BylineRepository } = await import("../../../byline-DuhF7NWl.mjs").then((n) => n.n);
845
875
  const byline = await new BylineRepository(ec.db).findById(args.id);
846
876
  if (!byline) return respondError("NOT_FOUND", `Byline '${args.id}' not found`);
847
877
  return jsonResult(byline);
@@ -859,7 +889,7 @@ function createMcpServer(pluginTools = [], request) {
859
889
  requireRole(extra, Role.EDITOR);
860
890
  const ec = getEmDash(extra);
861
891
  try {
862
- const { handleBylineCreate } = await import("../../../bylines-Bu7pchQ4.mjs").then((n) => n.t);
892
+ const { handleBylineCreate } = await import("../../../bylines-RwBAeOF1.mjs").then((n) => n.t);
863
893
  const result = await handleBylineCreate(ec.db, args);
864
894
  if (result.success) await invalidateBylines();
865
895
  return unwrap(result);
@@ -879,7 +909,7 @@ function createMcpServer(pluginTools = [], request) {
879
909
  requireRole(extra, Role.EDITOR);
880
910
  const ec = getEmDash(extra);
881
911
  try {
882
- const { handleBylineUpdate } = await import("../../../bylines-Bu7pchQ4.mjs").then((n) => n.t);
912
+ const { handleBylineUpdate } = await import("../../../bylines-RwBAeOF1.mjs").then((n) => n.t);
883
913
  const { id, ...input } = args;
884
914
  const result = await handleBylineUpdate(ec.db, id, input);
885
915
  if (result.success) await invalidateBylines();
@@ -898,7 +928,7 @@ function createMcpServer(pluginTools = [], request) {
898
928
  requireRole(extra, Role.EDITOR);
899
929
  const ec = getEmDash(extra);
900
930
  try {
901
- const { BylineRepository } = await import("../../../byline-yjvWq4ip.mjs").then((n) => n.n);
931
+ const { BylineRepository } = await import("../../../byline-DuhF7NWl.mjs").then((n) => n.n);
902
932
  if (!await new BylineRepository(ec.db).delete(args.id)) return respondError("NOT_FOUND", `Byline '${args.id}' not found`);
903
933
  await invalidateBylines();
904
934
  return jsonResult({ deleted: args.id });
@@ -915,7 +945,7 @@ function createMcpServer(pluginTools = [], request) {
915
945
  requireScope(extra, "content:read");
916
946
  const ec = getEmDash(extra);
917
947
  try {
918
- const { handleBylineTranslations } = await import("../../../bylines-Bu7pchQ4.mjs").then((n) => n.t);
948
+ const { handleBylineTranslations } = await import("../../../bylines-RwBAeOF1.mjs").then((n) => n.t);
919
949
  return unwrap(await handleBylineTranslations(ec.db, args.id));
920
950
  } catch (error) {
921
951
  return respondHandlerError(error, "BYLINE_TRANSLATIONS_ERROR");
@@ -931,7 +961,7 @@ function createMcpServer(pluginTools = [], request) {
931
961
  requireRole(extra, Role.EDITOR);
932
962
  const ec = getEmDash(extra);
933
963
  try {
934
- const { SchemaRegistry } = await import("../../../schema-DZ5YVVZj.mjs").then((n) => n.t);
964
+ const { SchemaRegistry } = await import("../../../schema-CGnBeLiW.mjs").then((n) => n.t);
935
965
  return jsonResult({ items: await new SchemaRegistry(ec.db).listCollections() });
936
966
  } catch (error) {
937
967
  return respondHandlerError(error, "SCHEMA_LIST_ERROR");
@@ -947,7 +977,7 @@ function createMcpServer(pluginTools = [], request) {
947
977
  requireRole(extra, Role.EDITOR);
948
978
  const ec = getEmDash(extra);
949
979
  try {
950
- const { SchemaRegistry } = await import("../../../schema-DZ5YVVZj.mjs").then((n) => n.t);
980
+ const { SchemaRegistry } = await import("../../../schema-CGnBeLiW.mjs").then((n) => n.t);
951
981
  const collection = await new SchemaRegistry(ec.db).getCollectionWithFields(args.slug);
952
982
  if (!collection) return respondError("NOT_FOUND", `Collection '${args.slug}' not found`);
953
983
  return jsonResult(collection);
@@ -972,7 +1002,7 @@ function createMcpServer(pluginTools = [], request) {
972
1002
  requireRole(extra, Role.ADMIN);
973
1003
  const ec = getEmDash(extra);
974
1004
  try {
975
- const { SchemaRegistry } = await import("../../../schema-DZ5YVVZj.mjs").then((n) => n.t);
1005
+ const { SchemaRegistry } = await import("../../../schema-CGnBeLiW.mjs").then((n) => n.t);
976
1006
  const collection = await new SchemaRegistry(ec.db).createCollection({
977
1007
  slug: args.slug,
978
1008
  label: args.label,
@@ -1001,7 +1031,7 @@ function createMcpServer(pluginTools = [], request) {
1001
1031
  requireRole(extra, Role.ADMIN);
1002
1032
  const ec = getEmDash(extra);
1003
1033
  try {
1004
- const { SchemaRegistry } = await import("../../../schema-DZ5YVVZj.mjs").then((n) => n.t);
1034
+ const { SchemaRegistry } = await import("../../../schema-CGnBeLiW.mjs").then((n) => n.t);
1005
1035
  await new SchemaRegistry(ec.db).deleteCollection(args.slug, { force: args.force });
1006
1036
  ec.invalidateUrlPatternCache();
1007
1037
  return jsonResult({ deleted: args.slug });
@@ -1020,7 +1050,7 @@ function createMcpServer(pluginTools = [], request) {
1020
1050
  const ec = getEmDash(extra);
1021
1051
  const { slug, ...input } = args;
1022
1052
  try {
1023
- const { handleSchemaCollectionUpdate } = await import("../../../schema-2AOsSn2v.mjs").then((n) => n.m);
1053
+ const { handleSchemaCollectionUpdate } = await import("../../../schema-DYr-Vd-L.mjs").then((n) => n.h);
1024
1054
  const result = await handleSchemaCollectionUpdate(ec.db, slug, input);
1025
1055
  if (result.success) ec.invalidateUrlPatternCache();
1026
1056
  return unwrap(result);
@@ -1065,7 +1095,7 @@ function createMcpServer(pluginTools = [], request) {
1065
1095
  options: z.object({
1066
1096
  collection: z.string().optional().describe("Target collection slug for reference fields"),
1067
1097
  rows: z.number().optional().describe("Number of rows for textarea")
1068
- }).passthrough().optional().describe("Widget configuration"),
1098
+ }).loose().optional().describe("Widget configuration"),
1069
1099
  searchable: z.boolean().optional().describe("Include in full-text search index (default false)"),
1070
1100
  indexed: z.boolean().optional().describe("Create a physical index for structured sorting"),
1071
1101
  translatable: z.boolean().optional().describe("Whether this field is translatable (default true). Non-translatable fields are synced across all locales in a translation group.")
@@ -1075,7 +1105,7 @@ function createMcpServer(pluginTools = [], request) {
1075
1105
  requireRole(extra, Role.ADMIN);
1076
1106
  const ec = getEmDash(extra);
1077
1107
  try {
1078
- const { SchemaRegistry } = await import("../../../schema-DZ5YVVZj.mjs").then((n) => n.t);
1108
+ const { SchemaRegistry } = await import("../../../schema-CGnBeLiW.mjs").then((n) => n.t);
1079
1109
  return jsonResult(await new SchemaRegistry(ec.db).createField(args.collection, {
1080
1110
  slug: args.slug,
1081
1111
  label: args.label,
@@ -1106,7 +1136,7 @@ function createMcpServer(pluginTools = [], request) {
1106
1136
  requireRole(extra, Role.ADMIN);
1107
1137
  const ec = getEmDash(extra);
1108
1138
  try {
1109
- const { SchemaRegistry } = await import("../../../schema-DZ5YVVZj.mjs").then((n) => n.t);
1139
+ const { SchemaRegistry } = await import("../../../schema-CGnBeLiW.mjs").then((n) => n.t);
1110
1140
  await new SchemaRegistry(ec.db).deleteField(args.collection, args.fieldSlug);
1111
1141
  return jsonResult({
1112
1142
  deleted: args.fieldSlug,
@@ -1127,7 +1157,7 @@ function createMcpServer(pluginTools = [], request) {
1127
1157
  const ec = getEmDash(extra);
1128
1158
  const { collection, fieldSlug, ...input } = args;
1129
1159
  try {
1130
- const { handleSchemaFieldUpdate } = await import("../../../schema-2AOsSn2v.mjs").then((n) => n.m);
1160
+ const { handleSchemaFieldUpdate } = await import("../../../schema-DYr-Vd-L.mjs").then((n) => n.h);
1131
1161
  return unwrap(await handleSchemaFieldUpdate(ec.db, collection, fieldSlug, input));
1132
1162
  } catch (error) {
1133
1163
  return respondHandlerError(error, "SCHEMA_FIELD_UPDATE_ERROR");
@@ -1187,7 +1217,7 @@ function createMcpServer(pluginTools = [], request) {
1187
1217
  inputSchema: z.object({
1188
1218
  filename: z.string().min(1).describe("Filename including extension (e.g. 'cover.png')"),
1189
1219
  base64: z.string().optional().describe("Base64-encoded file contents. Provide exactly one of base64 / url."),
1190
- url: z.string().url().optional().describe("Public http(s) URL to fetch the file from. Provide exactly one of base64 / url."),
1220
+ url: z.url().optional().describe("Public http(s) URL to fetch the file from. Provide exactly one of base64 / url."),
1191
1221
  contentType: z.string().regex(CONTENT_TYPE_RE, "Invalid content type").optional().describe("MIME type (e.g. 'image/png'). Required with base64; with url it defaults to the response's Content-Type header."),
1192
1222
  alt: z.string().optional().describe("Alt text for accessibility")
1193
1223
  }),
@@ -1198,7 +1228,7 @@ function createMcpServer(pluginTools = [], request) {
1198
1228
  const { emdash, userId } = getExtra(extra);
1199
1229
  if (!emdash.storage) return respondError("NO_STORAGE", "Storage not configured");
1200
1230
  try {
1201
- const { handleMediaUpload } = await import("../../../media-upload-CHBVn6m-.mjs");
1231
+ const { handleMediaUpload } = await import("../../../media-upload-BCidR-EY.mjs");
1202
1232
  return unwrap(await handleMediaUpload(emdash.db, emdash.storage, {
1203
1233
  filename: args.filename,
1204
1234
  base64: args.base64,
@@ -1278,7 +1308,7 @@ function createMcpServer(pluginTools = [], request) {
1278
1308
  };
1279
1309
  } else input = { scope: "all" };
1280
1310
  try {
1281
- const { handleMediaUsageRepair } = await import("../../../media-usage-BZCydfvu.mjs").then((n) => n.i);
1311
+ const { handleMediaUsageRepair } = await import("../../../media-usage-CdY5jhSR.mjs").then((n) => n.o);
1282
1312
  return unwrap(await handleMediaUsageRepair(ec.db, input));
1283
1313
  } catch (error) {
1284
1314
  return respondHandlerError(error, "MEDIA_USAGE_REPAIR_ERROR");
@@ -1299,7 +1329,7 @@ function createMcpServer(pluginTools = [], request) {
1299
1329
  requireScope(extra, "content:read");
1300
1330
  const ec = getEmDash(extra);
1301
1331
  try {
1302
- const { searchWithDb } = await import("../../../search-u1QYdOCG.mjs").then((n) => n.t);
1332
+ const { searchWithDb } = await import("../../../search-C-qDk4kx.mjs").then((n) => n.t);
1303
1333
  return jsonResult(await searchWithDb(ec.db, args.query, {
1304
1334
  collections: args.collections,
1305
1335
  locale: args.locale,
@@ -1319,12 +1349,105 @@ function createMcpServer(pluginTools = [], request) {
1319
1349
  requireScope(extra, "content:read");
1320
1350
  const ec = getEmDash(extra);
1321
1351
  try {
1322
- const { handleTaxonomyList } = await import("../../../taxonomies-OHUIiIpI.mjs").then((n) => n.m);
1352
+ const { handleTaxonomyList } = await import("../../../taxonomies-DkAkMupr.mjs").then((n) => n.m);
1323
1353
  return unwrap(await handleTaxonomyList(ec.db, { locale: args.locale }));
1324
1354
  } catch (error) {
1325
1355
  return respondHandlerError(error, "TAXONOMY_LIST_ERROR");
1326
1356
  }
1327
1357
  });
1358
+ server.registerTool("taxonomy_get", {
1359
+ title: "Get Taxonomy Definition",
1360
+ description: "Get a single taxonomy definition by name. Taxonomy definitions describe a classification system (e.g. categories or tags), which collections it applies to, and whether it is hierarchical. Pass `locale` to resolve a specific translation; otherwise the lowest matching locale is returned.",
1361
+ inputSchema: z.object({
1362
+ name: z.string().describe("Taxonomy name (e.g. 'categories', 'tags')"),
1363
+ locale: z.string().optional().describe("Locale to resolve the definition for")
1364
+ }),
1365
+ annotations: { readOnlyHint: true }
1366
+ }, async (args, extra) => {
1367
+ requireScope(extra, "content:read");
1368
+ const ec = getEmDash(extra);
1369
+ try {
1370
+ const { handleTaxonomyGet } = await import("../../../taxonomies-DkAkMupr.mjs").then((n) => n.m);
1371
+ return unwrap(await handleTaxonomyGet(ec.db, args.name, { locale: args.locale }));
1372
+ } catch (error) {
1373
+ return respondHandlerError(error, "TAXONOMY_GET_ERROR");
1374
+ }
1375
+ });
1376
+ server.registerTool("taxonomy_create", {
1377
+ title: "Create Taxonomy Definition",
1378
+ description: "Create a new taxonomy definition. Definitions are per-locale; pass `locale` when the same taxonomy name exists in multiple translations. `collections` names which content types the taxonomy applies to. If `translationOf` is set, the new definition joins the source's translation group and inherits `hierarchical` and `collections` from the source when those fields are omitted.",
1379
+ inputSchema: z.object({
1380
+ name: createTaxonomyDefBody.shape.name.describe("Taxonomy name (lowercase letters, numbers, underscores)"),
1381
+ label: createTaxonomyDefBody.shape.label.describe("Display name"),
1382
+ labelSingular: createTaxonomyDefBody.shape.labelSingular.describe("Singular form of the display name"),
1383
+ hierarchical: createTaxonomyDefBody.shape.hierarchical.describe("Whether the taxonomy supports parent/child terms (defaults to false, or inherited from translationOf)"),
1384
+ collections: createTaxonomyDefBody.shape.collections.describe("Collection slugs this taxonomy applies to (defaults to [], or inherited from translationOf)"),
1385
+ locale: z.string().optional().describe("Locale for this definition (e.g. 'fr-fr')"),
1386
+ translationOf: z.string().optional().describe("Existing taxonomy definition id to create this locale variant from")
1387
+ })
1388
+ }, async (args, extra) => {
1389
+ requireScope(extra, "taxonomies:manage");
1390
+ requireRole(extra, Role.EDITOR);
1391
+ const ec = getEmDash(extra);
1392
+ try {
1393
+ const { handleTaxonomyCreate } = await import("../../../taxonomies-DkAkMupr.mjs").then((n) => n.m);
1394
+ return unwrap(await handleTaxonomyCreate(ec.db, {
1395
+ name: args.name,
1396
+ label: args.label,
1397
+ labelSingular: args.labelSingular,
1398
+ hierarchical: args.hierarchical,
1399
+ collections: args.collections,
1400
+ locale: args.locale,
1401
+ translationOf: args.translationOf
1402
+ }));
1403
+ } catch (error) {
1404
+ return respondHandlerError(error, "TAXONOMY_CREATE_ERROR");
1405
+ }
1406
+ });
1407
+ server.registerTool("taxonomy_update", {
1408
+ title: "Update Taxonomy Definition",
1409
+ description: "Update an existing taxonomy definition. The taxonomy `name` cannot be changed. Pass `locale` to update a specific translation; otherwise the lowest matching locale is updated. Any field may be omitted to leave it unchanged.",
1410
+ inputSchema: z.object({
1411
+ name: z.string().describe("Taxonomy name to update"),
1412
+ label: updateTaxonomyDefBody.shape.label.describe("New display name"),
1413
+ labelSingular: updateTaxonomyDefBody.shape.labelSingular.describe("New singular display name; pass null to clear"),
1414
+ hierarchical: updateTaxonomyDefBody.shape.hierarchical.describe("Whether the taxonomy supports parent/child terms"),
1415
+ collections: updateTaxonomyDefBody.shape.collections.describe("Collection slugs this taxonomy applies to"),
1416
+ locale: z.string().optional().describe("Locale of the definition to update")
1417
+ })
1418
+ }, async (args, extra) => {
1419
+ requireScope(extra, "taxonomies:manage");
1420
+ requireRole(extra, Role.EDITOR);
1421
+ const ec = getEmDash(extra);
1422
+ try {
1423
+ const { handleTaxonomyUpdate } = await import("../../../taxonomies-DkAkMupr.mjs").then((n) => n.m);
1424
+ return unwrap(await handleTaxonomyUpdate(ec.db, args.name, {
1425
+ label: args.label,
1426
+ labelSingular: args.labelSingular,
1427
+ hierarchical: args.hierarchical,
1428
+ collections: args.collections,
1429
+ locale: args.locale
1430
+ }));
1431
+ } catch (error) {
1432
+ return respondHandlerError(error, "TAXONOMY_UPDATE_ERROR");
1433
+ }
1434
+ });
1435
+ server.registerTool("taxonomy_delete", {
1436
+ title: "Delete Taxonomy Definition",
1437
+ description: "Delete a taxonomy definition and all of its terms in every locale, along with any content assignments those terms hold. This cannot be undone.",
1438
+ inputSchema: z.object({ name: z.string().describe("Taxonomy name to delete") }),
1439
+ annotations: { destructiveHint: true }
1440
+ }, async (args, extra) => {
1441
+ requireScope(extra, "taxonomies:manage");
1442
+ requireRole(extra, Role.EDITOR);
1443
+ const ec = getEmDash(extra);
1444
+ try {
1445
+ const { handleTaxonomyDelete } = await import("../../../taxonomies-DkAkMupr.mjs").then((n) => n.m);
1446
+ return unwrap(await handleTaxonomyDelete(ec.db, args.name));
1447
+ } catch (error) {
1448
+ return respondHandlerError(error, "TAXONOMY_DELETE_ERROR");
1449
+ }
1450
+ });
1328
1451
  server.registerTool("taxonomy_list_terms", {
1329
1452
  title: "List Taxonomy Terms",
1330
1453
  description: "List terms in a taxonomy with pagination. Terms are individual entries (e.g. specific categories or tags). Hierarchical taxonomies can have parent-child relationships.",
@@ -1339,11 +1462,11 @@ function createMcpServer(pluginTools = [], request) {
1339
1462
  requireScope(extra, "content:read");
1340
1463
  const ec = getEmDash(extra);
1341
1464
  try {
1342
- const { handleTaxonomyList } = await import("../../../taxonomies-OHUIiIpI.mjs").then((n) => n.m);
1465
+ const { handleTaxonomyList } = await import("../../../taxonomies-DkAkMupr.mjs").then((n) => n.m);
1343
1466
  const listResult = await handleTaxonomyList(ec.db, { locale: args.locale });
1344
1467
  if (!listResult.success) return unwrap(listResult);
1345
1468
  if (!listResult.data.taxonomies.find((t) => t.name === args.taxonomy)) return respondError("NOT_FOUND", `Taxonomy '${args.taxonomy}' not found`);
1346
- const { TaxonomyRepository } = await import("../../../taxonomy-BqCZ1TdU.mjs").then((n) => n.n);
1469
+ const { TaxonomyRepository } = await import("../../../taxonomy-tJepplLL.mjs").then((n) => n.n);
1347
1470
  const repo = new TaxonomyRepository(ec.db);
1348
1471
  const limit = Math.min(args.limit ?? 50, 100);
1349
1472
  let cursor;
@@ -1404,7 +1527,7 @@ function createMcpServer(pluginTools = [], request) {
1404
1527
  requireRole(extra, Role.EDITOR);
1405
1528
  const ec = getEmDash(extra);
1406
1529
  try {
1407
- const { handleTermCreate } = await import("../../../taxonomies-OHUIiIpI.mjs").then((n) => n.m);
1530
+ const { handleTermCreate } = await import("../../../taxonomies-DkAkMupr.mjs").then((n) => n.m);
1408
1531
  return unwrap(await handleTermCreate(ec.db, args.taxonomy, {
1409
1532
  slug: args.slug,
1410
1533
  label: args.label,
@@ -1433,7 +1556,7 @@ function createMcpServer(pluginTools = [], request) {
1433
1556
  requireRole(extra, Role.EDITOR);
1434
1557
  const ec = getEmDash(extra);
1435
1558
  try {
1436
- const { handleTermUpdate } = await import("../../../taxonomies-OHUIiIpI.mjs").then((n) => n.m);
1559
+ const { handleTermUpdate } = await import("../../../taxonomies-DkAkMupr.mjs").then((n) => n.m);
1437
1560
  return unwrap(await handleTermUpdate(ec.db, args.taxonomy, args.termSlug, {
1438
1561
  slug: args.slug,
1439
1562
  label: args.label,
@@ -1457,7 +1580,7 @@ function createMcpServer(pluginTools = [], request) {
1457
1580
  requireRole(extra, Role.EDITOR);
1458
1581
  const ec = getEmDash(extra);
1459
1582
  try {
1460
- const { handleTermDelete } = await import("../../../taxonomies-OHUIiIpI.mjs").then((n) => n.m);
1583
+ const { handleTermDelete } = await import("../../../taxonomies-DkAkMupr.mjs").then((n) => n.m);
1461
1584
  return unwrap(await handleTermDelete(ec.db, args.taxonomy, args.termSlug));
1462
1585
  } catch (error) {
1463
1586
  return respondHandlerError(error, "TAXONOMY_TERM_DELETE_ERROR");
@@ -1472,7 +1595,7 @@ function createMcpServer(pluginTools = [], request) {
1472
1595
  requireScope(extra, "content:read");
1473
1596
  const ec = getEmDash(extra);
1474
1597
  try {
1475
- const { handleTermTranslations } = await import("../../../taxonomies-OHUIiIpI.mjs").then((n) => n.m);
1598
+ const { handleTermTranslations } = await import("../../../taxonomies-DkAkMupr.mjs").then((n) => n.m);
1476
1599
  return unwrap(await handleTermTranslations(ec.db, args.id));
1477
1600
  } catch (error) {
1478
1601
  return respondHandlerError(error, "TERM_TRANSLATIONS_ERROR");
@@ -1487,7 +1610,7 @@ function createMcpServer(pluginTools = [], request) {
1487
1610
  requireScope(extra, "content:read");
1488
1611
  const ec = getEmDash(extra);
1489
1612
  try {
1490
- const { handleMenuList } = await import("../../../menus-TCNSd2vp.mjs").then((n) => n.d);
1613
+ const { handleMenuList } = await import("../../../menus-uvPLXMZf.mjs").then((n) => n.d);
1491
1614
  return unwrap(await handleMenuList(ec.db, { locale: args.locale }));
1492
1615
  } catch (error) {
1493
1616
  return respondHandlerError(error, "MENU_LIST_ERROR");
@@ -1505,7 +1628,7 @@ function createMcpServer(pluginTools = [], request) {
1505
1628
  requireScope(extra, "content:read");
1506
1629
  const ec = getEmDash(extra);
1507
1630
  try {
1508
- const { handleMenuGet } = await import("../../../menus-TCNSd2vp.mjs").then((n) => n.d);
1631
+ const { handleMenuGet } = await import("../../../menus-uvPLXMZf.mjs").then((n) => n.d);
1509
1632
  return unwrap(await handleMenuGet(ec.db, args.name, { locale: args.locale }));
1510
1633
  } catch (error) {
1511
1634
  return respondHandlerError(error, "MENU_GET_ERROR");
@@ -1520,7 +1643,7 @@ function createMcpServer(pluginTools = [], request) {
1520
1643
  requireScope(extra, "content:read");
1521
1644
  const ec = getEmDash(extra);
1522
1645
  try {
1523
- const { handleMenuTranslations } = await import("../../../menus-TCNSd2vp.mjs").then((n) => n.d);
1646
+ const { handleMenuTranslations } = await import("../../../menus-uvPLXMZf.mjs").then((n) => n.d);
1524
1647
  return unwrap(await handleMenuTranslations(ec.db, args.id));
1525
1648
  } catch (error) {
1526
1649
  return respondHandlerError(error, "MENU_TRANSLATIONS_ERROR");
@@ -1540,7 +1663,7 @@ function createMcpServer(pluginTools = [], request) {
1540
1663
  requireRole(extra, Role.EDITOR);
1541
1664
  const ec = getEmDash(extra);
1542
1665
  try {
1543
- const { handleMenuCreate } = await import("../../../menus-TCNSd2vp.mjs").then((n) => n.d);
1666
+ const { handleMenuCreate } = await import("../../../menus-uvPLXMZf.mjs").then((n) => n.d);
1544
1667
  return unwrap(await handleMenuCreate(ec.db, {
1545
1668
  name: args.name,
1546
1669
  label: args.label,
@@ -1564,7 +1687,7 @@ function createMcpServer(pluginTools = [], request) {
1564
1687
  requireRole(extra, Role.EDITOR);
1565
1688
  const ec = getEmDash(extra);
1566
1689
  try {
1567
- const { handleMenuUpdate } = await import("../../../menus-TCNSd2vp.mjs").then((n) => n.d);
1690
+ const { handleMenuUpdate } = await import("../../../menus-uvPLXMZf.mjs").then((n) => n.d);
1568
1691
  return unwrap(await handleMenuUpdate(ec.db, args.name, {
1569
1692
  label: args.label,
1570
1693
  locale: args.locale
@@ -1586,7 +1709,7 @@ function createMcpServer(pluginTools = [], request) {
1586
1709
  requireRole(extra, Role.EDITOR);
1587
1710
  const ec = getEmDash(extra);
1588
1711
  try {
1589
- const { handleMenuDelete } = await import("../../../menus-TCNSd2vp.mjs").then((n) => n.d);
1712
+ const { handleMenuDelete } = await import("../../../menus-uvPLXMZf.mjs").then((n) => n.d);
1590
1713
  return unwrap(await handleMenuDelete(ec.db, args.name, { locale: args.locale }));
1591
1714
  } catch (error) {
1592
1715
  return respondHandlerError(error, "MENU_DELETE_ERROR");
@@ -1621,7 +1744,7 @@ function createMcpServer(pluginTools = [], request) {
1621
1744
  requireRole(extra, Role.EDITOR);
1622
1745
  const ec = getEmDash(extra);
1623
1746
  try {
1624
- const { handleMenuSetItems } = await import("../../../menus-TCNSd2vp.mjs").then((n) => n.d);
1747
+ const { handleMenuSetItems } = await import("../../../menus-uvPLXMZf.mjs").then((n) => n.d);
1625
1748
  return unwrap(await handleMenuSetItems(ec.db, args.name, args.items, { locale: args.locale }));
1626
1749
  } catch (error) {
1627
1750
  return respondHandlerError(error, "MENU_SET_ITEMS_ERROR");
@@ -1668,7 +1791,7 @@ function createMcpServer(pluginTools = [], request) {
1668
1791
  requireRole(extra, Role.EDITOR);
1669
1792
  const ec = getEmDash(extra);
1670
1793
  try {
1671
- const { handleSettingsGet } = await import("../../../settings-DE9xtzqd.mjs").then((n) => n.r);
1794
+ const { handleSettingsGet } = await import("../../../settings-Cwm6o2jY.mjs").then((n) => n.r);
1672
1795
  return unwrap(await handleSettingsGet(ec.db, ec.storage));
1673
1796
  } catch (error) {
1674
1797
  return respondHandlerError(error, "SETTINGS_READ_ERROR");
@@ -1682,7 +1805,7 @@ function createMcpServer(pluginTools = [], request) {
1682
1805
  tagline: z.string().optional().describe("Site tagline / short description"),
1683
1806
  logo: settingsMediaReferenceSchema.optional().describe("Logo media reference ({ mediaId, alt? })"),
1684
1807
  favicon: settingsMediaReferenceSchema.optional().describe("Favicon media reference ({ mediaId, alt? })"),
1685
- url: z.union([z.string().url().refine((u) => HTTP_SCHEME_PATTERN.test(u), "URL must use http or https"), z.literal("")]).optional().describe("Canonical site URL (http or https). Empty string clears it."),
1808
+ url: z.union([z.url().refine((u) => HTTP_SCHEME_PATTERN.test(u), "URL must use http or https"), z.literal("")]).optional().describe("Canonical site URL (http or https). Empty string clears it."),
1686
1809
  postsPerPage: z.number().int().min(1).max(100).optional().describe("Default page size for content listings"),
1687
1810
  dateFormat: z.string().optional().describe("Date format token string"),
1688
1811
  timezone: z.string().optional().describe("IANA timezone identifier"),
@@ -1694,7 +1817,7 @@ function createMcpServer(pluginTools = [], request) {
1694
1817
  requireRole(extra, Role.ADMIN);
1695
1818
  const ec = getEmDash(extra);
1696
1819
  try {
1697
- const { handleSettingsUpdate } = await import("../../../settings-DE9xtzqd.mjs").then((n) => n.r);
1820
+ const { handleSettingsUpdate } = await import("../../../settings-Cwm6o2jY.mjs").then((n) => n.r);
1698
1821
  return unwrap(await handleSettingsUpdate(ec.db, ec.storage, args));
1699
1822
  } catch (error) {
1700
1823
  return respondHandlerError(error, "SETTINGS_UPDATE_ERROR");