emdash 0.29.0 → 0.30.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 (839) hide show
  1. package/dist/{adapters-DPAkL6QF.d.mts → adapters-C0ONzkUP.d.mts} +10 -1
  2. package/dist/adapters-C0ONzkUP.d.mts.map +1 -0
  3. package/dist/{allowed-origins-FXB-FplB.mjs → allowed-origins-CCEi9bPI.mjs} +2 -2
  4. package/dist/{allowed-origins-FXB-FplB.mjs.map → allowed-origins-CCEi9bPI.mjs.map} +1 -1
  5. package/dist/api/route-utils.d.mts +3 -3
  6. package/dist/api/route-utils.d.mts.map +1 -1
  7. package/dist/api/route-utils.mjs +19 -19
  8. package/dist/api/schemas/index.d.mts +2 -2
  9. package/dist/api/schemas/index.mjs +5 -4
  10. package/dist/{api-DVbHNApo.mjs → api-b8WIiGU4.mjs} +253 -153
  11. package/dist/api-b8WIiGU4.mjs.map +1 -0
  12. package/dist/api-tokens-Cvmixds7.mjs +3 -0
  13. package/dist/{api-tokens-UYBkl17d.mjs → api-tokens-uPt8UDpx.mjs} +2 -2
  14. package/dist/{api-tokens-UYBkl17d.mjs.map → api-tokens-uPt8UDpx.mjs.map} +1 -1
  15. package/dist/{apply-D23iUV4q.mjs → apply-CmIJK9j8.mjs} +34 -37
  16. package/dist/apply-CmIJK9j8.mjs.map +1 -0
  17. package/dist/astro/index.d.mts +12 -13
  18. package/dist/astro/index.d.mts.map +1 -1
  19. package/dist/astro/index.mjs +90 -11
  20. package/dist/astro/index.mjs.map +1 -1
  21. package/dist/astro/middleware/auth.d.mts +10 -11
  22. package/dist/astro/middleware/auth.d.mts.map +1 -1
  23. package/dist/astro/middleware/auth.mjs +56 -107
  24. package/dist/astro/middleware/auth.mjs.map +1 -1
  25. package/dist/astro/middleware/redirect.mjs +7 -7
  26. package/dist/astro/middleware/request-context.mjs +4 -4
  27. package/dist/astro/middleware/request-context.mjs.map +1 -1
  28. package/dist/astro/middleware/setup.mjs +1 -1
  29. package/dist/astro/middleware.d.mts +47 -3
  30. package/dist/astro/middleware.d.mts.map +1 -1
  31. package/dist/astro/middleware.mjs +326 -110
  32. package/dist/astro/middleware.mjs.map +1 -1
  33. package/dist/astro/routes/PluginRegistry.d.mts +5 -1
  34. package/dist/astro/routes/PluginRegistry.d.mts.map +1 -1
  35. package/dist/astro/routes/PluginRegistry.mjs +2 -1
  36. package/dist/astro/routes/PluginRegistry.mjs.map +1 -1
  37. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +9 -8
  38. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -1
  39. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +9 -8
  40. package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -1
  41. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +5 -5
  42. package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
  43. package/dist/astro/routes/api/admin/api-tokens/index.mjs.map +1 -1
  44. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +5 -5
  45. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +10 -9
  46. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs.map +1 -1
  47. package/dist/astro/routes/api/admin/byline-fields/index.mjs +10 -9
  48. package/dist/astro/routes/api/admin/byline-fields/index.mjs.map +1 -1
  49. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +10 -9
  50. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs.map +1 -1
  51. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +15 -14
  52. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  53. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +16 -21
  54. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  55. package/dist/astro/routes/api/admin/bylines/index.mjs +15 -14
  56. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  57. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +13 -12
  58. package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -1
  59. package/dist/astro/routes/api/admin/comments/_id_.mjs +6 -6
  60. package/dist/astro/routes/api/admin/comments/bulk.mjs +11 -10
  61. package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -1
  62. package/dist/astro/routes/api/admin/comments/counts.mjs +6 -6
  63. package/dist/astro/routes/api/admin/comments/index.mjs +11 -10
  64. package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -1
  65. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +5 -5
  66. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +4 -4
  67. package/dist/astro/routes/api/admin/media-usage/repair.mjs +12 -10
  68. package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
  69. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +5 -5
  70. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +5 -5
  71. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +40 -39
  72. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
  73. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +40 -39
  74. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
  75. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +45 -39
  76. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  77. package/dist/astro/routes/api/admin/plugins/_id_/mcp.d.mts +8 -0
  78. package/dist/astro/routes/api/admin/plugins/_id_/mcp.d.mts.map +1 -0
  79. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +39 -0
  80. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs.map +1 -0
  81. package/dist/astro/routes/api/admin/plugins/_id_/settings.d.mts +9 -0
  82. package/dist/astro/routes/api/admin/plugins/_id_/settings.d.mts.map +1 -0
  83. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +78 -0
  84. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -0
  85. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +39 -38
  86. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  87. package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts.map +1 -1
  88. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +42 -39
  89. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  90. package/dist/astro/routes/api/admin/plugins/index.mjs +45 -39
  91. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  92. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +4 -4
  93. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +39 -38
  94. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  95. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts.map +1 -1
  96. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +45 -40
  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 +39 -38
  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 +39 -38
  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 +43 -40
  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.mjs +39 -38
  106. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  107. package/dist/astro/routes/api/admin/plugins/registry/install.d.mts.map +1 -1
  108. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +44 -41
  109. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  110. package/dist/astro/routes/api/admin/plugins/updates.mjs +40 -39
  111. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  112. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +39 -38
  113. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  114. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +4 -4
  115. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +39 -38
  116. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  117. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +4 -4
  118. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +4 -4
  119. package/dist/astro/routes/api/admin/users/_id_/index.mjs +9 -8
  120. package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -1
  121. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +5 -5
  122. package/dist/astro/routes/api/admin/users/index.mjs +9 -8
  123. package/dist/astro/routes/api/admin/users/index.mjs.map +1 -1
  124. package/dist/astro/routes/api/auth/dev-bypass.mjs +7 -7
  125. package/dist/astro/routes/api/auth/invite/accept.mjs +4 -4
  126. package/dist/astro/routes/api/auth/invite/complete.mjs +13 -12
  127. package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -1
  128. package/dist/astro/routes/api/auth/invite/index.mjs +10 -9
  129. package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -1
  130. package/dist/astro/routes/api/auth/invite/register-options.mjs +12 -11
  131. package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -1
  132. package/dist/astro/routes/api/auth/logout.mjs +4 -4
  133. package/dist/astro/routes/api/auth/magic-link/send.mjs +12 -11
  134. package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -1
  135. package/dist/astro/routes/api/auth/magic-link/verify.mjs +5 -5
  136. package/dist/astro/routes/api/auth/me.mjs +9 -8
  137. package/dist/astro/routes/api/auth/me.mjs.map +1 -1
  138. package/dist/astro/routes/api/auth/mode.d.mts.map +1 -1
  139. package/dist/astro/routes/api/auth/mode.mjs +6 -3
  140. package/dist/astro/routes/api/auth/mode.mjs.map +1 -1
  141. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +15 -5
  142. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs.map +1 -1
  143. package/dist/astro/routes/api/auth/oauth/_provider_.d.mts.map +1 -1
  144. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +11 -5
  145. package/dist/astro/routes/api/auth/oauth/_provider_.mjs.map +1 -1
  146. package/dist/astro/routes/api/auth/passkey/_id_.mjs +8 -7
  147. package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -1
  148. package/dist/astro/routes/api/auth/passkey/index.mjs +3 -3
  149. package/dist/astro/routes/api/auth/passkey/options.mjs +13 -12
  150. package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -1
  151. package/dist/astro/routes/api/auth/passkey/register/options.mjs +11 -10
  152. package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -1
  153. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +12 -11
  154. package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -1
  155. package/dist/astro/routes/api/auth/passkey/verify.mjs +12 -11
  156. package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -1
  157. package/dist/astro/routes/api/auth/signup/complete.mjs +13 -12
  158. package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -1
  159. package/dist/astro/routes/api/auth/signup/request.mjs +12 -11
  160. package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -1
  161. package/dist/astro/routes/api/auth/signup/verify.mjs +4 -4
  162. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +14 -13
  163. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs.map +1 -1
  164. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +13 -12
  165. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs.map +1 -1
  166. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +5 -5
  167. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs.map +1 -1
  168. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +5 -4
  169. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
  170. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +6 -5
  171. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs.map +1 -1
  172. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +5 -5
  173. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs.map +1 -1
  174. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +13 -12
  175. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
  176. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +10 -8
  177. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  178. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.d.mts.map +1 -1
  179. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +20 -19
  180. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  181. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +18 -17
  182. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  183. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +5 -4
  184. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs.map +1 -1
  185. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +5 -5
  186. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs.map +1 -1
  187. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +10 -8
  188. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
  189. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -1
  190. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +18 -17
  191. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  192. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +5 -5
  193. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs.map +1 -1
  194. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +5 -4
  195. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
  196. package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
  197. package/dist/astro/routes/api/content/_collection_/_id_.mjs +11 -9
  198. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  199. package/dist/astro/routes/api/content/_collection_/authors.mjs +5 -5
  200. package/dist/astro/routes/api/content/_collection_/authors.mjs.map +1 -1
  201. package/dist/astro/routes/api/content/_collection_/index.d.mts.map +1 -1
  202. package/dist/astro/routes/api/content/_collection_/index.mjs +12 -10
  203. package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
  204. package/dist/astro/routes/api/content/_collection_/trash.mjs +10 -9
  205. package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -1
  206. package/dist/astro/routes/api/dashboard.mjs +8 -8
  207. package/dist/astro/routes/api/dev/emails.mjs +4 -4
  208. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  209. package/dist/astro/routes/api/import/probe.mjs +17 -16
  210. package/dist/astro/routes/api/import/probe.mjs.map +1 -1
  211. package/dist/astro/routes/api/import/wordpress/analyze.mjs +4 -4
  212. package/dist/astro/routes/api/import/wordpress/execute.d.mts +11 -12
  213. package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
  214. package/dist/astro/routes/api/import/wordpress/execute.mjs +12 -12
  215. package/dist/astro/routes/api/import/wordpress/media.d.mts +10 -11
  216. package/dist/astro/routes/api/import/wordpress/media.d.mts.map +1 -1
  217. package/dist/astro/routes/api/import/wordpress/media.mjs +11 -10
  218. package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -1
  219. package/dist/astro/routes/api/import/wordpress/prepare.mjs +11 -10
  220. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
  221. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +11 -12
  222. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts.map +1 -1
  223. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +11 -10
  224. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  225. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  226. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +17 -16
  227. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
  228. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
  229. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +11 -12
  230. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
  231. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +23 -22
  232. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  233. package/dist/astro/routes/api/manifest.mjs +7 -8
  234. package/dist/astro/routes/api/manifest.mjs.map +1 -1
  235. package/dist/astro/routes/api/mcp.d.mts.map +1 -1
  236. package/dist/astro/routes/api/mcp.mjs +149 -45
  237. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  238. package/dist/astro/routes/api/media/_id_/confirm.mjs +9 -8
  239. package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -1
  240. package/dist/astro/routes/api/media/_id_/usage.d.mts +8 -0
  241. package/dist/astro/routes/api/media/_id_/usage.d.mts.map +1 -0
  242. package/dist/astro/routes/api/media/_id_/usage.mjs +37 -0
  243. package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -0
  244. package/dist/astro/routes/api/media/_id_.d.mts.map +1 -1
  245. package/dist/astro/routes/api/media/_id_.mjs +26 -10
  246. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  247. package/dist/astro/routes/api/media/file/_...key_.mjs +4 -3
  248. package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
  249. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +4 -4
  250. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +4 -4
  251. package/dist/astro/routes/api/media/providers/index.mjs +4 -4
  252. package/dist/astro/routes/api/media/upload-url.mjs +10 -9
  253. package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
  254. package/dist/astro/routes/api/media.d.mts.map +1 -1
  255. package/dist/astro/routes/api/media.mjs +31 -11
  256. package/dist/astro/routes/api/media.mjs.map +1 -1
  257. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +10 -9
  258. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  259. package/dist/astro/routes/api/menus/_name_/items.mjs +10 -9
  260. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  261. package/dist/astro/routes/api/menus/_name_/reorder.mjs +10 -9
  262. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  263. package/dist/astro/routes/api/menus/_name_/translations.mjs +10 -9
  264. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  265. package/dist/astro/routes/api/menus/_name_.mjs +10 -9
  266. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  267. package/dist/astro/routes/api/menus/index.mjs +10 -9
  268. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  269. package/dist/astro/routes/api/oauth/authorize.d.mts.map +1 -1
  270. package/dist/astro/routes/api/oauth/authorize.mjs +7 -8
  271. package/dist/astro/routes/api/oauth/authorize.mjs.map +1 -1
  272. package/dist/astro/routes/api/oauth/device/authorize.mjs +7 -7
  273. package/dist/astro/routes/api/oauth/device/code.mjs +10 -10
  274. package/dist/astro/routes/api/oauth/device/token.mjs +9 -9
  275. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  276. package/dist/astro/routes/api/oauth/token/refresh.mjs +7 -7
  277. package/dist/astro/routes/api/oauth/token/revoke.mjs +7 -7
  278. package/dist/astro/routes/api/oauth/token.mjs +7 -7
  279. package/dist/astro/routes/api/openapi.json.mjs +52 -24
  280. package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
  281. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts.map +1 -1
  282. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +20 -32
  283. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs.map +1 -1
  284. package/dist/astro/routes/api/redirects/404s/index.mjs +12 -11
  285. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
  286. package/dist/astro/routes/api/redirects/404s/summary.mjs +12 -11
  287. package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
  288. package/dist/astro/routes/api/redirects/_id_.mjs +13 -12
  289. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
  290. package/dist/astro/routes/api/redirects/index.mjs +13 -12
  291. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  292. package/dist/astro/routes/api/relations/_id_/index.mjs +16 -15
  293. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  294. package/dist/astro/routes/api/relations/_id_/translations.mjs +11 -11
  295. package/dist/astro/routes/api/relations/index.mjs +16 -15
  296. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  297. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +4 -4
  298. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +5 -4
  299. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs.map +1 -1
  300. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +39 -38
  301. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  302. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +39 -38
  303. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  304. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +39 -38
  305. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  306. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +39 -38
  307. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  308. package/dist/astro/routes/api/schema/collections/index.mjs +39 -38
  309. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  310. package/dist/astro/routes/api/schema/index.mjs +9 -9
  311. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +39 -38
  312. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  313. package/dist/astro/routes/api/schema/orphans/index.mjs +39 -38
  314. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  315. package/dist/astro/routes/api/search/enable.mjs +13 -12
  316. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  317. package/dist/astro/routes/api/search/index.mjs +12 -11
  318. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  319. package/dist/astro/routes/api/search/rebuild.mjs +13 -12
  320. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  321. package/dist/astro/routes/api/search/stats.mjs +8 -8
  322. package/dist/astro/routes/api/search/suggest.mjs +12 -11
  323. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  324. package/dist/astro/routes/api/sections/_slug_.mjs +12 -11
  325. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  326. package/dist/astro/routes/api/sections/index.mjs +12 -11
  327. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  328. package/dist/astro/routes/api/settings/backups/archives/_name_.d.mts +9 -0
  329. package/dist/astro/routes/api/settings/backups/archives/_name_.d.mts.map +1 -0
  330. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +48 -0
  331. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs.map +1 -0
  332. package/dist/astro/routes/api/settings/backups/archives/index.d.mts +8 -0
  333. package/dist/astro/routes/api/settings/backups/archives/index.d.mts.map +1 -0
  334. package/dist/astro/routes/api/settings/backups/archives/index.mjs +23 -0
  335. package/dist/astro/routes/api/settings/backups/archives/index.mjs.map +1 -0
  336. package/dist/astro/routes/api/settings/backups/export.d.mts +8 -0
  337. package/dist/astro/routes/api/settings/backups/export.d.mts.map +1 -0
  338. package/dist/astro/routes/api/settings/backups/export.mjs +35 -0
  339. package/dist/astro/routes/api/settings/backups/export.mjs.map +1 -0
  340. package/dist/astro/routes/api/settings/backups/index.d.mts +9 -0
  341. package/dist/astro/routes/api/settings/backups/index.d.mts.map +1 -0
  342. package/dist/astro/routes/api/settings/backups/index.mjs +52 -0
  343. package/dist/astro/routes/api/settings/backups/index.mjs.map +1 -0
  344. package/dist/astro/routes/api/settings/email.mjs +5 -5
  345. package/dist/astro/routes/api/settings.mjs +14 -13
  346. package/dist/astro/routes/api/settings.mjs.map +1 -1
  347. package/dist/astro/routes/api/setup/admin-verify.mjs +19 -15
  348. package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
  349. package/dist/astro/routes/api/setup/admin.mjs +18 -14
  350. package/dist/astro/routes/api/setup/admin.mjs.map +1 -1
  351. package/dist/astro/routes/api/setup/dev-bypass.mjs +26 -26
  352. package/dist/astro/routes/api/setup/dev-reset.mjs +3 -3
  353. package/dist/astro/routes/api/setup/index.mjs +28 -27
  354. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  355. package/dist/astro/routes/api/setup/status.mjs +5 -5
  356. package/dist/astro/routes/api/snapshot.mjs +8 -215
  357. package/dist/astro/routes/api/snapshot.mjs.map +1 -1
  358. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +14 -13
  359. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  360. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +14 -13
  361. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  362. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +14 -13
  363. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  364. package/dist/astro/routes/api/taxonomies/index.mjs +14 -13
  365. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  366. package/dist/astro/routes/api/themes/preview.mjs +6 -6
  367. package/dist/astro/routes/api/typegen.mjs +6 -6
  368. package/dist/astro/routes/api/well-known/auth.mjs +1 -1
  369. package/dist/astro/routes/api/well-known/oauth-authorization-server.d.mts.map +1 -1
  370. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +4 -3
  371. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs.map +1 -1
  372. package/dist/astro/routes/api/well-known/oauth-protected-resource.d.mts.map +1 -1
  373. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +4 -3
  374. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs.map +1 -1
  375. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +9 -8
  376. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  377. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +12 -11
  378. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  379. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +12 -11
  380. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  381. package/dist/astro/routes/api/widget-areas/_name_.mjs +7 -7
  382. package/dist/astro/routes/api/widget-areas/index.mjs +12 -11
  383. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  384. package/dist/astro/routes/api/widget-components.mjs +4 -4
  385. package/dist/astro/routes/robots.txt.mjs +7 -7
  386. package/dist/astro/routes/sitemap-_collection_.xml.mjs +9 -9
  387. package/dist/astro/routes/sitemap.xml.mjs +8 -8
  388. package/dist/astro/types.d.mts +38 -17
  389. package/dist/astro/types.d.mts.map +1 -1
  390. package/dist/auth/providers/github.d.mts +1 -1
  391. package/dist/auth/providers/google.d.mts +1 -1
  392. package/dist/{authorize-BmCwQCib.mjs → authorize-WxsiePzy.mjs} +7 -4
  393. package/dist/authorize-WxsiePzy.mjs.map +1 -0
  394. package/dist/backup-S8kFWtwD.mjs +241 -0
  395. package/dist/backup-S8kFWtwD.mjs.map +1 -0
  396. package/dist/{base64-C74Msx8h.mjs → base64-B-PsqheR.mjs} +8 -4
  397. package/dist/base64-B-PsqheR.mjs.map +1 -0
  398. package/dist/{byline-BWb5H-65.mjs → byline-XEjchwzZ.mjs} +6 -6
  399. package/dist/{byline-BWb5H-65.mjs.map → byline-XEjchwzZ.mjs.map} +1 -1
  400. package/dist/{byline-fields-DO6bAYK8.mjs → byline-fields-CdU_LTF1.mjs} +1 -1
  401. package/dist/{byline-fields-DO6bAYK8.mjs.map → byline-fields-CdU_LTF1.mjs.map} +1 -1
  402. package/dist/{bylines-BGuKFaBy.mjs → bylines-BJbT4gKS.mjs} +4 -4
  403. package/dist/{bylines-BGuKFaBy.mjs.map → bylines-BJbT4gKS.mjs.map} +1 -1
  404. package/dist/{bylines-CHojDMpj.mjs → bylines-czseViYo.mjs} +6 -6
  405. package/dist/{bylines-CHojDMpj.mjs.map → bylines-czseViYo.mjs.map} +1 -1
  406. package/dist/{cache-BeR7RfN8.mjs → cache-CGCd6AVM.mjs} +2 -2
  407. package/dist/{cache-BeR7RfN8.mjs.map → cache-CGCd6AVM.mjs.map} +1 -1
  408. package/dist/{challenge-store-B426wQ6O.mjs → challenge-store-BFzgFRog.mjs} +1 -1
  409. package/dist/{challenge-store-B426wQ6O.mjs.map → challenge-store-BFzgFRog.mjs.map} +1 -1
  410. package/dist/{chunks-BU5_nrAC.mjs → chunks-BxXyunY-.mjs} +2 -2
  411. package/dist/{chunks-BU5_nrAC.mjs.map → chunks-BxXyunY-.mjs.map} +1 -1
  412. package/dist/cli/index.mjs +138 -31
  413. package/dist/cli/index.mjs.map +1 -1
  414. package/dist/client/cf-access.d.mts +1 -1
  415. package/dist/client/index.d.mts +54 -3
  416. package/dist/client/index.d.mts.map +1 -1
  417. package/dist/client/index.mjs +16 -4
  418. package/dist/client/index.mjs.map +1 -1
  419. package/dist/{comment-SWh31kS0.mjs → comment-DPT0WKyd.mjs} +2 -2
  420. package/dist/{comment-SWh31kS0.mjs.map → comment-DPT0WKyd.mjs.map} +1 -1
  421. package/dist/{comment-reaction-DgcpziXI.mjs → comment-reaction-C65MldIB.mjs} +2 -2
  422. package/dist/{comment-reaction-DgcpziXI.mjs.map → comment-reaction-C65MldIB.mjs.map} +1 -1
  423. package/dist/{comments-kZYGppMS.mjs → comments-Bz6sCbgD.mjs} +3 -3
  424. package/dist/{comments-kZYGppMS.mjs.map → comments-Bz6sCbgD.mjs.map} +1 -1
  425. package/dist/{components-CliOkZAs.mjs → components-DZkL4Fx0.mjs} +1 -1
  426. package/dist/{components-CliOkZAs.mjs.map → components-DZkL4Fx0.mjs.map} +1 -1
  427. package/dist/{content-BO61Sx4j.mjs → content-Ci04z2z-.mjs} +53 -19
  428. package/dist/content-Ci04z2z-.mjs.map +1 -0
  429. package/dist/{content-refresh-BkkApzeS.mjs → content-refresh-D4khvC0R.mjs} +95 -3
  430. package/dist/content-refresh-D4khvC0R.mjs.map +1 -0
  431. package/dist/{context-DtSFYFuS.mjs → context-B6hc7zJL.mjs} +97 -74
  432. package/dist/context-B6hc7zJL.mjs.map +1 -0
  433. package/dist/{cron-YFJ7uNVA.mjs → cron-BlKIMD_e.mjs} +1 -1
  434. package/dist/{cron-YFJ7uNVA.mjs.map → cron-BlKIMD_e.mjs.map} +1 -1
  435. package/dist/{dashboard-xo_gPs_D.mjs → dashboard-C5NkXFbi.mjs} +4 -4
  436. package/dist/{dashboard-xo_gPs_D.mjs.map → dashboard-C5NkXFbi.mjs.map} +1 -1
  437. package/dist/db/index.d.mts +3 -3
  438. package/dist/db/index.mjs +2 -2
  439. package/dist/db/index.mjs.map +1 -1
  440. package/dist/db/libsql.d.mts +1 -1
  441. package/dist/db/postgres.d.mts +1 -1
  442. package/dist/db/sqlite.d.mts +1 -1
  443. package/dist/{db-errors-BKuXh_fi.mjs → db-errors-CcWLaRiR.mjs} +4 -2
  444. package/dist/db-errors-CcWLaRiR.mjs.map +1 -0
  445. package/dist/{default-DY5ovGUG.mjs → default-C4v9KP56.mjs} +1 -1
  446. package/dist/{default-DY5ovGUG.mjs.map → default-C4v9KP56.mjs.map} +1 -1
  447. package/dist/{device-flow-CPXQ_QfW.mjs → device-flow-BeA6lUS1.mjs} +5 -6
  448. package/dist/device-flow-BeA6lUS1.mjs.map +1 -0
  449. package/dist/{dialect-helpers-Cue7QQOR.mjs → dialect-helpers-HxEQGl_1.mjs} +57 -11
  450. package/dist/{dialect-helpers-Cue7QQOR.mjs.map → dialect-helpers-HxEQGl_1.mjs.map} +1 -1
  451. package/dist/{email-console-CjkQc7oY.mjs → email-console-C-9Ng8DM.mjs} +1 -1
  452. package/dist/{email-console-CjkQc7oY.mjs.map → email-console-C-9Ng8DM.mjs.map} +1 -1
  453. package/dist/error-CEGF6UZb.mjs +90 -0
  454. package/dist/error-CEGF6UZb.mjs.map +1 -0
  455. package/dist/{error-CfJMLSkd.mjs → errors-DtEXIQQV.mjs} +15 -84
  456. package/dist/errors-DtEXIQQV.mjs.map +1 -0
  457. package/dist/{escape-r8_GbEU2.mjs → escape-CFedIB1C.mjs} +1 -1
  458. package/dist/{escape-r8_GbEU2.mjs.map → escape-CFedIB1C.mjs.map} +1 -1
  459. package/dist/{field-defs-cache-BVrNCgSj.mjs → field-defs-cache-DvmlgP-D.mjs} +2 -2
  460. package/dist/{field-defs-cache-BVrNCgSj.mjs.map → field-defs-cache-DvmlgP-D.mjs.map} +1 -1
  461. package/dist/{fts-manager-BD9s77qh.mjs → fts-manager-DzqIBrrW.mjs} +3 -3
  462. package/dist/{fts-manager-BD9s77qh.mjs.map → fts-manager-DzqIBrrW.mjs.map} +1 -1
  463. package/dist/{hreflang-CgIxhH4k.d.mts → hreflang-CIxH_LKz.d.mts} +2 -2
  464. package/dist/{hreflang-CgIxhH4k.d.mts.map → hreflang-CIxH_LKz.d.mts.map} +1 -1
  465. package/dist/{hreflang-pAWUiPd_.mjs → hreflang-db2Tpb2o.mjs} +5 -5
  466. package/dist/{hreflang-pAWUiPd_.mjs.map → hreflang-db2Tpb2o.mjs.map} +1 -1
  467. package/dist/{import-2jHtLzsO.mjs → import-Dmkm8S1W.mjs} +4 -4
  468. package/dist/{import-2jHtLzsO.mjs.map → import-Dmkm8S1W.mjs.map} +1 -1
  469. package/dist/{index-DxjWLKGT.d.mts → index-BEui-cRd.d.mts} +3 -3
  470. package/dist/{index-DxjWLKGT.d.mts.map → index-BEui-cRd.d.mts.map} +1 -1
  471. package/dist/{index-BXOCyLj0.d.mts → index-wYnC6u4o.d.mts} +780 -15
  472. package/dist/index-wYnC6u4o.d.mts.map +1 -0
  473. package/dist/index.d.mts +18 -19
  474. package/dist/index.mjs +59 -58
  475. package/dist/{load-DgoWMdRX.mjs → load-Cx27ki1l.mjs} +2 -2
  476. package/dist/{load-DgoWMdRX.mjs.map → load-Cx27ki1l.mjs.map} +1 -1
  477. package/dist/{loader-Rb8QlGZp.mjs → loader-Be3ouI5L.mjs} +170 -6
  478. package/dist/loader-Be3ouI5L.mjs.map +1 -0
  479. package/dist/{manifest-schema-DeGNma2O.mjs → manifest-schema-bCq54i7F.mjs} +16 -2
  480. package/dist/manifest-schema-bCq54i7F.mjs.map +1 -0
  481. package/dist/media/image-endpoint.d.mts +30 -2
  482. package/dist/media/image-endpoint.d.mts.map +1 -1
  483. package/dist/media/image-endpoint.mjs +29 -3
  484. package/dist/media/image-endpoint.mjs.map +1 -1
  485. package/dist/media/index.d.mts +1 -1
  486. package/dist/media/local-runtime.d.mts +12 -13
  487. package/dist/media/local-runtime.d.mts.map +1 -1
  488. package/dist/media/local-runtime.mjs +6 -6
  489. package/dist/{media-D2ZFowpn.mjs → media-BjhhENaJ.mjs} +2 -2
  490. package/dist/{media-D2ZFowpn.mjs.map → media-BjhhENaJ.mjs.map} +1 -1
  491. package/dist/{media-allowlist-Dc05vKtt.mjs → media-allowlist-jUppPWFy.mjs} +1 -1
  492. package/dist/{media-allowlist-Dc05vKtt.mjs.map → media-allowlist-jUppPWFy.mjs.map} +1 -1
  493. package/dist/media-kIV1IxFf.mjs +243 -0
  494. package/dist/media-kIV1IxFf.mjs.map +1 -0
  495. package/dist/media-upload-D2wk3EIt.mjs +145 -0
  496. package/dist/media-upload-D2wk3EIt.mjs.map +1 -0
  497. package/dist/{media-url-DgIEYZr4.mjs → media-url-BCm5vBn6.mjs} +1 -1
  498. package/dist/{media-url-DgIEYZr4.mjs.map → media-url-BCm5vBn6.mjs.map} +1 -1
  499. package/dist/{media-usage-B__v9NMm.mjs → media-usage-CljdO1mc.mjs} +138 -5
  500. package/dist/{media-usage-B__v9NMm.mjs.map → media-usage-CljdO1mc.mjs.map} +1 -1
  501. package/dist/{menus-BtvH7Z7t.mjs → menus-BcyElFtI.mjs} +155 -12
  502. package/dist/menus-BcyElFtI.mjs.map +1 -0
  503. package/dist/{menus-BpfevlJD.mjs → menus-CZyG6rvx.mjs} +2 -2
  504. package/dist/{menus-BpfevlJD.mjs.map → menus-CZyG6rvx.mjs.map} +1 -1
  505. package/dist/{mode-BVnhGZ2o.mjs → mode-fiXRMfeA.mjs} +1 -1
  506. package/dist/{mode-BVnhGZ2o.mjs.map → mode-fiXRMfeA.mjs.map} +1 -1
  507. package/dist/{oauth-authorization-BWqWTHBK.mjs → oauth-authorization-oqfbBuMH.mjs} +5 -6
  508. package/dist/oauth-authorization-oqfbBuMH.mjs.map +1 -0
  509. package/dist/{oauth-clients-43_XADoa.mjs → oauth-clients-BlrUHAsf.mjs} +1 -1
  510. package/dist/{oauth-clients-43_XADoa.mjs.map → oauth-clients-BlrUHAsf.mjs.map} +1 -1
  511. package/dist/{oauth-state-store-BRSUEkmx.mjs → oauth-state-store-DnvjRMy6.mjs} +2 -1
  512. package/dist/{oauth-state-store-BRSUEkmx.mjs.map → oauth-state-store-DnvjRMy6.mjs.map} +1 -1
  513. package/dist/{oauth-user-lookup-Ctgemb0k.mjs → oauth-user-lookup-oUllxvAv.mjs} +1 -1
  514. package/dist/{oauth-user-lookup-Ctgemb0k.mjs.map → oauth-user-lookup-oUllxvAv.mjs.map} +1 -1
  515. package/dist/object-cache/memory.d.mts +1 -1
  516. package/dist/{options-COXGTtqd.d.mts → options-BqMkWfYa.d.mts} +6 -6
  517. package/dist/{options-COXGTtqd.d.mts.map → options-BqMkWfYa.d.mts.map} +1 -1
  518. package/dist/page/index.d.mts +2 -2
  519. package/dist/page/index.d.mts.map +1 -1
  520. package/dist/page/index.mjs.map +1 -1
  521. package/dist/{parse-GLksnn-B.mjs → parse-C_-6klII.mjs} +4 -12
  522. package/dist/{parse-GLksnn-B.mjs.map → parse-C_-6klII.mjs.map} +1 -1
  523. package/dist/{passkey-config-CjA1UbDj.mjs → passkey-config-C-SKpc0-.mjs} +1 -1
  524. package/dist/{passkey-config-CjA1UbDj.mjs.map → passkey-config-C-SKpc0-.mjs.map} +1 -1
  525. package/dist/{placeholder-DR-eeZr-.d.mts → placeholder-Dop47JMM.d.mts} +1 -1
  526. package/dist/{placeholder-DR-eeZr-.d.mts.map → placeholder-Dop47JMM.d.mts.map} +1 -1
  527. package/dist/plugin-types.d.mts +21 -2
  528. package/dist/plugin-types.d.mts.map +1 -1
  529. package/dist/plugin-utils.d.mts +18 -17
  530. package/dist/plugin-utils.d.mts.map +1 -1
  531. package/dist/plugin-utils.mjs +8 -6
  532. package/dist/plugin-utils.mjs.map +1 -1
  533. package/dist/plugins/adapt-sandbox-entry.d.mts +10 -11
  534. package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
  535. package/dist/plugins/adapt-sandbox-entry.mjs +15 -3
  536. package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
  537. package/dist/{portable-text-BAkgEKcv.mjs → portable-text-sDj92Kxv.mjs} +1 -1
  538. package/dist/{portable-text-BAkgEKcv.mjs.map → portable-text-sDj92Kxv.mjs.map} +1 -1
  539. package/dist/{preview-Rloa09Wp.mjs → preview-D4Jnbfx7.mjs} +2 -2
  540. package/dist/{preview-Rloa09Wp.mjs.map → preview-D4Jnbfx7.mjs.map} +1 -1
  541. package/dist/{public-url-C0cEvrRu.mjs → public-url-DSGTnJFw.mjs} +5 -3
  542. package/dist/public-url-DSGTnJFw.mjs.map +1 -0
  543. package/dist/{query-ZzvXyxWq.mjs → query-DR73ZNfm.mjs} +14 -14
  544. package/dist/{query-ZzvXyxWq.mjs.map → query-DR73ZNfm.mjs.map} +1 -1
  545. package/dist/{query-BxT95opY.mjs → query-Di7DOmPV.mjs} +3 -3
  546. package/dist/{query-BxT95opY.mjs.map → query-Di7DOmPV.mjs.map} +1 -1
  547. package/dist/{rate-limit-Cg4Rvc_-.mjs → rate-limit-CMj83JNW.mjs} +2 -2
  548. package/dist/{rate-limit-Cg4Rvc_-.mjs.map → rate-limit-CMj83JNW.mjs.map} +1 -1
  549. package/dist/{redirect-Ce_6Yb6z.mjs → redirect-Botom7X6.mjs} +1 -1
  550. package/dist/{redirect-Ce_6Yb6z.mjs.map → redirect-Botom7X6.mjs.map} +1 -1
  551. package/dist/{redirect-Ch3E98qZ.mjs → redirect-CgLPYflR.mjs} +10 -4
  552. package/dist/redirect-CgLPYflR.mjs.map +1 -0
  553. package/dist/{redirects-CXmVGRNZ.mjs → redirects-B7t9bKsL.mjs} +4 -4
  554. package/dist/{redirects-CXmVGRNZ.mjs.map → redirects-B7t9bKsL.mjs.map} +1 -1
  555. package/dist/{redirects-CeD7K7EX.mjs → redirects-BBq3n2Rj.mjs} +4 -175
  556. package/dist/redirects-BBq3n2Rj.mjs.map +1 -0
  557. package/dist/{registry-CyIXPi4E.mjs → registry-FV15nLge.mjs} +97 -8
  558. package/dist/registry-FV15nLge.mjs.map +1 -0
  559. package/dist/{relation-Ba68Tm4Z.mjs → relation-9M9j_UWo.mjs} +3 -3
  560. package/dist/{relation-Ba68Tm4Z.mjs.map → relation-9M9j_UWo.mjs.map} +1 -1
  561. package/dist/{relations-BmBmX4Eb.mjs → relations-5_avdrN_.mjs} +2 -2
  562. package/dist/{relations-BmBmX4Eb.mjs.map → relations-5_avdrN_.mjs.map} +1 -1
  563. package/dist/{relations-C8hVyEy0.mjs → relations-BKvO39-9.mjs} +5 -5
  564. package/dist/{relations-C8hVyEy0.mjs.map → relations-BKvO39-9.mjs.map} +1 -1
  565. package/dist/{relations-CbBpoOys.d.mts → relations-Bh8jlFsU.d.mts} +306 -4
  566. package/dist/relations-Bh8jlFsU.d.mts.map +1 -0
  567. package/dist/{request-meta-DCwktC5P.mjs → request-meta-DzXYYI-n.mjs} +2 -2
  568. package/dist/{request-meta-DCwktC5P.mjs.map → request-meta-DzXYYI-n.mjs.map} +1 -1
  569. package/dist/{runner-CiNdIk3y.d.mts → runner-Dd8m8k9F.d.mts} +2 -2
  570. package/dist/{runner-CiNdIk3y.d.mts.map → runner-Dd8m8k9F.d.mts.map} +1 -1
  571. package/dist/{runner-jt65bF7F.mjs → runner-DfnZ5eUr.mjs} +333 -199
  572. package/dist/runner-DfnZ5eUr.mjs.map +1 -0
  573. package/dist/runtime.d.mts +11 -12
  574. package/dist/runtime.d.mts.map +1 -1
  575. package/dist/runtime.mjs +4 -4
  576. package/dist/{schema-DwjufZ1S.mjs → schema-BXxlHeAf.mjs} +3 -3
  577. package/dist/{schema-DwjufZ1S.mjs.map → schema-BXxlHeAf.mjs.map} +1 -1
  578. package/dist/scopes-Bl4IwHA-.mjs +27 -0
  579. package/dist/scopes-Bl4IwHA-.mjs.map +1 -0
  580. package/dist/{search-Cl875CVE.mjs → search-Bff-7jFt.mjs} +5 -5
  581. package/dist/{search-Cl875CVE.mjs.map → search-Bff-7jFt.mjs.map} +1 -1
  582. package/dist/{secrets-CO_bEmII.mjs → secrets-CSwQIl4q.mjs} +3 -3
  583. package/dist/{secrets-CO_bEmII.mjs.map → secrets-CSwQIl4q.mjs.map} +1 -1
  584. package/dist/{sections-DTKzgoiS.mjs → sections-CwW4s1al.mjs} +3 -3
  585. package/dist/{sections-DTKzgoiS.mjs.map → sections-CwW4s1al.mjs.map} +1 -1
  586. package/dist/seed/index.d.mts +2 -2
  587. package/dist/seed/index.mjs +20 -20
  588. package/dist/seo/index.d.mts +14 -3
  589. package/dist/seo/index.d.mts.map +1 -1
  590. package/dist/seo/index.mjs +16 -16
  591. package/dist/seo/index.mjs.map +1 -1
  592. package/dist/{seo-BLm6SXzS.mjs → seo-2cmFHZns.mjs} +2 -2
  593. package/dist/{seo-BLm6SXzS.mjs.map → seo-2cmFHZns.mjs.map} +1 -1
  594. package/dist/{seo-BjrbXAd_.mjs → seo-C3GDfT0V.mjs} +1 -1
  595. package/dist/{seo-BjrbXAd_.mjs.map → seo-C3GDfT0V.mjs.map} +1 -1
  596. package/dist/{service-D6zDmKXy.mjs → service-DkGTWGIi.mjs} +3 -3
  597. package/dist/{service-D6zDmKXy.mjs.map → service-DkGTWGIi.mjs.map} +1 -1
  598. package/dist/{session-user-DoSs6YM8.mjs → session-user-DbHqKDKe.mjs} +1 -1
  599. package/dist/{session-user-DoSs6YM8.mjs.map → session-user-DbHqKDKe.mjs.map} +1 -1
  600. package/dist/{settings-CmS3TwXf.mjs → settings-C4s8hFQm.mjs} +3 -3
  601. package/dist/{settings-CmS3TwXf.mjs.map → settings-C4s8hFQm.mjs.map} +1 -1
  602. package/dist/{settings-BuQYvLfy.mjs → settings-CpA4lQFt.mjs} +4 -4
  603. package/dist/{settings-BuQYvLfy.mjs.map → settings-CpA4lQFt.mjs.map} +1 -1
  604. package/dist/{setup-complete-BPNgLHlU.mjs → setup-complete-CdIlqloh.mjs} +1 -1
  605. package/dist/{setup-complete-BPNgLHlU.mjs.map → setup-complete-CdIlqloh.mjs.map} +1 -1
  606. package/dist/{setup-nonce-DEPZX96T.mjs → setup-nonce-DqiIPr-J.mjs} +1 -1
  607. package/dist/{setup-nonce-DEPZX96T.mjs.map → setup-nonce-DqiIPr-J.mjs.map} +1 -1
  608. package/dist/{single-flight-cache-DEtW-OEG.mjs → single-flight-cache-C2exrGAi.mjs} +1 -1
  609. package/dist/{single-flight-cache-DEtW-OEG.mjs.map → single-flight-cache-C2exrGAi.mjs.map} +1 -1
  610. package/dist/{site-url-CcLy5D5s.mjs → site-url-NGJT6NTU.mjs} +1 -1
  611. package/dist/{site-url-CcLy5D5s.mjs.map → site-url-NGJT6NTU.mjs.map} +1 -1
  612. package/dist/snapshot-BdpUJKD-.mjs +216 -0
  613. package/dist/snapshot-BdpUJKD-.mjs.map +1 -0
  614. package/dist/{ssrf-TrKYJAy0.mjs → ssrf-CviKqWmq.mjs} +1 -1
  615. package/dist/{ssrf-TrKYJAy0.mjs.map → ssrf-CviKqWmq.mjs.map} +1 -1
  616. package/dist/state-xxv6ZTMv.mjs +128 -0
  617. package/dist/state-xxv6ZTMv.mjs.map +1 -0
  618. package/dist/{status-D3Gy1Zc6.mjs → status-COfycGIU.mjs} +1 -1
  619. package/dist/{status-D3Gy1Zc6.mjs.map → status-COfycGIU.mjs.map} +1 -1
  620. package/dist/storage/local.d.mts +1 -1
  621. package/dist/storage/local.mjs +1 -1
  622. package/dist/storage/s3.d.mts +1 -1
  623. package/dist/storage/s3.mjs +1 -1
  624. package/dist/{taxonomies-ClS4RKaZ.mjs → taxonomies-Ce49uIzY.mjs} +4 -4
  625. package/dist/{taxonomies-ClS4RKaZ.mjs.map → taxonomies-Ce49uIzY.mjs.map} +1 -1
  626. package/dist/{taxonomies-pUkuD6nj.mjs → taxonomies-DjSKBZpq.mjs} +7 -7
  627. package/dist/{taxonomies-pUkuD6nj.mjs.map → taxonomies-DjSKBZpq.mjs.map} +1 -1
  628. package/dist/{taxonomy-BkxbUMSw.mjs → taxonomy-DfVooU4W.mjs} +51 -13
  629. package/dist/taxonomy-DfVooU4W.mjs.map +1 -0
  630. package/dist/{tokens-BV6fgl5A.mjs → tokens-DVltpO2D.mjs} +2 -2
  631. package/dist/{tokens-BV6fgl5A.mjs.map → tokens-DVltpO2D.mjs.map} +1 -1
  632. package/dist/{transport-DTFhhPOg.mjs → transport-CKrlqSpD.mjs} +1 -1
  633. package/dist/{transport-DTFhhPOg.mjs.map → transport-CKrlqSpD.mjs.map} +1 -1
  634. package/dist/{transport-DmlmzD2U.d.mts → transport-Vd7VdqHv.d.mts} +1 -1
  635. package/dist/{transport-DmlmzD2U.d.mts.map → transport-Vd7VdqHv.d.mts.map} +1 -1
  636. package/dist/{trusted-proxy-CSgZVESw.mjs → trusted-proxy-CwjQj0YG.mjs} +1 -1
  637. package/dist/{trusted-proxy-CSgZVESw.mjs.map → trusted-proxy-CwjQj0YG.mjs.map} +1 -1
  638. package/dist/{types-B6-N9cBB.d.mts → types-B4vm81VH.d.mts} +1 -1
  639. package/dist/{types-B6-N9cBB.d.mts.map → types-B4vm81VH.d.mts.map} +1 -1
  640. package/dist/{types-Cm4Cz-8M.d.mts → types-B97jg3aW.d.mts} +6 -1
  641. package/dist/{types-Cm4Cz-8M.d.mts.map → types-B97jg3aW.d.mts.map} +1 -1
  642. package/dist/{types-BNZsPL9z.mjs → types-BD40g7zz.mjs} +1 -1
  643. package/dist/{types-BNZsPL9z.mjs.map → types-BD40g7zz.mjs.map} +1 -1
  644. package/dist/{types-QnlQIyPE.d.mts → types-BNfPHfay.d.mts} +1 -1
  645. package/dist/{types-QnlQIyPE.d.mts.map → types-BNfPHfay.d.mts.map} +1 -1
  646. package/dist/{types-DLIrNtv5.d.mts → types-BfYUPJdP.d.mts} +2 -2
  647. package/dist/{types-DLIrNtv5.d.mts.map → types-BfYUPJdP.d.mts.map} +1 -1
  648. package/dist/{types-CtDVagM4.d.mts → types-BvB7gDOD.d.mts} +38 -4
  649. package/dist/types-BvB7gDOD.d.mts.map +1 -0
  650. package/dist/{types-B_pmP7Yq.d.mts → types-C7U0HlEr.d.mts} +1 -1
  651. package/dist/{types-B_pmP7Yq.d.mts.map → types-C7U0HlEr.d.mts.map} +1 -1
  652. package/dist/{types-Ch8pFMEm.mjs → types-D1iJ3DpO.mjs} +3 -3
  653. package/dist/{types-Ch8pFMEm.mjs.map → types-D1iJ3DpO.mjs.map} +1 -1
  654. package/dist/{types-momGysZk.d.mts → types-DPKhI5ib.d.mts} +9 -1
  655. package/dist/types-DPKhI5ib.d.mts.map +1 -0
  656. package/dist/{types-BCVuUPrL.d.mts → types-Kmaxdarz.d.mts} +1 -1
  657. package/dist/{types-BCVuUPrL.d.mts.map → types-Kmaxdarz.d.mts.map} +1 -1
  658. package/dist/{types-qljd1hsL.d.mts → types-iVeZ5g6N.d.mts} +1 -1
  659. package/dist/{types-qljd1hsL.d.mts.map → types-iVeZ5g6N.d.mts.map} +1 -1
  660. package/dist/{user-DTxX_Fha.mjs → user-Bh-L1qo6.mjs} +3 -3
  661. package/dist/{user-DTxX_Fha.mjs.map → user-Bh-L1qo6.mjs.map} +1 -1
  662. package/dist/{utils-Cz8PVrl4.mjs → utils-BbUgmeZG.mjs} +1 -1
  663. package/dist/{utils-Cz8PVrl4.mjs.map → utils-BbUgmeZG.mjs.map} +1 -1
  664. package/dist/{validate-9jLuE301.d.mts → validate-DULfgpJP.d.mts} +5 -5
  665. package/dist/{validate-9jLuE301.d.mts.map → validate-DULfgpJP.d.mts.map} +1 -1
  666. package/dist/{validate-C3CpWlNt.mjs → validate-V9nCwq_-.mjs} +2 -2
  667. package/dist/{validate-C3CpWlNt.mjs.map → validate-V9nCwq_-.mjs.map} +1 -1
  668. package/dist/{validation-DM2K_NJC.mjs → validation-BsVUJfsP.mjs} +10 -10
  669. package/dist/{validation-DM2K_NJC.mjs.map → validation-BsVUJfsP.mjs.map} +1 -1
  670. package/dist/version-907opKac.mjs +7 -0
  671. package/dist/{version-BlIJvNAZ.mjs.map → version-907opKac.mjs.map} +1 -1
  672. package/dist/{widgets-B_X6_UXJ.mjs → widgets-DGv1Z04V.mjs} +3 -3
  673. package/dist/{widgets-B_X6_UXJ.mjs.map → widgets-DGv1Z04V.mjs.map} +1 -1
  674. package/dist/{wxr-taxonomies-tADW4KTa.d.mts → wxr-taxonomies-B4tMuN5T.d.mts} +1 -1
  675. package/dist/{wxr-taxonomies-tADW4KTa.d.mts.map → wxr-taxonomies-B4tMuN5T.d.mts.map} +1 -1
  676. package/dist/{wxr-taxonomies-oNJB2S81.mjs → wxr-taxonomies-Cs1N6O8z.mjs} +3 -3
  677. package/dist/{wxr-taxonomies-oNJB2S81.mjs.map → wxr-taxonomies-Cs1N6O8z.mjs.map} +1 -1
  678. package/dist/{zod-generator-CrfV79De.mjs → zod-generator-B5prQ5M4.mjs} +2 -2
  679. package/dist/{zod-generator-CrfV79De.mjs.map → zod-generator-B5prQ5M4.mjs.map} +1 -1
  680. package/package.json +8 -8
  681. package/src/api/authorize.ts +10 -1
  682. package/src/api/error.ts +5 -5
  683. package/src/api/errors.ts +14 -0
  684. package/src/api/handlers/backup.ts +312 -0
  685. package/src/api/handlers/content.ts +36 -2
  686. package/src/api/handlers/device-flow.ts +2 -3
  687. package/src/api/handlers/index.ts +16 -0
  688. package/src/api/handlers/marketplace.ts +38 -0
  689. package/src/api/handlers/media-upload.ts +210 -0
  690. package/src/api/handlers/media-usage.ts +211 -2
  691. package/src/api/handlers/oauth-authorization.ts +2 -6
  692. package/src/api/handlers/plugin-settings.ts +218 -0
  693. package/src/api/handlers/plugins.ts +41 -0
  694. package/src/api/handlers/registry.ts +39 -0
  695. package/src/api/handlers/snapshot.ts +21 -3
  696. package/src/api/openapi/document.ts +48 -6
  697. package/src/api/parse.ts +1 -15
  698. package/src/api/public-url.ts +4 -2
  699. package/src/api/schemas/common.ts +6 -2
  700. package/src/api/schemas/media-usage.ts +72 -0
  701. package/src/api/schemas/media.ts +32 -1
  702. package/src/astro/integration/index.ts +38 -0
  703. package/src/astro/integration/routes.ts +35 -0
  704. package/src/astro/integration/runtime.ts +6 -0
  705. package/src/astro/integration/virtual-modules.ts +41 -7
  706. package/src/astro/integration/vite-config.ts +17 -1
  707. package/src/astro/middleware/auth.ts +70 -78
  708. package/src/astro/middleware/csp.ts +5 -2
  709. package/src/astro/middleware.ts +86 -31
  710. package/src/astro/public-plugin-api-routes.ts +2 -1
  711. package/src/astro/routes/PluginRegistry.tsx +5 -2
  712. package/src/astro/routes/admin.astro +56 -16
  713. package/src/astro/routes/api/admin/api-tokens/index.ts +2 -2
  714. package/src/astro/routes/api/admin/bylines/[id]/translations.ts +2 -5
  715. package/src/astro/routes/api/admin/plugins/[id]/index.ts +6 -0
  716. package/src/astro/routes/api/admin/plugins/[id]/mcp.ts +42 -0
  717. package/src/astro/routes/api/admin/plugins/[id]/settings.ts +80 -0
  718. package/src/astro/routes/api/admin/plugins/[id]/update.ts +2 -0
  719. package/src/astro/routes/api/admin/plugins/index.ts +9 -0
  720. package/src/astro/routes/api/admin/plugins/marketplace/[id]/install.ts +2 -0
  721. package/src/astro/routes/api/admin/plugins/registry/[id]/update.ts +2 -0
  722. package/src/astro/routes/api/admin/plugins/registry/install.ts +2 -0
  723. package/src/astro/routes/api/admin/plugins/updates.ts +2 -4
  724. package/src/astro/routes/api/auth/mode.ts +6 -14
  725. package/src/astro/routes/api/auth/oauth/[provider]/callback.ts +21 -4
  726. package/src/astro/routes/api/auth/oauth/[provider].ts +24 -6
  727. package/src/astro/routes/api/content/[collection]/[id]/compare.ts +3 -4
  728. package/src/astro/routes/api/content/[collection]/[id]/duplicate.ts +2 -3
  729. package/src/astro/routes/api/content/[collection]/[id]/permanent.ts +2 -3
  730. package/src/astro/routes/api/content/[collection]/[id]/preview-url.ts +3 -4
  731. package/src/astro/routes/api/content/[collection]/[id]/references/[relation]/children.ts +4 -6
  732. package/src/astro/routes/api/content/[collection]/[id]/references/[relation]/parents.ts +2 -3
  733. package/src/astro/routes/api/content/[collection]/[id]/revisions.ts +3 -4
  734. package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +4 -6
  735. package/src/astro/routes/api/content/[collection]/[id]/translations.ts +3 -4
  736. package/src/astro/routes/api/content/[collection]/[id].ts +3 -4
  737. package/src/astro/routes/api/content/[collection]/authors.ts +2 -3
  738. package/src/astro/routes/api/content/[collection]/index.ts +6 -8
  739. package/src/astro/routes/api/content/[collection]/trash.ts +2 -3
  740. package/src/astro/routes/api/manifest.ts +2 -9
  741. package/src/astro/routes/api/mcp.ts +2 -1
  742. package/src/astro/routes/api/media/[id]/usage.ts +30 -0
  743. package/src/astro/routes/api/media/[id].ts +17 -6
  744. package/src/astro/routes/api/media/file/[...key].ts +8 -0
  745. package/src/astro/routes/api/media.ts +21 -2
  746. package/src/astro/routes/api/oauth/authorize.ts +2 -6
  747. package/src/astro/routes/api/plugins/[pluginId]/[...path].ts +17 -3
  748. package/src/astro/routes/api/settings/backups/archives/[name].ts +78 -0
  749. package/src/astro/routes/api/settings/backups/archives/index.ts +33 -0
  750. package/src/astro/routes/api/settings/backups/export.ts +43 -0
  751. package/src/astro/routes/api/settings/backups/index.ts +76 -0
  752. package/src/astro/routes/api/setup/admin-verify.ts +8 -4
  753. package/src/astro/routes/api/setup/admin.ts +11 -4
  754. package/src/astro/routes/api/well-known/oauth-authorization-server.ts +4 -1
  755. package/src/astro/routes/api/well-known/oauth-protected-resource.ts +5 -1
  756. package/src/astro/types.ts +48 -2
  757. package/src/auth/api-tokens.ts +1 -0
  758. package/src/auth/oauth-state-store.ts +3 -0
  759. package/src/auth/providers/github-admin.tsx +5 -6
  760. package/src/auth/providers/google-admin.tsx +5 -6
  761. package/src/auth/scopes.ts +3 -9
  762. package/src/cli/client-factory.ts +0 -1
  763. package/src/cli/commands/bundle-utils.ts +50 -1
  764. package/src/cli/commands/bundle.ts +9 -2
  765. package/src/cli/commands/media.ts +127 -0
  766. package/src/client/index.ts +84 -2
  767. package/src/client/transport.ts +1 -1
  768. package/src/components/EmDashHead.astro +4 -8
  769. package/src/components/InlinePortableTextEditor.tsx +56 -35
  770. package/src/components/marks/Link.astro +5 -1
  771. package/src/database/dialect-helpers.ts +77 -3
  772. package/src/database/migrations/051_content_taxonomies_denorm.ts +120 -0
  773. package/src/database/migrations/052_media_usage_read_index.ts +26 -0
  774. package/src/database/migrations/053_plugin_mcp_tools.ts +21 -0
  775. package/src/database/migrations/runner.ts +6 -0
  776. package/src/database/repositories/audit.ts +2 -1
  777. package/src/database/repositories/content.ts +98 -16
  778. package/src/database/repositories/media-usage.ts +250 -1
  779. package/src/database/repositories/plugin-storage.ts +29 -32
  780. package/src/database/repositories/redirect.ts +14 -2
  781. package/src/database/repositories/taxonomy.ts +57 -8
  782. package/src/database/types.ts +23 -0
  783. package/src/db/adapters.ts +9 -0
  784. package/src/emdash-runtime.ts +310 -66
  785. package/src/loader.ts +292 -1
  786. package/src/mcp/server.ts +222 -5
  787. package/src/media/image-endpoint.ts +38 -2
  788. package/src/page/metadata.ts +27 -0
  789. package/src/plugin-types.ts +19 -0
  790. package/src/plugin-utils.ts +8 -6
  791. package/src/plugins/adapt-sandbox-entry.ts +30 -1
  792. package/src/plugins/context.ts +7 -0
  793. package/src/plugins/define-plugin.ts +16 -0
  794. package/src/plugins/manifest-schema.ts +28 -1
  795. package/src/plugins/routes.ts +27 -1
  796. package/src/plugins/sandbox/runner-options.ts +16 -0
  797. package/src/plugins/sandbox/types.ts +6 -1
  798. package/src/plugins/state.ts +17 -1
  799. package/src/plugins/storage-query.ts +67 -33
  800. package/src/plugins/types.ts +41 -0
  801. package/src/schema/registry.ts +141 -5
  802. package/src/seed/apply.ts +28 -29
  803. package/src/seo/index.ts +19 -4
  804. package/src/storage/types.ts +6 -0
  805. package/src/utils/base64.ts +7 -2
  806. package/src/utils/db-errors.ts +3 -1
  807. package/src/virtual-modules.d.ts +13 -0
  808. package/src/visual-editing/toolbar.ts +1 -1
  809. package/dist/adapters-DPAkL6QF.d.mts.map +0 -1
  810. package/dist/api-DVbHNApo.mjs.map +0 -1
  811. package/dist/api-tokens-Dk2GrJMY.mjs +0 -3
  812. package/dist/apply-D23iUV4q.mjs.map +0 -1
  813. package/dist/authorize-BmCwQCib.mjs.map +0 -1
  814. package/dist/base64-C74Msx8h.mjs.map +0 -1
  815. package/dist/content-BO61Sx4j.mjs.map +0 -1
  816. package/dist/content-refresh-BkkApzeS.mjs.map +0 -1
  817. package/dist/context-DtSFYFuS.mjs.map +0 -1
  818. package/dist/db-errors-BKuXh_fi.mjs.map +0 -1
  819. package/dist/device-flow-CPXQ_QfW.mjs.map +0 -1
  820. package/dist/error-CfJMLSkd.mjs.map +0 -1
  821. package/dist/index-BXOCyLj0.d.mts.map +0 -1
  822. package/dist/loader-Rb8QlGZp.mjs.map +0 -1
  823. package/dist/manifest-schema-DeGNma2O.mjs.map +0 -1
  824. package/dist/menus-BtvH7Z7t.mjs.map +0 -1
  825. package/dist/oauth-authorization-BWqWTHBK.mjs.map +0 -1
  826. package/dist/public-url-C0cEvrRu.mjs.map +0 -1
  827. package/dist/redirect-Ch3E98qZ.mjs.map +0 -1
  828. package/dist/redirects-CeD7K7EX.mjs.map +0 -1
  829. package/dist/registry-CyIXPi4E.mjs.map +0 -1
  830. package/dist/relations-CbBpoOys.d.mts.map +0 -1
  831. package/dist/runner-jt65bF7F.mjs.map +0 -1
  832. package/dist/scheduled-publish-DlJHGcuL.d.mts +0 -11
  833. package/dist/scheduled-publish-DlJHGcuL.d.mts.map +0 -1
  834. package/dist/taxonomy-BkxbUMSw.mjs.map +0 -1
  835. package/dist/types-CtDVagM4.d.mts.map +0 -1
  836. package/dist/types-momGysZk.d.mts.map +0 -1
  837. package/dist/version-BlIJvNAZ.mjs +0 -7
  838. /package/dist/{ssrf-B5DOv5E5.mjs → ssrf-BB__xfNM.mjs} +0 -0
  839. /package/dist/{types-DeCZBZxn.mjs → types-CK0LxPUQ.mjs} +0 -0
