emdash 0.39.1 → 0.40.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1656) hide show
  1. package/dist/action-token-DYwe4Pk0.mjs +26 -0
  2. package/dist/action-token-DYwe4Pk0.mjs.map +1 -0
  3. package/dist/activation-LOkDM5WT.mjs +382 -0
  4. package/dist/activation-LOkDM5WT.mjs.map +1 -0
  5. package/dist/adapters-B64LbYcB.d.mts +171 -0
  6. package/dist/adapters-B64LbYcB.d.mts.map +1 -0
  7. package/dist/allowed-origins-CHB8oZNM.mjs +116 -0
  8. package/dist/allowed-origins-CHB8oZNM.mjs.map +1 -0
  9. package/dist/api/route-utils.d.mts +4 -4
  10. package/dist/api/route-utils.mjs +49 -40
  11. package/dist/api/route-utils.mjs.map +1 -1
  12. package/dist/api/schemas/index.d.mts +2 -2
  13. package/dist/api/schemas/index.mjs +11 -7
  14. package/dist/api-CuyNEHZG.mjs +4718 -0
  15. package/dist/api-CuyNEHZG.mjs.map +1 -0
  16. package/dist/api-tokens-CE1ECIg0.mjs +3 -0
  17. package/dist/api-tokens-s4i4aUp_.mjs +166 -0
  18. package/dist/api-tokens-s4i4aUp_.mjs.map +1 -0
  19. package/dist/apply-npY1TAhG.mjs +1366 -0
  20. package/dist/apply-npY1TAhG.mjs.map +1 -0
  21. package/dist/approvals-CqMfNxak.mjs +460 -0
  22. package/dist/approvals-CqMfNxak.mjs.map +1 -0
  23. package/dist/artifact-fetch-DZMOGZ3-.mjs +818 -0
  24. package/dist/artifact-fetch-DZMOGZ3-.mjs.map +1 -0
  25. package/dist/astro/index.d.mts +14 -14
  26. package/dist/astro/index.mjs +68 -18
  27. package/dist/astro/index.mjs.map +1 -1
  28. package/dist/astro/middleware/auth.d.mts +14 -12
  29. package/dist/astro/middleware/auth.d.mts.map +1 -1
  30. package/dist/astro/middleware/auth.mjs +26 -11
  31. package/dist/astro/middleware/auth.mjs.map +1 -1
  32. package/dist/astro/middleware/media-usage-write-fence.d.mts +9 -1
  33. package/dist/astro/middleware/media-usage-write-fence.d.mts.map +1 -1
  34. package/dist/astro/middleware/media-usage-write-fence.mjs +95 -13
  35. package/dist/astro/middleware/media-usage-write-fence.mjs.map +1 -1
  36. package/dist/astro/middleware/redirect.mjs +8 -8
  37. package/dist/astro/middleware/request-context.d.mts.map +1 -1
  38. package/dist/astro/middleware/request-context.mjs +145 -47
  39. package/dist/astro/middleware/request-context.mjs.map +1 -1
  40. package/dist/astro/middleware/setup.mjs +1 -1
  41. package/dist/astro/middleware.d.mts +12 -12
  42. package/dist/astro/middleware.d.mts.map +1 -1
  43. package/dist/astro/middleware.mjs +130 -123
  44. package/dist/astro/middleware.mjs.map +1 -1
  45. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +14 -8
  46. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -1
  47. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +14 -8
  48. package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -1
  49. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +5 -3
  50. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs.map +1 -1
  51. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -4
  52. package/dist/astro/routes/api/admin/api-tokens/index.mjs.map +1 -1
  53. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +6 -4
  54. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs.map +1 -1
  55. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +17 -11
  56. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs.map +1 -1
  57. package/dist/astro/routes/api/admin/byline-fields/index.mjs +17 -11
  58. package/dist/astro/routes/api/admin/byline-fields/index.mjs.map +1 -1
  59. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +17 -11
  60. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs.map +1 -1
  61. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +25 -19
  62. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  63. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +25 -19
  64. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  65. package/dist/astro/routes/api/admin/bylines/index.mjs +25 -19
  66. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  67. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +19 -13
  68. package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -1
  69. package/dist/astro/routes/api/admin/comments/_id_.mjs +7 -5
  70. package/dist/astro/routes/api/admin/comments/_id_.mjs.map +1 -1
  71. package/dist/astro/routes/api/admin/comments/bulk.mjs +18 -12
  72. package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -1
  73. package/dist/astro/routes/api/admin/comments/counts.mjs +7 -5
  74. package/dist/astro/routes/api/admin/comments/counts.mjs.map +1 -1
  75. package/dist/astro/routes/api/admin/comments/index.mjs +18 -12
  76. package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -1
  77. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -4
  78. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs.map +1 -1
  79. package/dist/astro/routes/api/admin/hooks/exclusive/index.d.mts.map +1 -1
  80. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -6
  81. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs.map +1 -1
  82. package/dist/astro/routes/api/admin/media-usage/activation.mjs +21 -15
  83. package/dist/astro/routes/api/admin/media-usage/activation.mjs.map +1 -1
  84. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +23 -17
  85. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs.map +1 -1
  86. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +23 -17
  87. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs.map +1 -1
  88. package/dist/astro/routes/api/admin/media-usage/progress.mjs +26 -15
  89. package/dist/astro/routes/api/admin/media-usage/progress.mjs.map +1 -1
  90. package/dist/astro/routes/api/admin/media-usage/repair.mjs +32 -19
  91. package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
  92. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +23 -17
  93. package/dist/astro/routes/api/admin/media-usage/work/index.mjs.map +1 -1
  94. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +23 -17
  95. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs.map +1 -1
  96. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +5 -3
  97. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs.map +1 -1
  98. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +5 -3
  99. package/dist/astro/routes/api/admin/oauth-clients/index.mjs.map +1 -1
  100. package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts.map +1 -1
  101. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +10 -8
  102. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
  103. package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts.map +1 -1
  104. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +10 -8
  105. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
  106. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +72 -62
  107. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  108. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +6 -4
  109. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs.map +1 -1
  110. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +71 -61
  111. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  112. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.d.mts.map +1 -1
  113. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +74 -64
  114. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  115. package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts.map +1 -1
  116. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +84 -74
  117. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  118. package/dist/astro/routes/api/admin/plugins/index.mjs +72 -62
  119. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  120. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +4 -2
  121. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs.map +1 -1
  122. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +71 -61
  123. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  124. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts.map +1 -1
  125. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +83 -73
  126. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  127. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +71 -61
  128. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  129. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.d.mts.map +1 -1
  130. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +74 -64
  131. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  132. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +85 -75
  133. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  134. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +8 -6
  135. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  136. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +76 -66
  137. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  138. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.d.mts +8 -0
  139. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.d.mts.map +1 -0
  140. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +221 -0
  141. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs.map +1 -0
  142. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +72 -62
  143. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  144. package/dist/astro/routes/api/admin/plugins/updates.mjs +71 -61
  145. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  146. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +6 -4
  147. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs.map +1 -1
  148. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +71 -61
  149. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  150. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +4 -2
  151. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs.map +1 -1
  152. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +71 -61
  153. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  154. package/dist/astro/routes/api/admin/transfer/_...path_.d.mts +12 -0
  155. package/dist/astro/routes/api/admin/transfer/_...path_.d.mts.map +1 -0
  156. package/dist/astro/routes/api/admin/transfer/_...path_.mjs +144 -0
  157. package/dist/astro/routes/api/admin/transfer/_...path_.mjs.map +1 -0
  158. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.d.mts +8 -0
  159. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.d.mts.map +1 -0
  160. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +68 -0
  161. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs.map +1 -0
  162. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.d.mts +8 -0
  163. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.d.mts.map +1 -0
  164. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +68 -0
  165. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs.map +1 -0
  166. package/dist/astro/routes/api/admin/transfer/approvals/index.d.mts +8 -0
  167. package/dist/astro/routes/api/admin/transfer/approvals/index.d.mts.map +1 -0
  168. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +67 -0
  169. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs.map +1 -0
  170. package/dist/astro/routes/api/admin/transfer/capabilities.d.mts +8 -0
  171. package/dist/astro/routes/api/admin/transfer/capabilities.d.mts.map +1 -0
  172. package/dist/astro/routes/api/admin/transfer/capabilities.mjs +70 -0
  173. package/dist/astro/routes/api/admin/transfer/capabilities.mjs.map +1 -0
  174. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.d.mts +8 -0
  175. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.d.mts.map +1 -0
  176. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +67 -0
  177. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs.map +1 -0
  178. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.d.mts +8 -0
  179. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.d.mts.map +1 -0
  180. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +70 -0
  181. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs.map +1 -0
  182. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.d.mts +8 -0
  183. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.d.mts.map +1 -0
  184. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +69 -0
  185. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs.map +1 -0
  186. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.d.mts +8 -0
  187. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.d.mts.map +1 -0
  188. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +66 -0
  189. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs.map +1 -0
  190. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.d.mts +8 -0
  191. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.d.mts.map +1 -0
  192. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +69 -0
  193. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs.map +1 -0
  194. package/dist/astro/routes/api/admin/transfer/exports/index.d.mts +9 -0
  195. package/dist/astro/routes/api/admin/transfer/exports/index.d.mts.map +1 -0
  196. package/dist/astro/routes/api/admin/transfer/exports/index.mjs +91 -0
  197. package/dist/astro/routes/api/admin/transfer/exports/index.mjs.map +1 -0
  198. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.d.mts +8 -0
  199. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.d.mts.map +1 -0
  200. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +66 -0
  201. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs.map +1 -0
  202. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.d.mts +8 -0
  203. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.d.mts.map +1 -0
  204. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +70 -0
  205. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs.map +1 -0
  206. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.d.mts +8 -0
  207. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.d.mts.map +1 -0
  208. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +78 -0
  209. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs.map +1 -0
  210. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.d.mts +8 -0
  211. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.d.mts.map +1 -0
  212. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +66 -0
  213. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs.map +1 -0
  214. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.d.mts +8 -0
  215. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.d.mts.map +1 -0
  216. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +77 -0
  217. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs.map +1 -0
  218. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.d.mts +8 -0
  219. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.d.mts.map +1 -0
  220. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +77 -0
  221. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs.map +1 -0
  222. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.d.mts +8 -0
  223. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.d.mts.map +1 -0
  224. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +66 -0
  225. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs.map +1 -0
  226. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.d.mts +8 -0
  227. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.d.mts.map +1 -0
  228. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +70 -0
  229. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs.map +1 -0
  230. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.d.mts +8 -0
  231. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.d.mts.map +1 -0
  232. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +67 -0
  233. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs.map +1 -0
  234. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.d.mts +8 -0
  235. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.d.mts.map +1 -0
  236. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +66 -0
  237. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs.map +1 -0
  238. package/dist/astro/routes/api/admin/transfer/imports/index.d.mts +9 -0
  239. package/dist/astro/routes/api/admin/transfer/imports/index.d.mts.map +1 -0
  240. package/dist/astro/routes/api/admin/transfer/imports/index.mjs +99 -0
  241. package/dist/astro/routes/api/admin/transfer/imports/index.mjs.map +1 -0
  242. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +3 -1
  243. package/dist/astro/routes/api/admin/users/_id_/disable.mjs.map +1 -1
  244. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +3 -1
  245. package/dist/astro/routes/api/admin/users/_id_/enable.mjs.map +1 -1
  246. package/dist/astro/routes/api/admin/users/_id_/index.mjs +14 -8
  247. package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -1
  248. package/dist/astro/routes/api/admin/users/_id_/send-recovery.d.mts.map +1 -1
  249. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +16 -6
  250. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs.map +1 -1
  251. package/dist/astro/routes/api/admin/users/index.mjs +14 -8
  252. package/dist/astro/routes/api/admin/users/index.mjs.map +1 -1
  253. package/dist/astro/routes/api/auth/dev-bypass.mjs +5 -3
  254. package/dist/astro/routes/api/auth/dev-bypass.mjs.map +1 -1
  255. package/dist/astro/routes/api/auth/invite/accept.mjs +3 -1
  256. package/dist/astro/routes/api/auth/invite/accept.mjs.map +1 -1
  257. package/dist/astro/routes/api/auth/invite/complete.mjs +19 -13
  258. package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -1
  259. package/dist/astro/routes/api/auth/invite/index.d.mts.map +1 -1
  260. package/dist/astro/routes/api/auth/invite/index.mjs +24 -12
  261. package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -1
  262. package/dist/astro/routes/api/auth/invite/register-options.mjs +18 -12
  263. package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -1
  264. package/dist/astro/routes/api/auth/logout.mjs +4 -2
  265. package/dist/astro/routes/api/auth/logout.mjs.map +1 -1
  266. package/dist/astro/routes/api/auth/magic-link/send.d.mts.map +1 -1
  267. package/dist/astro/routes/api/auth/magic-link/send.mjs +29 -15
  268. package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -1
  269. package/dist/astro/routes/api/auth/magic-link/verify.d.mts +2 -1
  270. package/dist/astro/routes/api/auth/magic-link/verify.d.mts.map +1 -1
  271. package/dist/astro/routes/api/auth/magic-link/verify.mjs +37 -17
  272. package/dist/astro/routes/api/auth/magic-link/verify.mjs.map +1 -1
  273. package/dist/astro/routes/api/auth/me.mjs +15 -9
  274. package/dist/astro/routes/api/auth/me.mjs.map +1 -1
  275. package/dist/astro/routes/api/auth/mode.mjs +4 -2
  276. package/dist/astro/routes/api/auth/mode.mjs.map +1 -1
  277. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +4 -4
  278. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  279. package/dist/astro/routes/api/auth/passkey/_id_.mjs +14 -8
  280. package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -1
  281. package/dist/astro/routes/api/auth/passkey/index.mjs +3 -1
  282. package/dist/astro/routes/api/auth/passkey/index.mjs.map +1 -1
  283. package/dist/astro/routes/api/auth/passkey/options.d.mts.map +1 -1
  284. package/dist/astro/routes/api/auth/passkey/options.mjs +21 -24
  285. package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -1
  286. package/dist/astro/routes/api/auth/passkey/register/options.mjs +18 -12
  287. package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -1
  288. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +19 -13
  289. package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -1
  290. package/dist/astro/routes/api/auth/passkey/verify.mjs +19 -13
  291. package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -1
  292. package/dist/astro/routes/api/auth/signup/complete.mjs +19 -13
  293. package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -1
  294. package/dist/astro/routes/api/auth/signup/request.mjs +18 -12
  295. package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -1
  296. package/dist/astro/routes/api/auth/signup/verify.mjs +3 -1
  297. package/dist/astro/routes/api/auth/signup/verify.mjs.map +1 -1
  298. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +14 -11
  299. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs.map +1 -1
  300. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +21 -15
  301. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs.map +1 -1
  302. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +4 -2
  303. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs.map +1 -1
  304. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +18 -13
  305. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
  306. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +4 -3
  307. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs.map +1 -1
  308. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +18 -13
  309. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -1
  310. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +4 -2
  311. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs.map +1 -1
  312. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +10 -8
  313. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs.map +1 -1
  314. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.d.mts.map +1 -1
  315. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +68 -16
  316. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
  317. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +18 -13
  318. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  319. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +31 -22
  320. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  321. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +31 -22
  322. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  323. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +4 -3
  324. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs.map +1 -1
  325. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +4 -2
  326. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs.map +1 -1
  327. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +18 -13
  328. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
  329. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -1
  330. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +38 -19
  331. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  332. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +4 -2
  333. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs.map +1 -1
  334. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +18 -13
  335. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
  336. package/dist/astro/routes/api/content/_collection_/_id_.mjs +18 -13
  337. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  338. package/dist/astro/routes/api/content/_collection_/authors.mjs +4 -2
  339. package/dist/astro/routes/api/content/_collection_/authors.mjs.map +1 -1
  340. package/dist/astro/routes/api/content/_collection_/index.mjs +15 -10
  341. package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
  342. package/dist/astro/routes/api/content/_collection_/trash.mjs +15 -9
  343. package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -1
  344. package/dist/astro/routes/api/dashboard.mjs +11 -9
  345. package/dist/astro/routes/api/dashboard.mjs.map +1 -1
  346. package/dist/astro/routes/api/dev/emails.mjs +4 -2
  347. package/dist/astro/routes/api/dev/emails.mjs.map +1 -1
  348. package/dist/astro/routes/api/health.mjs +5 -3
  349. package/dist/astro/routes/api/health.mjs.map +1 -1
  350. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  351. package/dist/astro/routes/api/import/probe.mjs +27 -21
  352. package/dist/astro/routes/api/import/probe.mjs.map +1 -1
  353. package/dist/astro/routes/api/import/wordpress/analyze.mjs +5 -3
  354. package/dist/astro/routes/api/import/wordpress/analyze.mjs.map +1 -1
  355. package/dist/astro/routes/api/import/wordpress/execute.d.mts +13 -13
  356. package/dist/astro/routes/api/import/wordpress/execute.mjs +18 -16
  357. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
  358. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
  359. package/dist/astro/routes/api/import/wordpress/media.mjs +19 -13
  360. package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -1
  361. package/dist/astro/routes/api/import/wordpress/prepare.mjs +18 -12
  362. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
  363. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts +5 -1
  364. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts.map +1 -1
  365. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs +4 -2
  366. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs.map +1 -1
  367. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
  368. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +29 -15
  369. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  370. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  371. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +27 -21
  372. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
  373. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
  374. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +38 -32
  375. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  376. package/dist/astro/routes/api/manifest.mjs +6 -4
  377. package/dist/astro/routes/api/manifest.mjs.map +1 -1
  378. package/dist/astro/routes/api/mcp.d.mts.map +1 -1
  379. package/dist/astro/routes/api/mcp.mjs +724 -94
  380. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  381. package/dist/astro/routes/api/media/_id_/confirm.mjs +19 -13
  382. package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -1
  383. package/dist/astro/routes/api/media/_id_/replace.mjs +16 -10
  384. package/dist/astro/routes/api/media/_id_/replace.mjs.map +1 -1
  385. package/dist/astro/routes/api/media/_id_/upload.mjs +8 -6
  386. package/dist/astro/routes/api/media/_id_/upload.mjs.map +1 -1
  387. package/dist/astro/routes/api/media/_id_/usage.mjs +34 -21
  388. package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
  389. package/dist/astro/routes/api/media/_id_.d.mts.map +1 -1
  390. package/dist/astro/routes/api/media/_id_.mjs +37 -26
  391. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  392. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +5 -3
  393. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs.map +1 -1
  394. package/dist/astro/routes/api/media/file/_...key_.d.mts.map +1 -1
  395. package/dist/astro/routes/api/media/file/_...key_.mjs +31 -2
  396. package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
  397. package/dist/astro/routes/api/media/folders/_id_.mjs +16 -10
  398. package/dist/astro/routes/api/media/folders/_id_.mjs.map +1 -1
  399. package/dist/astro/routes/api/media/folders/index.mjs +16 -10
  400. package/dist/astro/routes/api/media/folders/index.mjs.map +1 -1
  401. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +4 -2
  402. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs.map +1 -1
  403. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +4 -2
  404. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs.map +1 -1
  405. package/dist/astro/routes/api/media/providers/index.mjs +4 -2
  406. package/dist/astro/routes/api/media/providers/index.mjs.map +1 -1
  407. package/dist/astro/routes/api/media/upload-url.mjs +18 -12
  408. package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
  409. package/dist/astro/routes/api/media.mjs +36 -24
  410. package/dist/astro/routes/api/media.mjs.map +1 -1
  411. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +18 -12
  412. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  413. package/dist/astro/routes/api/menus/_name_/items.mjs +18 -12
  414. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  415. package/dist/astro/routes/api/menus/_name_/reorder.mjs +18 -12
  416. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  417. package/dist/astro/routes/api/menus/_name_/translations.mjs +18 -12
  418. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  419. package/dist/astro/routes/api/menus/_name_.mjs +18 -12
  420. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  421. package/dist/astro/routes/api/menus/index.mjs +18 -12
  422. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  423. package/dist/astro/routes/api/oauth/authorize.d.mts.map +1 -1
  424. package/dist/astro/routes/api/oauth/authorize.mjs +9 -6
  425. package/dist/astro/routes/api/oauth/authorize.mjs.map +1 -1
  426. package/dist/astro/routes/api/oauth/device/authorize.mjs +7 -5
  427. package/dist/astro/routes/api/oauth/device/authorize.mjs.map +1 -1
  428. package/dist/astro/routes/api/oauth/device/code.mjs +10 -8
  429. package/dist/astro/routes/api/oauth/device/code.mjs.map +1 -1
  430. package/dist/astro/routes/api/oauth/device/token.mjs +9 -7
  431. package/dist/astro/routes/api/oauth/device/token.mjs.map +1 -1
  432. package/dist/astro/routes/api/oauth/register.mjs +4 -2
  433. package/dist/astro/routes/api/oauth/register.mjs.map +1 -1
  434. package/dist/astro/routes/api/oauth/token/refresh.mjs +7 -5
  435. package/dist/astro/routes/api/oauth/token/refresh.mjs.map +1 -1
  436. package/dist/astro/routes/api/oauth/token/revoke.mjs +7 -5
  437. package/dist/astro/routes/api/oauth/token/revoke.mjs.map +1 -1
  438. package/dist/astro/routes/api/oauth/token.mjs +7 -5
  439. package/dist/astro/routes/api/oauth/token.mjs.map +1 -1
  440. package/dist/astro/routes/api/openapi.json.mjs +497 -12
  441. package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
  442. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +10 -8
  443. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs.map +1 -1
  444. package/dist/astro/routes/api/redirects/404s/index.mjs +21 -15
  445. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
  446. package/dist/astro/routes/api/redirects/404s/summary.mjs +21 -15
  447. package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
  448. package/dist/astro/routes/api/redirects/_id_.mjs +21 -15
  449. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
  450. package/dist/astro/routes/api/redirects/index.mjs +21 -15
  451. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  452. package/dist/astro/routes/api/relations/_id_/index.mjs +31 -22
  453. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  454. package/dist/astro/routes/api/relations/_id_/translations.mjs +21 -16
  455. package/dist/astro/routes/api/relations/_id_/translations.mjs.map +1 -1
  456. package/dist/astro/routes/api/relations/index.mjs +31 -22
  457. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  458. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +4 -2
  459. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs.map +1 -1
  460. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +4 -3
  461. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs.map +1 -1
  462. package/dist/astro/routes/api/schema/block-types/_slug_/index.d.mts +9 -0
  463. package/dist/astro/routes/api/schema/block-types/_slug_/index.d.mts.map +1 -0
  464. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +102 -0
  465. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs.map +1 -0
  466. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.d.mts +8 -0
  467. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.d.mts.map +1 -0
  468. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs +96 -0
  469. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs.map +1 -0
  470. package/dist/astro/routes/api/schema/block-types/index.d.mts +9 -0
  471. package/dist/astro/routes/api/schema/block-types/index.d.mts.map +1 -0
  472. package/dist/astro/routes/api/schema/block-types/index.mjs +102 -0
  473. package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -0
  474. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +71 -61
  475. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  476. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +71 -61
  477. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  478. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +71 -61
  479. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  480. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +71 -61
  481. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  482. package/dist/astro/routes/api/schema/collections/index.mjs +71 -61
  483. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  484. package/dist/astro/routes/api/schema/collections/reorder.mjs +71 -61
  485. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  486. package/dist/astro/routes/api/schema/index.mjs +17 -14
  487. package/dist/astro/routes/api/schema/index.mjs.map +1 -1
  488. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +71 -61
  489. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  490. package/dist/astro/routes/api/schema/orphans/index.mjs +71 -61
  491. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  492. package/dist/astro/routes/api/search/enable.mjs +20 -14
  493. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  494. package/dist/astro/routes/api/search/index.mjs +19 -13
  495. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  496. package/dist/astro/routes/api/search/rebuild.mjs +20 -14
  497. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  498. package/dist/astro/routes/api/search/stats.mjs +10 -8
  499. package/dist/astro/routes/api/search/stats.mjs.map +1 -1
  500. package/dist/astro/routes/api/search/suggest.mjs +19 -13
  501. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  502. package/dist/astro/routes/api/sections/_slug_.mjs +19 -13
  503. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  504. package/dist/astro/routes/api/sections/index.mjs +19 -13
  505. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  506. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +8 -7
  507. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs.map +1 -1
  508. package/dist/astro/routes/api/settings/backups/archives/index.mjs +8 -6
  509. package/dist/astro/routes/api/settings/backups/archives/index.mjs.map +1 -1
  510. package/dist/astro/routes/api/settings/backups/export.mjs +8 -7
  511. package/dist/astro/routes/api/settings/backups/export.mjs.map +1 -1
  512. package/dist/astro/routes/api/settings/backups/index.mjs +9 -8
  513. package/dist/astro/routes/api/settings/backups/index.mjs.map +1 -1
  514. package/dist/astro/routes/api/settings/email.mjs +6 -4
  515. package/dist/astro/routes/api/settings/email.mjs.map +1 -1
  516. package/dist/astro/routes/api/settings.mjs +25 -19
  517. package/dist/astro/routes/api/settings.mjs.map +1 -1
  518. package/dist/astro/routes/api/setup/admin-verify.mjs +20 -14
  519. package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
  520. package/dist/astro/routes/api/setup/admin.mjs +19 -13
  521. package/dist/astro/routes/api/setup/admin.mjs.map +1 -1
  522. package/dist/astro/routes/api/setup/dev-bypass.mjs +43 -37
  523. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  524. package/dist/astro/routes/api/setup/dev-reset.mjs +4 -2
  525. package/dist/astro/routes/api/setup/dev-reset.mjs.map +1 -1
  526. package/dist/astro/routes/api/setup/index.d.mts.map +1 -1
  527. package/dist/astro/routes/api/setup/index.mjs +78 -43
  528. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  529. package/dist/astro/routes/api/setup/status.mjs +5 -3
  530. package/dist/astro/routes/api/setup/status.mjs.map +1 -1
  531. package/dist/astro/routes/api/snapshot.mjs +11 -9
  532. package/dist/astro/routes/api/snapshot.mjs.map +1 -1
  533. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +25 -19
  534. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
  535. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +25 -19
  536. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  537. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +25 -19
  538. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  539. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +25 -19
  540. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  541. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +24 -18
  542. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
  543. package/dist/astro/routes/api/taxonomies/_name_.mjs +25 -19
  544. package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
  545. package/dist/astro/routes/api/taxonomies/bulk-tag.d.mts +8 -0
  546. package/dist/astro/routes/api/taxonomies/bulk-tag.d.mts.map +1 -0
  547. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +295 -0
  548. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs.map +1 -0
  549. package/dist/astro/routes/api/taxonomies/index.mjs +25 -19
  550. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  551. package/dist/astro/routes/api/themes/preview.mjs +7 -5
  552. package/dist/astro/routes/api/themes/preview.mjs.map +1 -1
  553. package/dist/astro/routes/api/typegen.d.mts.map +1 -1
  554. package/dist/astro/routes/api/typegen.mjs +12 -9
  555. package/dist/astro/routes/api/typegen.mjs.map +1 -1
  556. package/dist/astro/routes/api/visual-editing/action-token.mjs +7 -5
  557. package/dist/astro/routes/api/visual-editing/action-token.mjs.map +1 -1
  558. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +22 -16
  559. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs.map +1 -1
  560. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +3 -1
  561. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs.map +1 -1
  562. package/dist/astro/routes/api/well-known/auth.mjs +2 -2
  563. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  564. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  565. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +16 -10
  566. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  567. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +20 -14
  568. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  569. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +20 -14
  570. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  571. package/dist/astro/routes/api/widget-areas/_name_.mjs +10 -8
  572. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
  573. package/dist/astro/routes/api/widget-areas/index.mjs +20 -14
  574. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  575. package/dist/astro/routes/api/widget-components.mjs +4 -2
  576. package/dist/astro/routes/api/widget-components.mjs.map +1 -1
  577. package/dist/astro/routes/robots.txt.mjs +10 -10
  578. package/dist/astro/routes/sitemap-_collection_.xml.mjs +13 -13
  579. package/dist/astro/routes/sitemap.xml.mjs +11 -11
  580. package/dist/astro/types.d.mts +25 -17
  581. package/dist/astro/types.d.mts.map +1 -1
  582. package/dist/audit-RfCugiSB.mjs +127 -0
  583. package/dist/audit-RfCugiSB.mjs.map +1 -0
  584. package/dist/auth/providers/github.d.mts +1 -1
  585. package/dist/auth/providers/google.d.mts +1 -1
  586. package/dist/authoritative-records-CoJvBXAD.mjs +5172 -0
  587. package/dist/authoritative-records-CoJvBXAD.mjs.map +1 -0
  588. package/dist/authorize-seCifOMJ.mjs +49 -0
  589. package/dist/authorize-seCifOMJ.mjs.map +1 -0
  590. package/dist/backup-BQRj3afm.mjs +246 -0
  591. package/dist/backup-BQRj3afm.mjs.map +1 -0
  592. package/dist/block-type-registry-DUI_3KxT.mjs +6709 -0
  593. package/dist/block-type-registry-DUI_3KxT.mjs.map +1 -0
  594. package/dist/block-types-BmZmLmAD.mjs +132 -0
  595. package/dist/block-types-BmZmLmAD.mjs.map +1 -0
  596. package/dist/block-values-C_VIPr5t.mjs +175 -0
  597. package/dist/block-values-C_VIPr5t.mjs.map +1 -0
  598. package/dist/byline-DYmkXqvo.mjs +909 -0
  599. package/dist/byline-DYmkXqvo.mjs.map +1 -0
  600. package/dist/byline-fields-D28AT-Fh.mjs +123 -0
  601. package/dist/byline-fields-D28AT-Fh.mjs.map +1 -0
  602. package/dist/byline-registry-gnKscbQX.mjs +406 -0
  603. package/dist/byline-registry-gnKscbQX.mjs.map +1 -0
  604. package/dist/bylines-BPwJqoYH.mjs +232 -0
  605. package/dist/bylines-BPwJqoYH.mjs.map +1 -0
  606. package/dist/bylines-ukLaYpVZ.mjs +214 -0
  607. package/dist/bylines-ukLaYpVZ.mjs.map +1 -0
  608. package/dist/cache-m7UEkRFV.mjs +108 -0
  609. package/dist/cache-m7UEkRFV.mjs.map +1 -0
  610. package/dist/canonical-YhEQezjg.mjs +174 -0
  611. package/dist/canonical-YhEQezjg.mjs.map +1 -0
  612. package/dist/capture-triggers-kJyl_yyM.mjs +362 -0
  613. package/dist/capture-triggers-kJyl_yyM.mjs.map +1 -0
  614. package/dist/challenge-store-ppU6Uv13.mjs +51 -0
  615. package/dist/challenge-store-ppU6Uv13.mjs.map +1 -0
  616. package/dist/checksum-B2IINIlN.mjs +162 -0
  617. package/dist/checksum-B2IINIlN.mjs.map +1 -0
  618. package/dist/chrome-tags-DApCQSIk.mjs +24 -0
  619. package/dist/chrome-tags-DApCQSIk.mjs.map +1 -0
  620. package/dist/chunks-Dms7Uxbt.mjs +25 -0
  621. package/dist/chunks-Dms7Uxbt.mjs.map +1 -0
  622. package/dist/cli/index.mjs +1471 -56
  623. package/dist/cli/index.mjs.map +1 -1
  624. package/dist/client/cf-access.d.mts +1 -1
  625. package/dist/client/index.d.mts +1050 -4
  626. package/dist/client/index.d.mts.map +1 -1
  627. package/dist/client/index.mjs +193 -11
  628. package/dist/client/index.mjs.map +1 -1
  629. package/dist/collection-deletion-BIm28mo3.mjs +436 -0
  630. package/dist/collection-deletion-BIm28mo3.mjs.map +1 -0
  631. package/dist/collection-deletion-processor-Br6rxs3u.mjs +217 -0
  632. package/dist/collection-deletion-processor-Br6rxs3u.mjs.map +1 -0
  633. package/dist/collection-slugs-cache-CjGk__zp.mjs +85 -0
  634. package/dist/collection-slugs-cache-CjGk__zp.mjs.map +1 -0
  635. package/dist/comment-CrBl22OF.mjs +313 -0
  636. package/dist/comment-CrBl22OF.mjs.map +1 -0
  637. package/dist/comment-reaction-JEQ2Fpd8.mjs +85 -0
  638. package/dist/comment-reaction-JEQ2Fpd8.mjs.map +1 -0
  639. package/dist/comments-2ah9du9y.mjs +195 -0
  640. package/dist/comments-2ah9du9y.mjs.map +1 -0
  641. package/dist/comments-fHZ8ON9O.mjs +99 -0
  642. package/dist/comments-fHZ8ON9O.mjs.map +1 -0
  643. package/dist/components-CXbq7CSM.mjs +108 -0
  644. package/dist/components-CXbq7CSM.mjs.map +1 -0
  645. package/dist/config-BjEm_3xL.d.mts +6537 -0
  646. package/dist/config-BjEm_3xL.d.mts.map +1 -0
  647. package/dist/config-CvmjJcVw.mjs +73 -0
  648. package/dist/config-CvmjJcVw.mjs.map +1 -0
  649. package/dist/config-IhybvkIQ.mjs +242 -0
  650. package/dist/config-IhybvkIQ.mjs.map +1 -0
  651. package/dist/config-Py43JK9r.d.mts +39 -0
  652. package/dist/config-Py43JK9r.d.mts.map +1 -0
  653. package/dist/content-DFaIEDj9.mjs +2281 -0
  654. package/dist/content-DFaIEDj9.mjs.map +1 -0
  655. package/dist/content-list-query-Dra4Dalc.d.mts +26 -0
  656. package/dist/content-list-query-Dra4Dalc.d.mts.map +1 -0
  657. package/dist/content-policy-DFNw91-d.mjs +46 -0
  658. package/dist/content-policy-DFNw91-d.mjs.map +1 -0
  659. package/dist/content-repair-Q8IUrpLL.mjs +442 -0
  660. package/dist/content-repair-Q8IUrpLL.mjs.map +1 -0
  661. package/dist/context-BV_7t-Ua.mjs +1921 -0
  662. package/dist/context-BV_7t-Ua.mjs.map +1 -0
  663. package/dist/cron-7DCJwPXq.mjs +284 -0
  664. package/dist/cron-7DCJwPXq.mjs.map +1 -0
  665. package/dist/dashboard-BP-iJqpd.mjs +151 -0
  666. package/dist/dashboard-BP-iJqpd.mjs.map +1 -0
  667. package/dist/db/index.d.mts +3 -3
  668. package/dist/db/index.mjs +3 -3
  669. package/dist/db/libsql-migrations.d.mts +1 -1
  670. package/dist/db/libsql-migrations.mjs +6 -6
  671. package/dist/db/libsql.d.mts +1 -1
  672. package/dist/db/postgres-migrations.d.mts +1 -1
  673. package/dist/db/postgres-migrations.mjs +6 -6
  674. package/dist/db/postgres.d.mts +1 -1
  675. package/dist/db/sqlite-migrations.d.mts +1 -1
  676. package/dist/db/sqlite-migrations.mjs +6 -6
  677. package/dist/db/sqlite.d.mts +1 -1
  678. package/dist/db/sqlite.mjs +2 -2
  679. package/dist/db/sqlite.mjs.map +1 -1
  680. package/dist/default-DQ6vsviu.mjs +81 -0
  681. package/dist/default-DQ6vsviu.mjs.map +1 -0
  682. package/dist/deferred-tasks-BPxXUB4x.d.mts +9 -0
  683. package/dist/deferred-tasks-BPxXUB4x.d.mts.map +1 -0
  684. package/dist/device-flow-CRd6DXmW.mjs +466 -0
  685. package/dist/device-flow-CRd6DXmW.mjs.map +1 -0
  686. package/dist/dialect-helpers-7_IqPdh9.mjs +307 -0
  687. package/dist/dialect-helpers-7_IqPdh9.mjs.map +1 -0
  688. package/dist/digest-BarSh-pN.mjs +194 -0
  689. package/dist/digest-BarSh-pN.mjs.map +1 -0
  690. package/dist/direct-executor-D2lNadwo.mjs +104 -0
  691. package/dist/direct-executor-D2lNadwo.mjs.map +1 -0
  692. package/dist/dist-BNwANFJR.mjs +810 -0
  693. package/dist/dist-BNwANFJR.mjs.map +1 -0
  694. package/dist/email-console-bJn3ctqA.mjs +50 -0
  695. package/dist/email-console-bJn3ctqA.mjs.map +1 -0
  696. package/dist/email-locale-CN6WAMx0.mjs +25 -0
  697. package/dist/email-locale-CN6WAMx0.mjs.map +1 -0
  698. package/dist/emdash-runtime-CtfnZmPi.mjs +4186 -0
  699. package/dist/emdash-runtime-CtfnZmPi.mjs.map +1 -0
  700. package/dist/enrich-Dl3kZ-lP.mjs +194 -0
  701. package/dist/enrich-Dl3kZ-lP.mjs.map +1 -0
  702. package/dist/entry-lock-BJYdBfXb.mjs +1097 -0
  703. package/dist/entry-lock-BJYdBfXb.mjs.map +1 -0
  704. package/dist/entry-lock-Cf5OoIgN.d.mts +4368 -0
  705. package/dist/entry-lock-Cf5OoIgN.d.mts.map +1 -0
  706. package/dist/entry-lock-DHQOxN7R.mjs +163 -0
  707. package/dist/entry-lock-DHQOxN7R.mjs.map +1 -0
  708. package/dist/entry-locks-D0foLdjQ.mjs +167 -0
  709. package/dist/entry-locks-D0foLdjQ.mjs.map +1 -0
  710. package/dist/error-CfvOHP0M.mjs +90 -0
  711. package/dist/error-CfvOHP0M.mjs.map +1 -0
  712. package/dist/errors-BF0_LFhW.mjs +460 -0
  713. package/dist/errors-BF0_LFhW.mjs.map +1 -0
  714. package/dist/errors-DgE1zJGG.mjs +120 -0
  715. package/dist/errors-DgE1zJGG.mjs.map +1 -0
  716. package/dist/escape-CuaZhZvL.mjs +9 -0
  717. package/dist/escape-CuaZhZvL.mjs.map +1 -0
  718. package/dist/fence-CMDXJYc_.mjs +162 -0
  719. package/dist/fence-CMDXJYc_.mjs.map +1 -0
  720. package/dist/field-defs-cache-HIgBbqZZ.mjs +77 -0
  721. package/dist/field-defs-cache-HIgBbqZZ.mjs.map +1 -0
  722. package/dist/fts-manager-S-K0laoS.mjs +443 -0
  723. package/dist/fts-manager-S-K0laoS.mjs.map +1 -0
  724. package/dist/gc-DjKY0Ay1.mjs +75 -0
  725. package/dist/gc-DjKY0Ay1.mjs.map +1 -0
  726. package/dist/hash-SDAW6zC-.mjs +37 -0
  727. package/dist/hash-SDAW6zC-.mjs.map +1 -0
  728. package/dist/hook-result-B5bXDgS2.d.mts +31 -0
  729. package/dist/hook-result-B5bXDgS2.d.mts.map +1 -0
  730. package/dist/hreflang-CbVI4paR.mjs +105 -0
  731. package/dist/hreflang-CbVI4paR.mjs.map +1 -0
  732. package/dist/hreflang-D5uNnsGJ.d.mts +50 -0
  733. package/dist/hreflang-D5uNnsGJ.d.mts.map +1 -0
  734. package/dist/http-route-dispatch-BitqzwMy.mjs +339 -0
  735. package/dist/http-route-dispatch-BitqzwMy.mjs.map +1 -0
  736. package/dist/identity-Be5kzutJ.mjs +35 -0
  737. package/dist/identity-Be5kzutJ.mjs.map +1 -0
  738. package/dist/import-YzfKCaco.mjs +2020 -0
  739. package/dist/import-YzfKCaco.mjs.map +1 -0
  740. package/dist/index-D-hdtLe8.d.mts +623 -0
  741. package/dist/index-D-hdtLe8.d.mts.map +1 -0
  742. package/dist/index.d.mts +24 -24
  743. package/dist/index.mjs +105 -93
  744. package/dist/install-finalization-DfM1fj5x.mjs +58 -0
  745. package/dist/install-finalization-DfM1fj5x.mjs.map +1 -0
  746. package/dist/keys-yxLm5l35.mjs +61 -0
  747. package/dist/keys-yxLm5l35.mjs.map +1 -0
  748. package/dist/kinds-CRu_T5T5.mjs +961 -0
  749. package/dist/kinds-CRu_T5T5.mjs.map +1 -0
  750. package/dist/lifecycle-BzeGPeQ-.mjs +25 -0
  751. package/dist/lifecycle-BzeGPeQ-.mjs.map +1 -0
  752. package/dist/load-XgJiE6_3.mjs +28 -0
  753. package/dist/load-XgJiE6_3.mjs.map +1 -0
  754. package/dist/loader-BzqeR1ZN.mjs +1086 -0
  755. package/dist/loader-BzqeR1ZN.mjs.map +1 -0
  756. package/dist/loops-BQSzv5Zn.mjs +203 -0
  757. package/dist/loops-BQSzv5Zn.mjs.map +1 -0
  758. package/dist/manifest-builder-BmSAOOEF.mjs +189 -0
  759. package/dist/manifest-builder-BmSAOOEF.mjs.map +1 -0
  760. package/dist/manifest-schema-CY3zng_M.mjs +492 -0
  761. package/dist/manifest-schema-CY3zng_M.mjs.map +1 -0
  762. package/dist/media/image-endpoint.mjs +1 -1
  763. package/dist/media/index.d.mts +1 -1
  764. package/dist/media/index.mjs +3 -3
  765. package/dist/media/local-runtime.d.mts +14 -14
  766. package/dist/media/local-runtime.d.mts.map +1 -1
  767. package/dist/media/local-runtime.mjs +15 -16
  768. package/dist/media/local-runtime.mjs.map +1 -1
  769. package/dist/media-CPXTbb1R.mjs +373 -0
  770. package/dist/media-CPXTbb1R.mjs.map +1 -0
  771. package/dist/media-JXRWDhw3.mjs +294 -0
  772. package/dist/media-JXRWDhw3.mjs.map +1 -0
  773. package/dist/media-Pu1L6xir.mjs +408 -0
  774. package/dist/media-Pu1L6xir.mjs.map +1 -0
  775. package/dist/media-allowlist-BSoa9Vvm.mjs +44 -0
  776. package/dist/media-allowlist-BSoa9Vvm.mjs.map +1 -0
  777. package/dist/media-folders-BE0oo2eX.mjs +210 -0
  778. package/dist/media-folders-BE0oo2eX.mjs.map +1 -0
  779. package/dist/media-url-jArBpzIG.mjs +43 -0
  780. package/dist/media-url-jArBpzIG.mjs.map +1 -0
  781. package/dist/media-usage-De-zeR9E.mjs +1629 -0
  782. package/dist/media-usage-De-zeR9E.mjs.map +1 -0
  783. package/dist/media-usage-activation-HKp7zk7W.mjs +78 -0
  784. package/dist/media-usage-activation-HKp7zk7W.mjs.map +1 -0
  785. package/dist/media-usage-work-C2OZLCAd.mjs +586 -0
  786. package/dist/media-usage-work-C2OZLCAd.mjs.map +1 -0
  787. package/dist/media-usage-work-DwUNbgvS.mjs +152 -0
  788. package/dist/media-usage-work-DwUNbgvS.mjs.map +1 -0
  789. package/dist/menus-BM7BPLOb.mjs +139 -0
  790. package/dist/menus-BM7BPLOb.mjs.map +1 -0
  791. package/dist/menus-Cm68rsAq.mjs +3608 -0
  792. package/dist/menus-Cm68rsAq.mjs.map +1 -0
  793. package/dist/menus-ITeAbcIF.mjs +753 -0
  794. package/dist/menus-ITeAbcIF.mjs.map +1 -0
  795. package/dist/migrations/index.d.mts +1 -1
  796. package/dist/migrations/index.mjs +5 -5
  797. package/dist/mime-ChLqYwDk.mjs +36 -0
  798. package/dist/mime-ChLqYwDk.mjs.map +1 -0
  799. package/dist/mode-CCuKXUci.mjs +23 -0
  800. package/dist/mode-CCuKXUci.mjs.map +1 -0
  801. package/dist/node-sqlite-compat-CONMsl-x.mjs +46 -0
  802. package/dist/node-sqlite-compat-CONMsl-x.mjs.map +1 -0
  803. package/dist/normalize-CO2P8-iE.mjs +191 -0
  804. package/dist/normalize-CO2P8-iE.mjs.map +1 -0
  805. package/dist/oauth-authorization-DlMIL5_h.mjs +274 -0
  806. package/dist/oauth-authorization-DlMIL5_h.mjs.map +1 -0
  807. package/dist/oauth-clients-Djq9r_KP.mjs +266 -0
  808. package/dist/oauth-clients-Djq9r_KP.mjs.map +1 -0
  809. package/dist/oauth-state-store-BbjnZXNC.mjs +50 -0
  810. package/dist/oauth-state-store-BbjnZXNC.mjs.map +1 -0
  811. package/dist/oauth-user-lookup-vue9a64A.mjs +26 -0
  812. package/dist/oauth-user-lookup-vue9a64A.mjs.map +1 -0
  813. package/dist/object-cache/memory.d.mts +1 -1
  814. package/dist/object-cache-CqWNY5uP.mjs +582 -0
  815. package/dist/object-cache-CqWNY5uP.mjs.map +1 -0
  816. package/dist/options-DhrI7eMv.mjs +208 -0
  817. package/dist/options-DhrI7eMv.mjs.map +1 -0
  818. package/dist/options-SQCHQCPH.d.mts +81 -0
  819. package/dist/options-SQCHQCPH.d.mts.map +1 -0
  820. package/dist/page/index.d.mts +2 -2
  821. package/dist/page/index.mjs +9 -9
  822. package/dist/parse-CVgO-Qai.d.mts +168 -0
  823. package/dist/parse-CVgO-Qai.d.mts.map +1 -0
  824. package/dist/parse-DY6OD1j_.mjs +81 -0
  825. package/dist/parse-DY6OD1j_.mjs.map +1 -0
  826. package/dist/passkey-config-X_H8128a.mjs +46 -0
  827. package/dist/passkey-config-X_H8128a.mjs.map +1 -0
  828. package/dist/paths-JxokKIbr.mjs +77 -0
  829. package/dist/paths-JxokKIbr.mjs.map +1 -0
  830. package/dist/patterns-BhAvqO0S.mjs +145 -0
  831. package/dist/patterns-BhAvqO0S.mjs.map +1 -0
  832. package/dist/placeholder-MSEd8gty.d.mts +306 -0
  833. package/dist/placeholder-MSEd8gty.d.mts.map +1 -0
  834. package/dist/plan-xjcWrAah.mjs +135 -0
  835. package/dist/plan-xjcWrAah.mjs.map +1 -0
  836. package/dist/plugin-test-runtime.d.mts +38 -15
  837. package/dist/plugin-test-runtime.d.mts.map +1 -1
  838. package/dist/plugin-test-runtime.mjs +112 -100
  839. package/dist/plugin-types.d.mts +2 -2
  840. package/dist/plugin-utils.d.mts +12 -12
  841. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
  842. package/dist/plugins/adapt-sandbox-entry.mjs +3 -3
  843. package/dist/plugins/host.d.mts +5 -5
  844. package/dist/plugins/host.mjs +45 -37
  845. package/dist/plugins-DUXUt8B9.mjs +277 -0
  846. package/dist/plugins-DUXUt8B9.mjs.map +1 -0
  847. package/dist/policy-CUvwAARc.mjs +45 -0
  848. package/dist/policy-CUvwAARc.mjs.map +1 -0
  849. package/dist/portable-text-5O_ZGUjB.mjs +307 -0
  850. package/dist/portable-text-5O_ZGUjB.mjs.map +1 -0
  851. package/dist/preview-CIUcPYr6.mjs +107 -0
  852. package/dist/preview-CIUcPYr6.mjs.map +1 -0
  853. package/dist/protocol-B97DZaFr.d.mts +61 -0
  854. package/dist/protocol-B97DZaFr.d.mts.map +1 -0
  855. package/dist/public-submission-BFBUrqst.mjs +250 -0
  856. package/dist/public-submission-BFBUrqst.mjs.map +1 -0
  857. package/dist/public-url-Bn7U0D7-.mjs +101 -0
  858. package/dist/public-url-Bn7U0D7-.mjs.map +1 -0
  859. package/dist/query-B48peoRT.mjs +890 -0
  860. package/dist/query-B48peoRT.mjs.map +1 -0
  861. package/dist/query-C4IH0uhR.mjs +41 -0
  862. package/dist/query-C4IH0uhR.mjs.map +1 -0
  863. package/dist/rate-limit-BZ6nybgc.mjs +120 -0
  864. package/dist/rate-limit-BZ6nybgc.mjs.map +1 -0
  865. package/dist/receipt-B4wJj5Jq.mjs +43 -0
  866. package/dist/receipt-B4wJj5Jq.mjs.map +1 -0
  867. package/dist/redirect-B29UjdUn.mjs +411 -0
  868. package/dist/redirect-B29UjdUn.mjs.map +1 -0
  869. package/dist/redirect-Cd1E7VUt.mjs +17 -0
  870. package/dist/redirect-Cd1E7VUt.mjs.map +1 -0
  871. package/dist/redirects-Ca2MPfEG.mjs +446 -0
  872. package/dist/redirects-Ca2MPfEG.mjs.map +1 -0
  873. package/dist/redirects-Cv9apQKj.mjs +148 -0
  874. package/dist/redirects-Cv9apQKj.mjs.map +1 -0
  875. package/dist/registry/testing.mjs +3 -3
  876. package/dist/relation-M4NUCb0b.mjs +334 -0
  877. package/dist/relation-M4NUCb0b.mjs.map +1 -0
  878. package/dist/relations-CCif47Oq.mjs +403 -0
  879. package/dist/relations-CCif47Oq.mjs.map +1 -0
  880. package/dist/relations-CK9CYUyr.mjs +310 -0
  881. package/dist/relations-CK9CYUyr.mjs.map +1 -0
  882. package/dist/request-cache-DzLYKm_x.mjs +104 -0
  883. package/dist/request-cache-DzLYKm_x.mjs.map +1 -0
  884. package/dist/request-context.d.mts +1 -1
  885. package/dist/request-meta-sZXt3sRo.mjs +141 -0
  886. package/dist/request-meta-sZXt3sRo.mjs.map +1 -0
  887. package/dist/resolve-2WbQsCvT.mjs +199 -0
  888. package/dist/resolve-2WbQsCvT.mjs.map +1 -0
  889. package/dist/route-wire--1hLuACz.mjs +197 -0
  890. package/dist/route-wire--1hLuACz.mjs.map +1 -0
  891. package/dist/routes-vrR95WR6.mjs +272 -0
  892. package/dist/routes-vrR95WR6.mjs.map +1 -0
  893. package/dist/runner-1y4J9fJB.mjs +5742 -0
  894. package/dist/runner-1y4J9fJB.mjs.map +1 -0
  895. package/dist/runner-D5_LzKXI.d.mts +68 -0
  896. package/dist/runner-D5_LzKXI.d.mts.map +1 -0
  897. package/dist/runtime.d.mts +13 -13
  898. package/dist/runtime.mjs +4 -4
  899. package/dist/schema-BABiRdsH.mjs +13 -0
  900. package/dist/schema-BABiRdsH.mjs.map +1 -0
  901. package/dist/schema-Du3MzCG0.mjs +446 -0
  902. package/dist/schema-Du3MzCG0.mjs.map +1 -0
  903. package/dist/scopes-Dbk-ElhT.mjs +34 -0
  904. package/dist/scopes-Dbk-ElhT.mjs.map +1 -0
  905. package/dist/search-Bt1PL1jf.mjs +448 -0
  906. package/dist/search-Bt1PL1jf.mjs.map +1 -0
  907. package/dist/secrets-CIi0nFiR.mjs +341 -0
  908. package/dist/secrets-CIi0nFiR.mjs.map +1 -0
  909. package/dist/sections-Ddptx_o9.mjs +346 -0
  910. package/dist/sections-Ddptx_o9.mjs.map +1 -0
  911. package/dist/seed/index.d.mts +2 -2
  912. package/dist/seed/index.mjs +35 -30
  913. package/dist/seo/index.d.mts +3 -3
  914. package/dist/seo/index.mjs +25 -21
  915. package/dist/seo/index.mjs.map +1 -1
  916. package/dist/seo-CZT2oLtT.mjs +114 -0
  917. package/dist/seo-CZT2oLtT.mjs.map +1 -0
  918. package/dist/seo-D5w3-Azy.mjs +133 -0
  919. package/dist/seo-D5w3-Azy.mjs.map +1 -0
  920. package/dist/service-DuykXPyW.mjs +150 -0
  921. package/dist/service-DuykXPyW.mjs.map +1 -0
  922. package/dist/session-user-BhaVp8w0.mjs +51 -0
  923. package/dist/session-user-BhaVp8w0.mjs.map +1 -0
  924. package/dist/settings-B4vDl1fK.mjs +439 -0
  925. package/dist/settings-B4vDl1fK.mjs.map +1 -0
  926. package/dist/settings-DYidIB26.mjs +61 -0
  927. package/dist/settings-DYidIB26.mjs.map +1 -0
  928. package/dist/settings-Dyj6v8C4.mjs +51 -0
  929. package/dist/settings-Dyj6v8C4.mjs.map +1 -0
  930. package/dist/setup-complete-bOogcHWG.mjs +26 -0
  931. package/dist/setup-complete-bOogcHWG.mjs.map +1 -0
  932. package/dist/setup-nonce-0EGuKM4s.mjs +25 -0
  933. package/dist/setup-nonce-0EGuKM4s.mjs.map +1 -0
  934. package/dist/site-settings-DOgRUoFX.mjs +50 -0
  935. package/dist/site-settings-DOgRUoFX.mjs.map +1 -0
  936. package/dist/site-url-BU_bbxwj.mjs +16 -0
  937. package/dist/site-url-BU_bbxwj.mjs.map +1 -0
  938. package/dist/snapshot-PawoX-WG.mjs +414 -0
  939. package/dist/snapshot-PawoX-WG.mjs.map +1 -0
  940. package/dist/ssrf-CJUnJymJ.mjs +406 -0
  941. package/dist/ssrf-CJUnJymJ.mjs.map +1 -0
  942. package/dist/stage-DgrBz_du.mjs +662 -0
  943. package/dist/stage-DgrBz_du.mjs.map +1 -0
  944. package/dist/state-DDiPySSG.mjs +153 -0
  945. package/dist/state-DDiPySSG.mjs.map +1 -0
  946. package/dist/status-DZKIG4a9.mjs +30 -0
  947. package/dist/status-DZKIG4a9.mjs.map +1 -0
  948. package/dist/storage/local.d.mts +1 -1
  949. package/dist/storage/local.mjs +1 -1
  950. package/dist/storage/s3.d.mts +1 -1
  951. package/dist/storage/s3.mjs +1 -1
  952. package/dist/storage-query-FXJH5pI8.d.mts +1581 -0
  953. package/dist/storage-query-FXJH5pI8.d.mts.map +1 -0
  954. package/dist/tar-_1AgTYFu.mjs +449 -0
  955. package/dist/tar-_1AgTYFu.mjs.map +1 -0
  956. package/dist/target-_7pn2Gbg.mjs +27 -0
  957. package/dist/target-_7pn2Gbg.mjs.map +1 -0
  958. package/dist/taxonomies-C1IwNe8Q.mjs +697 -0
  959. package/dist/taxonomies-C1IwNe8Q.mjs.map +1 -0
  960. package/dist/taxonomies-C_XMoRcX.mjs +939 -0
  961. package/dist/taxonomies-C_XMoRcX.mjs.map +1 -0
  962. package/dist/taxonomy-C3Fu1YeH.mjs +525 -0
  963. package/dist/taxonomy-C3Fu1YeH.mjs.map +1 -0
  964. package/dist/tokens-u78jETkX.mjs +171 -0
  965. package/dist/tokens-u78jETkX.mjs.map +1 -0
  966. package/dist/transfer-DIGvR9Af.mjs +166 -0
  967. package/dist/transfer-DIGvR9Af.mjs.map +1 -0
  968. package/dist/transfer-DgeCvHnj.mjs +8675 -0
  969. package/dist/transfer-DgeCvHnj.mjs.map +1 -0
  970. package/dist/transfer-download-Pml7RMio.mjs +33 -0
  971. package/dist/transfer-download-Pml7RMio.mjs.map +1 -0
  972. package/dist/transformations-9gfpwY65.mjs +196 -0
  973. package/dist/transformations-9gfpwY65.mjs.map +1 -0
  974. package/dist/transport-BIfH7_hx.d.mts +42 -0
  975. package/dist/transport-BIfH7_hx.d.mts.map +1 -0
  976. package/dist/transport-DKWIq53q.mjs +136 -0
  977. package/dist/transport-DKWIq53q.mjs.map +1 -0
  978. package/dist/trusted-proxy-tKiVtyTD.mjs +51 -0
  979. package/dist/trusted-proxy-tKiVtyTD.mjs.map +1 -0
  980. package/dist/turnstile-DpsoyOfg.mjs +53 -0
  981. package/dist/turnstile-DpsoyOfg.mjs.map +1 -0
  982. package/dist/types-B4sUC2p1.d.mts +198 -0
  983. package/dist/types-B4sUC2p1.d.mts.map +1 -0
  984. package/dist/types-B7Lmsh1E.d.mts +887 -0
  985. package/dist/types-B7Lmsh1E.d.mts.map +1 -0
  986. package/dist/types-BZakh7Ym.mjs +22 -0
  987. package/dist/types-BZakh7Ym.mjs.map +1 -0
  988. package/dist/types-B_CppEmv.d.mts +264 -0
  989. package/dist/types-B_CppEmv.d.mts.map +1 -0
  990. package/dist/types-BcrBrE6-.mjs +159 -0
  991. package/dist/types-BcrBrE6-.mjs.map +1 -0
  992. package/dist/types-CAZgq9fO.d.mts +124 -0
  993. package/dist/types-CAZgq9fO.d.mts.map +1 -0
  994. package/dist/types-Cd-O03VG.d.mts +363 -0
  995. package/dist/types-Cd-O03VG.d.mts.map +1 -0
  996. package/dist/types-Cr-Kg-3D.d.mts +1641 -0
  997. package/dist/types-Cr-Kg-3D.d.mts.map +1 -0
  998. package/dist/types-D2fvWd1i.d.mts +359 -0
  999. package/dist/types-D2fvWd1i.d.mts.map +1 -0
  1000. package/dist/types-D7HUsguf.mjs +77 -0
  1001. package/dist/types-D7HUsguf.mjs.map +1 -0
  1002. package/dist/types-DA1Te3Oy.d.mts +198 -0
  1003. package/dist/types-DA1Te3Oy.d.mts.map +1 -0
  1004. package/dist/types-DhV6Q5bP.mjs +18 -0
  1005. package/dist/types-DhV6Q5bP.mjs.map +1 -0
  1006. package/dist/types-DnnVSl6Y.d.mts +85 -0
  1007. package/dist/types-DnnVSl6Y.d.mts.map +1 -0
  1008. package/dist/types-VT4-BugW.mjs +16 -0
  1009. package/dist/types-VT4-BugW.mjs.map +1 -0
  1010. package/dist/upload-attempts-B68ZGNu9.mjs +32 -0
  1011. package/dist/upload-attempts-B68ZGNu9.mjs.map +1 -0
  1012. package/dist/url-pattern-CCeZMGOh.mjs +33 -0
  1013. package/dist/url-pattern-CCeZMGOh.mjs.map +1 -0
  1014. package/dist/user-DDSL-sGw.mjs +171 -0
  1015. package/dist/user-DDSL-sGw.mjs.map +1 -0
  1016. package/dist/utils-DdhmO9w9.mjs +439 -0
  1017. package/dist/utils-DdhmO9w9.mjs.map +1 -0
  1018. package/dist/validate-CHosPEhs.mjs +453 -0
  1019. package/dist/validate-CHosPEhs.mjs.map +1 -0
  1020. package/dist/validate-CM79QXYE.d.mts +432 -0
  1021. package/dist/validate-CM79QXYE.d.mts.map +1 -0
  1022. package/dist/validation-BFecQczG.mjs +218 -0
  1023. package/dist/validation-BFecQczG.mjs.map +1 -0
  1024. package/dist/version-BRZXVifl.mjs +9 -0
  1025. package/dist/version-BRZXVifl.mjs.map +1 -0
  1026. package/dist/version-DXsxRrob.mjs +7 -0
  1027. package/dist/version-DXsxRrob.mjs.map +1 -0
  1028. package/dist/widgets-WdV72brA.mjs +126 -0
  1029. package/dist/widgets-WdV72brA.mjs.map +1 -0
  1030. package/dist/wxr-taxonomies-BHTdqkmZ.d.mts +34 -0
  1031. package/dist/wxr-taxonomies-BHTdqkmZ.d.mts.map +1 -0
  1032. package/dist/wxr-taxonomies-DP6ESgMN.mjs +372 -0
  1033. package/dist/wxr-taxonomies-DP6ESgMN.mjs.map +1 -0
  1034. package/dist/zod-generator-D6uE4WiS.mjs +389 -0
  1035. package/dist/zod-generator-D6uE4WiS.mjs.map +1 -0
  1036. package/package.json +6 -5
  1037. package/src/api/authorize.ts +17 -0
  1038. package/src/api/email-locale.ts +24 -0
  1039. package/src/api/errors.ts +16 -0
  1040. package/src/api/handlers/api-tokens.ts +18 -3
  1041. package/src/api/handlers/block-types.ts +129 -0
  1042. package/src/api/handlers/bulk-tag.ts +309 -0
  1043. package/src/api/handlers/comments.ts +0 -28
  1044. package/src/api/handlers/index.ts +11 -0
  1045. package/src/api/handlers/manifest.ts +8 -1
  1046. package/src/api/handlers/marketplace.ts +22 -16
  1047. package/src/api/handlers/media-upload.ts +17 -71
  1048. package/src/api/handlers/media-usage.ts +31 -12
  1049. package/src/api/handlers/media.ts +112 -13
  1050. package/src/api/handlers/schema.ts +33 -8
  1051. package/src/api/handlers/settings.ts +2 -2
  1052. package/src/api/handlers/snapshot.ts +261 -3
  1053. package/src/api/handlers/taxonomies.ts +132 -83
  1054. package/src/api/handlers/transfer.ts +1347 -0
  1055. package/src/api/handlers/validate-media-fields.ts +124 -12
  1056. package/src/api/media-usage-write-fence.ts +5 -26
  1057. package/src/api/openapi/document.ts +614 -5
  1058. package/src/api/schemas/auth.ts +7 -1
  1059. package/src/api/schemas/common.ts +5 -0
  1060. package/src/api/schemas/content.ts +20 -1
  1061. package/src/api/schemas/media-usage.ts +11 -0
  1062. package/src/api/schemas/menus.ts +1 -1
  1063. package/src/api/schemas/schema.ts +117 -0
  1064. package/src/api/schemas/settings.ts +3 -3
  1065. package/src/api/schemas/taxonomies.ts +18 -0
  1066. package/src/api/schemas/transfer.ts +249 -0
  1067. package/src/api/transfer-download.ts +36 -0
  1068. package/src/api/types.ts +3 -0
  1069. package/src/astro/integration/routes.ts +31 -0
  1070. package/src/astro/integration/vite-config.ts +36 -4
  1071. package/src/astro/middleware/auth.ts +30 -7
  1072. package/src/astro/middleware/media-usage-write-fence.ts +106 -11
  1073. package/src/astro/middleware/request-context.ts +16 -2
  1074. package/src/astro/middleware.ts +39 -18
  1075. package/src/astro/routes/admin.astro +3 -1
  1076. package/src/astro/routes/api/admin/hooks/exclusive/index.ts +1 -5
  1077. package/src/astro/routes/api/admin/plugins/[id]/disable.ts +4 -3
  1078. package/src/astro/routes/api/admin/plugins/[id]/enable.ts +4 -3
  1079. package/src/astro/routes/api/admin/plugins/[id]/uninstall.ts +4 -3
  1080. package/src/astro/routes/api/admin/plugins/[id]/update.ts +4 -3
  1081. package/src/astro/routes/api/admin/plugins/marketplace/[id]/install.ts +4 -3
  1082. package/src/astro/routes/api/admin/plugins/registry/[id]/uninstall.ts +4 -3
  1083. package/src/astro/routes/api/admin/plugins/registry/[id]/update.ts +3 -3
  1084. package/src/astro/routes/api/admin/plugins/registry/install.ts +3 -3
  1085. package/src/astro/routes/api/admin/plugins/registry/publisher-handle.ts +59 -0
  1086. package/src/astro/routes/api/admin/transfer/[...path].ts +143 -0
  1087. package/src/astro/routes/api/admin/transfer/approvals/[id]/approve.ts +35 -0
  1088. package/src/astro/routes/api/admin/transfer/approvals/[id]/deny.ts +35 -0
  1089. package/src/astro/routes/api/admin/transfer/approvals/index.ts +33 -0
  1090. package/src/astro/routes/api/admin/transfer/capabilities.ts +36 -0
  1091. package/src/astro/routes/api/admin/transfer/exports/[id]/advance.ts +34 -0
  1092. package/src/astro/routes/api/admin/transfer/exports/[id]/archive.ts +35 -0
  1093. package/src/astro/routes/api/admin/transfer/exports/[id]/files/[...path].ts +40 -0
  1094. package/src/astro/routes/api/admin/transfer/exports/[id]/index.ts +25 -0
  1095. package/src/astro/routes/api/admin/transfer/exports/[id]/manifest.ts +38 -0
  1096. package/src/astro/routes/api/admin/transfer/exports/index.ts +64 -0
  1097. package/src/astro/routes/api/admin/transfer/imports/[id]/abandon.ts +28 -0
  1098. package/src/astro/routes/api/admin/transfer/imports/[id]/advance.ts +37 -0
  1099. package/src/astro/routes/api/admin/transfer/imports/[id]/analyze.ts +51 -0
  1100. package/src/astro/routes/api/admin/transfer/imports/[id]/cancel.ts +27 -0
  1101. package/src/astro/routes/api/admin/transfer/imports/[id]/execute.ts +48 -0
  1102. package/src/astro/routes/api/admin/transfer/imports/[id]/files/[...path].ts +54 -0
  1103. package/src/astro/routes/api/admin/transfer/imports/[id]/index.ts +25 -0
  1104. package/src/astro/routes/api/admin/transfer/imports/[id]/missing.ts +34 -0
  1105. package/src/astro/routes/api/admin/transfer/imports/[id]/plan.ts +29 -0
  1106. package/src/astro/routes/api/admin/transfer/imports/[id]/receipt.ts +25 -0
  1107. package/src/astro/routes/api/admin/transfer/imports/index.ts +85 -0
  1108. package/src/astro/routes/api/admin/users/[id]/send-recovery.ts +9 -1
  1109. package/src/astro/routes/api/auth/invite/index.ts +15 -1
  1110. package/src/astro/routes/api/auth/magic-link/send.ts +9 -1
  1111. package/src/astro/routes/api/auth/magic-link/verify.ts +37 -39
  1112. package/src/astro/routes/api/auth/passkey/options.ts +2 -21
  1113. package/src/astro/routes/api/content/[collection]/[id]/preview-url.ts +64 -13
  1114. package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +16 -1
  1115. package/src/astro/routes/api/import/wordpress/rewrite-url-helpers.ts +11 -4
  1116. package/src/astro/routes/api/mcp.ts +1 -0
  1117. package/src/astro/routes/api/media/[id].ts +5 -15
  1118. package/src/astro/routes/api/media/file/[...key].ts +30 -5
  1119. package/src/astro/routes/api/oauth/authorize.ts +4 -0
  1120. package/src/astro/routes/api/schema/block-types/[slug]/index.ts +29 -0
  1121. package/src/astro/routes/api/schema/block-types/[slug]/versions/[version]/activate.ts +31 -0
  1122. package/src/astro/routes/api/schema/block-types/index.ts +29 -0
  1123. package/src/astro/routes/api/setup/index.ts +66 -23
  1124. package/src/astro/routes/api/snapshot.ts +2 -1
  1125. package/src/astro/routes/api/taxonomies/bulk-tag.ts +29 -0
  1126. package/src/astro/routes/api/typegen.ts +8 -4
  1127. package/src/astro/types.ts +9 -0
  1128. package/src/auth/api-tokens.ts +1 -0
  1129. package/src/auth/rate-limit.ts +2 -1
  1130. package/src/auth/scopes.ts +11 -0
  1131. package/src/cleanup.ts +24 -0
  1132. package/src/cli/client-factory.ts +6 -1
  1133. package/src/cli/commands/export-seed.ts +41 -15
  1134. package/src/cli/commands/seed.ts +6 -2
  1135. package/src/cli/commands/site.ts +556 -0
  1136. package/src/cli/index.ts +2 -0
  1137. package/src/cli/site/archive.ts +273 -0
  1138. package/src/cli/site/export.ts +311 -0
  1139. package/src/cli/site/import.ts +815 -0
  1140. package/src/cli/site/shared.ts +241 -0
  1141. package/src/client/index.ts +414 -11
  1142. package/src/client/portable-text.ts +41 -0
  1143. package/src/comments/public-submission.ts +19 -11
  1144. package/src/components/Blocks.astro +46 -0
  1145. package/src/components/Columns.astro +3 -1
  1146. package/src/components/Cover.astro +3 -1
  1147. package/src/components/Gallery.astro +2 -1
  1148. package/src/components/Image.astro +51 -6
  1149. package/src/components/InlinePortableTextEditor.tsx +28 -18
  1150. package/src/components/blocks.ts +44 -0
  1151. package/src/components/index.ts +14 -4
  1152. package/src/content/converters/gallery.ts +54 -16
  1153. package/src/content/converters/image-link.ts +27 -0
  1154. package/src/content/converters/index.ts +1 -0
  1155. package/src/content/converters/portable-text-to-prosemirror.ts +10 -7
  1156. package/src/content/converters/prosemirror-to-portable-text.ts +14 -0
  1157. package/src/content/converters/types.ts +17 -0
  1158. package/src/database/content-datetime.ts +19 -2
  1159. package/src/database/migrations/035_bounded_404_log.ts +28 -39
  1160. package/src/database/migrations/083_block_types.ts +58 -0
  1161. package/src/database/migrations/084_site_transfer.ts +264 -0
  1162. package/src/database/migrations/085_taxonomy_def_groups.ts +155 -0
  1163. package/src/database/migrations/runner.ts +6 -0
  1164. package/src/database/repositories/audit.ts +10 -1
  1165. package/src/database/repositories/byline.ts +4 -1
  1166. package/src/database/repositories/content.ts +83 -11
  1167. package/src/database/repositories/media-usage.ts +43 -13
  1168. package/src/database/repositories/media.ts +72 -2
  1169. package/src/database/repositories/options.ts +12 -0
  1170. package/src/database/repositories/redirect.ts +17 -34
  1171. package/src/database/repositories/revision.ts +6 -3
  1172. package/src/database/repositories/taxonomy-def.ts +126 -0
  1173. package/src/database/repositories/taxonomy.ts +65 -26
  1174. package/src/database/types.ts +133 -1
  1175. package/src/db/sqlite.ts +1 -1
  1176. package/src/emdash-runtime.ts +315 -51
  1177. package/src/import/utils.ts +8 -1
  1178. package/src/import/wxr-taxonomies.ts +11 -67
  1179. package/src/index.ts +27 -1
  1180. package/src/loader.ts +9 -5
  1181. package/src/mcp/server.ts +533 -76
  1182. package/src/mcp/transfer.ts +569 -0
  1183. package/src/media/local-runtime.ts +5 -18
  1184. package/src/media/upload-attempts.ts +5 -0
  1185. package/src/media/url.ts +15 -0
  1186. package/src/media/usage/content-fields.ts +69 -5
  1187. package/src/media/usage/content-refresh.ts +13 -66
  1188. package/src/media/usage/content-repair.ts +10 -2
  1189. package/src/media/usage/extractor.ts +74 -3
  1190. package/src/media/usage/projection-fingerprint.ts +14 -0
  1191. package/src/media/usage/schema-invalidation.ts +72 -0
  1192. package/src/media/usage/site-settings.ts +52 -0
  1193. package/src/media/usage/types.ts +2 -0
  1194. package/src/object-cache/index.ts +69 -4
  1195. package/src/plugin-test-runtime.ts +1 -0
  1196. package/src/plugins/context.ts +104 -56
  1197. package/src/plugins/cron.ts +6 -4
  1198. package/src/plugins/define-plugin.ts +11 -1
  1199. package/src/plugins/email-console.ts +2 -0
  1200. package/src/plugins/email.ts +16 -0
  1201. package/src/plugins/hooks.ts +33 -9
  1202. package/src/plugins/manifest-schema.ts +1 -0
  1203. package/src/plugins/route-error.ts +57 -0
  1204. package/src/plugins/routes.ts +5 -60
  1205. package/src/plugins/sandbox/types.ts +22 -2
  1206. package/src/plugins/types.ts +4 -0
  1207. package/src/registry/artifact-fetch.ts +17 -4
  1208. package/src/registry/publisher-handle.ts +273 -0
  1209. package/src/schema/block-type-contract.ts +478 -0
  1210. package/src/schema/block-type-registry.ts +689 -0
  1211. package/src/schema/block-types.ts +110 -0
  1212. package/src/schema/block-values.ts +293 -0
  1213. package/src/schema/byline-registry.ts +1 -1
  1214. package/src/schema/index.ts +28 -0
  1215. package/src/schema/registry.ts +462 -12
  1216. package/src/schema/types.ts +12 -1
  1217. package/src/schema/zod-generator.ts +92 -9
  1218. package/src/search/fts-manager.ts +40 -0
  1219. package/src/seed/apply.ts +493 -88
  1220. package/src/seed/types.ts +23 -3
  1221. package/src/seed/validate.ts +131 -7
  1222. package/src/settings/index.ts +32 -9
  1223. package/src/settings/types.ts +15 -0
  1224. package/src/taxonomies/index.ts +72 -83
  1225. package/src/transfer/analyze/index.ts +45 -0
  1226. package/src/transfer/analyze/issues.ts +55 -0
  1227. package/src/transfer/analyze/plan.ts +327 -0
  1228. package/src/transfer/analyze/read.ts +134 -0
  1229. package/src/transfer/analyze/step.ts +551 -0
  1230. package/src/transfer/analyze/target.ts +269 -0
  1231. package/src/transfer/analyze/unique-keys.ts +228 -0
  1232. package/src/transfer/analyze/validate.ts +1412 -0
  1233. package/src/transfer/analyze/values.ts +227 -0
  1234. package/src/transfer/analyze/write-rules.ts +196 -0
  1235. package/src/transfer/audit.ts +38 -0
  1236. package/src/transfer/auth.ts +25 -0
  1237. package/src/transfer/container/tar.ts +242 -0
  1238. package/src/transfer/domain.ts +248 -0
  1239. package/src/transfer/errors.ts +134 -0
  1240. package/src/transfer/export/exporter.ts +1067 -0
  1241. package/src/transfer/export/fence.ts +84 -0
  1242. package/src/transfer/export/media.ts +165 -0
  1243. package/src/transfer/export/readers.ts +1164 -0
  1244. package/src/transfer/export/verify.ts +677 -0
  1245. package/src/transfer/fence.ts +193 -0
  1246. package/src/transfer/format/canonical.ts +151 -0
  1247. package/src/transfer/format/column-codec.ts +275 -0
  1248. package/src/transfer/format/columns.ts +707 -0
  1249. package/src/transfer/format/digest.ts +287 -0
  1250. package/src/transfer/format/features.ts +91 -0
  1251. package/src/transfer/format/issues.ts +39 -0
  1252. package/src/transfer/format/kinds.ts +936 -0
  1253. package/src/transfer/format/limits.ts +87 -0
  1254. package/src/transfer/format/manifest.ts +297 -0
  1255. package/src/transfer/format/media-refs.ts +716 -0
  1256. package/src/transfer/format/paths.ts +73 -0
  1257. package/src/transfer/format/plan.ts +162 -0
  1258. package/src/transfer/format/receipt.ts +43 -0
  1259. package/src/transfer/format/records.ts +127 -0
  1260. package/src/transfer/format/settings.ts +94 -0
  1261. package/src/transfer/format/transformations.ts +260 -0
  1262. package/src/transfer/format/version.ts +9 -0
  1263. package/src/transfer/gc.ts +103 -0
  1264. package/src/transfer/import/advance.ts +522 -0
  1265. package/src/transfer/import/context.ts +281 -0
  1266. package/src/transfer/import/entries.ts +186 -0
  1267. package/src/transfer/import/ids.ts +40 -0
  1268. package/src/transfer/import/index.ts +15 -0
  1269. package/src/transfer/import/media.ts +141 -0
  1270. package/src/transfer/import/rebuild.ts +300 -0
  1271. package/src/transfer/import/rows.ts +114 -0
  1272. package/src/transfer/import/scaffold.ts +221 -0
  1273. package/src/transfer/import/sql.ts +134 -0
  1274. package/src/transfer/import/stages.ts +329 -0
  1275. package/src/transfer/import/writers.ts +370 -0
  1276. package/src/transfer/index.ts +472 -0
  1277. package/src/transfer/ops/approvals.ts +359 -0
  1278. package/src/transfer/ops/budget.ts +82 -0
  1279. package/src/transfer/ops/collation.ts +21 -0
  1280. package/src/transfer/ops/identity-map.ts +142 -0
  1281. package/src/transfer/ops/media-blobs.ts +135 -0
  1282. package/src/transfer/ops/operations.ts +842 -0
  1283. package/src/transfer/ops/package-index.ts +159 -0
  1284. package/src/transfer/ops/staged-files.ts +231 -0
  1285. package/src/transfer/ops/states.ts +265 -0
  1286. package/src/transfer/ops/time.ts +54 -0
  1287. package/src/transfer/schema-importer.ts +34 -0
  1288. package/src/transfer/site-id.ts +30 -0
  1289. package/src/transfer/staging/assembler.ts +217 -0
  1290. package/src/transfer/staging/keys.ts +94 -0
  1291. package/src/transfer/staging/package.ts +229 -0
  1292. package/src/transfer/staging/stage.ts +231 -0
  1293. package/src/ui.ts +19 -0
  1294. package/src/visual-editing/toolbar.ts +125 -37
  1295. package/dist/action-token-On1sot_c.mjs +0 -26
  1296. package/dist/action-token-On1sot_c.mjs.map +0 -1
  1297. package/dist/activation-CaMfdBt1.mjs +0 -382
  1298. package/dist/activation-CaMfdBt1.mjs.map +0 -1
  1299. package/dist/adapters-Cq10K4_c.d.mts +0 -171
  1300. package/dist/adapters-Cq10K4_c.d.mts.map +0 -1
  1301. package/dist/allowed-origins-1Sa-2wZK.mjs +0 -116
  1302. package/dist/allowed-origins-1Sa-2wZK.mjs.map +0 -1
  1303. package/dist/api-BB5BoQbN.mjs +0 -4831
  1304. package/dist/api-BB5BoQbN.mjs.map +0 -1
  1305. package/dist/api-tokens-BIXItFKV.mjs +0 -163
  1306. package/dist/api-tokens-BIXItFKV.mjs.map +0 -1
  1307. package/dist/api-tokens-DS1VzN7_.mjs +0 -3
  1308. package/dist/apply-CsKm_5S5.mjs +0 -1005
  1309. package/dist/apply-CsKm_5S5.mjs.map +0 -1
  1310. package/dist/artifact-fetch-COiMhVgk.mjs +0 -813
  1311. package/dist/artifact-fetch-COiMhVgk.mjs.map +0 -1
  1312. package/dist/authoritative-records-DbqshfKD.mjs +0 -5172
  1313. package/dist/authoritative-records-DbqshfKD.mjs.map +0 -1
  1314. package/dist/authorize-BXpfMpp0.mjs +0 -40
  1315. package/dist/authorize-BXpfMpp0.mjs.map +0 -1
  1316. package/dist/backup-B4tByjBb.mjs +0 -246
  1317. package/dist/backup-B4tByjBb.mjs.map +0 -1
  1318. package/dist/byline-C8ndlnP0.mjs +0 -906
  1319. package/dist/byline-C8ndlnP0.mjs.map +0 -1
  1320. package/dist/byline-fields-CsrdvaLV.mjs +0 -123
  1321. package/dist/byline-fields-CsrdvaLV.mjs.map +0 -1
  1322. package/dist/byline-registry-D6lWzXk6.mjs +0 -406
  1323. package/dist/byline-registry-D6lWzXk6.mjs.map +0 -1
  1324. package/dist/bylines-CHP44GkL.mjs +0 -232
  1325. package/dist/bylines-CHP44GkL.mjs.map +0 -1
  1326. package/dist/bylines-DxjM4Usz.mjs +0 -214
  1327. package/dist/bylines-DxjM4Usz.mjs.map +0 -1
  1328. package/dist/cache-BByLKGPu.mjs +0 -108
  1329. package/dist/cache-BByLKGPu.mjs.map +0 -1
  1330. package/dist/capture-triggers-gxQxnxrJ.mjs +0 -362
  1331. package/dist/capture-triggers-gxQxnxrJ.mjs.map +0 -1
  1332. package/dist/challenge-store-CkRdSdd8.mjs +0 -51
  1333. package/dist/challenge-store-CkRdSdd8.mjs.map +0 -1
  1334. package/dist/checksum-Bsi2D9M1.mjs +0 -162
  1335. package/dist/checksum-Bsi2D9M1.mjs.map +0 -1
  1336. package/dist/chrome-tags-D7LGB91U.mjs +0 -24
  1337. package/dist/chrome-tags-D7LGB91U.mjs.map +0 -1
  1338. package/dist/chunks-DUK-cWXi.mjs +0 -25
  1339. package/dist/chunks-DUK-cWXi.mjs.map +0 -1
  1340. package/dist/collection-deletion-C-yQB9fq.mjs +0 -436
  1341. package/dist/collection-deletion-C-yQB9fq.mjs.map +0 -1
  1342. package/dist/collection-slugs-cache-D9auiKmI.mjs +0 -85
  1343. package/dist/collection-slugs-cache-D9auiKmI.mjs.map +0 -1
  1344. package/dist/comment-DcT8qdPK.mjs +0 -313
  1345. package/dist/comment-DcT8qdPK.mjs.map +0 -1
  1346. package/dist/comment-reaction-B6KHCLYK.mjs +0 -85
  1347. package/dist/comment-reaction-B6KHCLYK.mjs.map +0 -1
  1348. package/dist/comments-B67VRNGw.mjs +0 -204
  1349. package/dist/comments-B67VRNGw.mjs.map +0 -1
  1350. package/dist/comments-BVzzt6x5.mjs +0 -99
  1351. package/dist/comments-BVzzt6x5.mjs.map +0 -1
  1352. package/dist/components-DIl9Qzh6.mjs +0 -108
  1353. package/dist/components-DIl9Qzh6.mjs.map +0 -1
  1354. package/dist/config-B2acLeC5.mjs +0 -242
  1355. package/dist/config-B2acLeC5.mjs.map +0 -1
  1356. package/dist/config-CGVeT8Hc.mjs +0 -73
  1357. package/dist/config-CGVeT8Hc.mjs.map +0 -1
  1358. package/dist/config-Cw1Xz_Br.d.mts +0 -6387
  1359. package/dist/config-Cw1Xz_Br.d.mts.map +0 -1
  1360. package/dist/config-D3HhLON3.d.mts +0 -39
  1361. package/dist/config-D3HhLON3.d.mts.map +0 -1
  1362. package/dist/content-C0Hl3ktM.mjs +0 -2216
  1363. package/dist/content-C0Hl3ktM.mjs.map +0 -1
  1364. package/dist/content-list-query-CbPdzsna.d.mts +0 -26
  1365. package/dist/content-list-query-CbPdzsna.d.mts.map +0 -1
  1366. package/dist/content-policy-CM4skrNi.mjs +0 -46
  1367. package/dist/content-policy-CM4skrNi.mjs.map +0 -1
  1368. package/dist/content-refresh-iRBhQHr5.mjs +0 -3599
  1369. package/dist/content-refresh-iRBhQHr5.mjs.map +0 -1
  1370. package/dist/content-repair-8uHRIJkd.mjs +0 -440
  1371. package/dist/content-repair-8uHRIJkd.mjs.map +0 -1
  1372. package/dist/context-DJP3aNeR.mjs +0 -1835
  1373. package/dist/context-DJP3aNeR.mjs.map +0 -1
  1374. package/dist/cron-BcR3RN4K.mjs +0 -282
  1375. package/dist/cron-BcR3RN4K.mjs.map +0 -1
  1376. package/dist/dashboard-B0s6QKgi.mjs +0 -151
  1377. package/dist/dashboard-B0s6QKgi.mjs.map +0 -1
  1378. package/dist/default-BtlxWgh9.mjs +0 -81
  1379. package/dist/default-BtlxWgh9.mjs.map +0 -1
  1380. package/dist/deferred-tasks-Ba9fphlE.d.mts +0 -9
  1381. package/dist/deferred-tasks-Ba9fphlE.d.mts.map +0 -1
  1382. package/dist/device-flow-3E5l0fpH.mjs +0 -466
  1383. package/dist/device-flow-3E5l0fpH.mjs.map +0 -1
  1384. package/dist/dialect-helpers-CtYdsX4W.mjs +0 -307
  1385. package/dist/dialect-helpers-CtYdsX4W.mjs.map +0 -1
  1386. package/dist/direct-executor-CDr1quOq.mjs +0 -104
  1387. package/dist/direct-executor-CDr1quOq.mjs.map +0 -1
  1388. package/dist/dist-2hDLsLeq.mjs +0 -810
  1389. package/dist/dist-2hDLsLeq.mjs.map +0 -1
  1390. package/dist/email-console-gc-E3Eqj.mjs +0 -50
  1391. package/dist/email-console-gc-E3Eqj.mjs.map +0 -1
  1392. package/dist/emdash-runtime-CxxL05Z0.mjs +0 -4041
  1393. package/dist/emdash-runtime-CxxL05Z0.mjs.map +0 -1
  1394. package/dist/enrich-C2Mk0lwE.mjs +0 -194
  1395. package/dist/enrich-C2Mk0lwE.mjs.map +0 -1
  1396. package/dist/entry-lock-CwWdnFyR.mjs +0 -1520
  1397. package/dist/entry-lock-CwWdnFyR.mjs.map +0 -1
  1398. package/dist/entry-lock-D9rnj2Lu.mjs +0 -163
  1399. package/dist/entry-lock-D9rnj2Lu.mjs.map +0 -1
  1400. package/dist/entry-lock-DqkvBC6L.d.mts +0 -3503
  1401. package/dist/entry-lock-DqkvBC6L.d.mts.map +0 -1
  1402. package/dist/entry-locks-CO_KaoU5.mjs +0 -167
  1403. package/dist/entry-locks-CO_KaoU5.mjs.map +0 -1
  1404. package/dist/error-CCTCskie.mjs +0 -90
  1405. package/dist/error-CCTCskie.mjs.map +0 -1
  1406. package/dist/errors-W3PA8HqB.mjs +0 -447
  1407. package/dist/errors-W3PA8HqB.mjs.map +0 -1
  1408. package/dist/escape-DN4Qmjsl.mjs +0 -9
  1409. package/dist/escape-DN4Qmjsl.mjs.map +0 -1
  1410. package/dist/field-defs-cache-Db0pJgqn.mjs +0 -77
  1411. package/dist/field-defs-cache-Db0pJgqn.mjs.map +0 -1
  1412. package/dist/fts-manager-CjX0e5BR.mjs +0 -413
  1413. package/dist/fts-manager-CjX0e5BR.mjs.map +0 -1
  1414. package/dist/hash-CLVFzWvx.mjs +0 -37
  1415. package/dist/hash-CLVFzWvx.mjs.map +0 -1
  1416. package/dist/hook-result-KY1jq21o.d.mts +0 -31
  1417. package/dist/hook-result-KY1jq21o.d.mts.map +0 -1
  1418. package/dist/hreflang-BgS2FqhH.d.mts +0 -50
  1419. package/dist/hreflang-BgS2FqhH.d.mts.map +0 -1
  1420. package/dist/hreflang-DOQeTXpg.mjs +0 -105
  1421. package/dist/hreflang-DOQeTXpg.mjs.map +0 -1
  1422. package/dist/http-route-dispatch-MCVKiQCl.mjs +0 -339
  1423. package/dist/http-route-dispatch-MCVKiQCl.mjs.map +0 -1
  1424. package/dist/identity-vFbpuwfY.mjs +0 -35
  1425. package/dist/identity-vFbpuwfY.mjs.map +0 -1
  1426. package/dist/import-got6I69S.mjs +0 -2020
  1427. package/dist/import-got6I69S.mjs.map +0 -1
  1428. package/dist/index-CDwKDkTq.d.mts +0 -623
  1429. package/dist/index-CDwKDkTq.d.mts.map +0 -1
  1430. package/dist/install-finalization-5Os-QZ-2.mjs +0 -58
  1431. package/dist/install-finalization-5Os-QZ-2.mjs.map +0 -1
  1432. package/dist/lifecycle-7e-Lt_kX.mjs +0 -25
  1433. package/dist/lifecycle-7e-Lt_kX.mjs.map +0 -1
  1434. package/dist/load-C56XiwbV.mjs +0 -28
  1435. package/dist/load-C56XiwbV.mjs.map +0 -1
  1436. package/dist/loader-xhNQiT9T.mjs +0 -1004
  1437. package/dist/loader-xhNQiT9T.mjs.map +0 -1
  1438. package/dist/manifest-builder-Bz3nxVET.mjs +0 -189
  1439. package/dist/manifest-builder-Bz3nxVET.mjs.map +0 -1
  1440. package/dist/manifest-schema-Bkh8SeHd.mjs +0 -491
  1441. package/dist/manifest-schema-Bkh8SeHd.mjs.map +0 -1
  1442. package/dist/media-TBlKCwo7.mjs +0 -334
  1443. package/dist/media-TBlKCwo7.mjs.map +0 -1
  1444. package/dist/media-allowlist-s60eAIf6.mjs +0 -44
  1445. package/dist/media-allowlist-s60eAIf6.mjs.map +0 -1
  1446. package/dist/media-folders-ClIRLUQv.mjs +0 -210
  1447. package/dist/media-folders-ClIRLUQv.mjs.map +0 -1
  1448. package/dist/media-url-DY_ijO3B.mjs +0 -43
  1449. package/dist/media-url-DY_ijO3B.mjs.map +0 -1
  1450. package/dist/media-usage-Bd9rFPKN.mjs +0 -1833
  1451. package/dist/media-usage-Bd9rFPKN.mjs.map +0 -1
  1452. package/dist/media-usage-activation-CAhmb14O.mjs +0 -78
  1453. package/dist/media-usage-activation-CAhmb14O.mjs.map +0 -1
  1454. package/dist/media-usage-work-BPlRMOJv.mjs +0 -152
  1455. package/dist/media-usage-work-BPlRMOJv.mjs.map +0 -1
  1456. package/dist/media-usage-work-Cu5DqewW.mjs +0 -586
  1457. package/dist/media-usage-work-Cu5DqewW.mjs.map +0 -1
  1458. package/dist/media-usage-write-fence-DW5oHT7q.mjs +0 -42
  1459. package/dist/media-usage-write-fence-DW5oHT7q.mjs.map +0 -1
  1460. package/dist/menus-BUQdvXep.mjs +0 -3732
  1461. package/dist/menus-BUQdvXep.mjs.map +0 -1
  1462. package/dist/menus-DgSUodmF.mjs +0 -753
  1463. package/dist/menus-DgSUodmF.mjs.map +0 -1
  1464. package/dist/mime-CCYRC4r1.mjs +0 -36
  1465. package/dist/mime-CCYRC4r1.mjs.map +0 -1
  1466. package/dist/mode-CkmOhFqj.mjs +0 -23
  1467. package/dist/mode-CkmOhFqj.mjs.map +0 -1
  1468. package/dist/node-sqlite-compat-vpVaILnb.mjs +0 -46
  1469. package/dist/node-sqlite-compat-vpVaILnb.mjs.map +0 -1
  1470. package/dist/normalize-dChXQjwS.mjs +0 -191
  1471. package/dist/normalize-dChXQjwS.mjs.map +0 -1
  1472. package/dist/oauth-authorization-DZ-R-hmx.mjs +0 -274
  1473. package/dist/oauth-authorization-DZ-R-hmx.mjs.map +0 -1
  1474. package/dist/oauth-clients-BMPA8vjl.mjs +0 -266
  1475. package/dist/oauth-clients-BMPA8vjl.mjs.map +0 -1
  1476. package/dist/oauth-state-store-0gIdb48-.mjs +0 -50
  1477. package/dist/oauth-state-store-0gIdb48-.mjs.map +0 -1
  1478. package/dist/oauth-user-lookup-ChVW4UWu.mjs +0 -26
  1479. package/dist/oauth-user-lookup-ChVW4UWu.mjs.map +0 -1
  1480. package/dist/object-cache-DlSVbn5Y.mjs +0 -534
  1481. package/dist/object-cache-DlSVbn5Y.mjs.map +0 -1
  1482. package/dist/options-D5WcorD5.mjs +0 -200
  1483. package/dist/options-D5WcorD5.mjs.map +0 -1
  1484. package/dist/options-DAknChnw.d.mts +0 -77
  1485. package/dist/options-DAknChnw.d.mts.map +0 -1
  1486. package/dist/parse-Cr379Av9.mjs +0 -81
  1487. package/dist/parse-Cr379Av9.mjs.map +0 -1
  1488. package/dist/parse-tj9XLNO_.d.mts +0 -165
  1489. package/dist/parse-tj9XLNO_.d.mts.map +0 -1
  1490. package/dist/passkey-config-BD-wMaCf.mjs +0 -46
  1491. package/dist/passkey-config-BD-wMaCf.mjs.map +0 -1
  1492. package/dist/patterns-Do3iqi7N.mjs +0 -145
  1493. package/dist/patterns-Do3iqi7N.mjs.map +0 -1
  1494. package/dist/placeholder-CubPFn_L.d.mts +0 -306
  1495. package/dist/placeholder-CubPFn_L.d.mts.map +0 -1
  1496. package/dist/plugins-DHurtdXQ.mjs +0 -277
  1497. package/dist/plugins-DHurtdXQ.mjs.map +0 -1
  1498. package/dist/policy-pL9QLKZm.mjs +0 -45
  1499. package/dist/policy-pL9QLKZm.mjs.map +0 -1
  1500. package/dist/portable-text-oAwodbPS.mjs +0 -286
  1501. package/dist/portable-text-oAwodbPS.mjs.map +0 -1
  1502. package/dist/preview-Cup2bj8c.mjs +0 -107
  1503. package/dist/preview-Cup2bj8c.mjs.map +0 -1
  1504. package/dist/protocol-C1CNiKX4.d.mts +0 -61
  1505. package/dist/protocol-C1CNiKX4.d.mts.map +0 -1
  1506. package/dist/public-submission-Cs-pFMQK.mjs +0 -245
  1507. package/dist/public-submission-Cs-pFMQK.mjs.map +0 -1
  1508. package/dist/public-url-BWVHsfQv.mjs +0 -101
  1509. package/dist/public-url-BWVHsfQv.mjs.map +0 -1
  1510. package/dist/query-CxnFU6sz.mjs +0 -890
  1511. package/dist/query-CxnFU6sz.mjs.map +0 -1
  1512. package/dist/query-sgHYEgBW.mjs +0 -41
  1513. package/dist/query-sgHYEgBW.mjs.map +0 -1
  1514. package/dist/rate-limit-CqJn-w4h.mjs +0 -120
  1515. package/dist/rate-limit-CqJn-w4h.mjs.map +0 -1
  1516. package/dist/redirect-BrChFPIu.mjs +0 -17
  1517. package/dist/redirect-BrChFPIu.mjs.map +0 -1
  1518. package/dist/redirect-D2Yo-b6S.mjs +0 -415
  1519. package/dist/redirect-D2Yo-b6S.mjs.map +0 -1
  1520. package/dist/redirects-BCiTaIQ-.mjs +0 -146
  1521. package/dist/redirects-BCiTaIQ-.mjs.map +0 -1
  1522. package/dist/redirects-CAoL3r26.mjs +0 -644
  1523. package/dist/redirects-CAoL3r26.mjs.map +0 -1
  1524. package/dist/registry-xKzE-_m5.mjs +0 -1222
  1525. package/dist/registry-xKzE-_m5.mjs.map +0 -1
  1526. package/dist/relation-ClsWcYg2.mjs +0 -334
  1527. package/dist/relation-ClsWcYg2.mjs.map +0 -1
  1528. package/dist/relations-B4w-G5U9.mjs +0 -309
  1529. package/dist/relations-B4w-G5U9.mjs.map +0 -1
  1530. package/dist/relations-C3Td_mct.mjs +0 -403
  1531. package/dist/relations-C3Td_mct.mjs.map +0 -1
  1532. package/dist/request-cache-DaMhSQdx.mjs +0 -104
  1533. package/dist/request-cache-DaMhSQdx.mjs.map +0 -1
  1534. package/dist/request-meta-C8yl_sIs.mjs +0 -141
  1535. package/dist/request-meta-C8yl_sIs.mjs.map +0 -1
  1536. package/dist/resolve-BJIS8wKr.mjs +0 -199
  1537. package/dist/resolve-BJIS8wKr.mjs.map +0 -1
  1538. package/dist/route-wire-D66L2oaZ.mjs +0 -197
  1539. package/dist/route-wire-D66L2oaZ.mjs.map +0 -1
  1540. package/dist/routes-CWzxcZpn.mjs +0 -321
  1541. package/dist/routes-CWzxcZpn.mjs.map +0 -1
  1542. package/dist/runner-3gfxRsJG.d.mts +0 -68
  1543. package/dist/runner-3gfxRsJG.d.mts.map +0 -1
  1544. package/dist/runner-CIltKk4i.mjs +0 -5502
  1545. package/dist/runner-CIltKk4i.mjs.map +0 -1
  1546. package/dist/schema-DQIE9Htn.mjs +0 -420
  1547. package/dist/schema-DQIE9Htn.mjs.map +0 -1
  1548. package/dist/schema-ILPFMPW3.mjs +0 -9
  1549. package/dist/schema-ILPFMPW3.mjs.map +0 -1
  1550. package/dist/scopes-Bn8_rCSt.mjs +0 -27
  1551. package/dist/scopes-Bn8_rCSt.mjs.map +0 -1
  1552. package/dist/search-D6muneha.mjs +0 -448
  1553. package/dist/search-D6muneha.mjs.map +0 -1
  1554. package/dist/secrets-DNgVgz_e.mjs +0 -341
  1555. package/dist/secrets-DNgVgz_e.mjs.map +0 -1
  1556. package/dist/sections-BPCEGYWd.mjs +0 -346
  1557. package/dist/sections-BPCEGYWd.mjs.map +0 -1
  1558. package/dist/seo-BtU70b7l.mjs +0 -114
  1559. package/dist/seo-BtU70b7l.mjs.map +0 -1
  1560. package/dist/seo-rCk6pDwT.mjs +0 -133
  1561. package/dist/seo-rCk6pDwT.mjs.map +0 -1
  1562. package/dist/service-Bpy5iTX0.mjs +0 -150
  1563. package/dist/service-Bpy5iTX0.mjs.map +0 -1
  1564. package/dist/session-user-BQeS2Mrb.mjs +0 -51
  1565. package/dist/session-user-BQeS2Mrb.mjs.map +0 -1
  1566. package/dist/settings-CsoLiwpL.mjs +0 -420
  1567. package/dist/settings-CsoLiwpL.mjs.map +0 -1
  1568. package/dist/settings-DCnWtfSZ.mjs +0 -51
  1569. package/dist/settings-DCnWtfSZ.mjs.map +0 -1
  1570. package/dist/setup-complete-BrZaXpVV.mjs +0 -26
  1571. package/dist/setup-complete-BrZaXpVV.mjs.map +0 -1
  1572. package/dist/setup-nonce-Cb9-884O.mjs +0 -25
  1573. package/dist/setup-nonce-Cb9-884O.mjs.map +0 -1
  1574. package/dist/site-url-DjhYCaep.mjs +0 -16
  1575. package/dist/site-url-DjhYCaep.mjs.map +0 -1
  1576. package/dist/snapshot-C32Xuv3o.mjs +0 -233
  1577. package/dist/snapshot-C32Xuv3o.mjs.map +0 -1
  1578. package/dist/ssrf-Co1GGFZz.mjs +0 -406
  1579. package/dist/ssrf-Co1GGFZz.mjs.map +0 -1
  1580. package/dist/state-C7gCoiHr.mjs +0 -153
  1581. package/dist/state-C7gCoiHr.mjs.map +0 -1
  1582. package/dist/status-DLoBmcDz.mjs +0 -30
  1583. package/dist/status-DLoBmcDz.mjs.map +0 -1
  1584. package/dist/storage-query-CPctdMKX.d.mts +0 -1519
  1585. package/dist/storage-query-CPctdMKX.d.mts.map +0 -1
  1586. package/dist/target-CUKlGrXb.mjs +0 -27
  1587. package/dist/target-CUKlGrXb.mjs.map +0 -1
  1588. package/dist/taxonomies-Bs5dJVDJ.mjs +0 -899
  1589. package/dist/taxonomies-Bs5dJVDJ.mjs.map +0 -1
  1590. package/dist/taxonomies-DjGU22ur.mjs +0 -707
  1591. package/dist/taxonomies-DjGU22ur.mjs.map +0 -1
  1592. package/dist/taxonomy-c1Q8PMFF.mjs +0 -508
  1593. package/dist/taxonomy-c1Q8PMFF.mjs.map +0 -1
  1594. package/dist/tokens-Ns02GAma.mjs +0 -171
  1595. package/dist/tokens-Ns02GAma.mjs.map +0 -1
  1596. package/dist/transport-B8P1xsqk.mjs +0 -136
  1597. package/dist/transport-B8P1xsqk.mjs.map +0 -1
  1598. package/dist/transport-BLHZZcD_.d.mts +0 -42
  1599. package/dist/transport-BLHZZcD_.d.mts.map +0 -1
  1600. package/dist/trusted-proxy-Cg7SuD15.mjs +0 -51
  1601. package/dist/trusted-proxy-Cg7SuD15.mjs.map +0 -1
  1602. package/dist/turnstile-DWCSh_Qc.mjs +0 -53
  1603. package/dist/turnstile-DWCSh_Qc.mjs.map +0 -1
  1604. package/dist/types-B3RkqvDW.mjs +0 -156
  1605. package/dist/types-B3RkqvDW.mjs.map +0 -1
  1606. package/dist/types-BtuppOTV.mjs +0 -16
  1607. package/dist/types-BtuppOTV.mjs.map +0 -1
  1608. package/dist/types-CCR3ivXE.d.mts +0 -363
  1609. package/dist/types-CCR3ivXE.d.mts.map +0 -1
  1610. package/dist/types-CSHgU_-_.mjs +0 -18
  1611. package/dist/types-CSHgU_-_.mjs.map +0 -1
  1612. package/dist/types-CbwqGOXm.d.mts +0 -766
  1613. package/dist/types-CbwqGOXm.d.mts.map +0 -1
  1614. package/dist/types-D4RGIc2I.d.mts +0 -198
  1615. package/dist/types-D4RGIc2I.d.mts.map +0 -1
  1616. package/dist/types-DEHidMEk.d.mts +0 -1637
  1617. package/dist/types-DEHidMEk.d.mts.map +0 -1
  1618. package/dist/types-DQeU2SR7.d.mts +0 -279
  1619. package/dist/types-DQeU2SR7.d.mts.map +0 -1
  1620. package/dist/types-DxQWoQLA.d.mts +0 -264
  1621. package/dist/types-DxQWoQLA.d.mts.map +0 -1
  1622. package/dist/types-FBBnGZ2Y.d.mts +0 -198
  1623. package/dist/types-FBBnGZ2Y.d.mts.map +0 -1
  1624. package/dist/types-ZCnlropY.mjs +0 -69
  1625. package/dist/types-ZCnlropY.mjs.map +0 -1
  1626. package/dist/types-_Qtyawiy.d.mts +0 -124
  1627. package/dist/types-_Qtyawiy.d.mts.map +0 -1
  1628. package/dist/types-gC6FAoa_.d.mts +0 -75
  1629. package/dist/types-gC6FAoa_.d.mts.map +0 -1
  1630. package/dist/types-k--LneIF.mjs +0 -22
  1631. package/dist/types-k--LneIF.mjs.map +0 -1
  1632. package/dist/upload-attempts-2xdnoKGe.mjs +0 -27
  1633. package/dist/upload-attempts-2xdnoKGe.mjs.map +0 -1
  1634. package/dist/url-pattern-3m3reMzr.mjs +0 -33
  1635. package/dist/url-pattern-3m3reMzr.mjs.map +0 -1
  1636. package/dist/user-2R1gceFl.mjs +0 -171
  1637. package/dist/user-2R1gceFl.mjs.map +0 -1
  1638. package/dist/utils-CC2oNGV8.mjs +0 -435
  1639. package/dist/utils-CC2oNGV8.mjs.map +0 -1
  1640. package/dist/validate-CaFSi_Wa.mjs +0 -384
  1641. package/dist/validate-CaFSi_Wa.mjs.map +0 -1
  1642. package/dist/validate-CyQ7I3xF.d.mts +0 -410
  1643. package/dist/validate-CyQ7I3xF.d.mts.map +0 -1
  1644. package/dist/validation-nsX2uixg.mjs +0 -216
  1645. package/dist/validation-nsX2uixg.mjs.map +0 -1
  1646. package/dist/version-DGh4SL8e.mjs +0 -7
  1647. package/dist/version-DGh4SL8e.mjs.map +0 -1
  1648. package/dist/widgets-B7ued6f5.mjs +0 -126
  1649. package/dist/widgets-B7ued6f5.mjs.map +0 -1
  1650. package/dist/wxr-taxonomies-BtH3jYSg.mjs +0 -406
  1651. package/dist/wxr-taxonomies-BtH3jYSg.mjs.map +0 -1
  1652. package/dist/wxr-taxonomies-DU2ZSiGc.d.mts +0 -34
  1653. package/dist/wxr-taxonomies-DU2ZSiGc.d.mts.map +0 -1
  1654. package/dist/zod-generator-DuBjYyrI.mjs +0 -329
  1655. package/dist/zod-generator-DuBjYyrI.mjs.map +0 -1
  1656. /package/dist/{ssrf-BRpTDMV6.mjs → ssrf-DpBH7aOt.mjs} +0 -0
@@ -1,21 +1,401 @@
1
- import "../../../config-CGVeT8Hc.mjs";
1
+ import "../../../dialect-helpers-7_IqPdh9.mjs";
2
+ import { r as getI18nConfig } from "../../../config-CvmjJcVw.mjs";
3
+ import "../../../after-PcEvMY_6.mjs";
4
+ import "../../../options-DhrI7eMv.mjs";
2
5
  import { i as encodeBase64, t as decodeBase64 } from "../../../base64-DvnNgP7e.mjs";
6
+ import "../../../secrets-CIi0nFiR.mjs";
7
+ import "../../../object-cache-CqWNY5uP.mjs";
3
8
  import { i as InvalidCursorError, o as decodeCursor } from "../../../types-BkUg2yHx.mjs";
4
- import { n as siteSettingsTag, r as taxonomyTag, t as menuTag } from "../../../chrome-tags-D7LGB91U.mjs";
5
- import { t as apiError } from "../../../error-CCTCskie.mjs";
6
- import "../../../redirects-BCiTaIQ-.mjs";
7
- import { Dt as updateCollectionBody, F as createTaxonomyDefBody, Ot as updateFieldBody, X as updateTaxonomyDefBody, _r as bylineUpdateBody, _t as createCollectionBody, dr as bylineCreateBody, kt as CONTENT_TYPE_RE, tr as contentSeoInput, yr as contentBylineInputSchema } from "../../../entry-lock-CwWdnFyR.mjs";
8
- import "../../../comments-BVzzt6x5.mjs";
9
- import "../../../relations-B4w-G5U9.mjs";
10
- import "../../../status-DLoBmcDz.mjs";
9
+ import "../../../media-CPXTbb1R.mjs";
10
+ import "../../../audit-RfCugiSB.mjs";
11
+ import "../../../request-cache-DzLYKm_x.mjs";
12
+ import "../../../byline-registry-gnKscbQX.mjs";
13
+ import "../../../field-defs-cache-HIgBbqZZ.mjs";
14
+ import "../../../byline-DYmkXqvo.mjs";
15
+ import "../../../fts-manager-S-K0laoS.mjs";
16
+ import { n as siteSettingsTag, r as taxonomyTag, t as menuTag } from "../../../chrome-tags-DApCQSIk.mjs";
17
+ import "../../../loader-BzqeR1ZN.mjs";
18
+ import "../../../collection-slugs-cache-CjGk__zp.mjs";
19
+ import "../../../capture-triggers-kJyl_yyM.mjs";
20
+ import "../../../activation-LOkDM5WT.mjs";
21
+ import "../../../block-type-registry-DUI_3KxT.mjs";
22
+ import "../../../collection-deletion-BIm28mo3.mjs";
23
+ import { r as isTransferError, t as TransferError } from "../../../errors-DgE1zJGG.mjs";
24
+ import "../../../canonical-YhEQezjg.mjs";
25
+ import { f as toSha256Digest } from "../../../digest-BarSh-pN.mjs";
26
+ import "../../../hash-SDAW6zC-.mjs";
27
+ import "../../../zod-generator-D6uE4WiS.mjs";
28
+ import "../../../collection-deletion-processor-Br6rxs3u.mjs";
29
+ import "../../../settings-DYidIB26.mjs";
30
+ import "../../../site-settings-DOgRUoFX.mjs";
31
+ import "../../../errors-BF0_LFhW.mjs";
32
+ import "../../../settings-B4vDl1fK.mjs";
33
+ import { t as apiError } from "../../../error-CfvOHP0M.mjs";
34
+ import "../../../redirects-Cv9apQKj.mjs";
35
+ import { Ct as updateCollectionBody, I as createTaxonomyDefBody, St as updateBlockTypeBody, Yt as bylineCreateBody, Z as updateTaxonomyDefBody, dt as createBlockTypeBody, ft as createCollectionBody, rn as contentBylineInputSchema, tn as bylineUpdateBody, wt as updateFieldBody, zt as contentSeoInput } from "../../../entry-lock-BJYdBfXb.mjs";
36
+ import { t as CONTENT_TYPE_RE } from "../../../media-Pu1L6xir.mjs";
37
+ import "../../../comments-fHZ8ON9O.mjs";
38
+ import "../../../relations-CK9CYUyr.mjs";
39
+ import "../../../menus-BM7BPLOb.mjs";
40
+ import "../../../status-DZKIG4a9.mjs";
11
41
  import "../../../api/schemas/index.mjs";