@@ -1,84 +1,90 @@
1
- import { a as runMigrations, n as MIGRATION_RACE_WAIT_MS, t as ConcurrentMigrationTimeoutError } from "../runner-jt65bF7F.mjs";
1
+ import { a as runMigrations, n as MIGRATION_RACE_WAIT_MS, t as ConcurrentMigrationTimeoutError } from "../runner-DfnZ5eUr.mjs";
2
2
  import { t as validateIdentifier } from "../validate-VPnKoIzW.mjs";
3
- import { s as isSqlite } from "../dialect-helpers-Cue7QQOR.mjs";
3
+ import { s as isSqlite } from "../dialect-helpers-HxEQGl_1.mjs";
4
4
  import { i as setI18nConfig } from "../config-CVssduLe.mjs";
5
- import { _ as resolveExclusiveHooks, g as createHookPipeline, m as EmailPipeline, p as PluginRouteRegistry, t as getMenu, v as definePlugin } from "../menus-BtvH7Z7t.mjs";
5
+ import { E as AuditRepository, _ as createHookPipeline, h as EmailPipeline, m as buildRouteMeta, p as PluginRouteRegistry, t as getMenu, v as resolveExclusiveHooks, y as definePlugin } from "../menus-BcyElFtI.mjs";
6
6
  import { t as after } from "../after-B1IIdH3Y.mjs";