12
- import { i as hasScope$1 } from "../../../api-tokens-DS1VzN7_.mjs";
13
- import { n as convertDataForWrite, t as convertDataForRead } from "../../../portable-text-oAwodbPS.mjs";
42
+ import { a as readSiteWriteFence, o as recordSiteWrite } from "../../../fence-CMDXJYc_.mjs";
43
+ import { a as hasScope$1 } from "../../../api-tokens-CE1ECIg0.mjs";
44
+ import { n as convertDataForWrite, t as convertDataForRead } from "../../../portable-text-5O_ZGUjB.mjs";
45
+ import "../../../tar-_1AgTYFu.mjs";
46
+ import { i as RECORD_KINDS } from "../../../kinds-CRu_T5T5.mjs";
47
+ import "../../../paths-JxokKIbr.mjs";
48
+ import "../../../transformations-9gfpwY65.mjs";
49
+ import "../../../version-BRZXVifl.mjs";
50
+ import "../../../receipt-B4wJj5Jq.mjs";
51
+ import { S as TRANSFER_SCOPES, n as TransferApprovalRepository } from "../../../approvals-CqMfNxak.mjs";
52
+ import { a as siteImportDecisionsInputSchema, t as isPlanExecutable } from "../../../plan-xjcWrAah.mjs";
53
+ import { i as TransferOperationRepository } from "../../../stage-DgrBz_du.mjs";
54
+ import { C as requestTransferApproval, E as analysisTargetContext, S as handleTransferCapabilities, T as loadImportPlan, _ as handleImportGet, c as handleExportGet, d as handleImportAdvance, f as handleImportAnalyze, h as handleImportExecute, i as handleExportAdvance, o as handleExportCreate, t as exportParamsDigest, w as openExportPackage, x as handleImportReceipt } from "../../../transfer-DgeCvHnj.mjs";
55
+ import "../../../keys-yxLm5l35.mjs";
14
56
  import { z } from "zod";