7
7
  import { createRequestMetrics, getRequestContext, runWithContext } from "../request-context.mjs";
8
8
  import "../object-cache-Bok5j2ae.mjs";
9
- import { r as RevisionRepository, t as ContentRepository } from "../content-BO61Sx4j.mjs";
10
- import { n as isMissingTableError } from "../db-errors-BKuXh_fi.mjs";
11
- import "../base64-C74Msx8h.mjs";
12
- import "../types-Ch8pFMEm.mjs";
13
- import { t as MediaRepository } from "../media-D2ZFowpn.mjs";
14
- import "../user-DTxX_Fha.mjs";
15
- import "../taxonomy-BkxbUMSw.mjs";
16
- import "../comment-SWh31kS0.mjs";
9
+ import { r as RevisionRepository, t as ContentRepository } from "../content-Ci04z2z-.mjs";
10
+ import { n as isMissingTableError } from "../db-errors-CcWLaRiR.mjs";
11
+ import "../base64-B-PsqheR.mjs";
12
+ import "../types-D1iJ3DpO.mjs";
13
+ import { t as MediaRepository } from "../media-BjhhENaJ.mjs";
14
+ import "../user-Bh-L1qo6.mjs";
15
+ import "../taxonomy-DfVooU4W.mjs";
16
+ import "../comment-DPT0WKyd.mjs";
17
17
  import { t as OptionsRepository } from "../options-BlmBHTvX.mjs";