15
57
  import { Permissions, Role, canActOnOwn, hasPermission } from "@emdash-cms/auth";
16
58
  import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
17
59
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
18
60
 
61
+ //#region src/mcp/transfer.ts
62
+ /** Plan principals, warnings, and blockers listed per call; the totals are always reported. */
63
+ const MCP_PLAN_LIST_LIMIT = 50;
64
+ function failure(code, message, details) {
65
+ return {
66
+ success: false,
67
+ error: details === void 0 ? {
68
+ code,
69
+ message
70
+ } : {
71
+ code,
72
+ message,
73
+ details
74
+ }
75
+ };
76
+ }
77
+ function transferFailure(error, fallbackCode) {
78
+ if (isTransferError(error)) return failure(error.code, error.message);
79
+ console.error("[transfer] MCP tool failed:", error);
80
+ return failure(fallbackCode, "Site transfer request failed");
81
+ }
82
+ function storageMissing() {
83
+ return failure("STORAGE_NOT_CONFIGURED", "No storage backend is configured");
84
+ }
85
+ function tokenRequired() {
86
+ return failure("INSUFFICIENT_SCOPE", "Approval grants need a caller authenticated with an API or OAuth token");
87
+ }
88
+ function summarizeOperation(operation) {
89
+ const progress = operation.progress;
90
+ return {
91
+ id: operation.id,
92
+ kind: operation.kind,
93
+ state: operation.state,
94
+ stage: operation.stage,
95
+ progress: progress ? {
96
+ done: progress.done,
97
+ total: progress.total,
98
+ ...progress.records === void 0 ? {} : { records: progress.records },
99
+ ...progress.bytesDone === void 0 ? {} : { bytesDone: progress.bytesDone },
100
+ ...progress.bytesTotal === void 0 ? {} : { bytesTotal: progress.bytesTotal }
101
+ } : null,
102
+ packageDigest: operation.packageDigest,
103
+ planDigest: operation.planDigest,
104
+ error: operation.errorCode ? { code: operation.errorCode } : null,
105
+ createdAt: operation.createdAt,
106
+ updatedAt: operation.updatedAt,
107
+ completedAt: operation.completedAt,
108
+ expiresAt: operation.expiresAt
109
+ };
110
+ }
111
+ function summarizeIssue(issue) {
112
+ return {
113
+ code: issue.code,
114
+ message: issue.message,
115
+ ...issue.kind === void 0 ? {} : { kind: issue.kind },
116
+ ...issue.id === void 0 ? {} : { id: issue.id },
117
+ ...issue.count === void 0 ? {} : { count: issue.count },
118
+ ...issue.detail === void 0 ? {} : { detail: { ...issue.detail } }
119
+ };
120
+ }
121
+ /** How many records a transformation touches; its listed ids and values are not returned. */
122
+ function transformationCount(item) {
123
+ switch (item.code) {
124
+ case "redirect_loop_disabled":
125
+ case "search_unsupported": return item.ids.length;
126
+ case "locale_recased": return item.locales.length;
127
+ default: return item.count;
128
+ }
129
+ }
130
+ function summarizePlan(plan, planDigest) {
131
+ return {
132
+ packageDigest: plan.packageDigest,
133
+ planDigest,
134
+ executable: isPlanExecutable(plan),
135
+ origin: {
136
+ siteId: plan.origin.siteId,
137
+ packageId: plan.origin.packageId,
138
+ createdAt: plan.origin.createdAt,
139
+ emdashVersion: plan.origin.createdByEmDashVersion
140
+ },
141
+ counts: { ...plan.counts },
142
+ bytes: {
143
+ records: plan.bytes.records,
144
+ media: plan.bytes.media
145
+ },
146
+ principals: {
147
+ total: plan.principals.length,
148
+ items: plan.principals.toSorted((a, b) => b.references - a.references || a.id.localeCompare(b.id)).slice(0, MCP_PLAN_LIST_LIMIT).map((principal) => ({
149
+ id: principal.id,
150
+ displayName: principal.displayName,
151
+ references: principal.references,
152
+ suggestedUserId: principal.suggestedUserId ?? null,
153
+ mappedUserId: plan.decisions.principalMappings[principal.id] ?? null
154
+ }))
155
+ },
156
+ decisions: {
157
+ siteTitle: plan.decisions.siteTitle,
158
+ siteTagline: plan.decisions.siteTagline
159
+ },
160
+ transformations: plan.transformations.map((item) => ({
161
+ code: item.code,
162
+ ..."kind" in item ? { kind: item.kind } : {},
163
+ count: transformationCount(item)
164
+ })),
165
+ warnings: {
166
+ total: plan.warnings.length,
167
+ items: plan.warnings.slice(0, MCP_PLAN_LIST_LIMIT).map(summarizeIssue)
168
+ },
169
+ blockers: {
170
+ total: plan.blockers.length,
171
+ items: plan.blockers.slice(0, MCP_PLAN_LIST_LIMIT).map(summarizeIssue)
172
+ },
173
+ estimatedSteps: plan.estimatedSteps
174
+ };
175
+ }
176
+ /**
177
+ * Whether `caller` may drive or read `operationId` through a grant it
178
+ * consumed for it, in place of the transfer scope.
179
+ */
180
+ async function hasOperationGrant(db, caller, action, operationId) {
181
+ if (caller.tokenId === void 0) return false;
182
+ return new TransferApprovalRepository(db).hasConsumed({
183
+ userId: caller.userId,
184
+ action,
185
+ operationId,
186
+ tokenId: caller.tokenId
187
+ });
188
+ }
189
+ async function transferCapabilities(context) {
190
+ return handleTransferCapabilities(context.db, analysisTargetContext({
191
+ i18n: getI18nConfig(),
192
+ maxUploadSize: context.maxUploadSize
193
+ }));
194
+ }
195
+ async function startExport(context, caller, input) {
196
+ const options = input.comments === void 0 ? {} : { comments: input.comments };
197
+ if (!input.scoped) {
198
+ if (caller.tokenId === void 0) return tokenRequired();
199
+ if (input.approvalId === void 0) return withInstruction(await requestTransferApproval(context.db, {
200
+ userId: caller.userId,
201
+ action: "export",
202
+ paramsDigest: await exportParamsDigest(options),
203
+ requestedByTokenId: caller.tokenId
204
+ }));
205
+ }
206
+ const created = await handleExportCreate(context.db, {
207
+ userId: caller.userId,
208
+ options,
209
+ ...input.scoped || input.approvalId === void 0 ? {} : { approval: {
210
+ id: input.approvalId,
211
+ tokenId: caller.tokenId
212
+ } }
213
+ });
214
+ if (!created.success) return created;
215
+ return {
216
+ success: true,
217
+ data: { operation: summarizeOperation(created.data.operation) }
218
+ };
219
+ }
220
+ /**
221
+ * Put the approval id and the next step in the message text, which is all
222
+ * many MCP clients show the model; `details` carries the same values.
223
+ */
224
+ function withInstruction(result) {
225
+ if (result.success || result.error.code !== "TRANSFER_APPROVAL_REQUIRED") return result;
226
+ const details = result.error.details ?? {};
227
+ const approvalId = String(details.approvalId);
228
+ return failure("TRANSFER_APPROVAL_REQUIRED", `Approval ${approvalId} is pending until ${String(details.expiresAt)}. An admin must approve it in the EmDash admin under Settings → Transfer. Then call this tool again with the same arguments and approvalId "${approvalId}".`, details);
229
+ }
230
+ async function exportTotals(db, storage, operationId) {
231
+ const manifest = await openExportPackage({
232
+ db,
233
+ storage,
234
+ operation: await new TransferOperationRepository(db).require(operationId)
235
+ }).manifest();
236
+ const byKind = {};
237
+ let total = 0;
238
+ for (const kind of RECORD_KINDS) {
239
+ const summary = manifest.records[kind];
240
+ if (!summary) continue;
241
+ byKind[kind] = summary.count;
242
+ total += summary.count;
243
+ }
244
+ return {
245
+ records: {
246
+ total,
247
+ byKind
248
+ },
249
+ media: {
250
+ count: manifest.media.count,
251
+ totalBytes: manifest.media.totalBytes
252
+ },
253
+ files: {
254
+ count: manifest.files.count,
255
+ totalBytes: manifest.files.totalBytes
256
+ }
257
+ };
258
+ }
259
+ async function exportStatus(context, input) {
260
+ let operation;
261
+ let nextRequestInMs;
262
+ if (input.advance) {
263
+ if (!context.storage) return storageMissing();
264
+ const step = await handleExportAdvance(context.db, context.storage, { operationId: input.operationId });
265
+ if (!step.success) return step;
266
+ operation = step.data.operation;
267
+ nextRequestInMs = step.data.nextRequestInMs;
268
+ } else {
269
+ const read = await handleExportGet(context.db, input.operationId);
270
+ if (!read.success) return read;
271
+ operation = read.data.operation;
272
+ nextRequestInMs = operation.state === "pending" || operation.state === "running" ? 0 : null;
273
+ }
274
+ const status = {
275
+ operation: summarizeOperation(operation),
276
+ nextRequestInMs
277
+ };
278
+ if (operation.state === "complete" && operation.stagingCollectedAt === null) {
279
+ if (!context.storage) return storageMissing();
280
+ try {
281
+ status.totals = await exportTotals(context.db, context.storage, operation.id);
282
+ } catch (error) {
283
+ return transferFailure(error, "TRANSFER_EXPORT_ERROR");
284
+ }
285
+ }
286
+ return {
287
+ success: true,
288
+ data: status
289
+ };
290
+ }
291
+ async function analyzeImport(context, input) {
292
+ if (!context.storage) return storageMissing();
293
+ const result = await handleImportAnalyze(context.db, context.storage, {
294
+ operationId: input.operationId,
295
+ decisions: input.decisions,
296
+ target: analysisTargetContext({
297
+ i18n: getI18nConfig(),
298
+ maxUploadSize: context.maxUploadSize
299
+ })
300
+ });
301
+ if (!result.success) return result;
302
+ const { operation, plan, planDigest, nextRequestInMs } = result.data;
303
+ return {
304
+ success: true,
305
+ data: {
306
+ operation: summarizeOperation(operation),
307
+ ...plan && planDigest ? { plan: summarizePlan(plan, planDigest) } : {},
308
+ nextRequestInMs
309
+ }
310
+ };
311
+ }
312
+ /**
313
+ * Check what `handleImportExecute` would, before a pending grant is created,
314
+ * so an admin is only ever asked to approve an import that can run.
315
+ */
316
+ async function assertExecutable(context, input) {
317
+ const operation = await new TransferOperationRepository(context.db).get(input.operationId);
318
+ if (!operation || operation.kind !== "import") throw new TransferError("TRANSFER_OPERATION_NOT_FOUND", "Transfer operation not found");
319
+ if (operation.packageDigest !== input.packageDigest) throw new TransferError("TRANSFER_PACKAGE_DIGEST_MISMATCH", "Package digest does not match");
320
+ if (operation.planDigest === null || operation.planDigest !== input.planDigest) throw new TransferError("TRANSFER_PLAN_DIGEST_MISMATCH", "Plan digest does not match");
321
+ if (operation.state !== "planned") throw new TransferError("TRANSFER_INVALID_STATE", "Import is not waiting to be started");
322
+ const plan = await loadImportPlan(context.storage, operation);
323
+ if (!plan || !isPlanExecutable(plan)) throw new TransferError("TRANSFER_PLAN_BLOCKED", "The import plan has blockers");
324
+ }
325
+ async function startImport(context, caller, input) {
326
+ const storage = context.storage;
327
+ if (!storage) return storageMissing();
328
+ if (!input.scoped) {
329
+ if (caller.tokenId === void 0) return tokenRequired();
330
+ if (input.approvalId === void 0) {
331
+ try {
332
+ await assertExecutable({
333
+ ...context,
334
+ storage
335
+ }, input);
336
+ } catch (error) {
337
+ return transferFailure(error, "TRANSFER_IMPORT_ERROR");
338
+ }
339
+ return withInstruction(await requestTransferApproval(context.db, {
340
+ userId: caller.userId,
341
+ action: "import",
342
+ operationId: input.operationId,
343
+ packageDigest: input.packageDigest,
344
+ planDigest: input.planDigest,
345
+ requestedByTokenId: caller.tokenId
346
+ }));
347
+ }
348
+ }
349
+ const executed = await handleImportExecute(context.db, storage, {
350
+ operationId: input.operationId,
351
+ userId: caller.userId,
352
+ packageDigest: input.packageDigest,
353
+ planDigest: input.planDigest,
354
+ ...input.scoped || input.approvalId === void 0 ? {} : { approval: {
355
+ id: input.approvalId,
356
+ tokenId: caller.tokenId
357
+ } }
358
+ });
359
+ if (!executed.success) return executed;
360
+ return {
361
+ success: true,
362
+ data: { operation: summarizeOperation(executed.data.operation) }
363
+ };
364
+ }
365
+ async function importStatus(context, operationId) {
366
+ const result = await handleImportGet(context.db, operationId);
367
+ if (!result.success) return result;
368
+ return {
369
+ success: true,
370
+ data: {
371
+ operation: summarizeOperation(result.data.operation),
372
+ files: {
373
+ declared: result.data.files.declared,
374
+ verified: result.data.files.verified
375
+ }
376
+ }
377
+ };
378
+ }
379
+ async function resumeImport(context, caller, operationId) {
380
+ if (!context.storage) return storageMissing();
381
+ const step = await handleImportAdvance(context.db, context.storage, {
382
+ operationId,
383
+ userId: caller.userId
384
+ });
385
+ if (!step.success) return step;
386
+ return {
387
+ success: true,
388
+ data: {
389
+ operation: summarizeOperation(step.data.operation),
390
+ nextRequestInMs: step.data.nextRequestInMs
391
+ }
392
+ };
393
+ }
394
+ async function importReceipt(context, operationId) {
395
+ return handleImportReceipt(context.db, operationId);
396
+ }
397
+
398
+ //#endregion
19
399
  //#region src/mcp/server.ts