18
- import "../context-DtSFYFuS.mjs";
19
- import "../menus-BpfevlJD.mjs";
20
- import "../redirect-Ch3E98qZ.mjs";
18
+ import { r as createSiteInfo } from "../context-B6hc7zJL.mjs";
19
+ import "../menus-CZyG6rvx.mjs";
20
+ import "../redirect-CgLPYflR.mjs";
21
21
  import { i as setRequestCacheEntry, r as requestCached } from "../request-cache-BSUptuJR.mjs";
22
22
  import "../byline-registry-BCuOp4UF.mjs";
23
23
  import { n as initWithLock, t as createInitLock } from "../init-lock-DJkX6Hto.mjs";
24
- import "../field-defs-cache-BVrNCgSj.mjs";
25
- import "../byline-BWb5H-65.mjs";
26
- import "../relation-Ba68Tm4Z.mjs";
24
+ import "../field-defs-cache-DvmlgP-D.mjs";
25
+ import "../byline-XEjchwzZ.mjs";
26
+ import "../relation-9M9j_UWo.mjs";
27
27
  import { n as normalizeMediaValue } from "../normalize-C-SHXmra.mjs";
28
28
  import "../enrich-CFJJgxs_.mjs";
29
- import "../seo-BLm6SXzS.mjs";
30
- import { t as FTSManager } from "../fts-manager-BD9s77qh.mjs";
29
+ import "../seo-2cmFHZns.mjs";
30
+ import { t as FTSManager } from "../fts-manager-DzqIBrrW.mjs";
31
31
  import "../resolve-Cd9dzclN.mjs";