20
400
  const COLLECTION_SLUG_PATTERN = /^[a-z][a-z0-9_]*$/;
21
401
  /** http(s) scheme matcher used by `settings_update` URL validation. */
@@ -30,6 +410,25 @@ const REV_PARAM_DESCRIPTION = "Revision token proving you have read the current
30
410
  * read the schema, so the message says where the token comes from.
31
411
  */
32
412
  const REV_MISSING_ERROR = "_rev is required: call content_get for this item and pass back the _rev it returns.";
413
+ const SHA256_DIGEST_PATTERN = /^sha256:[0-9a-f]{64}$/;
414
+ const transferOperationIdSchema = z.string().regex(/^[0-9A-Za-z_-]{1,64}$/, "Invalid operation id").describe("Transfer operation id");
415
+ const transferApprovalIdSchema = z.string().min(1).max(64).describe("Approval id from an earlier TRANSFER_APPROVAL_REQUIRED error, once approved");
416
+ /**
417
+ * The site transfer tools. Like the transfer REST API they are exempt from
418
+ * the site write fence, so an import started over MCP can be driven to
419
+ * completion over MCP.
420
+ */
421
+ const TRANSFER_TOOL_NAMES = new Set([
422
+ "site_transfer_capabilities",
423
+ "site_export_start",
424
+ "site_export_status",
425
+ "site_import_analyze",
426
+ "site_import_start",
427
+ "site_import_status",
428
+ "site_import_resume",
429
+ "site_import_receipt"
430
+ ]);
431
+ const APPROVAL_FLOW_DESCRIPTION = "If the token lacks the scope, the first call fails with TRANSFER_APPROVAL_REQUIRED and details.approvalId; an admin must approve that request in the EmDash admin (Settings → Transfer). Then repeat the call with the same arguments plus approvalId. Approvals are single-use, bound to this user, this token, and these exact arguments, and expire 15 minutes after they are requested or approved.";
33
432
  const TAXONOMY_CURSOR_VERSION = 2;