32
32
  import { createRecorder, flushRecorder, isInstrumentationEnabled, kyselyLogOption } from "../database/instrumentation.mjs";
33
- import { a as getDb } from "../loader-Rb8QlGZp.mjs";
34
- import { a as getTaxonomyDefs, o as getTaxonomyTerms } from "../taxonomies-pUkuD6nj.mjs";
35
- import { $ as handleContentGet, B as handleMediaUpdate, G as handleContentAuthors, H as handleRevisionList, I as handleMediaCreate, J as handleContentCountTrashed, K as handleContentCompare, L as handleMediaDelete, Q as handleContentDuplicate, R as handleMediaGet, S as PluginStateRepository, U as handleRevisionRestore, V as handleRevisionGet, X as handleContentDelete, Y as handleContentCreate, Z as handleContentDiscardDraft, _ as loadBundleFromR2, at as handleContentRestore, ct as handleContentUnpublish, dt as validateRev, et as handleContentGetIncludingTrashed, it as handleContentPublish, lt as handleContentUnschedule, nt as handleContentListTrashed, ot as handleContentSchedule, q as handleContentCountScheduled, rt as handleContentPermanentDelete, s as normalizeRegistryConfig, st as handleContentTranslations, tt as handleContentList, ut as handleContentUpdate, z as handleMediaList } from "../api-DVbHNApo.mjs";
36
- import "../dashboard-xo_gPs_D.mjs";
33
+ import { a as getDb } from "../loader-Be3ouI5L.mjs";
34
+ import { a as getTaxonomyDefs, o as getTaxonomyTerms } from "../taxonomies-DjSKBZpq.mjs";
35
+ import { $ as handleContentDiscardDraft, B as handleMediaGet, G as handleRevisionRestore, H as handleMediaUpdate, J as handleContentCompare, Q as handleContentDelete, R as handleMediaCreate, U as handleRevisionGet, V as handleMediaList, W as handleRevisionList, X as handleContentCountTrashed, Y as handleContentCountScheduled, Z as handleContentCreate, _ as loadBundleFromR2, at as handleContentPermanentDelete, ct as handleContentSchedule, dt as handleContentUnschedule, et as handleContentDuplicate, ft as handleContentUpdate, it as handleContentListTrashed, lt as handleContentTranslations, nt as handleContentGetIncludingTrashed, ot as handleContentPublish, pt as validateRev, q as handleContentAuthors, rt as handleContentList, s as normalizeRegistryConfig, st as handleContentRestore, tt as handleContentGet, ut as handleContentUnpublish, z as handleMediaDelete } from "../api-b8WIiGU4.mjs";
36
+ import "../dashboard-C5NkXFbi.mjs";
37
37
  import { n as hashString } from "../hash-DFFrkivP.mjs";
38
- import { a as findNonTranslatableSiblingContentIds, c as refreshContentMediaUsageAfterWrite, o as markContentMediaUsageCollectionStale, r as deleteContentMediaUsage } from "../content-refresh-BkkApzeS.mjs";
39
- import "../media-usage-B__v9NMm.mjs";
40
- import "../error-CfJMLSkd.mjs";
41
- import { n as SchemaRegistry } from "../registry-CyIXPi4E.mjs";
42
- import "../query-BxT95opY.mjs";
43
- import "../zod-generator-CrfV79De.mjs";
44
- import "../schema-DwjufZ1S.mjs";
45
- import "../seo-BjrbXAd_.mjs";
46
- import "../sections-DTKzgoiS.mjs";
47
- import { r as singleFlightCached, t as createSingleFlightCache } from "../single-flight-cache-DEtW-OEG.mjs";
48
- import { i as getSiteSettings, o as invalidateSiteSettingsCache } from "../settings-BuQYvLfy.mjs";
49
- import "../settings-CmS3TwXf.mjs";
50
- import "../taxonomies-ClS4RKaZ.mjs";
51
- import { r as normalizeManifestRoute } from "../manifest-schema-DeGNma2O.mjs";
52
- import "../types-DeCZBZxn.mjs";
53
- import "../ssrf-TrKYJAy0.mjs";
54
- import "../parse-GLksnn-B.mjs";
55
- import "../redirects-CeD7K7EX.mjs";
56
- import "../relations-BmBmX4Eb.mjs";
57
- import "../status-D3Gy1Zc6.mjs";
58
- import { a as invalidateUrlPatternCache } from "../query-ZzvXyxWq.mjs";
59
- import "../import-2jHtLzsO.mjs";
60
- import { t as getTrustedProxyHeaders } from "../trusted-proxy-CSgZVESw.mjs";
61
- import { n as sanitizeHeadersForSandbox, t as extractRequestMeta } from "../request-meta-DCwktC5P.mjs";
62
- import "../ssrf-B5DOv5E5.mjs";
63
- import { n as CronExecutor } from "../cron-YFJ7uNVA.mjs";
64
- import { r as devConsoleEmailDeliver, t as DEV_CONSOLE_EMAIL_PLUGIN_ID } from "../email-console-CjkQc7oY.mjs";
65
- import "../utils-Cz8PVrl4.mjs";
66
- import "../tokens-BV6fgl5A.mjs";
67
- import "../preview-Rloa09Wp.mjs";
68
- import "../hreflang-pAWUiPd_.mjs";
69
- import "../comment-reaction-DgcpziXI.mjs";
70
- import "../bylines-CHojDMpj.mjs";
71
- import { n as getWidgetAreas } from "../widgets-B_X6_UXJ.mjs";
72
- import "../apply-D23iUV4q.mjs";
73
- import "../load-DgoWMdRX.mjs";
74
- import "../search-Cl875CVE.mjs";
38
+ import { a as findNonTranslatableSiblingContentIds, c as refreshContentMediaUsageAfterWrite, o as markContentMediaUsageCollectionStale, r as deleteContentMediaUsage } from "../content-refresh-D4khvC0R.mjs";
39
+ import "../media-usage-CljdO1mc.mjs";
40
+ import { n as SchemaRegistry } from "../registry-FV15nLge.mjs";
41
+ import "../query-Di7DOmPV.mjs";
42
+ import "../zod-generator-B5prQ5M4.mjs";
43
+ import "../schema-BXxlHeAf.mjs";
44
+ import "../seo-C3GDfT0V.mjs";
45
+ import { t as PluginStateRepository } from "../state-xxv6ZTMv.mjs";
46
+ import "../sections-CwW4s1al.mjs";
47
+ import { r as singleFlightCached, t as createSingleFlightCache } from "../single-flight-cache-C2exrGAi.mjs";
48
+ import { i as getSiteSettings, o as invalidateSiteSettingsCache } from "../settings-CpA4lQFt.mjs";
49
+ import "../settings-C4s8hFQm.mjs";
50
+ import "../taxonomies-Ce49uIzY.mjs";
51
+ import { r as normalizeManifestRoute } from "../manifest-schema-bCq54i7F.mjs";
52
+ import "../types-CK0LxPUQ.mjs";
53
+ import "../ssrf-CviKqWmq.mjs";
54
+ import "../error-CEGF6UZb.mjs";
55
+ import "../parse-C_-6klII.mjs";
56
+ import "../media-kIV1IxFf.mjs";
57
+ import "../redirects-BBq3n2Rj.mjs";
58
+ import "../relations-5_avdrN_.mjs";
59
+ import "../status-COfycGIU.mjs";
60
+ import { a as invalidateUrlPatternCache } from "../query-DR73ZNfm.mjs";
61
+ import "../import-Dmkm8S1W.mjs";
62
+ import { t as getTrustedProxyHeaders } from "../trusted-proxy-CwjQj0YG.mjs";
63
+ import { n as sanitizeHeadersForSandbox, t as extractRequestMeta } from "../request-meta-DzXYYI-n.mjs";
64
+ import "../ssrf-BB__xfNM.mjs";
65
+ import { n as CronExecutor } from "../cron-BlKIMD_e.mjs";
66
+ import { r as devConsoleEmailDeliver, t as DEV_CONSOLE_EMAIL_PLUGIN_ID } from "../email-console-C-9Ng8DM.mjs";
67
+ import "../utils-BbUgmeZG.mjs";
68
+ import "../tokens-DVltpO2D.mjs";
69
+ import "../preview-D4Jnbfx7.mjs";
70
+ import "../hreflang-db2Tpb2o.mjs";
71
+ import "../comment-reaction-C65MldIB.mjs";
72
+ import "../bylines-czseViYo.mjs";
73
+ import { n as getWidgetAreas } from "../widgets-DGv1Z04V.mjs";
74
+ import "../apply-CmIJK9j8.mjs";
75
+ import "../load-Cx27ki1l.mjs";
76
+ import "../search-Bff-7jFt.mjs";
75
77
  import "../index.mjs";
76
- import { n as VERSION, t as COMMIT } from "../version-BlIJvNAZ.mjs";
77
- import { t as getAuthMode } from "../mode-BVnhGZ2o.mjs";
78
- import { t as cleanupExpiredChallenges } from "../challenge-store-B426wQ6O.mjs";
79
- import { a as validateEncryptionKeyAtStartup } from "../secrets-CO_bEmII.mjs";
80
- import { t as resolveSessionUser } from "../session-user-DoSs6YM8.mjs";
78
+ import { n as VERSION, t as COMMIT } from "../version-907opKac.mjs";
79
+ import { t as getAuthMode } from "../mode-fiXRMfeA.mjs";
80
+ import "../snapshot-BdpUJKD-.mjs";
81
+ import { u as maybeRunScheduledBackup } from "../backup-S8kFWtwD.mjs";
82
+ import { t as cleanupExpiredChallenges } from "../challenge-store-BFzgFRog.mjs";
83
+ import { a as validateEncryptionKeyAtStartup } from "../secrets-CSwQIl4q.mjs";
84
+ import { t as resolveSessionUser } from "../session-user-DbHqKDKe.mjs";
81
85
  import { Kysely, sql } from "kysely";
86
+ import { z } from "zod";
87
+ import { Permissions } from "@emdash-cms/auth";
82
88
  import { defineMiddleware } from "astro:middleware";
83
89
  import virtualConfig from "virtual:emdash/config";
84
90
  import { createCoalescingDialect, createDialect, createRequestScopedDb } from "virtual:emdash/dialect";
@@ -90,6 +96,19 @@ import { createScheduler } from "virtual:emdash/scheduler";
90
96
  import { createStorage } from "virtual:emdash/storage";
91
97
  import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely";
92
98
 
99
+ //#region src/plugins/sandbox/runner-options.ts
100
+ /**
101
+ * Build platform sandbox options with the same normalized site context used
102
+ * by trusted plugin hooks and routes.
103
+ */
104
+ function createSandboxRunnerOptions(options, siteInfo) {
105
+ return {
106
+ ...options,
107
+ siteInfo: createSiteInfo(siteInfo ?? {})
108
+ };
109
+ }
110
+
111
+ //#endregion
93
112
  //#region src/cleanup.ts
94
113
  /**
95
114
  * System cleanup
@@ -276,6 +295,14 @@ async function publishDueContent(db, options = {}) {
276
295
 
277
296
  //#endregion
278
297
  //#region src/emdash-runtime.ts
298
+ /**
299
+ * EmDashRuntime - Core runtime for EmDash CMS
300
+ *
301
+ * Manages database, storage, plugins (trusted + sandboxed), hooks, and
302
+ * provides handlers for content/media operations.
303
+ *
304
+ * Created once per worker lifetime, cached and reused across requests.
305
+ */
279
306
  const LEADING_SLASH_PATTERN = /^\//;
280
307
  /**
281
308
  * Parse a JSON column expected to contain an array of strings.
@@ -578,6 +605,7 @@ var EmDashRuntime = class EmDashRuntime {
578
605
  } catch (error) {
579
606
  console.error("[cleanup] System cleanup failed:", error);
580
607
  }
608
+ await maybeRunScheduledBackup(this.db, this.storage ?? void 0);
581
609
  return { published };
582
610
  }
583
611
  /**
@@ -618,10 +646,7 @@ var EmDashRuntime = class EmDashRuntime {
618
646
  const newPipeline = createHookPipeline(this.allPipelinePlugins.filter((p) => this.enabledPlugins.has(p.id)), this.pipelineFactoryOptions);
619
647
  await EmDashRuntime.resolveExclusiveHooks(newPipeline, this.db, this.runtimeDeps);
620
648
  if (this.email) newPipeline.setContextFactory({ emailPipeline: this.email });
621
- if (this.cronScheduler) {
622
- const scheduler = this.cronScheduler;
623
- newPipeline.setContextFactory({ cronReschedule: () => scheduler.reschedule() });
624
- }
649
+ newPipeline.setContextFactory({ cronReschedule: () => this.cronScheduler?.reschedule() });
625
650
  if (this.email) this.email.setPipeline(newPipeline);
626
651
  this.pipelineRef.current = newPipeline;
627
652
  this._hooks = newPipeline;
@@ -723,13 +748,14 @@ var EmDashRuntime = class EmDashRuntime {
723
748
  marketplaceManifestCache.set(pluginId, {
724
749
  id: bundle.manifest.id,
725
750
  version: bundle.manifest.version,
726
- admin: bundle.manifest.admin
751
+ admin: bundle.manifest.admin,
752
+ mcp: bundle.manifest.mcp
727
753
  });
728
754
  if (bundle.manifest.routes.length > 0) {
729
755
  const routeMetaMap = /* @__PURE__ */ new Map();
730
756
  for (const entry of bundle.manifest.routes) {
731
757
  const normalized = normalizeManifestRoute(entry);
732
- routeMetaMap.set(normalized.name, { public: normalized.public === true });
758
+ routeMetaMap.set(normalized.name, buildRouteMeta(normalized));
733
759
  }
734
760
  sandboxedRouteMetaCache.set(pluginId, routeMetaMap);
735
761
  } else sandboxedRouteMetaCache.delete(pluginId);
@@ -807,13 +833,14 @@ var EmDashRuntime = class EmDashRuntime {
807
833
  marketplaceManifestCache.set(pluginId, {
808
834
  id: bundle.manifest.id,
809
835
  version: bundle.manifest.version,
810
- admin: bundle.manifest.admin
836
+ admin: bundle.manifest.admin,
837
+ mcp: bundle.manifest.mcp
811
838
  });
812
839
  if (bundle.manifest.routes.length > 0) {
813
840
  const routeMetaMap = /* @__PURE__ */ new Map();
814
841
  for (const entry of bundle.manifest.routes) {
815
842
  const normalized = normalizeManifestRoute(entry);
816
- routeMetaMap.set(normalized.name, { public: normalized.public === true });
843
+ routeMetaMap.set(normalized.name, buildRouteMeta(normalized));
817
844
  }
818
845
  sandboxedRouteMetaCache.set(pluginId, routeMetaMap);
819
846
  } else sandboxedRouteMetaCache.delete(pluginId);
@@ -834,7 +861,8 @@ var EmDashRuntime = class EmDashRuntime {
834
861
  id: w.id,
835
862
  title: w.title,
836
863
  size: w.size === "full" || w.size === "half" || w.size === "third" ? w.size : void 0
837
- }))
864
+ })),
865
+ settingsSchema: bundle.manifest.admin?.settingsSchema
838
866
  });
839
867
  newPlugins.push(adapted);
840
868
  this.allPipelinePlugins.push(adapted);
@@ -904,7 +932,8 @@ var EmDashRuntime = class EmDashRuntime {
904
932
  return {
905
933
  siteName: siteOpts.get("emdash:site_title") ?? void 0,
906
934
  siteUrl: siteOpts.get("emdash:site_url") ?? void 0,
907
- locale: siteOpts.get("emdash:locale") ?? void 0
935
+ locale: siteOpts.get("emdash:locale") ?? void 0,
936
+ trailingSlash: virtualConfig?.trailingSlash
908
937
  };
909
938
  };