34
433
  const MAX_TAXONOMY_CURSOR_LENGTH = 2048;
35
434
  const contentDateTimeInputSchema = z.iso.datetime({
@@ -54,7 +453,7 @@ const settingsSocialSchema = z.object({
54
453
  });
55
454
  const settingsSeoSchema = z.object({
56
455
  titleSeparator: z.string().max(10).optional().describe("Separator between page title and site title (e.g. ' | ')"),
57
- defaultOgImage: settingsMediaReferenceSchema.optional().describe("Default Open Graph image when content has none"),
456
+ defaultOgImage: settingsMediaReferenceSchema.nullable().optional().describe("Default Open Graph image when content has none; null removes it"),
58
457
  robotsTxt: z.string().max(5e3).optional().describe("Custom robots.txt body. Leave unset for the EmDash default."),
59
458
  googleVerification: z.string().max(100).optional().describe("Google Search Console verification token"),
60
459
  bingVerification: z.string().max(100).optional().describe("Bing Webmaster Tools verification token")
@@ -270,9 +669,10 @@ async function unwrapAndInvalidate(extra, result, tags, changedEarlier = false)
270
669
  }
271
670
  async function getCollectionFields(ec, collection) {
272
671
  try {
273
- const { SchemaRegistry } = await import("../../../schema-ILPFMPW3.mjs").then((n) => n.t);
672
+ const { SchemaRegistry } = await import("../../../schema-BABiRdsH.mjs").then((n) => n.t);
673
+ const { expandCollectionBlockFields } = await import("../../../block-values-C_VIPr5t.mjs").then((n) => n.t);
274
674
  const col = await new SchemaRegistry(ec.db).getCollectionWithFields(collection);
275
- return col ? col.fields : null;
675
+ return col ? (await expandCollectionBlockFields(ec.db, col)).fields : null;
276
676
  } catch {
277
677
  return null;
278
678
  }
@@ -299,7 +699,7 @@ async function applyReadMarkdown(ec, collection, items) {
299
699
  for (const item of items) if (item.data && typeof item.data === "object") item.data = convertDataForRead(item.data, fields, false);
300
700
  }
301
701
  async function invalidateBylines() {
302
- const { invalidateBylineCache } = await import("../../../bylines-CHP44GkL.mjs").then((n) => n.t);
702
+ const { invalidateBylineCache } = await import("../../../bylines-BPwJqoYH.mjs").then((n) => n.t);
303
703
  invalidateBylineCache();
304
704
  }
305
705
  /**
@@ -324,6 +724,46 @@ function requireRole(extra, minRole) {
324
724
  if (getExtra(extra).userRole < minRole) throw new EmDashAuthError("Insufficient permissions for this operation", "INSUFFICIENT_PERMISSIONS");
325
725
  }
326
726
  /**
727
+ * Whether the caller's token holds `scope` (`transfer:*`: any transfer
728
+ * scope). A caller without token scopes holds none.
729
+ */
730
+ function transferScopeHeld(extra, scope) {
731
+ const { tokenScopes } = getExtra(extra);
732
+ if (!tokenScopes) return false;
733
+ if (scope === "transfer:*") return TRANSFER_SCOPES.some((held) => hasScope$1(tokenScopes, held));
734
+ return hasScope$1(tokenScopes, scope);
735
+ }
736
+ function insufficientTransferScope(scope) {
737
+ return new EmDashAuthError(`Insufficient scope: requires ${scope === "transfer:*" ? TRANSFER_SCOPES.join(" or ") : scope}`, "INSUFFICIENT_SCOPE");
738
+ }
739
+ function requireTransferScope(extra, scope) {
740
+ if (!transferScopeHeld(extra, scope)) throw insufficientTransferScope(scope);
741
+ }
742
+ /**
743
+ * Require `scope`, or a grant this user consumed with this token to start
744
+ * `operationId`.
745
+ */
746
+ async function requireTransferAccess(extra, scope, action, operationId) {
747
+ if (transferScopeHeld(extra, scope)) return;
748
+ const { emdash, userId, tokenId } = getExtra(extra);
749
+ if (await hasOperationGrant(emdash.db, {
750
+ userId,
751
+ tokenId
752
+ }, action, operationId)) return;
753
+ throw insufficientTransferScope(scope);
754
+ }
755
+ function transferContext(extra) {
756
+ const { emdash } = getExtra(extra);
757
+ return {
758
+ db: emdash.db,
759
+ storage: emdash.storage,
760
+ maxUploadSize: emdash.config.maxUploadSize
761
+ };
762
+ }
763
+ function transferDigest(value) {
764
+ return toSha256Digest(value.slice(7));
765
+ }
766
+ /**
327
767
  * Whether the current user may read non-published content (drafts, scheduled,
328
768
  * trashed, revisions, compare). SUBSCRIBER may hold content:read for
329
769
  * member-only published content but must not see drafts.
@@ -391,9 +831,16 @@ function createMcpServer(pluginTools = [], request) {
391
831
  }, { capabilities: { logging: {} } });
392
832
  const originalRegisterTool = server.registerTool.bind(server);
393
833
  server.registerTool = ((name, config, callback) => {
834
+ const fenced = config.annotations?.readOnlyHint !== true && !TRANSFER_TOOL_NAMES.has(name);
394
835
  const wrapped = async (...callbackArgs) => {
395
836
  try {
396
- return await callback(...callbackArgs);
837
+ if (!fenced) return await callback(...callbackArgs);
838
+ const { db } = getEmDash(callbackArgs.at(-1));
839
+ const fence = await readSiteWriteFence(db);
840
+ if (fence.error) return respondError(fence.error.code, fence.error.message);
841
+ const result = await callback(...callbackArgs);
842
+ if (fence.exportRunning && !("isError" in result && result.isError)) await recordSiteWrite(db);
843
+ return result;
397
844
  } catch (error) {
398
845
  return respondHandlerError(error, "INTERNAL_ERROR");
399
846
  }
@@ -509,6 +956,8 @@ function createMcpServer(pluginTools = [], request) {
509
956
  status: z.enum(["draft", "published"]).optional().describe("Initial status (default 'draft'). Requires publish permission."),
510
957
  locale: z.string().optional().describe("Locale for this content (e.g. 'fr'). Defaults to default locale."),
511
958
  translationOf: z.string().optional().describe("ID of the content item this is a translation of. Links items in the same translation group."),
959
+ migrateBlocks: z.boolean().optional().describe("Allow retained blocks to migrate to their type's active version"),
960
+ replaceBlocks: z.boolean().optional().describe("Treat an entirely keyless blocks array as an explicit replacement"),
512
961
  bylines: z.array(contentBylineInputSchema).optional().describe("Bylines to credit. Each entry references an existing byline by id (see byline_list / byline_create) with an optional roleLabel. The first entry becomes the primary byline."),
513
962
  taxonomies: z.record(z.string(), z.array(z.string())).optional().describe("Taxonomy term assignments as { taxonomyName: [termSlug, ...] }. Term slugs are resolved in the entry's locale. Call taxonomy_list to see available taxonomies and taxonomy_list_terms to look up slugs. Missing keys leave that taxonomy unchanged.")
514
963
  }),
@@ -540,6 +989,8 @@ function createMcpServer(pluginTools = [], request) {
540
989
  translationOf: args.translationOf,
541
990
  bylines: args.bylines,
542
991
  taxonomies: args.taxonomies,
992
+ migrateBlocks: args.migrateBlocks,
993
+ replaceBlocks: args.replaceBlocks,
543
994
  actor
544
995
  });
545
996
  if (!result.success) return unwrap(result);
@@ -561,6 +1012,8 @@ function createMcpServer(pluginTools = [], request) {
561
1012
  translationOf: args.translationOf,
562
1013
  bylines: args.bylines,
563
1014
  taxonomies: args.taxonomies,
1015
+ migrateBlocks: args.migrateBlocks,
1016
+ replaceBlocks: args.replaceBlocks,
564
1017
  actor
565
1018
  }), [args.collection]);
566
1019
  });
@@ -578,6 +1031,8 @@ function createMcpServer(pluginTools = [], request) {
578
1031
  bylines: z.array(contentBylineInputSchema).optional().describe("Replace the byline list for this item. The first entry becomes the primary byline. Pass an empty array to clear all bylines."),
579
1032
  taxonomies: z.record(z.string(), z.array(z.string())).optional().describe("Replace taxonomy term assignments as { taxonomyName: [termSlug, ...] }. Term slugs are resolved in the entry's locale. Only named taxonomies are touched; other taxonomies are left unchanged. Pass an empty array to clear a taxonomy."),
580
1033
  publishedAt: contentDateTimeInputSchema.nullish().describe("Override the publication timestamp (ISO 8601). Requires content:publish_any permission. Pass null to clear. Useful for content migrations."),
1034
+ migrateBlocks: z.boolean().optional().describe("Allow existing blocks to migrate to their type's active version"),
1035
+ replaceBlocks: z.boolean().optional().describe("Treat an entirely keyless blocks array as an explicit replacement"),
581
1036
  _rev: z.string({ error: REV_MISSING_ERROR }).describe(REV_PARAM_DESCRIPTION)
582
1037
  })
583
1038
  }, async (args, extra) => {
@@ -614,6 +1069,8 @@ function createMcpServer(pluginTools = [], request) {
614
1069
  bylines: args.bylines,
615
1070
  taxonomies: args.taxonomies,
616
1071
  publishedAt: args.publishedAt,
1072
+ migrateBlocks: args.migrateBlocks,
1073
+ replaceBlocks: args.replaceBlocks,
617
1074
  _rev: args._rev
618
1075
  });
619
1076
  if (!updateResult.success) return unwrap(updateResult);
@@ -643,6 +1100,8 @@ function createMcpServer(pluginTools = [], request) {
643
1100
  bylines: args.bylines,
644
1101
  taxonomies: args.taxonomies,
645
1102
  publishedAt: args.publishedAt,
1103
+ migrateBlocks: args.migrateBlocks,
1104
+ replaceBlocks: args.replaceBlocks,
646
1105
  _rev: args._rev
647
1106
  });
648
1107
  if (!updateResult.success) return unwrap(updateResult);
@@ -667,6 +1126,8 @@ function createMcpServer(pluginTools = [], request) {
667
1126
  bylines: args.bylines,
668
1127
  taxonomies: args.taxonomies,
669
1128
  publishedAt: args.publishedAt,
1129
+ migrateBlocks: args.migrateBlocks,
1130
+ replaceBlocks: args.replaceBlocks,
670
1131
  _rev: args._rev
671
1132
  });
672
1133
  if (result.liveContentChanged === false) return unwrap(result);
@@ -883,7 +1344,12 @@ function createMcpServer(pluginTools = [], request) {
883
1344
  }, async (args, extra) => {
884
1345
  requireScope(extra, "content:write");
885
1346
  requireRole(extra, Role.CONTRIBUTOR);
886
- return unwrapAndInvalidate(extra, await getEmDash(extra).handleContentDuplicate(args.collection, args.id), [args.collection]);
1347
+ const { emdash, userId } = getExtra(extra);
1348
+ const existing = await emdash.handleContentGet(args.collection, args.id);
1349
+ if (!existing.success) return unwrap(existing);
1350
+ requireOwnership(extra, extractContentAuthorId(existing.data), "content:edit_own", "content:edit_any");
1351
+ const resolvedId = extractContentId(existing.data) ?? args.id;
1352
+ return unwrapAndInvalidate(extra, await emdash.handleContentDuplicate(args.collection, resolvedId, userId), [args.collection]);
887
1353
  });
888
1354
  server.registerTool("content_translations", {
889
1355
  title: "Get Content Translations",
@@ -925,7 +1391,7 @@ function createMcpServer(pluginTools = [], request) {
925
1391
  requireScope(extra, "content:read");
926
1392
  const ec = getEmDash(extra);
927
1393
  try {
928
- const { BylineRepository } = await import("../../../byline-C8ndlnP0.mjs").then((n) => n.n);
1394
+ const { BylineRepository } = await import("../../../byline-DYmkXqvo.mjs").then((n) => n.n);
929
1395
  return jsonResult(await new BylineRepository(ec.db).findMany({
930
1396
  search: args.search,
931
1397
  isGuest: args.isGuest,
@@ -947,7 +1413,7 @@ function createMcpServer(pluginTools = [], request) {
947
1413
  requireScope(extra, "content:read");
948
1414
  const ec = getEmDash(extra);
949
1415
  try {
950
- const { BylineRepository } = await import("../../../byline-C8ndlnP0.mjs").then((n) => n.n);
1416
+ const { BylineRepository } = await import("../../../byline-DYmkXqvo.mjs").then((n) => n.n);
951
1417
  const byline = await new BylineRepository(ec.db).findById(args.id);
952
1418
  if (!byline) return respondError("NOT_FOUND", `Byline '${args.id}' not found`);
953
1419
  return jsonResult(byline);
@@ -965,7 +1431,7 @@ function createMcpServer(pluginTools = [], request) {
965
1431
  requireRole(extra, Role.EDITOR);
966
1432
  const ec = getEmDash(extra);
967
1433
  try {
968
- const { handleBylineCreate } = await import("../../../bylines-DxjM4Usz.mjs").then((n) => n.t);
1434
+ const { handleBylineCreate } = await import("../../../bylines-ukLaYpVZ.mjs").then((n) => n.t);
969
1435
  const result = await handleBylineCreate(ec.db, args);
970
1436
  if (result.success) await invalidateBylines();
971
1437
  return unwrap(result);
@@ -985,7 +1451,7 @@ function createMcpServer(pluginTools = [], request) {
985
1451
  requireRole(extra, Role.EDITOR);
986
1452
  const ec = getEmDash(extra);
987
1453
  try {
988
- const { handleBylineUpdate } = await import("../../../bylines-DxjM4Usz.mjs").then((n) => n.t);
1454
+ const { handleBylineUpdate } = await import("../../../bylines-ukLaYpVZ.mjs").then((n) => n.t);
989
1455
  const { id, ...input } = args;
990
1456
  const result = await handleBylineUpdate(ec.db, id, input);
991
1457
  if (result.success) await invalidateBylines();
@@ -1004,7 +1470,7 @@ function createMcpServer(pluginTools = [], request) {
1004
1470
  requireRole(extra, Role.EDITOR);
1005
1471
  const ec = getEmDash(extra);
1006
1472
  try {
1007
- const { BylineRepository } = await import("../../../byline-C8ndlnP0.mjs").then((n) => n.n);
1473
+ const { BylineRepository } = await import("../../../byline-DYmkXqvo.mjs").then((n) => n.n);
1008
1474
  if (!await new BylineRepository(ec.db).delete(args.id)) return respondError("NOT_FOUND", `Byline '${args.id}' not found`);
1009
1475
  await invalidateBylines();
1010
1476
  return jsonResult({ deleted: args.id });
@@ -1021,7 +1487,7 @@ function createMcpServer(pluginTools = [], request) {
1021
1487
  requireScope(extra, "content:read");
1022
1488
  const ec = getEmDash(extra);
1023
1489
  try {
1024
- const { handleBylineTranslations } = await import("../../../bylines-DxjM4Usz.mjs").then((n) => n.t);
1490
+ const { handleBylineTranslations } = await import("../../../bylines-ukLaYpVZ.mjs").then((n) => n.t);
1025
1491
  return unwrap(await handleBylineTranslations(ec.db, args.id));
1026
1492
  } catch (error) {
1027
1493
  return respondHandlerError(error, "BYLINE_TRANSLATIONS_ERROR");
@@ -1037,7 +1503,7 @@ function createMcpServer(pluginTools = [], request) {
1037
1503
  requireRole(extra, Role.EDITOR);
1038
1504
  const ec = getEmDash(extra);
1039
1505
  try {
1040
- const { SchemaRegistry } = await import("../../../schema-ILPFMPW3.mjs").then((n) => n.t);
1506
+ const { SchemaRegistry } = await import("../../../schema-BABiRdsH.mjs").then((n) => n.t);
1041
1507
  return jsonResult({ items: await new SchemaRegistry(ec.db).listCollections() });
1042
1508
  } catch (error) {
1043
1509
  return respondHandlerError(error, "SCHEMA_LIST_ERROR");
@@ -1045,7 +1511,7 @@ function createMcpServer(pluginTools = [], request) {
1045
1511
  });
1046
1512
  server.registerTool("schema_get_collection", {
1047
1513
  title: "Get Collection Schema",
1048
- description: "Get detailed info about a collection including all field definitions. Fields describe the data model: name, type (string, text, number, boolean, datetime, portableText, image, reference, json, select, multiSelect, slug), constraints, and validation rules. Use this to understand what data content_create and content_update expect.",
1514
+ description: "Get detailed info about a collection including all field definitions. Fields describe the data model: name, type (string, text, number, boolean, datetime, portableText, image, reference, json, select, multiSelect, slug, blocks), constraints, and validation rules. Blocks fields include every allowed and retired block type version. Use this to understand what data content_create and content_update expect.",
1049
1515
  inputSchema: z.object({ slug: z.string().describe("Collection slug (e.g. 'posts'). Use schema_list_collections to see available slugs.") }),
1050
1516
  annotations: { readOnlyHint: true }
1051
1517
  }, async (args, extra) => {
@@ -1053,14 +1519,79 @@ function createMcpServer(pluginTools = [], request) {
1053
1519
  requireRole(extra, Role.EDITOR);
1054
1520
  const ec = getEmDash(extra);
1055
1521
  try {
1056
- const { SchemaRegistry } = await import("../../../schema-ILPFMPW3.mjs").then((n) => n.t);
1522
+ const { SchemaRegistry, expandCollectionBlockFields } = await import("../../../schema-BABiRdsH.mjs").then((n) => n.t);
1057
1523
  const collection = await new SchemaRegistry(ec.db).getCollectionWithFields(args.slug);
1058
1524
  if (!collection) return respondError("NOT_FOUND", `Collection '${args.slug}' not found`);
1059
- return jsonResult(collection);
1525
+ return jsonResult(await expandCollectionBlockFields(ec.db, collection));
1060
1526
  } catch (error) {
1061
1527
  return respondHandlerError(error, "SCHEMA_GET_ERROR");
1062
1528
  }
1063
1529
  });
1530
+ server.registerTool("schema_list_block_types", {
1531
+ title: "List Block Types",
1532
+ description: "List every database-owned block type and all retained versions.",
1533
+ inputSchema: z.object({}),
1534
+ annotations: { readOnlyHint: true }
1535
+ }, async (_args, extra) => {
1536
+ requireScope(extra, "schema:read");
1537
+ requireRole(extra, Role.EDITOR);
1538
+ const ec = getEmDash(extra);
1539
+ const { handleBlockTypeList } = await import("../../../block-types-BmZmLmAD.mjs").then((n) => n.t);
1540
+ return unwrap(await handleBlockTypeList(ec.db));
1541
+ });
1542
+ server.registerTool("schema_get_block_type", {
1543
+ title: "Get Block Type",
1544
+ description: "Get one block type, including active, inactive, and historical versions.",
1545
+ inputSchema: z.object({ slug: z.string().describe("Block type slug") }),
1546
+ annotations: { readOnlyHint: true }
1547
+ }, async (args, extra) => {
1548
+ requireScope(extra, "schema:read");
1549
+ requireRole(extra, Role.EDITOR);
1550
+ const ec = getEmDash(extra);
1551
+ const { handleBlockTypeGet } = await import("../../../block-types-BmZmLmAD.mjs").then((n) => n.t);
1552
+ return unwrap(await handleBlockTypeGet(ec.db, args.slug));
1553
+ });
1554
+ server.registerTool("schema_create_block_type", {
1555
+ title: "Create Block Type",
1556
+ description: "Create a block type with active version 1.",
1557
+ inputSchema: z.object(createBlockTypeBody.shape)
1558
+ }, async (args, extra) => {
1559
+ requireScope(extra, "schema:write");
1560
+ requireRole(extra, Role.ADMIN);
1561
+ const ec = getEmDash(extra);
1562
+ const { handleBlockTypeCreate } = await import("../../../block-types-BmZmLmAD.mjs").then((n) => n.t);
1563
+ return unwrap(await handleBlockTypeCreate(ec.db, args));
1564
+ });
1565
+ server.registerTool("schema_update_block_type", {
1566
+ title: "Update Block Type",
1567
+ description: "Update presentation or compatible fields in place. Set breaking to create an inactive retained version.",
1568
+ inputSchema: z.object({
1569
+ slug: z.string(),
1570
+ ...updateBlockTypeBody.shape
1571
+ })
1572
+ }, async (args, extra) => {
1573
+ requireScope(extra, "schema:write");
1574
+ requireRole(extra, Role.ADMIN);
1575
+ const ec = getEmDash(extra);
1576
+ const { slug, ...input } = args;
1577
+ const { handleBlockTypeUpdate } = await import("../../../block-types-BmZmLmAD.mjs").then((n) => n.t);
1578
+ return unwrap(await handleBlockTypeUpdate(ec.db, slug, input));
1579
+ });
1580
+ server.registerTool("schema_activate_block_type_version", {
1581
+ title: "Activate Block Type Version",
1582
+ description: "Make a retained version the active version used by newly created blocks.",
1583
+ inputSchema: z.object({
1584
+ slug: z.string(),
1585
+ version: z.number().int().positive(),
1586
+ expectedFingerprint: z.string().min(1)
1587
+ })
1588
+ }, async (args, extra) => {
1589
+ requireScope(extra, "schema:write");
1590
+ requireRole(extra, Role.ADMIN);
1591
+ const ec = getEmDash(extra);
1592
+ const { handleBlockTypeVersionActivate } = await import("../../../block-types-BmZmLmAD.mjs").then((n) => n.t);
1593
+ return unwrap(await handleBlockTypeVersionActivate(ec.db, args.slug, args.version, args.expectedFingerprint));
1594
+ });
1064
1595
  server.registerTool("schema_create_collection", {
1065
1596
  title: "Create Collection",
1066
1597
  description: "Create a new content collection (content type). This creates a database table and schema definition. The slug must be lowercase alphanumeric with underscores, starting with a letter. Supports: 'drafts' (draft/publish workflow), 'revisions' (version history), 'preview' (live preview), 'scheduling' (timed publish), 'search' (full-text indexing), and 'seo' (SEO metadata).",
@@ -1080,7 +1611,7 @@ function createMcpServer(pluginTools = [], request) {
1080
1611
  requireRole(extra, Role.ADMIN);
1081
1612
  const ec = getEmDash(extra);
1082
1613
  try {
1083
- const { SchemaRegistry } = await import("../../../schema-ILPFMPW3.mjs").then((n) => n.t);
1614
+ const { SchemaRegistry } = await import("../../../schema-BABiRdsH.mjs").then((n) => n.t);
1084
1615
  const collection = await new SchemaRegistry(ec.db).createCollection({
1085
1616
  slug: args.slug,
1086
1617
  label: args.label,
@@ -1111,7 +1642,7 @@ function createMcpServer(pluginTools = [], request) {
1111
1642
  requireRole(extra, Role.ADMIN);
1112
1643
  const ec = getEmDash(extra);
1113
1644
  try {
1114
- const { SchemaRegistry } = await import("../../../schema-ILPFMPW3.mjs").then((n) => n.t);
1645
+ const { SchemaRegistry } = await import("../../../schema-BABiRdsH.mjs").then((n) => n.t);
1115
1646
  await new SchemaRegistry(ec.db).deleteCollection(args.slug, { force: args.force });
1116
1647
  ec.invalidateUrlPatternCache();
1117
1648
  return jsonResult({ deleted: args.slug });
@@ -1130,7 +1661,7 @@ function createMcpServer(pluginTools = [], request) {
1130
1661
  const ec = getEmDash(extra);
1131
1662
  const { slug, ...input } = args;
1132
1663
  try {
1133
- const { handleSchemaCollectionUpdate } = await import("../../../schema-DQIE9Htn.mjs").then((n) => n.h);
1664
+ const { handleSchemaCollectionUpdate } = await import("../../../schema-Du3MzCG0.mjs").then((n) => n.h);
1134
1665
  const result = await handleSchemaCollectionUpdate(ec.db, slug, input);
1135
1666
  if (result.success) ec.invalidateUrlPatternCache();
1136
1667
  return unwrap(result);
@@ -1140,7 +1671,7 @@ function createMcpServer(pluginTools = [], request) {
1140
1671
  });
1141
1672
  server.registerTool("schema_create_field", {
1142
1673
  title: "Add Field to Collection",
1143
- description: "Add a new field to a collection's schema. This adds a column to the database table. Field types: string (short text), text (long text), number (decimal), integer, boolean, datetime, select (single choice), multiSelect (multiple), portableText (rich text), image, file, reference (link to another collection), json, slug (URL-safe id). For select/multiSelect, provide choices in validation.options array.",
1674
+ description: "Add a new field to a collection's schema. This adds a column to the database table. Field types: string (short text), text (long text), number (decimal), integer, boolean, datetime, select (single choice), multiSelect (multiple), portableText (rich text), image, file, reference (link to another collection), json, slug (URL-safe id), or blocks. For select/multiSelect, provide choices in validation.options array.",
1144
1675
  inputSchema: z.object({
1145
1676
  collection: z.string().describe("Collection slug to add the field to"),
1146
1677
  slug: z.string().regex(COLLECTION_SLUG_PATTERN).describe("Field identifier (lowercase letters, numbers, underscores)"),
@@ -1159,7 +1690,8 @@ function createMcpServer(pluginTools = [], request) {
1159
1690
  "file",
1160
1691
  "reference",
1161
1692
  "json",
1162
- "slug"
1693
+ "slug",
1694
+ "blocks"
1163
1695
  ]).describe("Data type for this field"),
1164
1696
  required: z.boolean().optional().describe("Whether the field is required (default false)"),
1165
1697
  unique: z.boolean().optional().describe("Whether values must be unique (default false)"),
@@ -1170,7 +1702,10 @@ function createMcpServer(pluginTools = [], request) {
1170
1702
  minLength: z.number().optional(),
1171
1703
  maxLength: z.number().optional(),
1172
1704
  pattern: z.string().optional(),
1173
- options: z.array(z.string()).optional().describe("Allowed values for select/multiSelect")
1705
+ options: z.array(z.string()).optional().describe("Allowed values for select/multiSelect"),
1706
+ allowedTypes: z.array(z.string()).optional().describe("Ordered block type slugs allowed by a blocks field"),
1707
+ minItems: z.number().int().min(0).optional(),
1708
+ maxItems: z.number().int().min(1).optional()
1174
1709
  }).optional().describe("Validation constraints"),
1175
1710
  options: z.object({
1176
1711
  collection: z.string().optional().describe("Target collection slug for reference fields"),
@@ -1185,7 +1720,7 @@ function createMcpServer(pluginTools = [], request) {
1185
1720
  requireRole(extra, Role.ADMIN);
1186
1721
  const ec = getEmDash(extra);
1187
1722
  try {
1188
- const { SchemaRegistry } = await import("../../../schema-ILPFMPW3.mjs").then((n) => n.t);
1723
+ const { SchemaRegistry } = await import("../../../schema-BABiRdsH.mjs").then((n) => n.t);
1189
1724
  return jsonResult(await new SchemaRegistry(ec.db).createField(args.collection, {
1190
1725
  slug: args.slug,
1191
1726
  label: args.label,
@@ -1216,7 +1751,7 @@ function createMcpServer(pluginTools = [], request) {
1216
1751
  requireRole(extra, Role.ADMIN);
1217
1752
  const ec = getEmDash(extra);
1218
1753
  try {
1219
- const { SchemaRegistry } = await import("../../../schema-ILPFMPW3.mjs").then((n) => n.t);
1754
+ const { SchemaRegistry } = await import("../../../schema-BABiRdsH.mjs").then((n) => n.t);
1220
1755
  await new SchemaRegistry(ec.db).deleteField(args.collection, args.fieldSlug);
1221
1756
  return jsonResult({
1222
1757
  deleted: args.fieldSlug,
@@ -1237,7 +1772,7 @@ function createMcpServer(pluginTools = [], request) {
1237
1772
  const ec = getEmDash(extra);
1238
1773
  const { collection, fieldSlug, ...input } = args;
1239
1774
  try {
1240
- const { handleSchemaFieldUpdate } = await import("../../../schema-DQIE9Htn.mjs").then((n) => n.h);
1775
+ const { handleSchemaFieldUpdate } = await import("../../../schema-Du3MzCG0.mjs").then((n) => n.h);
1241
1776
  return unwrap(await handleSchemaFieldUpdate(ec.db, collection, fieldSlug, input));
1242
1777
  } catch (error) {
1243
1778
  return respondHandlerError(error, "SCHEMA_FIELD_UPDATE_ERROR");
@@ -1261,44 +1796,25 @@ function createMcpServer(pluginTools = [], request) {
1261
1796
  }));
1262
1797
  });
1263
1798
  server.registerTool("media_create", {
1264
- title: "Register Uploaded Media",
1265
- description: "Register a media file that has already been uploaded to storage. The caller is responsible for placing the file at `storageKey` (typically using a signed upload URL obtained from the admin UI or a separate API). This tool persists the metadata record so the file is discoverable via media_list / media_get and can be referenced by content. To upload the file itself, use media_upload (base64 data or a public URL) instead.",
1266
- inputSchema: z.object({
1267
- filename: z.string().describe("Original filename (e.g. 'logo.png')"),
1268
- mimeType: z.string().describe("MIME type (e.g. 'image/png')"),
1269
- storageKey: z.string().describe("Storage path/key the file was uploaded to"),
1270
- size: z.number().int().nonnegative().optional().describe("File size in bytes"),
1271
- width: z.number().int().positive().optional().describe("Image width in pixels"),
1272
- height: z.number().int().positive().optional().describe("Image height in pixels"),
1273
- contentHash: z.string().optional().describe("Hash of the file contents (for dedupe)"),
1274
- blurhash: z.string().optional().describe("Blurhash for image placeholders"),
1275
- dominantColor: z.string().optional().describe("Hex color string for the image's dominant color")
1276
- })
1799
+ title: "Confirm Signed Media Upload",
1800
+ description: "Confirm a file after uploading it with a signed URL obtained from POST /_emdash/api/media/upload-url. `storageKey` must be the key returned for the same user. Confirmation checks that the stored file exists and matches the size fixed when the URL was issued, then makes it available through media_list / media_get. To upload through MCP, use media_upload instead.",
1801
+ inputSchema: z.object({ storageKey: z.string().describe("Storage key returned by the signed upload URL request") })
1277
1802
  }, async (args, extra) => {
1278
1803
  requireScope(extra, "media:write");
1279
1804
  requireRole(extra, Role.AUTHOR);
1280
1805
  const { emdash, userId } = getExtra(extra);
1281
- return unwrap(await emdash.handleMediaCreate({
1282
- filename: args.filename,
1283
- mimeType: args.mimeType,
1806
+ return unwrap(await emdash.handleMediaRegisterUpload({
1284
1807
  storageKey: args.storageKey,
1285
- size: args.size,
1286
- width: args.width,
1287
- height: args.height,
1288
- contentHash: args.contentHash,
1289
- blurhash: args.blurhash,
1290
- dominantColor: args.dominantColor,
1291
1808
  authorId: userId
1292
1809
  }));
1293
1810
  });
1294
1811
  server.registerTool("media_upload", {
1295
1812
  title: "Upload Media",
1296
- description: "Upload a media file from base64-encoded data or an external URL and register it in the media library. Returns the media item with id, storageKey, and url — ready to reference from content fields (e.g. featured_image) via content_create / content_update. Uploads are deduplicated by content hash: re-uploading identical bytes returns the existing item with deduplicated: true. URL fetches must resolve to a public http(s) host (SSRF-guarded). Subject to the global upload MIME allowlist and the configured maximum upload size.",
1813
+ description: "Upload a media file from base64-encoded data and register it in the media library. Returns the media item with id, storageKey, and url — ready to reference from content fields (e.g. featured_image) via content_create / content_update. Uploads are deduplicated by content hash: re-uploading identical bytes returns the existing item with deduplicated: true. Subject to the global upload MIME allowlist and the configured maximum upload size.",
1297
1814
  inputSchema: z.object({
1298
1815
  filename: z.string().min(1).describe("Filename including extension (e.g. 'cover.png')"),
1299
- base64: z.string().optional().describe("Base64-encoded file contents. Provide exactly one of base64 / url."),
1300
- url: z.url().optional().describe("Public http(s) URL to fetch the file from. Provide exactly one of base64 / url."),
1301
- contentType: z.string().regex(CONTENT_TYPE_RE, "Invalid content type").optional().describe("MIME type (e.g. 'image/png'). Required with base64; with url it defaults to the response's Content-Type header."),
1816
+ base64: z.string().describe("Base64-encoded file contents."),
1817
+ contentType: z.string().regex(CONTENT_TYPE_RE, "Invalid content type").describe("MIME type (e.g. 'image/png')."),
1302
1818
  alt: z.string().optional().describe("Alt text for accessibility")
1303
1819
  }),
1304
1820
  annotations: { destructiveHint: false }
@@ -1311,7 +1827,6 @@ function createMcpServer(pluginTools = [], request) {
1311
1827
  return unwrap(await emdash.handleMediaUpload({
1312
1828
  filename: args.filename,
1313
1829
  base64: args.base64,
1314
- url: args.url,
1315
1830
  contentType: args.contentType,
1316
1831
  alt: args.alt,
1317
1832
  authorId: userId,
@@ -1387,7 +1902,7 @@ function createMcpServer(pluginTools = [], request) {
1387
1902
  };
1388
1903
  } else input = { scope: "all" };
1389
1904
  try {
1390
- const { handleMediaUsageRepair } = await import("../../../media-usage-Bd9rFPKN.mjs").then((n) => n.o);
1905
+ const { handleMediaUsageRepair } = await import("../../../media-usage-De-zeR9E.mjs").then((n) => n.o);
1391
1906
  return unwrap(await handleMediaUsageRepair(ec.db, input));
1392
1907
  } catch (error) {
1393
1908
  return respondHandlerError(error, "MEDIA_USAGE_REPAIR_ERROR");
@@ -1408,7 +1923,7 @@ function createMcpServer(pluginTools = [], request) {
1408
1923
  requireScope(extra, "content:read");
1409
1924
  const ec = getEmDash(extra);
1410
1925
  try {
1411
- const { searchWithDb } = await import("../../../search-D6muneha.mjs").then((n) => n.t);
1926
+ const { searchWithDb } = await import("../../../search-Bt1PL1jf.mjs").then((n) => n.t);
1412
1927
  return jsonResult(await searchWithDb(ec.db, args.query, {
1413
1928
  collections: args.collections,
1414
1929
  locale: args.locale,
@@ -1428,7 +1943,7 @@ function createMcpServer(pluginTools = [], request) {
1428
1943
  requireScope(extra, "content:read");
1429
1944
  const ec = getEmDash(extra);
1430
1945
  try {
1431
- const { handleTaxonomyList } = await import("../../../taxonomies-Bs5dJVDJ.mjs").then((n) => n.m);
1946
+ const { handleTaxonomyList } = await import("../../../taxonomies-C_XMoRcX.mjs").then((n) => n.m);
1432
1947
  return unwrap(await handleTaxonomyList(ec.db, { locale: args.locale }));
1433
1948
  } catch (error) {
1434
1949
  return respondHandlerError(error, "TAXONOMY_LIST_ERROR");
@@ -1446,7 +1961,7 @@ function createMcpServer(pluginTools = [], request) {
1446
1961
  requireScope(extra, "content:read");
1447
1962
  const ec = getEmDash(extra);
1448
1963
  try {
1449
- const { handleTaxonomyGet } = await import("../../../taxonomies-Bs5dJVDJ.mjs").then((n) => n.m);
1964
+ const { handleTaxonomyGet } = await import("../../../taxonomies-C_XMoRcX.mjs").then((n) => n.m);
1450
1965
  return unwrap(await handleTaxonomyGet(ec.db, args.name, { locale: args.locale }));
1451
1966
  } catch (error) {
1452
1967
  return respondHandlerError(error, "TAXONOMY_GET_ERROR");
@@ -1454,13 +1969,13 @@ function createMcpServer(pluginTools = [], request) {
1454
1969
  });
1455
1970
  server.registerTool("taxonomy_create", {
1456
1971
  title: "Create Taxonomy Definition",
1457
- description: "Create a new taxonomy definition. Definitions are per-locale; pass `locale` when the same taxonomy name exists in multiple translations. `collections` names which content types the taxonomy applies to. If `translationOf` is set, the new definition joins the source's translation group and inherits `hierarchical` and `collections` from the source when those fields are omitted.",
1972
+ description: "Create a taxonomy definition in one locale. `label` and `labelSingular` belong to that locale; `hierarchical` and `collections` belong to the taxonomy and are the same in every locale. `collections` names which content types the taxonomy applies to. A definition for a name that already exists in another locale joins that taxonomy and takes its `hierarchical` and `collections`; passing different values is an error (change them with taxonomy_update).",
1458
1973
  inputSchema: z.object({
1459
1974
  name: createTaxonomyDefBody.shape.name.describe("Taxonomy name (lowercase letters, numbers, underscores)"),
1460
1975
  label: createTaxonomyDefBody.shape.label.describe("Display name"),
1461
1976
  labelSingular: createTaxonomyDefBody.shape.labelSingular.describe("Singular form of the display name"),
1462
- hierarchical: createTaxonomyDefBody.shape.hierarchical.describe("Whether the taxonomy supports parent/child terms (defaults to false, or inherited from translationOf)"),
1463
- collections: createTaxonomyDefBody.shape.collections.describe("Collection slugs this taxonomy applies to (defaults to [], or inherited from translationOf)"),
1977
+ hierarchical: createTaxonomyDefBody.shape.hierarchical.describe("Whether the taxonomy supports parent/child terms, in every locale (defaults to false; must match when the taxonomy exists in another locale)"),
1978
+ collections: createTaxonomyDefBody.shape.collections.describe("Collection slugs this taxonomy applies to, in every locale (defaults to []; must match when the taxonomy exists in another locale)"),
1464
1979
  locale: z.string().optional().describe("Locale for this definition (e.g. 'fr-fr')"),
1465
1980
  translationOf: z.string().optional().describe("Existing taxonomy definition id to create this locale variant from")
1466
1981
  })
@@ -1469,7 +1984,7 @@ function createMcpServer(pluginTools = [], request) {
1469
1984
  requireRole(extra, Role.EDITOR);
1470
1985
  const ec = getEmDash(extra);
1471
1986
  try {
1472
- const { handleTaxonomyCreate } = await import("../../../taxonomies-Bs5dJVDJ.mjs").then((n) => n.m);
1987
+ const { handleTaxonomyCreate } = await import("../../../taxonomies-C_XMoRcX.mjs").then((n) => n.m);
1473
1988
  return unwrapAndInvalidate(extra, await handleTaxonomyCreate(ec.db, {
1474
1989
  name: args.name,
1475
1990
  label: args.label,
@@ -1485,13 +2000,13 @@ function createMcpServer(pluginTools = [], request) {
1485
2000
  });
1486
2001
  server.registerTool("taxonomy_update", {
1487
2002
  title: "Update Taxonomy Definition",
1488
- description: "Update an existing taxonomy definition. The taxonomy `name` cannot be changed. Pass `locale` to update a specific translation; otherwise the lowest matching locale is updated. Any field may be omitted to leave it unchanged.",
2003
+ description: "Update an existing taxonomy definition. The taxonomy `name` cannot be changed. Pass `locale` to update a specific translation's `label` and `labelSingular`; otherwise the lowest matching locale is updated. `hierarchical` and `collections` change for every locale. Any field may be omitted to leave it unchanged.",
1489
2004
  inputSchema: z.object({
1490
2005
  name: z.string().describe("Taxonomy name to update"),
1491
2006
  label: updateTaxonomyDefBody.shape.label.describe("New display name"),
1492
2007
  labelSingular: updateTaxonomyDefBody.shape.labelSingular.describe("New singular display name; pass null to clear"),
1493
- hierarchical: updateTaxonomyDefBody.shape.hierarchical.describe("Whether the taxonomy supports parent/child terms"),
1494
- collections: updateTaxonomyDefBody.shape.collections.describe("Collection slugs this taxonomy applies to"),
2008
+ hierarchical: updateTaxonomyDefBody.shape.hierarchical.describe("Whether the taxonomy supports parent/child terms, in every locale"),
2009
+ collections: updateTaxonomyDefBody.shape.collections.describe("Collection slugs this taxonomy applies to, in every locale"),
1495
2010
  locale: z.string().optional().describe("Locale of the definition to update")
1496
2011
  })
1497
2012
  }, async (args, extra) => {
@@ -1499,7 +2014,7 @@ function createMcpServer(pluginTools = [], request) {
1499
2014
  requireRole(extra, Role.EDITOR);
1500
2015
  const ec = getEmDash(extra);
1501
2016
  try {
1502
- const { handleTaxonomyUpdate } = await import("../../../taxonomies-Bs5dJVDJ.mjs").then((n) => n.m);
2017
+ const { handleTaxonomyUpdate } = await import("../../../taxonomies-C_XMoRcX.mjs").then((n) => n.m);
1503
2018
  return unwrapAndInvalidate(extra, await handleTaxonomyUpdate(ec.db, args.name, {
1504
2019
  label: args.label,
1505
2020
  labelSingular: args.labelSingular,
@@ -1521,7 +2036,7 @@ function createMcpServer(pluginTools = [], request) {
1521
2036
  requireRole(extra, Role.EDITOR);
1522
2037
  const ec = getEmDash(extra);
1523
2038
  try {
1524
- const { handleTaxonomyDelete } = await import("../../../taxonomies-Bs5dJVDJ.mjs").then((n) => n.m);
2039
+ const { handleTaxonomyDelete } = await import("../../../taxonomies-C_XMoRcX.mjs").then((n) => n.m);
1525
2040
  return unwrapAndInvalidate(extra, await handleTaxonomyDelete(ec.db, args.name), [taxonomyTag(args.name)]);
1526
2041
  } catch (error) {
1527
2042
  return respondHandlerError(error, "TAXONOMY_DELETE_ERROR");
@@ -1541,11 +2056,11 @@ function createMcpServer(pluginTools = [], request) {
1541
2056
  requireScope(extra, "content:read");
1542
2057
  const ec = getEmDash(extra);
1543
2058
  try {
1544
- const { handleTaxonomyList } = await import("../../../taxonomies-Bs5dJVDJ.mjs").then((n) => n.m);
2059
+ const { handleTaxonomyList } = await import("../../../taxonomies-C_XMoRcX.mjs").then((n) => n.m);
1545
2060
  const listResult = await handleTaxonomyList(ec.db, { locale: args.locale });
1546
2061
  if (!listResult.success) return unwrap(listResult);
1547
2062
  if (!listResult.data.taxonomies.find((t) => t.name === args.taxonomy)) return respondError("NOT_FOUND", `Taxonomy '${args.taxonomy}' not found`);
1548
- const { TaxonomyRepository } = await import("../../../taxonomy-c1Q8PMFF.mjs").then((n) => n.n);
2063
+ const { TaxonomyRepository } = await import("../../../taxonomy-C3Fu1YeH.mjs").then((n) => n.n);
1549
2064
  const repo = new TaxonomyRepository(ec.db);
1550
2065
  const limit = Math.min(args.limit ?? 50, 100);
1551
2066
  let cursor;
@@ -1599,14 +2114,14 @@ function createMcpServer(pluginTools = [], request) {
1599
2114
  parentId: z.string().optional().describe("Parent term ID for hierarchical taxonomies"),
1600
2115
  description: z.string().optional().describe("Description of the term"),
1601
2116
  locale: z.string().optional().describe("Locale for the new term (e.g. 'es')"),
1602
- translationOf: z.string().optional().describe("Term id to join as a translation (same translation_group)")
2117
+ translationOf: z.string().optional().describe("Term id to join as a translation (same translation_group). The new term takes that term's parent and position; a different parentId moves the term in every locale")
1603
2118
  })
1604
2119
  }, async (args, extra) => {
1605
2120
  requireScope(extra, "taxonomies:manage");
1606
2121
  requireRole(extra, Role.EDITOR);
1607
2122
  const ec = getEmDash(extra);
1608
2123
  try {
1609
- const { handleTermCreate } = await import("../../../taxonomies-Bs5dJVDJ.mjs").then((n) => n.m);
2124
+ const { handleTermCreate } = await import("../../../taxonomies-C_XMoRcX.mjs").then((n) => n.m);
1610
2125
  return unwrapAndInvalidate(extra, await handleTermCreate(ec.db, args.taxonomy, {
1611
2126
  slug: args.slug,
1612
2127
  label: args.label,
@@ -1636,7 +2151,7 @@ function createMcpServer(pluginTools = [], request) {
1636
2151
  requireRole(extra, Role.EDITOR);
1637
2152
  const ec = getEmDash(extra);
1638
2153
  try {
1639
- const { handleTermUpdate } = await import("../../../taxonomies-Bs5dJVDJ.mjs").then((n) => n.m);
2154
+ const { handleTermUpdate } = await import("../../../taxonomies-C_XMoRcX.mjs").then((n) => n.m);
1640
2155
  return unwrapAndInvalidate(extra, await handleTermUpdate(ec.db, args.taxonomy, args.termSlug, {
1641
2156
  slug: args.slug,
1642
2157
  label: args.label,
@@ -1661,7 +2176,7 @@ function createMcpServer(pluginTools = [], request) {
1661
2176
  requireRole(extra, Role.EDITOR);
1662
2177
  const ec = getEmDash(extra);
1663
2178
  try {
1664
- const { handleTermDelete } = await import("../../../taxonomies-Bs5dJVDJ.mjs").then((n) => n.m);
2179
+ const { handleTermDelete } = await import("../../../taxonomies-C_XMoRcX.mjs").then((n) => n.m);
1665
2180
  return unwrapAndInvalidate(extra, await handleTermDelete(ec.db, args.taxonomy, args.termSlug, { locale: args.locale }), [taxonomyTag(args.taxonomy)]);
1666
2181
  } catch (error) {
1667
2182
  return respondHandlerError(error, "TAXONOMY_TERM_DELETE_ERROR");
@@ -1676,7 +2191,7 @@ function createMcpServer(pluginTools = [], request) {
1676
2191
  requireScope(extra, "content:read");
1677
2192
  const ec = getEmDash(extra);
1678
2193
  try {
1679
- const { handleTermTranslations } = await import("../../../taxonomies-Bs5dJVDJ.mjs").then((n) => n.m);
2194
+ const { handleTermTranslations } = await import("../../../taxonomies-C_XMoRcX.mjs").then((n) => n.m);
1680
2195
  return unwrap(await handleTermTranslations(ec.db, args.id));
1681
2196
  } catch (error) {
1682
2197
  return respondHandlerError(error, "TERM_TRANSLATIONS_ERROR");
@@ -1691,7 +2206,7 @@ function createMcpServer(pluginTools = [], request) {
1691
2206
  requireScope(extra, "content:read");
1692
2207
  const ec = getEmDash(extra);
1693
2208
  try {
1694
- const { handleMenuList } = await import("../../../menus-DgSUodmF.mjs").then((n) => n.d);
2209
+ const { handleMenuList } = await import("../../../menus-ITeAbcIF.mjs").then((n) => n.d);
1695
2210
  return unwrap(await handleMenuList(ec.db, { locale: args.locale }));
1696
2211
  } catch (error) {
1697
2212
  return respondHandlerError(error, "MENU_LIST_ERROR");
@@ -1709,7 +2224,7 @@ function createMcpServer(pluginTools = [], request) {
1709
2224
  requireScope(extra, "content:read");
1710
2225
  const ec = getEmDash(extra);
1711
2226
  try {
1712
- const { handleMenuGet } = await import("../../../menus-DgSUodmF.mjs").then((n) => n.d);
2227
+ const { handleMenuGet } = await import("../../../menus-ITeAbcIF.mjs").then((n) => n.d);
1713
2228
  return unwrap(await handleMenuGet(ec.db, args.name, { locale: args.locale }));
1714
2229
  } catch (error) {
1715
2230
  return respondHandlerError(error, "MENU_GET_ERROR");
@@ -1724,7 +2239,7 @@ function createMcpServer(pluginTools = [], request) {
1724
2239
  requireScope(extra, "content:read");
1725
2240
  const ec = getEmDash(extra);
1726
2241
  try {
1727
- const { handleMenuTranslations } = await import("../../../menus-DgSUodmF.mjs").then((n) => n.d);
2242
+ const { handleMenuTranslations } = await import("../../../menus-ITeAbcIF.mjs").then((n) => n.d);
1728
2243
  return unwrap(await handleMenuTranslations(ec.db, args.id));
1729
2244
  } catch (error) {
1730
2245
  return respondHandlerError(error, "MENU_TRANSLATIONS_ERROR");
@@ -1744,7 +2259,7 @@ function createMcpServer(pluginTools = [], request) {
1744
2259
  requireRole(extra, Role.EDITOR);
1745
2260
  const ec = getEmDash(extra);
1746
2261
  try {
1747
- const { handleMenuCreate } = await import("../../../menus-DgSUodmF.mjs").then((n) => n.d);
2262
+ const { handleMenuCreate } = await import("../../../menus-ITeAbcIF.mjs").then((n) => n.d);
1748
2263
  return unwrapAndInvalidate(extra, await handleMenuCreate(ec.db, {
1749
2264
  name: args.name,
1750
2265
  label: args.label,
@@ -1768,7 +2283,7 @@ function createMcpServer(pluginTools = [], request) {
1768
2283
  requireRole(extra, Role.EDITOR);
1769
2284
  const ec = getEmDash(extra);
1770
2285
  try {
1771
- const { handleMenuUpdate } = await import("../../../menus-DgSUodmF.mjs").then((n) => n.d);
2286
+ const { handleMenuUpdate } = await import("../../../menus-ITeAbcIF.mjs").then((n) => n.d);
1772
2287
  return unwrapAndInvalidate(extra, await handleMenuUpdate(ec.db, args.name, {
1773
2288
  label: args.label,
1774
2289
  locale: args.locale
@@ -1790,7 +2305,7 @@ function createMcpServer(pluginTools = [], request) {
1790
2305
  requireRole(extra, Role.EDITOR);
1791
2306
  const ec = getEmDash(extra);
1792
2307
  try {
1793
- const { handleMenuDelete } = await import("../../../menus-DgSUodmF.mjs").then((n) => n.d);
2308
+ const { handleMenuDelete } = await import("../../../menus-ITeAbcIF.mjs").then((n) => n.d);
1794
2309
  return unwrapAndInvalidate(extra, await handleMenuDelete(ec.db, args.name, { locale: args.locale }), [menuTag(args.name)]);
1795
2310
  } catch (error) {
1796
2311
  return respondHandlerError(error, "MENU_DELETE_ERROR");
@@ -1825,7 +2340,7 @@ function createMcpServer(pluginTools = [], request) {
1825
2340
  requireRole(extra, Role.EDITOR);
1826
2341
  const ec = getEmDash(extra);
1827
2342
  try {
1828
- const { handleMenuSetItems } = await import("../../../menus-DgSUodmF.mjs").then((n) => n.d);
2343
+ const { handleMenuSetItems } = await import("../../../menus-ITeAbcIF.mjs").then((n) => n.d);
1829
2344
  return unwrapAndInvalidate(extra, await handleMenuSetItems(ec.db, args.name, args.items, { locale: args.locale }), [menuTag(args.name)]);
1830
2345
  } catch (error) {
1831
2346
  return respondHandlerError(error, "MENU_SET_ITEMS_ERROR");
@@ -1872,7 +2387,7 @@ function createMcpServer(pluginTools = [], request) {
1872
2387
  requireRole(extra, Role.EDITOR);
1873
2388
  const ec = getEmDash(extra);
1874
2389
  try {
1875
- const { handleSettingsGet } = await import("../../../settings-DCnWtfSZ.mjs").then((n) => n.r);
2390
+ const { handleSettingsGet } = await import("../../../settings-Dyj6v8C4.mjs").then((n) => n.r);
1876
2391
  return unwrap(await handleSettingsGet(ec.db, ec.storage));
1877
2392
  } catch (error) {
1878
2393
  return respondHandlerError(error, "SETTINGS_READ_ERROR");
@@ -1880,12 +2395,12 @@ function createMcpServer(pluginTools = [], request) {
1880
2395
  });
1881
2396
  server.registerTool("settings_update", {
1882
2397
  title: "Update Site Settings",
1883
- description: "Update one or more site-wide settings. This is a partial update: only the fields provided are changed; omitted fields are left as-is. Returns the full settings object after the update. To set a media reference (logo, favicon, seo.defaultOgImage), pass an object with `mediaId` (and optional `alt`) — the media item must already exist (use media_create first).",
2398
+ description: "Update one or more site-wide settings. This is a partial update: only the fields provided are changed; omitted fields are left as-is. Returns the full settings object after the update. To set a media reference (logo, favicon, seo.defaultOgImage), pass an object with `mediaId` (and optional `alt`) — the media item must already exist (use media_create first), or pass null to remove it.",
1884
2399
  inputSchema: z.object({
1885
2400
  title: z.string().optional().describe("Site title"),
1886
2401
  tagline: z.string().optional().describe("Site tagline / short description"),
1887
- logo: settingsMediaReferenceSchema.optional().describe("Logo media reference ({ mediaId, alt? })"),
1888
- favicon: settingsMediaReferenceSchema.optional().describe("Favicon media reference ({ mediaId, alt? })"),
2402
+ logo: settingsMediaReferenceSchema.nullable().optional().describe("Logo media reference ({ mediaId, alt? }); null removes it"),
2403
+ favicon: settingsMediaReferenceSchema.nullable().optional().describe("Favicon media reference ({ mediaId, alt? }); null removes it"),
1889
2404
  url: z.union([z.url().refine((u) => HTTP_SCHEME_PATTERN.test(u), "URL must use http or https"), z.literal("")]).optional().describe("Canonical site URL (http or https). Empty string clears it."),
1890
2405
  postsPerPage: z.number().int().min(1).max(100).optional().describe("Default page size for content listings"),
1891
2406
  dateFormat: z.string().optional().describe("Date format token string"),
@@ -1898,12 +2413,126 @@ function createMcpServer(pluginTools = [], request) {
1898
2413
  requireRole(extra, Role.ADMIN);
1899
2414
  const ec = getEmDash(extra);
1900
2415
  try {
1901
- const { handleSettingsUpdate } = await import("../../../settings-DCnWtfSZ.mjs").then((n) => n.r);
2416
+ const { handleSettingsUpdate } = await import("../../../settings-Dyj6v8C4.mjs").then((n) => n.r);
1902
2417
  return unwrapAndInvalidate(extra, await handleSettingsUpdate(ec.db, ec.storage, args), [siteSettingsTag()]);
1903
2418
  } catch (error) {
1904
2419
  return respondHandlerError(error, "SETTINGS_UPDATE_ERROR");
1905
2420
  }
1906
2421
  });
2422
+ server.registerTool("site_transfer_capabilities", {
2423
+ title: "Get Site Transfer Capabilities",
2424
+ description: "Site package format versions, features, and limits this site supports, and whether it can receive an import (its portable content is empty) with the reasons it cannot. Requires any transfer scope (transfer:export, transfer:analyze, or transfer:execute).",
2425
+ inputSchema: z.object({}),
2426
+ annotations: { readOnlyHint: true }
2427
+ }, async (_args, extra) => {
2428
+ requireRole(extra, Role.ADMIN);
2429
+ requireTransferScope(extra, "transfer:*");
2430
+ return unwrap(await transferCapabilities(transferContext(extra)));
2431
+ });
2432
+ server.registerTool("site_export_start", {
2433
+ title: "Start Site Export",
2434
+ description: "Start exporting the whole site as a portable site package (schema, content, media, settings; never users, credentials, or secrets). Returns the operation id and status only; drive it with site_export_status. The package itself is downloaded outside MCP, from the admin or the CLI. Requires the transfer:export scope. " + APPROVAL_FLOW_DESCRIPTION,
2435
+ inputSchema: z.object({
2436
+ comments: z.boolean().optional().describe("Include comments and reactions (default true)"),
2437
+ approvalId: transferApprovalIdSchema.optional()
2438
+ })
2439
+ }, async (args, extra) => {
2440
+ requireRole(extra, Role.ADMIN);
2441
+ const scoped = transferScopeHeld(extra, "transfer:export");
2442
+ const { userId, tokenId } = getExtra(extra);
2443
+ return unwrap(await startExport(transferContext(extra), {
2444
+ userId,
2445
+ tokenId
2446
+ }, {
2447
+ ...args,
2448
+ scoped
2449
+ }));
2450
+ });
2451
+ server.registerTool("site_export_status", {
2452
+ title: "Get Site Export Status",
2453
+ description: "Report an export's state, stage, and progress, and once it is complete its package digest and record and media totals. By default each call also runs one bounded export step, so call it repeatedly until nextRequestInMs is null; pass advance: false to only read. Requires the transfer:export scope, or the approval that started this export (same token).",
2454
+ inputSchema: z.object({
2455
+ operationId: transferOperationIdSchema,
2456
+ advance: z.boolean().optional().describe("Run one bounded export step before reporting (default true)")
2457
+ })
2458
+ }, async (args, extra) => {
2459
+ requireRole(extra, Role.ADMIN);
2460
+ await requireTransferAccess(extra, "transfer:export", "export", args.operationId);
2461
+ return unwrap(await exportStatus(transferContext(extra), {
2462
+ operationId: args.operationId,
2463
+ advance: args.advance ?? true
2464
+ }));
2465
+ });
2466
+ server.registerTool("site_import_analyze", {
2467
+ title: "Analyze Site Import",
2468
+ description: "Validate an uploaded site package against this site and produce an import plan. The package must already be uploaded over HTTP, from the admin or the CLI; MCP never carries package bytes. Each call runs one bounded analysis step: repeat until nextRequestInMs is null, then read plan (counts, principals with suggested user mappings, warnings, blockers, packageDigest, planDigest). Pass decisions to map principals or keep this site's title and tagline; that produces a new planDigest. Principal emails are never returned. Writes no site content. Requires the transfer:analyze scope.",
2469
+ inputSchema: z.object({
2470
+ operationId: transferOperationIdSchema,
2471
+ decisions: siteImportDecisionsInputSchema.optional().describe("principalMappings (principal id to target user id, or null to drop the reference) and siteTitle / siteTagline ('package' or 'target'). Omitted values keep the plan defaults.")
2472
+ })
2473
+ }, async (args, extra) => {
2474
+ requireRole(extra, Role.ADMIN);
2475
+ requireTransferScope(extra, "transfer:analyze");
2476
+ return unwrap(await analyzeImport(transferContext(extra), args));
2477
+ });
2478
+ server.registerTool("site_import_start", {
2479
+ title: "Start Site Import",
2480
+ description: "Start importing an analyzed package into this site. packageDigest and planDigest must be the values from the latest site_import_analyze plan, which must have no blockers. Returns the operation id and status; drive it with site_import_resume. The site refuses ordinary content writes until the import completes or an admin abandons it. Requires the transfer:execute scope. " + APPROVAL_FLOW_DESCRIPTION,
2481
+ inputSchema: z.object({
2482
+ operationId: transferOperationIdSchema,
2483
+ packageDigest: z.string().regex(SHA256_DIGEST_PATTERN, "Expected sha256:<64 hex>").describe("Package digest from the plan"),
2484
+ planDigest: z.string().regex(SHA256_DIGEST_PATTERN, "Expected sha256:<64 hex>").describe("Plan digest from the latest analysis"),
2485
+ approvalId: transferApprovalIdSchema.optional()
2486
+ }),
2487
+ annotations: { destructiveHint: true }
2488
+ }, async (args, extra) => {
2489
+ requireRole(extra, Role.ADMIN);
2490
+ const scoped = transferScopeHeld(extra, "transfer:execute");
2491
+ const { userId, tokenId } = getExtra(extra);
2492
+ return unwrap(await startImport(transferContext(extra), {
2493
+ userId,
2494
+ tokenId
2495
+ }, {
2496
+ operationId: args.operationId,
2497
+ packageDigest: transferDigest(args.packageDigest),
2498
+ planDigest: transferDigest(args.planDigest),
2499
+ approvalId: args.approvalId,
2500
+ scoped
2501
+ }));
2502
+ });
2503
+ server.registerTool("site_import_status", {
2504
+ title: "Get Site Import Status",
2505
+ description: "Report an import's state, stage, progress, digests, and uploaded file counts. Does not advance the import. Requires any transfer scope, or the approval that started this import (same token).",
2506
+ inputSchema: z.object({ operationId: transferOperationIdSchema }),
2507
+ annotations: { readOnlyHint: true }
2508
+ }, async (args, extra) => {
2509
+ requireRole(extra, Role.ADMIN);
2510
+ await requireTransferAccess(extra, "transfer:*", "import", args.operationId);
2511
+ return unwrap(await importStatus(transferContext(extra), args.operationId));
2512
+ });
2513
+ server.registerTool("site_import_resume", {
2514
+ title: "Resume Site Import",
2515
+ description: "Run one bounded step of a started import and report its status. Call repeatedly until nextRequestInMs is null; safe to repeat after a disconnect. Requires the transfer:execute scope, or the approval that started this import (same token).",
2516
+ inputSchema: z.object({ operationId: transferOperationIdSchema })
2517
+ }, async (args, extra) => {
2518
+ requireRole(extra, Role.ADMIN);
2519
+ await requireTransferAccess(extra, "transfer:execute", "import", args.operationId);
2520
+ const { userId, tokenId } = getExtra(extra);
2521
+ return unwrap(await resumeImport(transferContext(extra), {
2522
+ userId,
2523
+ tokenId
2524
+ }, args.operationId));
2525
+ });
2526
+ server.registerTool("site_import_receipt", {
2527
+ title: "Get Site Import Receipt",
2528
+ description: "Return the verified receipt of a completed import: package and plan digests, origin and target site ids, logical digest, record counts, warnings, and the receipt's own digest. Requires any transfer scope, or the approval that started this import (same token).",
2529
+ inputSchema: z.object({ operationId: transferOperationIdSchema }),
2530
+ annotations: { readOnlyHint: true }
2531
+ }, async (args, extra) => {
2532
+ requireRole(extra, Role.ADMIN);
2533
+ await requireTransferAccess(extra, "transfer:*", "import", args.operationId);
2534
+ return unwrap(await importReceipt(transferContext(extra), args.operationId));
2535
+ });
1907
2536
  return server;
1908
2537
  }
1909
2538
 
@@ -1940,6 +2569,7 @@ const POST = async ({ request, locals, cache }) => {
1940
2569
  userId: user.id,
1941
2570
  userRole: user.role,
1942
2571
  tokenScopes: locals.tokenScopes,
2572
+ tokenId: locals.tokenId,
1943
2573
  cache
1944
2574
  }
1945
2575
  } });