910
939
  const coldStartReads = [phase("rt.plugins", "Plugin states", async () => {
@@ -939,9 +968,9 @@ var EmDashRuntime = class EmDashRuntime {
939
968
  const seedHolder = getSeedHolder();
940
969
  try {
941
970
  await initWithLock(seedHolder.lock, () => seedHolder.done.has(seedKey) ? true : void 0, async () => {
942
- const { applySeed } = await import("../apply-D23iUV4q.mjs").then((n) => n.n);
943
- const { loadSeed } = await import("../load-DgoWMdRX.mjs").then((n) => n.r);
944
- const { validateSeed } = await import("../validate-C3CpWlNt.mjs").then((n) => n.n);
971
+ const { applySeed } = await import("../apply-CmIJK9j8.mjs").then((n) => n.n);
972
+ const { loadSeed } = await import("../load-Cx27ki1l.mjs").then((n) => n.r);
973
+ const { validateSeed } = await import("../validate-V9nCwq_-.mjs").then((n) => n.n);
945
974
  const seed = await loadSeed();
946
975
  if (validateSeed(seed).valid) {
947
976
  await applySeed(db, seed, { onConflict: "skip" });
@@ -1026,10 +1055,10 @@ var EmDashRuntime = class EmDashRuntime {
1026
1055
  siteInfo
1027
1056
  };
1028
1057
  const pipeline = createHookPipeline(enabledPluginList, pipelineFactoryOptions);
1029
- const sandboxedPlugins = await phase("rt.sandbox", "Sandboxed plugins", () => EmDashRuntime.loadSandboxedPlugins(deps, db, storage));
1058
+ const sandboxedPlugins = await phase("rt.sandbox", "Sandboxed plugins", () => EmDashRuntime.loadSandboxedPlugins(deps, db, storage, siteInfo));
1030
1059
  const installedTierPhases = [];
1031
- if (deps.config.marketplace && storage && !deps.sandboxBypassed) installedTierPhases.push(phase("rt.market", "Marketplace plugins", () => EmDashRuntime.loadInstalledSandboxedPlugins("marketplace", db, storage, deps, sandboxedPlugins)));
1032
- if (deps.config.experimental?.registry && storage) installedTierPhases.push(phase("rt.registry", "Registry plugins", () => EmDashRuntime.loadInstalledSandboxedPlugins("registry", db, storage, deps, sandboxedPlugins)));
1060
+ if (deps.config.marketplace && storage && !deps.sandboxBypassed) installedTierPhases.push(phase("rt.market", "Marketplace plugins", () => EmDashRuntime.loadInstalledSandboxedPlugins("marketplace", db, storage, deps, sandboxedPlugins, siteInfo)));
1061
+ if (deps.config.experimental?.registry && storage) installedTierPhases.push(phase("rt.registry", "Registry plugins", () => EmDashRuntime.loadInstalledSandboxedPlugins("registry", db, storage, deps, sandboxedPlugins, siteInfo)));
1033
1062
  if (installedTierPhases.length > 0) await Promise.all(installedTierPhases);
1034
1063
  const mediaProviders = /* @__PURE__ */ new Map();
1035
1064
  const mediaProviderEntries = deps.mediaProviderEntries ?? [];
@@ -1059,6 +1088,7 @@ var EmDashRuntime = class EmDashRuntime {
1059
1088
  await phase("rt.cron", "Cron init (recovery deferred post-response)", async () => {
1060
1089
  try {
1061
1090
  cronExecutor = new CronExecutor(resolveDb, invokeCronHook);
1091
+ pipeline.setContextFactory({ cronReschedule: () => cronScheduler?.reschedule() });
1062
1092
  const executorForRecovery = cronExecutor;
1063
1093
  after(async () => {
1064
1094
  try {
@@ -1083,8 +1113,8 @@ var EmDashRuntime = class EmDashRuntime {
1083
1113
  } catch (error) {
1084
1114
  console.error("[cleanup] System cleanup failed:", error);
1085
1115
  }
1116
+ await maybeRunScheduledBackup(db, storage ?? void 0);
1086
1117
  });
1087
- pipeline.setContextFactory({ cronReschedule: () => cronScheduler?.reschedule() });
1088
1118
  scheduler.start();
1089
1119
  }
1090
1120
  } catch (error) {
@@ -1225,6 +1255,7 @@ var EmDashRuntime = class EmDashRuntime {
1225
1255
  storage: entry.storage,
1226
1256
  adminPages,
1227
1257
  adminWidgets,
1258
+ settingsSchema: entry.settingsSchema,
1228
1259
  portableTextBlocks: entry.portableTextBlocks,
1229
1260
  fieldWidgets: entry.fieldWidgets
1230
1261
  });
@@ -1238,10 +1269,10 @@ var EmDashRuntime = class EmDashRuntime {
1238
1269
  /**
1239
1270
  * Load sandboxed plugins using SandboxRunner
1240
1271
  */
1241
- static async loadSandboxedPlugins(deps, db, mediaStorage) {
1272
+ static async loadSandboxedPlugins(deps, db, mediaStorage, siteInfo) {
1242
1273
  if (sandboxedPluginCache.size > 0) return sandboxedPluginCache;
1243
1274
  if (!deps.sandboxEnabled) return sandboxedPluginCache;
1244
- if (!sandboxRunner && deps.createSandboxRunner) sandboxRunner = deps.createSandboxRunner({
1275
+ if (!sandboxRunner && deps.createSandboxRunner) sandboxRunner = deps.createSandboxRunner(createSandboxRunnerOptions({
1245
1276
  db,
1246
1277
  mediaStorage: mediaStorage ? {
1247
1278
  upload: (opts) => mediaStorage.upload({
@@ -1251,7 +1282,7 @@ var EmDashRuntime = class EmDashRuntime {
1251
1282
  }),
1252
1283
  delete: (key) => mediaStorage.delete(key)
1253
1284
  } : void 0
1254
- });
1285
+ }, siteInfo));
1255
1286
  if (!sandboxRunner) return sandboxedPluginCache;
1256
1287
  if (!sandboxRunner.isAvailable()) {
1257
1288
  console.warn("EmDash: Plugin sandbox is configured but not available on this platform. Sandboxed plugins will not be loaded. If using @emdash-cms/sandbox-workerd/sandbox, ensure workerd is installed.");
@@ -1271,7 +1302,8 @@ var EmDashRuntime = class EmDashRuntime {
1271
1302
  storage: entry.storage ?? {},
1272
1303
  hooks: [],
1273
1304
  routes: [],
1274
- admin: {}
1305
+ admin: {},
1306
+ mcp: entry.mcp
1275
1307
  };
1276
1308
  const plugin = await sandboxRunner.load(manifest, entry.code);
1277
1309
  sandboxedPluginCache.set(pluginKey, plugin);
@@ -1296,8 +1328,8 @@ var EmDashRuntime = class EmDashRuntime {
1296
1328
  * creation, before request traffic arrives; the sync method runs on
1297
1329
  * demand after install / update / uninstall handlers.
1298
1330
  */
1299
- static async loadInstalledSandboxedPlugins(source, db, storage, deps, cache) {
1300
- if (!sandboxRunner && deps.createSandboxRunner) sandboxRunner = deps.createSandboxRunner({
1331
+ static async loadInstalledSandboxedPlugins(source, db, storage, deps, cache, siteInfo) {
1332
+ if (!sandboxRunner && deps.createSandboxRunner) sandboxRunner = deps.createSandboxRunner(createSandboxRunnerOptions({
1301
1333
  db,
1302
1334
  mediaStorage: {
1303
1335
  upload: (opts) => storage.upload({
@@ -1307,7 +1339,7 @@ var EmDashRuntime = class EmDashRuntime {
1307
1339
  }),
1308
1340
  delete: (key) => storage.delete(key)
1309
1341
  }
1310
- });
1342
+ }, siteInfo));
1311
1343
  if (deps.sandboxBypassed) return;
1312
1344
  if (!sandboxRunner || !sandboxRunner.isAvailable()) return;
1313
1345
  const keySet = source === "marketplace" ? marketplacePluginKeys : registryPluginKeys;
@@ -1331,13 +1363,14 @@ var EmDashRuntime = class EmDashRuntime {
1331
1363
  marketplaceManifestCache.set(plugin.pluginId, {
1332
1364
  id: bundle.manifest.id,
1333
1365
  version: bundle.manifest.version,
1334
- admin: bundle.manifest.admin
1366
+ admin: bundle.manifest.admin,
1367
+ mcp: bundle.manifest.mcp
1335
1368
  });
1336
1369
  if (bundle.manifest.routes.length > 0) {
1337
1370
  const routeMeta = /* @__PURE__ */ new Map();
1338
1371
  for (const entry of bundle.manifest.routes) {
1339
1372
  const normalized = normalizeManifestRoute(entry);
1340
- routeMeta.set(normalized.name, { public: normalized.public === true });
1373
+ routeMeta.set(normalized.name, buildRouteMeta(normalized));
1341
1374
  }
1342
1375
  sandboxedRouteMetaCache.set(plugin.pluginId, routeMeta);
1343
1376
  }
@@ -1380,13 +1413,14 @@ var EmDashRuntime = class EmDashRuntime {
1380
1413
  marketplaceManifestCache.set(plugin.pluginId, {
1381
1414
  id: bundle.manifest.id,
1382
1415
  version: bundle.manifest.version,
1383
- admin: bundle.manifest.admin
1416
+ admin: bundle.manifest.admin,
1417
+ mcp: bundle.manifest.mcp
1384
1418
  });
1385
1419
  if (bundle.manifest.routes.length > 0) {
1386
1420
  const routeMeta = /* @__PURE__ */ new Map();
1387
1421
  for (const entry of bundle.manifest.routes) {
1388
1422
  const normalized = normalizeManifestRoute(entry);
1389
- routeMeta.set(normalized.name, { public: normalized.public === true });
1423
+ routeMeta.set(normalized.name, buildRouteMeta(normalized));
1390
1424
  }
1391
1425
  sandboxedRouteMetaCache.set(plugin.pluginId, routeMeta);
1392
1426
  }
@@ -1403,7 +1437,8 @@ var EmDashRuntime = class EmDashRuntime {
1403
1437
  id: w.id,
1404
1438
  title: w.title,
1405
1439
  size: w.size === "full" || w.size === "half" || w.size === "third" ? w.size : void 0
1406
- }))
1440
+ })),
1441
+ settingsSchema: bundle.manifest.admin?.settingsSchema
1407
1442
  });
1408
1443
  resolved.push(adapted);
1409
1444
  console.log(`EmDash: Loaded marketplace plugin ${plugin.pluginId}@${version} in-process (sandbox bypassed)`);
@@ -1695,7 +1730,7 @@ var EmDashRuntime = class EmDashRuntime {
1695
1730
  if (this.hooks.hasHooks("content:beforeSave")) processedData = (await this.hooks.runContentBeforeSave(body.data, collection, true)).content;
1696
1731
  processedData = await this.runSandboxedBeforeSave(processedData, collection, true);
1697
1732
  processedData = await this.normalizeMediaFields(collection, processedData);
1698
- const { validateContentData } = await import("../validation-DM2K_NJC.mjs");
1733
+ const { validateContentData } = await import("../validation-BsVUJfsP.mjs");
1699
1734
  const validation = await validateContentData(this.db, collection, processedData, { partial: false });
1700
1735
  if (!validation.ok) return {
1701
1736
  success: false,
@@ -1712,7 +1747,7 @@ var EmDashRuntime = class EmDashRuntime {
1712
1747
  return result;
1713
1748
  }
1714
1749
  async handleContentUpdate(collection, id, body) {
1715
- const { ContentRepository } = await import("../content-BO61Sx4j.mjs").then((n) => n.n);
1750
+ const { ContentRepository } = await import("../content-Ci04z2z-.mjs").then((n) => n.n);
1716
1751
  const repo = new ContentRepository(this.db);
1717
1752
  const resolvedItem = await repo.findByIdOrSlug(collection, id, body.locale);
1718
1753
  const resolvedId = resolvedItem?.id ?? id;
@@ -1739,7 +1774,7 @@ var EmDashRuntime = class EmDashRuntime {
1739
1774
  if (this.hooks.hasHooks("content:beforeSave")) processedData = (await this.hooks.runContentBeforeSave(bodyWithoutRev.data, collection, false)).content;
1740
1775
  processedData = await this.runSandboxedBeforeSave(processedData, collection, false);
1741
1776
  processedData = await this.normalizeMediaFields(collection, processedData);
1742
- const { validateContentData } = await import("../validation-DM2K_NJC.mjs");
1777
+ const { validateContentData } = await import("../validation-BsVUJfsP.mjs");
1743
1778
  const validation = await validateContentData(this.db, collection, processedData, { partial: true });
1744
1779
  if (!validation.ok) return {
1745
1780
  success: false,
@@ -1776,8 +1811,7 @@ var EmDashRuntime = class EmDashRuntime {
1776
1811
  const tableName = `ec_${collection}`;
1777
1812
  await sql`
1778
1813
  UPDATE ${sql.ref(tableName)}
1779
- SET draft_revision_id = ${revision.id},
1780
- updated_at = ${(/* @__PURE__ */ new Date()).toISOString()}
1814
+ SET draft_revision_id = ${revision.id}
1781
1815
  WHERE id = ${resolvedId}
1782
1816
  `.execute(this.db);
1783
1817
  draftStorageChanged = true;
@@ -1977,8 +2011,7 @@ var EmDashRuntime = class EmDashRuntime {
1977
2011
  const tableName = `ec_${revision.collection}`;
1978
2012
  await sql`
1979
2013
  UPDATE ${sql.ref(tableName)}
1980
- SET draft_revision_id = ${newDraft.id},
1981
- updated_at = ${(/* @__PURE__ */ new Date()).toISOString()}
2014
+ SET draft_revision_id = ${newDraft.id}
1982
2015
  WHERE id = ${revision.entryId}
1983
2016
  `.execute(this.db);
1984
2017
  revisionRepo.pruneOldRevisions(revision.collection, revision.entryId, 50).catch(() => {});
@@ -2024,7 +2057,7 @@ var EmDashRuntime = class EmDashRuntime {
2024
2057
  if (trustedPlugin) {
2025
2058
  const route = trustedPlugin.routes[routeKey];
2026
2059
  if (!route) return null;
2027
- return { public: route.public === true };
2060
+ return buildRouteMeta(route);
2028
2061
  }
2029
2062
  const meta = sandboxedRouteMetaCache.get(pluginId);
2030
2063
  if (meta) {
@@ -2040,6 +2073,17 @@ var EmDashRuntime = class EmDashRuntime {
2040
2073
  if (this.findSandboxedPlugin(pluginId)) return { public: false };
2041
2074
  return null;
2042
2075
  }
2076
+ /**
2077
+ * Resolve the settings schema for a runtime-installed (marketplace or
2078
+ * registry) plugin from its cached manifest. Returns `{}` for a known
2079
+ * plugin without a schema and `null` for unknown plugins, matching the
2080
+ * contract of `getPluginSettingsSchema` for build-time plugins.
2081
+ */
2082
+ getRuntimePluginSettingsSchema(pluginId) {
2083
+ const meta = marketplaceManifestCache.get(pluginId);
2084
+ if (!meta) return null;
2085
+ return meta.admin?.settingsSchema ?? {};
2086
+ }
2043
2087
  async handlePluginApiRoute(pluginId, _method, path, request) {
2044
2088
  if (!this.isPluginEnabled(pluginId)) return {
2045
2089
  success: false,
@@ -2051,9 +2095,9 @@ var EmDashRuntime = class EmDashRuntime {
2051
2095
  const trustedPlugin = this.configuredPlugins.find((p) => p.id === pluginId);
2052
2096
  if (trustedPlugin && this.enabledPlugins.has(trustedPlugin.id)) {
2053
2097
  const routeRegistry = new PluginRouteRegistry({
2054
- db: this.db,
2055
- storage: this.storage ?? void 0,
2098
+ ...this.pipelineFactoryOptions,
2056
2099
  emailPipeline: this.email ?? void 0,
2100
+ cronReschedule: () => this.cronScheduler?.reschedule(),
2057
2101
  trustedProxyHeaders: getTrustedProxyHeaders(this.config)
2058
2102
  });
2059
2103
  routeRegistry.register(trustedPlugin);
@@ -2077,6 +2121,116 @@ var EmDashRuntime = class EmDashRuntime {
2077
2121
  }
2078
2122
  };
2079
2123
  }
2124
+ async getPluginMcpTools(pluginId) {
2125
+ const tools = [];
2126
+ const seen = /* @__PURE__ */ new Set();
2127
+ for (const plugin of this.configuredPlugins) {
2128
+ if (pluginId && plugin.id !== pluginId) continue;
2129
+ for (const [name, tool] of Object.entries(plugin.mcp?.tools ?? {})) {
2130
+ const route = plugin.routes[tool.route];
2131
+ if (!route || route.public || !route.permission || !(route.permission in Permissions)) continue;
2132
+ const key = `${plugin.id}__${name}`;
2133
+ if (seen.has(key)) continue;
2134
+ seen.add(key);
2135
+ tools.push({
2136
+ pluginId: plugin.id,
2137
+ name,
2138
+ description: tool.description,
2139
+ route: tool.route,
2140
+ permission: route.permission,
2141
+ destructive: tool.destructive ?? false,
2142
+ inputSchema: tool.input,
2143
+ outputSchema: tool.output
2144
+ });
2145
+ }
2146
+ }
2147
+ const addManifestTools = (id, mcp) => {
2148
+ if (pluginId && id !== pluginId) return;
2149
+ for (const tool of mcp?.tools ?? []) {
2150
+ const key = `${id}__${tool.name}`;
2151
+ const routeMeta = this.getPluginRouteMeta(id, tool.route);
2152
+ if (seen.has(key) || !routeMeta || routeMeta.public || routeMeta.permission !== tool.permission || !(tool.permission in Permissions)) continue;
2153
+ seen.add(key);
2154
+ tools.push({
2155
+ pluginId: id,
2156
+ name: tool.name,
2157
+ description: tool.description,
2158
+ route: tool.route,
2159
+ permission: tool.permission,
2160
+ destructive: tool.destructive,
2161
+ inputSchema: z.fromJSONSchema({ ...tool.inputSchema }),
2162
+ outputSchema: tool.outputSchema ? z.fromJSONSchema({ ...tool.outputSchema }) : void 0
2163
+ });
2164
+ }
2165
+ };
2166
+ for (const entry of this.sandboxedPluginEntries) addManifestTools(entry.id, entry.mcp);
2167
+ for (const [id, manifest] of marketplaceManifestCache) addManifestTools(id, manifest.mcp);
2168
+ return tools;
2169
+ }
2170
+ async getEnabledPluginMcpTools() {
2171
+ const [tools, states] = await Promise.all([this.getPluginMcpTools(), new PluginStateRepository(this.db).getAll()]);
2172
+ const stateByPlugin = new Map(states.map((state) => [state.pluginId, state]));
2173
+ return tools.filter((tool) => {
2174
+ const state = stateByPlugin.get(tool.pluginId);
2175
+ if (!state?.mcpToolsEnabled || state.status !== "active" || !this.isPluginEnabled(tool.pluginId)) return false;
2176
+ return state.mcpToolsConsent === this.serializePluginMcpConsent(tools, tool.pluginId);
2177
+ });
2178
+ }
2179
+ serializePluginMcpConsent(tools, pluginId) {
2180
+ return JSON.stringify(tools.filter((tool) => tool.pluginId === pluginId).map((tool) => ({
2181
+ name: tool.name,
2182
+ description: tool.description,
2183
+ route: tool.route,
2184
+ permission: tool.permission,
2185
+ destructive: tool.destructive,
2186
+ inputSchema: z.toJSONSchema(tool.inputSchema, { target: "draft-7" }),
2187
+ ...tool.outputSchema ? { outputSchema: z.toJSONSchema(tool.outputSchema, { target: "draft-7" }) } : {}
2188
+ })).toSorted((a, b) => a.name.localeCompare(b.name)));
2189
+ }
2190
+ async handlePluginMcpTool(pluginId, toolName, route, input, actorId, request) {
2191
+ const requestMeta = extractRequestMeta(request, getTrustedProxyHeaders(this.config));
2192
+ const audit = new AuditRepository(this.db);
2193
+ const headers = new Headers(request.headers);
2194
+ headers.delete("content-length");
2195
+ headers.delete("content-encoding");
2196
+ const internalRequest = new Request(request.url, {
2197
+ method: "POST",
2198
+ headers,
2199
+ body: JSON.stringify(input)
2200
+ });
2201
+ const result = await this.handlePluginApiRoute(pluginId, "POST", route, internalRequest);
2202
+ await audit.log({
2203
+ actorId,
2204
+ actorIp: requestMeta.ip ?? void 0,
2205
+ action: "plugin_tool_invoke",
2206
+ resourceType: "plugin_mcp_tool",
2207
+ resourceId: `${pluginId}__${toolName}`,
2208
+ details: {
2209
+ pluginId,
2210
+ tool: toolName,
2211
+ route
2212
+ },
2213
+ status: result.success ? "success" : "failure"
2214
+ });
2215
+ return result;
2216
+ }
2217
+ async handlePluginMcpDenied(pluginId, toolName, route, actorId, request, reason) {
2218
+ const requestMeta = extractRequestMeta(request, getTrustedProxyHeaders(this.config));
2219
+ await new AuditRepository(this.db).log({
2220
+ actorId,
2221
+ actorIp: requestMeta.ip ?? void 0,
2222
+ action: "plugin_tool_invoke",
2223
+ resourceType: "plugin_mcp_tool",
2224
+ resourceId: `${pluginId}__${toolName}`,
2225
+ details: {
2226
+ pluginId,
2227
+ tool: toolName,
2228
+ route,
2229
+ reason
2230
+ },
2231
+ status: "denied"
2232
+ });
2233
+ }
2080
2234
  findSandboxedPlugin(pluginId) {
2081
2235
  for (const [key, plugin] of this.sandboxedPlugins) if (key.startsWith(pluginId + ":")) return plugin;
2082
2236
  }
@@ -2759,6 +2913,63 @@ async function getRuntime(config, initTimings) {
2759
2913
  async function runScheduledTasks(options = {}) {
2760
2914
  const config = getConfig();
2761
2915
  if (!config) return { published: [] };
2916
+ return runOutsideRequest(config, (runtime) => runtime.runScheduledTasks(options));
2917
+ }
2918
+ /**
2919
+ * Run a callback against the EmDash runtime outside any HTTP request — from a
2920
+ * Cloudflare Queue consumer, a `scheduled()` handler, or any other
2921
+ * platform-event handler that has no request and therefore no `locals.emdash`.
2922
+ *
2923
+ * Resolves the same cached runtime singleton request handlers use, so hooks,
2924
+ * plugin state, and storage all behave exactly as they do during a request.
2925
+ * A typical queue consumer finishes a job by calling back into a plugin route:
2926
+ *
2927
+ * ```ts
2928
+ * import { withEmDashRuntime } from "emdash/middleware";
2929
+ *
2930
+ * async function queue(batch: MessageBatch) {
2931
+ * await withEmDashRuntime(async (runtime) => {
2932
+ * for (const message of batch.messages) {
2933
+ * await runtime.handlePluginApiRoute(
2934
+ * "my-plugin",
2935
+ * "POST",
2936
+ * "/finishJob",
2937
+ * new Request("https://internal/", {
2938
+ * method: "POST",
2939
+ * body: JSON.stringify(message.body),
2940
+ * }),
2941
+ * );
2942
+ * }
2943
+ * });
2944
+ * }
2945
+ * ```
2946
+ *
2947
+ * Server-only and fully trusted: the callback gets the raw runtime with no
2948
+ * auth or CSRF checks, same trust level as plugin cron. Never expose it to
2949
+ * user input without validating that input yourself.
2950
+ *
2951
+ * Throws when EmDash is not configured (no `emdash()` Astro integration).
2952
+ */
2953
+ async function withEmDashRuntime(run) {
2954
+ const config = getConfig();
2955
+ if (!config) throw new Error("EmDash is not configured — withEmDashRuntime() requires the emdash() Astro integration.");
2956
+ return runOutsideRequest(config, async (runtime) => run(runtime));
2957
+ }
2958
+ /**
2959
+ * Shared plumbing for request-free entry points (`runScheduledTasks`,
2960
+ * `withEmDashRuntime`): resolve the runtime singleton, then run the callback
2961
+ * under an event-scoped db connection when the adapter needs one.
2962
+ *
2963
+ * Connection-backed adapters (e.g. Postgres over Hyperdrive) cannot reuse
2964
+ * the per-isolate singleton from a platform event: its socket belongs to the
2965
+ * request that opened it, and workerd rejects cross-event I/O. Open an
2966
+ * event-scoped connection and run the callback under it in ALS — the
2967
+ * runtime's db getter, the cron executor, and plugin contexts all resolve
2968
+ * the connection from ALS — then close it. Gated on the adapter being
2969
+ * connection-backed (it exposes `close()`); stateless adapters (D1, Node
2970
+ * SQLite) return null or a close-less scope and keep using the singleton.
2971
+ */
2972
+ async function runOutsideRequest(config, fn) {
2762
2973
  const runtime = await getRuntime(config);
2763
2974
  const scoped = createRequestScopedDb$1({
2764
2975
  config: config.database?.config,
@@ -2767,7 +2978,7 @@ async function runScheduledTasks(options = {}) {
2767
2978
  cookies: NOOP_COOKIE_JAR,
2768
2979
  url: CRON_EVENT_URL
2769
2980
  });
2770
- if (!scoped?.close) return runtime.runScheduledTasks(options);
2981
+ if (!scoped?.close) return fn(runtime);
2771
2982
  const parent = getRequestContext();
2772
2983
  const ctx = parent ? {
2773
2984
  ...parent,
@@ -2778,17 +2989,17 @@ async function runScheduledTasks(options = {}) {
2778
2989
  metrics: createRequestMetrics(performance.now())
2779
2990
  };
2780
2991
  try {
2781
- return await runWithContext(ctx, () => runtime.runScheduledTasks(options));
2992
+ return await runWithContext(ctx, () => fn(runtime));
2782
2993
  } finally {
2783
2994
  try {
2784
2995
  scoped.commit();
2785
2996
  } catch (error) {
2786
- console.error("[scheduled] request-scoped db commit failed:", error);
2997
+ console.error("[emdash] event-scoped db commit failed:", error);
2787
2998
  }
2788
2999
  try {
2789
3000
  scoped.close();
2790
3001
  } catch (error) {
2791
- console.error("[scheduled] request-scoped db close failed:", error);
3002
+ console.error("[emdash] event-scoped db close failed:", error);
2792
3003
  }
2793
3004
  }
2794
3005
  }
@@ -2912,7 +3123,7 @@ const onRequest = defineMiddleware(async (context, next) => {
2912
3123
  if (!isSetupVerified() && !context.isPrerendered) {
2913
3124
  const t0 = performance.now();
2914
3125
  try {
2915
- const { getDb } = await import("../loader-Rb8QlGZp.mjs").then((n) => n.o);
3126
+ const { getDb } = await import("../loader-Be3ouI5L.mjs").then((n) => n.o);
2916
3127
  await (await getDb()).selectFrom("_emdash_migrations").selectAll().limit(1).execute();
2917
3128
  markSetupVerified();
2918
3129
  } catch (error) {
@@ -3045,6 +3256,11 @@ const onRequest = defineMiddleware(async (context, next) => {
3045
3256
  handlePluginApiRoute: runtime.handlePluginApiRoute.bind(runtime),
3046
3257
  handlePublicPluginApiRoute: createPublicPluginApiRouteHandler(runtime),
3047
3258
  getPluginRouteMeta: runtime.getPluginRouteMeta.bind(runtime),
3259
+ getPluginMcpTools: runtime.getPluginMcpTools.bind(runtime),
3260
+ getEnabledPluginMcpTools: runtime.getEnabledPluginMcpTools.bind(runtime),
3261
+ serializePluginMcpConsent: runtime.serializePluginMcpConsent.bind(runtime),
3262
+ handlePluginMcpTool: runtime.handlePluginMcpTool.bind(runtime),
3263
+ handlePluginMcpDenied: runtime.handlePluginMcpDenied.bind(runtime),
3048
3264
  getMediaProvider: runtime.getMediaProvider.bind(runtime),
3049
3265
  getMediaProviderList: runtime.getMediaProviderList.bind(runtime),
3050
3266
  collectPageMetadata: runtime.collectPageMetadata.bind(runtime),
@@ -3136,5 +3352,5 @@ const onRequest = defineMiddleware(async (context, next) => {
3136
3352
  });
3137
3353
 
3138
3354
  //#endregion
3139
- export { onRequest as default, onRequest, runScheduledTasks };
3355
+ export { onRequest as default, onRequest, runScheduledTasks, withEmDashRuntime };
3140
3356
  //# sourceMappingURL=middleware.mjs.map