emdash 0.36.0 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{activation-K0kGBWuJ.mjs → activation-DyNTe_Tl.mjs} +3 -3
- package/dist/{activation-K0kGBWuJ.mjs.map → activation-DyNTe_Tl.mjs.map} +1 -1
- package/dist/{adapters-CzL3H752.d.mts → adapters-DCEgOBXi.d.mts} +4 -2
- package/dist/{adapters-CzL3H752.d.mts.map → adapters-DCEgOBXi.d.mts.map} +1 -1
- package/dist/{allowed-origins-maylGaHv.mjs → allowed-origins-GFUVavRj.mjs} +2 -2
- package/dist/{allowed-origins-maylGaHv.mjs.map → allowed-origins-GFUVavRj.mjs.map} +1 -1
- package/dist/api/route-utils.d.mts +3 -3
- package/dist/api/route-utils.mjs +25 -24
- package/dist/api/route-utils.mjs.map +1 -1
- package/dist/api/schemas/index.d.mts +2 -2
- package/dist/api/schemas/index.mjs +5 -5
- package/dist/api-BvxJmnFY.mjs +10094 -0
- package/dist/api-BvxJmnFY.mjs.map +1 -0
- package/dist/{api-tokens-9YrrCoE6.mjs → api-tokens-xpGqMHrC.mjs} +2 -2
- package/dist/{api-tokens-9YrrCoE6.mjs.map → api-tokens-xpGqMHrC.mjs.map} +1 -1
- package/dist/{apply-B_VMpJ2P.mjs → apply-DLmM3R7f.mjs} +26 -22
- package/dist/apply-DLmM3R7f.mjs.map +1 -0
- package/dist/artifact-fetch-P2JXVwOq.mjs +972 -0
- package/dist/artifact-fetch-P2JXVwOq.mjs.map +1 -0
- package/dist/astro/image-endpoint.mjs +2 -2
- package/dist/astro/image-endpoint.mjs.map +1 -1
- package/dist/astro/index.d.mts +12 -12
- package/dist/astro/index.d.mts.map +1 -1
- package/dist/astro/index.mjs +138 -39
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +10 -10
- package/dist/astro/middleware/auth.mjs +6 -6
- package/dist/astro/middleware/media-usage-write-fence.mjs +3 -3
- package/dist/astro/middleware/redirect.mjs +7 -5
- package/dist/astro/middleware/redirect.mjs.map +1 -1
- package/dist/astro/middleware/request-context.mjs +3 -3
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.d.mts +10 -10
- package/dist/astro/middleware.d.mts.map +1 -1
- package/dist/astro/middleware.mjs +223 -232
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +6 -6
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +6 -6
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +3 -3
- package/dist/astro/routes/api/admin/api-tokens/index.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +5 -5
- package/dist/astro/routes/api/admin/api-tokens/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +9 -9
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +9 -9
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +9 -9
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +17 -17
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +17 -17
- package/dist/astro/routes/api/admin/bylines/index.mjs +17 -17
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +13 -13
- package/dist/astro/routes/api/admin/comments/_id_.mjs +5 -5
- package/dist/astro/routes/api/admin/comments/bulk.mjs +10 -10
- package/dist/astro/routes/api/admin/comments/counts.mjs +5 -5
- package/dist/astro/routes/api/admin/comments/index.mjs +10 -10
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +4 -4
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
- package/dist/astro/routes/api/admin/media-usage/activation.mjs +13 -13
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +15 -15
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +15 -15
- package/dist/astro/routes/api/admin/media-usage/progress.mjs +14 -14
- package/dist/astro/routes/api/admin/media-usage/repair.mjs +17 -17
- package/dist/astro/routes/api/admin/media-usage/work/index.mjs +15 -15
- package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +15 -15
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +4 -4
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +4 -4
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +59 -56
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +59 -56
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +57 -54
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +4 -4
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +57 -54
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +58 -55
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +58 -55
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/index.mjs +57 -54
- package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +57 -54
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +58 -55
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +57 -54
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +58 -55
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +64 -57
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +18 -16
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/install.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +65 -58
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/verify.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/registry/verify.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +96 -0
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/updates.mjs +57 -54
- package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +57 -54
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +57 -54
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +1 -1
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +6 -6
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +3 -3
- package/dist/astro/routes/api/admin/users/index.mjs +6 -6
- package/dist/astro/routes/api/auth/dev-bypass.mjs +3 -3
- package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
- package/dist/astro/routes/api/auth/invite/complete.mjs +11 -11
- package/dist/astro/routes/api/auth/invite/index.mjs +8 -8
- package/dist/astro/routes/api/auth/invite/register-options.mjs +10 -10
- package/dist/astro/routes/api/auth/logout.mjs +2 -2
- package/dist/astro/routes/api/auth/magic-link/send.mjs +10 -10
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
- package/dist/astro/routes/api/auth/me.mjs +7 -7
- package/dist/astro/routes/api/auth/mode.mjs +2 -2
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +4 -4
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -6
- package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
- package/dist/astro/routes/api/auth/passkey/options.mjs +12 -12
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +10 -10
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +11 -11
- package/dist/astro/routes/api/auth/passkey/verify.mjs +11 -11
- package/dist/astro/routes/api/auth/signup/complete.mjs +11 -11
- package/dist/astro/routes/api/auth/signup/request.mjs +10 -10
- package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +14 -14
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +13 -13
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +19 -5
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/lock.d.mts +10 -0
- package/dist/astro/routes/api/content/_collection_/_id_/lock.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +66 -0
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +11 -11
- package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +18 -10
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +20 -18
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +20 -18
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +15 -8
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +16 -15
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +19 -5
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +23 -11
- package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/index.mjs +14 -9
- package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -7
- package/dist/astro/routes/api/dashboard.mjs +8 -8
- package/dist/astro/routes/api/dev/emails.mjs +2 -2
- package/dist/astro/routes/api/import/probe.d.mts +3 -3
- package/dist/astro/routes/api/import/probe.mjs +18 -18
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +3 -3
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +11 -11
- package/dist/astro/routes/api/import/wordpress/execute.mjs +15 -14
- package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.d.mts +10 -10
- package/dist/astro/routes/api/import/wordpress/media.mjs +11 -11
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +10 -10
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +11 -11
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +13 -13
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +18 -18
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +11 -11
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +29 -28
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
- package/dist/astro/routes/api/manifest.mjs +4 -4
- package/dist/astro/routes/api/manifest.mjs.map +1 -1
- package/dist/astro/routes/api/mcp.mjs +213 -74
- package/dist/astro/routes/api/mcp.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/confirm.mjs +11 -11
- package/dist/astro/routes/api/media/_id_/replace.d.mts +8 -0
- package/dist/astro/routes/api/media/_id_/replace.d.mts.map +1 -0
- package/dist/astro/routes/api/media/_id_/replace.mjs +91 -0
- package/dist/astro/routes/api/media/_id_/replace.mjs.map +1 -0
- package/dist/astro/routes/api/media/_id_/upload.mjs +6 -6
- package/dist/astro/routes/api/media/_id_/usage.mjs +19 -19
- package/dist/astro/routes/api/media/_id_.mjs +18 -18
- package/dist/astro/routes/api/media/file/_...key_.d.mts.map +1 -1
- package/dist/astro/routes/api/media/file/_...key_.mjs +3 -2
- package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
- package/dist/astro/routes/api/media/folders/_id_.mjs +8 -8
- package/dist/astro/routes/api/media/folders/index.mjs +8 -8
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
- package/dist/astro/routes/api/media/providers/index.mjs +2 -2
- package/dist/astro/routes/api/media/upload-url.mjs +16 -14
- package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
- package/dist/astro/routes/api/media.d.mts.map +1 -1
- package/dist/astro/routes/api/media.mjs +53 -30
- package/dist/astro/routes/api/media.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +20 -13
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items.mjs +15 -11
- package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/reorder.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +15 -11
- package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/translations.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/_name_/translations.mjs +16 -12
- package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/_name_.mjs +21 -14
- package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/index.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/index.mjs +15 -11
- package/dist/astro/routes/api/menus/index.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/authorize.mjs +5 -5
- package/dist/astro/routes/api/oauth/device/code.mjs +8 -8
- package/dist/astro/routes/api/oauth/device/token.mjs +7 -7
- package/dist/astro/routes/api/oauth/register.mjs +2 -2
- package/dist/astro/routes/api/oauth/token/refresh.mjs +5 -5
- package/dist/astro/routes/api/oauth/token/revoke.mjs +5 -5
- package/dist/astro/routes/api/oauth/token.mjs +5 -5
- package/dist/astro/routes/api/openapi.json.mjs +184 -52
- package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
- package/dist/astro/routes/api/redirects/404s/index.mjs +12 -11
- package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/404s/summary.mjs +12 -11
- package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/_id_.mjs +13 -12
- package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/index.mjs +13 -12
- package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/_id_/index.mjs +20 -18
- package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/_id_/translations.mjs +15 -13
- package/dist/astro/routes/api/relations/_id_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/relations/index.mjs +20 -18
- package/dist/astro/routes/api/relations/index.mjs.map +1 -1
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +3 -3
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +57 -54
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +57 -54
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +57 -54
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +57 -54
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/index.mjs +57 -54
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/reorder.mjs +57 -54
- package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/index.mjs +13 -11
- package/dist/astro/routes/api/schema/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +57 -54
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/index.mjs +57 -54
- package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/enable.mjs +12 -11
- package/dist/astro/routes/api/search/enable.mjs.map +1 -1
- package/dist/astro/routes/api/search/index.mjs +11 -10
- package/dist/astro/routes/api/search/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/rebuild.mjs +12 -11
- package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
- package/dist/astro/routes/api/search/stats.mjs +7 -6
- package/dist/astro/routes/api/search/stats.mjs.map +1 -1
- package/dist/astro/routes/api/search/suggest.mjs +11 -10
- package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
- package/dist/astro/routes/api/sections/_slug_.mjs +11 -10
- package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/sections/index.mjs +11 -10
- package/dist/astro/routes/api/sections/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -6
- package/dist/astro/routes/api/settings/backups/archives/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/archives/index.mjs +6 -5
- package/dist/astro/routes/api/settings/backups/archives/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/export.mjs +7 -6
- package/dist/astro/routes/api/settings/backups/export.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/index.mjs +8 -7
- package/dist/astro/routes/api/settings/backups/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/email.mjs +5 -5
- package/dist/astro/routes/api/settings/email.mjs.map +1 -1
- package/dist/astro/routes/api/settings.d.mts.map +1 -1
- package/dist/astro/routes/api/settings.mjs +21 -17
- package/dist/astro/routes/api/settings.mjs.map +1 -1
- package/dist/astro/routes/api/setup/admin-verify.mjs +12 -12
- package/dist/astro/routes/api/setup/admin.mjs +11 -11
- package/dist/astro/routes/api/setup/dev-bypass.mjs +35 -33
- package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
- package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
- package/dist/astro/routes/api/setup/index.mjs +35 -33
- package/dist/astro/routes/api/setup/index.mjs.map +1 -1
- package/dist/astro/routes/api/setup/status.mjs +3 -3
- package/dist/astro/routes/api/snapshot.mjs +8 -7
- package/dist/astro/routes/api/snapshot.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/reorder.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +22 -17
- package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +23 -18
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +27 -19
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +22 -17
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +16 -15
- package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_.mjs +28 -20
- package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/index.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/index.mjs +22 -17
- package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
- package/dist/astro/routes/api/themes/preview.mjs +5 -5
- package/dist/astro/routes/api/typegen.mjs +4 -4
- package/dist/astro/routes/api/well-known/auth.mjs +2 -2
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
- package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +10 -8
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +18 -14
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +16 -13
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_.mjs +9 -7
- package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/index.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/index.mjs +16 -13
- package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
- package/dist/astro/routes/api/widget-components.mjs +2 -2
- package/dist/astro/routes/robots.txt.mjs +8 -8
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +13 -12
- package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
- package/dist/astro/routes/sitemap.xml.mjs +9 -9
- package/dist/astro/types.d.mts +50 -20
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/auth/providers/github.d.mts +1 -1
- package/dist/auth/providers/google.d.mts +1 -1
- package/dist/{authorize-ByYs-Uxs.mjs → authorize-C2QHlWSS.mjs} +2 -2
- package/dist/{authorize-ByYs-Uxs.mjs.map → authorize-C2QHlWSS.mjs.map} +1 -1
- package/dist/{backup-ChyHfIoX.mjs → backup-oS8ft5Cm.mjs} +5 -5
- package/dist/{backup-ChyHfIoX.mjs.map → backup-oS8ft5Cm.mjs.map} +1 -1
- package/dist/{bundle-DZFhFurR.mjs → bundle-CL0JjIPx.mjs} +4 -4
- package/dist/{bundle-DZFhFurR.mjs.map → bundle-CL0JjIPx.mjs.map} +1 -1
- package/dist/{byline-Cpnwrje1.mjs → byline-Vdi85CsZ.mjs} +27 -14
- package/dist/byline-Vdi85CsZ.mjs.map +1 -0
- package/dist/{byline-fields-CAyA_Umd.mjs → byline-fields-DPVRFMz2.mjs} +2 -2
- package/dist/{byline-fields-CAyA_Umd.mjs.map → byline-fields-DPVRFMz2.mjs.map} +1 -1
- package/dist/{byline-registry-Bpu9-MVs.mjs → byline-registry-BxDGIO0I.mjs} +2 -2
- package/dist/{byline-registry-Bpu9-MVs.mjs.map → byline-registry-BxDGIO0I.mjs.map} +1 -1
- package/dist/{bylines-BSo9B9RX.mjs → bylines-BX8QhcTk.mjs} +7 -7
- package/dist/{bylines-BSo9B9RX.mjs.map → bylines-BX8QhcTk.mjs.map} +1 -1
- package/dist/{bylines-CHjvehVX.mjs → bylines-w-E1IEQd.mjs} +3 -3
- package/dist/{bylines-CHjvehVX.mjs.map → bylines-w-E1IEQd.mjs.map} +1 -1
- package/dist/{cache-5VirJ2Cn.mjs → cache--7HKu5Xm.mjs} +4 -4
- package/dist/{cache-5VirJ2Cn.mjs.map → cache--7HKu5Xm.mjs.map} +1 -1
- package/dist/{capture-triggers-CNW1q3HK.mjs → capture-triggers-CeAsC76Z.mjs} +2 -2
- package/dist/{capture-triggers-CNW1q3HK.mjs.map → capture-triggers-CeAsC76Z.mjs.map} +1 -1
- package/dist/{challenge-store-D5pSY2S1.mjs → challenge-store-BIOak-tp.mjs} +5 -3
- package/dist/challenge-store-BIOak-tp.mjs.map +1 -0
- package/dist/chrome-tags-DzDQBCjX.mjs +24 -0
- package/dist/chrome-tags-DzDQBCjX.mjs.map +1 -0
- package/dist/{chunks-bNiX6_DR.mjs → chunks-VG_tyqnP.mjs} +2 -2
- package/dist/{chunks-bNiX6_DR.mjs.map → chunks-VG_tyqnP.mjs.map} +1 -1
- package/dist/cli/index.mjs +68 -40
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/cf-access.d.mts +1 -1
- package/dist/client/index.d.mts +17 -7
- package/dist/client/index.d.mts.map +1 -1
- package/dist/client/index.mjs +17 -12
- package/dist/client/index.mjs.map +1 -1
- package/dist/{collection-deletion-m_oi2c0N.mjs → collection-deletion-BCwaWTDw.mjs} +4 -4
- package/dist/{collection-deletion-m_oi2c0N.mjs.map → collection-deletion-BCwaWTDw.mjs.map} +1 -1
- package/dist/collection-slugs-cache-7lTmNzeA.mjs +85 -0
- package/dist/collection-slugs-cache-7lTmNzeA.mjs.map +1 -0
- package/dist/{comment-reaction-CRuItEjt.mjs → comment-reaction-CDyvPQRj.mjs} +2 -2
- package/dist/{comment-reaction-CRuItEjt.mjs.map → comment-reaction-CDyvPQRj.mjs.map} +1 -1
- package/dist/{comment-DhvLEdhQ.mjs → comment-vxOzWbZN.mjs} +2 -2
- package/dist/{comment-DhvLEdhQ.mjs.map → comment-vxOzWbZN.mjs.map} +1 -1
- package/dist/{comments-CLj4bi8I.mjs → comments-VzmVLyaC.mjs} +2 -2
- package/dist/{comments-CLj4bi8I.mjs.map → comments-VzmVLyaC.mjs.map} +1 -1
- package/dist/{components-v4U4DT2y.mjs → components-CL6Wkdk-.mjs} +1 -1
- package/dist/{components-v4U4DT2y.mjs.map → components-CL6Wkdk-.mjs.map} +1 -1
- package/dist/config--eWjQJE5.mjs +217 -0
- package/dist/config--eWjQJE5.mjs.map +1 -0
- package/dist/{index-DWbJrsAg.d.mts → config-CGAhyOjP.d.mts} +276 -76
- package/dist/config-CGAhyOjP.d.mts.map +1 -0
- package/dist/{config-DrfghTPe.d.mts → config-ChFzshGd.d.mts} +1 -1
- package/dist/{config-DrfghTPe.d.mts.map → config-ChFzshGd.d.mts.map} +1 -1
- package/dist/{content-CP-SeXNa.mjs → content-CNfMWuhY.mjs} +202 -46
- package/dist/content-CNfMWuhY.mjs.map +1 -0
- package/dist/{content-list-query-BhejKVqb.d.mts → content-list-query-B8d4UQp9.d.mts} +1 -1
- package/dist/{content-list-query-BhejKVqb.d.mts.map → content-list-query-B8d4UQp9.d.mts.map} +1 -1
- package/dist/{content-refresh-DLOfIhYc.mjs → content-refresh-GTMyi2Xy.mjs} +53 -26
- package/dist/content-refresh-GTMyi2Xy.mjs.map +1 -0
- package/dist/{content-repair-BCxzy0r4.mjs → content-repair-CIMt5C0U.mjs} +4 -4
- package/dist/{content-repair-BCxzy0r4.mjs.map → content-repair-CIMt5C0U.mjs.map} +1 -1
- package/dist/{context-BR5hRWiK.mjs → context-C9PB8vGd.mjs} +308 -33
- package/dist/context-C9PB8vGd.mjs.map +1 -0
- package/dist/{cron-CWfWrWKG.mjs → cron-DHAy9oyq.mjs} +1 -1
- package/dist/{cron-CWfWrWKG.mjs.map → cron-DHAy9oyq.mjs.map} +1 -1
- package/dist/{dashboard-CkIV2rnQ.mjs → dashboard-BNSvAN8A.mjs} +5 -5
- package/dist/{dashboard-CkIV2rnQ.mjs.map → dashboard-BNSvAN8A.mjs.map} +1 -1
- package/dist/db/index.d.mts +3 -3
- package/dist/db/index.mjs +2 -2
- package/dist/db/index.mjs.map +1 -1
- package/dist/db/libsql-migrations.d.mts +1 -1
- package/dist/db/libsql-migrations.mjs +5 -5
- package/dist/db/libsql.d.mts +1 -1
- package/dist/db/postgres-migrations.d.mts +1 -1
- package/dist/db/postgres-migrations.mjs +5 -5
- package/dist/db/postgres.d.mts +1 -1
- package/dist/db/postgres.d.mts.map +1 -1
- package/dist/db/postgres.mjs +19 -3
- package/dist/db/postgres.mjs.map +1 -1
- package/dist/db/sqlite-migrations.d.mts +1 -1
- package/dist/db/sqlite-migrations.mjs +5 -5
- package/dist/db/sqlite.d.mts +1 -1
- package/dist/db/sqlite.mjs +1 -1
- package/dist/{default-YMEfcQUx.mjs → default-ByZ0JqZo.mjs} +1 -1
- package/dist/{default-YMEfcQUx.mjs.map → default-ByZ0JqZo.mjs.map} +1 -1
- package/dist/{deferred-tasks-DfqxH5Xf.d.mts → deferred-tasks-Cu4NSJpa.d.mts} +1 -1
- package/dist/{deferred-tasks-DfqxH5Xf.d.mts.map → deferred-tasks-Cu4NSJpa.d.mts.map} +1 -1
- package/dist/dev-typegen-DHT7lcMU.mjs +29 -0
- package/dist/dev-typegen-DHT7lcMU.mjs.map +1 -0
- package/dist/{device-flow-CojjSBwb.mjs → device-flow-Cf6bhCCT.mjs} +4 -4
- package/dist/{device-flow-CojjSBwb.mjs.map → device-flow-Cf6bhCCT.mjs.map} +1 -1
- package/dist/{dialect-helpers-BSbfaO3F.mjs → dialect-helpers-BcQvkHgn.mjs} +83 -2
- package/dist/dialect-helpers-BcQvkHgn.mjs.map +1 -0
- package/dist/{direct-executor-BWeWiRYB.mjs → direct-executor-yAyUGSqB.mjs} +3 -3
- package/dist/{direct-executor-BWeWiRYB.mjs.map → direct-executor-yAyUGSqB.mjs.map} +1 -1
- package/dist/{dist-89xCrGqi.mjs → dist-BAsh8dbf.mjs} +1 -1
- package/dist/{dist-89xCrGqi.mjs.map → dist-BAsh8dbf.mjs.map} +1 -1
- package/dist/{email-console-CEJgR_LB.mjs → email-console-DNup1Fku.mjs} +1 -1
- package/dist/{email-console-CEJgR_LB.mjs.map → email-console-DNup1Fku.mjs.map} +1 -1
- package/dist/{enrich-BX0IDp4z.mjs → enrich-t2Xvjdqa.mjs} +3 -3
- package/dist/{enrich-BX0IDp4z.mjs.map → enrich-t2Xvjdqa.mjs.map} +1 -1
- package/dist/entry-lock-BEr8gDkG.mjs +163 -0
- package/dist/entry-lock-BEr8gDkG.mjs.map +1 -0
- package/dist/{relations-C7B46bcU.d.mts → entry-lock-CGAtrwAR.d.mts} +265 -76
- package/dist/entry-lock-CGAtrwAR.d.mts.map +1 -0
- package/dist/{redirects-CRIM55KH.mjs → entry-lock-DIYHAaSw.mjs} +112 -34
- package/dist/entry-lock-DIYHAaSw.mjs.map +1 -0
- package/dist/entry-locks-BEcX7ET0.mjs +167 -0
- package/dist/entry-locks-BEcX7ET0.mjs.map +1 -0
- package/dist/{error-D9w94fjV.mjs → error-BDcFyoRt.mjs} +2 -2
- package/dist/{error-D9w94fjV.mjs.map → error-BDcFyoRt.mjs.map} +1 -1
- package/dist/{errors-n2j49uNf.mjs → errors-DvMdNrgf.mjs} +10 -1
- package/dist/errors-DvMdNrgf.mjs.map +1 -0
- package/dist/{escape-DN4Qmjsl.mjs → escape-B3asJC6W.mjs} +1 -1
- package/dist/{escape-DN4Qmjsl.mjs.map → escape-B3asJC6W.mjs.map} +1 -1
- package/dist/{field-defs-cache-Bh4q6oar.mjs → field-defs-cache-Cf5FHK0M.mjs} +5 -5
- package/dist/{field-defs-cache-Bh4q6oar.mjs.map → field-defs-cache-Cf5FHK0M.mjs.map} +1 -1
- package/dist/{fts-manager-BhOdW0bi.mjs → fts-manager-iddym8cd.mjs} +4 -4
- package/dist/{fts-manager-BhOdW0bi.mjs.map → fts-manager-iddym8cd.mjs.map} +1 -1
- package/dist/{hash-CTcngWvj.mjs → hash-BRweX6jz.mjs} +1 -1
- package/dist/{hash-CTcngWvj.mjs.map → hash-BRweX6jz.mjs.map} +1 -1
- package/dist/hook-result-BrshYHLx.d.mts +31 -0
- package/dist/hook-result-BrshYHLx.d.mts.map +1 -0
- package/dist/{hreflang-7pTHsLZJ.d.mts → hreflang-CQpu5bMy.d.mts} +2 -2
- package/dist/{hreflang-7pTHsLZJ.d.mts.map → hreflang-CQpu5bMy.d.mts.map} +1 -1
- package/dist/{hreflang-Huc6O5wa.mjs → hreflang-DshnweTC.mjs} +9 -8
- package/dist/{hreflang-Huc6O5wa.mjs.map → hreflang-DshnweTC.mjs.map} +1 -1
- package/dist/{identity-DXmb4aVp.mjs → identity-CjGKDq8J.mjs} +3 -3
- package/dist/{identity-DXmb4aVp.mjs.map → identity-CjGKDq8J.mjs.map} +1 -1
- package/dist/{import-C4_O3KXU.mjs → import-D96g2otw.mjs} +6 -6
- package/dist/{import-C4_O3KXU.mjs.map → import-D96g2otw.mjs.map} +1 -1
- package/dist/{index-6bRee8zb.d.mts → index-1ECYpfiF.d.mts} +3 -3
- package/dist/{index-6bRee8zb.d.mts.map → index-1ECYpfiF.d.mts.map} +1 -1
- package/dist/index.d.mts +22 -21
- package/dist/index.mjs +84 -81
- package/dist/{init-lock-DJkX6Hto.mjs → init-lock-CFNBe_iH.mjs} +1 -1
- package/dist/{init-lock-DJkX6Hto.mjs.map → init-lock-CFNBe_iH.mjs.map} +1 -1
- package/dist/{load-Bo7fZAbg.mjs → load-DPtY9cZo.mjs} +2 -2
- package/dist/{load-Bo7fZAbg.mjs.map → load-DPtY9cZo.mjs.map} +1 -1
- package/dist/{loader-ZsjE4paL.mjs → loader-WJi6GFRn.mjs} +90 -17
- package/dist/loader-WJi6GFRn.mjs.map +1 -0
- package/dist/{manifest-builder-QXuqvVMP.mjs → manifest-builder-BfNlGQIA.mjs} +2 -2
- package/dist/{manifest-builder-QXuqvVMP.mjs.map → manifest-builder-BfNlGQIA.mjs.map} +1 -1
- package/dist/{manifest-schema-CUYPfCEH.mjs → manifest-schema-CILooI5J.mjs} +5 -5
- package/dist/manifest-schema-CILooI5J.mjs.map +1 -0
- package/dist/media/image-endpoint.d.mts +4 -2
- package/dist/media/image-endpoint.d.mts.map +1 -1
- package/dist/media/image-endpoint.mjs +6 -4
- package/dist/media/image-endpoint.mjs.map +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/index.mjs +3 -3
- package/dist/media/local-runtime.d.mts +12 -12
- package/dist/media/local-runtime.mjs +7 -7
- package/dist/{media-D6SeAfBl.mjs → media-BBm8Wg3f.mjs} +30 -2
- package/dist/media-BBm8Wg3f.mjs.map +1 -0
- package/dist/{media-BjwNuLEu.mjs → media-C1EIZKh1.mjs} +35 -5
- package/dist/media-C1EIZKh1.mjs.map +1 -0
- package/dist/{media-allowlist-D35v7bmL.mjs → media-allowlist-elXJgb_K.mjs} +2 -2
- package/dist/{media-allowlist-D35v7bmL.mjs.map → media-allowlist-elXJgb_K.mjs.map} +1 -1
- package/dist/{media-folders-D-0CmRZj.mjs → media-folders-DASfX_DH.mjs} +1 -1
- package/dist/{media-folders-D-0CmRZj.mjs.map → media-folders-DASfX_DH.mjs.map} +1 -1
- package/dist/{media-upload-C7bLXGcI.mjs → media-upload-C7_AQJ5v.mjs} +9 -9
- package/dist/{media-upload-C7bLXGcI.mjs.map → media-upload-C7_AQJ5v.mjs.map} +1 -1
- package/dist/{media-url-DH7giMx_.mjs → media-url-8dVl1loq.mjs} +19 -2
- package/dist/media-url-8dVl1loq.mjs.map +1 -0
- package/dist/{media-usage-BTRJvS6V.mjs → media-usage-C1EswMTq.mjs} +10 -10
- package/dist/{media-usage-BTRJvS6V.mjs.map → media-usage-C1EswMTq.mjs.map} +1 -1
- package/dist/{media-usage-activation-Dx0kPV6b.mjs → media-usage-activation-CrHNltlL.mjs} +3 -3
- package/dist/{media-usage-activation-Dx0kPV6b.mjs.map → media-usage-activation-CrHNltlL.mjs.map} +1 -1
- package/dist/{media-usage-work-C-fhM30c.mjs → media-usage-work-C5B1zT1c.mjs} +2 -2
- package/dist/{media-usage-work-C-fhM30c.mjs.map → media-usage-work-C5B1zT1c.mjs.map} +1 -1
- package/dist/{media-usage-work-DWb2XPMI.mjs → media-usage-work-IkQx_Yz6.mjs} +4 -4
- package/dist/{media-usage-work-DWb2XPMI.mjs.map → media-usage-work-IkQx_Yz6.mjs.map} +1 -1
- package/dist/{media-usage-write-fence-BwoJVRDC.mjs → media-usage-write-fence-B9anjOSg.mjs} +3 -3
- package/dist/{media-usage-write-fence-BwoJVRDC.mjs.map → media-usage-write-fence-B9anjOSg.mjs.map} +1 -1
- package/dist/{menus-CNg0QlDt.mjs → menus-D8mC4eaN.mjs} +406 -175
- package/dist/menus-D8mC4eaN.mjs.map +1 -0
- package/dist/{menus-CD7EFLwz.mjs → menus-UdwjHZJC.mjs} +12 -4
- package/dist/{menus-CD7EFLwz.mjs.map → menus-UdwjHZJC.mjs.map} +1 -1
- package/dist/migrations/index.d.mts +1 -1
- package/dist/migrations/index.mjs +4 -4
- package/dist/{mime-CUIG6x84.mjs → mime-DYpsOAny.mjs} +1 -1
- package/dist/{mime-CUIG6x84.mjs.map → mime-DYpsOAny.mjs.map} +1 -1
- package/dist/{mode-DaUM_MB2.mjs → mode-Dm4BHhRH.mjs} +1 -1
- package/dist/{mode-DaUM_MB2.mjs.map → mode-Dm4BHhRH.mjs.map} +1 -1
- package/dist/{node-sqlite-compat-Udb4Y-rs.mjs → node-sqlite-compat-2sezm-Zd.mjs} +1 -1
- package/dist/{node-sqlite-compat-Udb4Y-rs.mjs.map → node-sqlite-compat-2sezm-Zd.mjs.map} +1 -1
- package/dist/{normalize-CSxdKBVa.mjs → normalize-4nkKGsuW.mjs} +15 -5
- package/dist/normalize-4nkKGsuW.mjs.map +1 -0
- package/dist/{oauth-authorization-Dpsb-fMJ.mjs → oauth-authorization-BxE_lURD.mjs} +4 -4
- package/dist/{oauth-authorization-Dpsb-fMJ.mjs.map → oauth-authorization-BxE_lURD.mjs.map} +1 -1
- package/dist/{oauth-clients-Bxnoe_67.mjs → oauth-clients-DJIdOdq0.mjs} +1 -1
- package/dist/{oauth-clients-Bxnoe_67.mjs.map → oauth-clients-DJIdOdq0.mjs.map} +1 -1
- package/dist/{oauth-state-store-0C4s0K6w.mjs → oauth-state-store-CsdxP57n.mjs} +1 -1
- package/dist/{oauth-state-store-0C4s0K6w.mjs.map → oauth-state-store-CsdxP57n.mjs.map} +1 -1
- package/dist/{oauth-user-lookup-wlGYSeqX.mjs → oauth-user-lookup-HzzW-dkF.mjs} +1 -1
- package/dist/{oauth-user-lookup-wlGYSeqX.mjs.map → oauth-user-lookup-HzzW-dkF.mjs.map} +1 -1
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/{object-cache-71tPfV4A.mjs → object-cache-DVKnyOfy.mjs} +19 -3
- package/dist/object-cache-DVKnyOfy.mjs.map +1 -0
- package/dist/{options-BHPeIbBd.mjs → options-D1FBiAv1.mjs} +60 -5
- package/dist/options-D1FBiAv1.mjs.map +1 -0
- package/dist/{options-BhZIeFY1.d.mts → options-D8Y0VHc7.d.mts} +30 -11
- package/dist/options-D8Y0VHc7.d.mts.map +1 -0
- package/dist/page/index.d.mts +2 -2
- package/dist/page/index.d.mts.map +1 -1
- package/dist/page/index.mjs +12 -0
- package/dist/page/index.mjs.map +1 -1
- package/dist/{parse-BRJg1kz8.mjs → parse-WRg5C3NX.mjs} +2 -2
- package/dist/{parse-BRJg1kz8.mjs.map → parse-WRg5C3NX.mjs.map} +1 -1
- package/dist/{passkey-config-B3P0nHRR.mjs → passkey-config-qIdO-wF6.mjs} +1 -1
- package/dist/{passkey-config-B3P0nHRR.mjs.map → passkey-config-qIdO-wF6.mjs.map} +1 -1
- package/dist/{patterns-D9iDO3j8.mjs → patterns-DC8CLptu.mjs} +1 -1
- package/dist/{patterns-D9iDO3j8.mjs.map → patterns-DC8CLptu.mjs.map} +1 -1
- package/dist/{placeholder-BR4ZhVJl.d.mts → placeholder-COrvARyD.d.mts} +1 -1
- package/dist/{placeholder-BR4ZhVJl.d.mts.map → placeholder-COrvARyD.d.mts.map} +1 -1
- package/dist/plugin-types.d.mts +8 -3
- package/dist/plugin-types.d.mts.map +1 -1
- package/dist/plugin-utils.d.mts +10 -10
- package/dist/plugins/adapt-sandbox-entry.d.mts +10 -10
- package/dist/plugins/adapt-sandbox-entry.mjs +2 -2
- package/dist/{policy-BVRganJQ.mjs → policy-XCfb-IE9.mjs} +2 -2
- package/dist/{policy-BVRganJQ.mjs.map → policy-XCfb-IE9.mjs.map} +1 -1
- package/dist/{portable-text-C8Tvp4_g.mjs → portable-text-BS3d5n-0.mjs} +1 -1
- package/dist/{portable-text-C8Tvp4_g.mjs.map → portable-text-BS3d5n-0.mjs.map} +1 -1
- package/dist/{preview-dn2dUyM0.mjs → preview-BxwsGgGp.mjs} +2 -2
- package/dist/{preview-dn2dUyM0.mjs.map → preview-BxwsGgGp.mjs.map} +1 -1
- package/dist/{protocol-CuBEsqgE.d.mts → protocol-CLn58-nw.d.mts} +2 -2
- package/dist/{protocol-CuBEsqgE.d.mts.map → protocol-CLn58-nw.d.mts.map} +1 -1
- package/dist/{public-url-DRz_AinV.mjs → public-url-FWWAvnre.mjs} +1 -1
- package/dist/{public-url-DRz_AinV.mjs.map → public-url-FWWAvnre.mjs.map} +1 -1
- package/dist/{query-D18vTdha.mjs → query-DygOte9M.mjs} +26 -17
- package/dist/query-DygOte9M.mjs.map +1 -0
- package/dist/{query-tZDEdtCN.mjs → query-gtXT03Wc.mjs} +5 -5
- package/dist/{query-tZDEdtCN.mjs.map → query-gtXT03Wc.mjs.map} +1 -1
- package/dist/{rate-limit-on7KPo-v.mjs → rate-limit-CQUPm0dh.mjs} +2 -2
- package/dist/{rate-limit-on7KPo-v.mjs.map → rate-limit-CQUPm0dh.mjs.map} +1 -1
- package/dist/{redirect-DrbEmU9a.mjs → redirect-D1cWafi6.mjs} +1 -1
- package/dist/{redirect-DrbEmU9a.mjs.map → redirect-D1cWafi6.mjs.map} +1 -1
- package/dist/{redirect-CZkbozu9.mjs → redirect-DId44BS1.mjs} +19 -6
- package/dist/redirect-DId44BS1.mjs.map +1 -0
- package/dist/{redirects-BahWiu8Z.mjs → redirects-DN-ZE33W.mjs} +5 -5
- package/dist/{redirects-BahWiu8Z.mjs.map → redirects-DN-ZE33W.mjs.map} +1 -1
- package/dist/{registry-Cx-jEJOS.mjs → registry-DTqaqxed.mjs} +46 -12
- package/dist/registry-DTqaqxed.mjs.map +1 -0
- package/dist/{relation-A6wLF_DS.mjs → relation-DxgCHOBw.mjs} +2 -2
- package/dist/{relation-A6wLF_DS.mjs.map → relation-DxgCHOBw.mjs.map} +1 -1
- package/dist/{relations-Cj5hZ6Zg.mjs → relations-KKDSLUwS.mjs} +4 -4
- package/dist/{relations-Cj5hZ6Zg.mjs.map → relations-KKDSLUwS.mjs.map} +1 -1
- package/dist/{relations-BTPM2saV.mjs → relations-rOmbndUJ.mjs} +8 -8
- package/dist/relations-rOmbndUJ.mjs.map +1 -0
- package/dist/{request-cache-DH9zdCOD.mjs → request-cache-DAZZmesc.mjs} +1 -1
- package/dist/{request-cache-DH9zdCOD.mjs.map → request-cache-DAZZmesc.mjs.map} +1 -1
- package/dist/request-context.d.mts +1 -1
- package/dist/{request-meta-DRp5ENd_.mjs → request-meta-BgjUQLQ-.mjs} +2 -2
- package/dist/{request-meta-DRp5ENd_.mjs.map → request-meta-BgjUQLQ-.mjs.map} +1 -1
- package/dist/{resolve-DxUpTMmE.mjs → resolve-Cy0aWSRj.mjs} +37 -4
- package/dist/resolve-Cy0aWSRj.mjs.map +1 -0
- package/dist/{runner-zgqA_CqP.d.mts → runner-CfwysRM0.d.mts} +3 -2
- package/dist/runner-CfwysRM0.d.mts.map +1 -0
- package/dist/{runner-77GOZCnH.mjs → runner-nEzvnogG.mjs} +476 -295
- package/dist/runner-nEzvnogG.mjs.map +1 -0
- package/dist/runtime.d.mts +11 -11
- package/dist/runtime.mjs +3 -2
- package/dist/runtime.mjs.map +1 -1
- package/dist/{schema-BY-oVntF.mjs → schema-CRu38Pr5.mjs} +3 -3
- package/dist/{schema-BY-oVntF.mjs.map → schema-CRu38Pr5.mjs.map} +1 -1
- package/dist/{schema-Cw9kVK0I.mjs → schema-DifxndJx.mjs} +5 -5
- package/dist/{schema-Cw9kVK0I.mjs.map → schema-DifxndJx.mjs.map} +1 -1
- package/dist/{scopes-vMR1uIbt.mjs → scopes-D5A1OZbq.mjs} +3 -3
- package/dist/{scopes-vMR1uIbt.mjs.map → scopes-D5A1OZbq.mjs.map} +1 -1
- package/dist/{search-CfT3KxO5.mjs → search-DEPFSBFq.mjs} +4 -4
- package/dist/{search-CfT3KxO5.mjs.map → search-DEPFSBFq.mjs.map} +1 -1
- package/dist/{secrets-BH2Qow1-.mjs → secrets-CdfzLdoO.mjs} +3 -3
- package/dist/{secrets-BH2Qow1-.mjs.map → secrets-CdfzLdoO.mjs.map} +1 -1
- package/dist/{sections-DTfjyf1z.mjs → sections-3X52kmIR.mjs} +2 -2
- package/dist/{sections-DTfjyf1z.mjs.map → sections-3X52kmIR.mjs.map} +1 -1
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +28 -26
- package/dist/seo/index.d.mts +3 -3
- package/dist/seo/index.d.mts.map +1 -1
- package/dist/seo/index.mjs +20 -21
- package/dist/seo/index.mjs.map +1 -1
- package/dist/{seo-Cm-dtvgk.mjs → seo-Bw68KxRc.mjs} +3 -3
- package/dist/{seo-Cm-dtvgk.mjs.map → seo-Bw68KxRc.mjs.map} +1 -1
- package/dist/{seo-BSiTIXzd.mjs → seo-C4AmbsMU.mjs} +3 -2
- package/dist/seo-C4AmbsMU.mjs.map +1 -0
- package/dist/{service-DYsDHEKe.mjs → service-J_-Vgo7R.mjs} +3 -3
- package/dist/{service-DYsDHEKe.mjs.map → service-J_-Vgo7R.mjs.map} +1 -1
- package/dist/{session-user-CNAfvsdw.mjs → session-user-CbnMMwk6.mjs} +1 -1
- package/dist/{session-user-CNAfvsdw.mjs.map → session-user-CbnMMwk6.mjs.map} +1 -1
- package/dist/{settings-DjtkUo__.mjs → settings-AnEFYICn.mjs} +3 -3
- package/dist/{settings-DjtkUo__.mjs.map → settings-AnEFYICn.mjs.map} +1 -1
- package/dist/{settings-BgN-0DT-.mjs → settings-DcMjREe5.mjs} +21 -8
- package/dist/settings-DcMjREe5.mjs.map +1 -0
- package/dist/{setup-complete-CcpXaPU7.mjs → setup-complete-BClXXTvr.mjs} +2 -2
- package/dist/{setup-complete-CcpXaPU7.mjs.map → setup-complete-BClXXTvr.mjs.map} +1 -1
- package/dist/{setup-nonce-Reyw30jg.mjs → setup-nonce-BheRa4RG.mjs} +1 -1
- package/dist/{setup-nonce-Reyw30jg.mjs.map → setup-nonce-BheRa4RG.mjs.map} +1 -1
- package/dist/{single-flight-cache-BPuGPdcN.mjs → single-flight-cache-jaswDzmQ.mjs} +2 -2
- package/dist/{single-flight-cache-BPuGPdcN.mjs.map → single-flight-cache-jaswDzmQ.mjs.map} +1 -1
- package/dist/{site-url-Cs_V9n3V.mjs → site-url-Bqf-ea3N.mjs} +3 -3
- package/dist/{site-url-Cs_V9n3V.mjs.map → site-url-Bqf-ea3N.mjs.map} +1 -1
- package/dist/{snapshot-DSB8P7Lm.mjs → snapshot-C4CtXntb.mjs} +51 -35
- package/dist/snapshot-C4CtXntb.mjs.map +1 -0
- package/dist/{ssrf-DqebVE34.mjs → ssrf-gl4gFNhw.mjs} +151 -93
- package/dist/ssrf-gl4gFNhw.mjs.map +1 -0
- package/dist/{state-BJfU9Uzw.mjs → state-1F6IOhdQ.mjs} +1 -1
- package/dist/{state-BJfU9Uzw.mjs.map → state-1F6IOhdQ.mjs.map} +1 -1
- package/dist/{status-DDu8HIQl.mjs → status-Cenfk_r5.mjs} +1 -1
- package/dist/{status-DDu8HIQl.mjs.map → status-Cenfk_r5.mjs.map} +1 -1
- package/dist/storage/local.d.mts +2 -1
- package/dist/storage/local.d.mts.map +1 -1
- package/dist/storage/local.mjs +1 -1
- package/dist/storage/local.mjs.map +1 -1
- package/dist/storage/s3.d.mts +2 -1
- package/dist/storage/s3.d.mts.map +1 -1
- package/dist/storage/s3.mjs +3 -2
- package/dist/storage/s3.mjs.map +1 -1
- package/dist/{target-D0o26Azo.mjs → target-CRzeTs8G.mjs} +1 -1
- package/dist/{target-D0o26Azo.mjs.map → target-CRzeTs8G.mjs.map} +1 -1
- package/dist/{taxonomies-CPGxo-bn.mjs → taxonomies-BOdxuZpV.mjs} +23 -13
- package/dist/taxonomies-BOdxuZpV.mjs.map +1 -0
- package/dist/{taxonomies-kmyudNGP.mjs → taxonomies-NcFDq5Gg.mjs} +58 -23
- package/dist/taxonomies-NcFDq5Gg.mjs.map +1 -0
- package/dist/{taxonomy-8X09dLN5.mjs → taxonomy-DP1vny4K.mjs} +12 -4
- package/dist/{taxonomy-8X09dLN5.mjs.map → taxonomy-DP1vny4K.mjs.map} +1 -1
- package/dist/{tokens-gTS-IVUp.mjs → tokens-CDk8ox9p.mjs} +1 -1
- package/dist/{tokens-gTS-IVUp.mjs.map → tokens-CDk8ox9p.mjs.map} +1 -1
- package/dist/{transport-_6R1ub7t.d.mts → transport-BVn4tVb9.d.mts} +1 -1
- package/dist/{transport-_6R1ub7t.d.mts.map → transport-BVn4tVb9.d.mts.map} +1 -1
- package/dist/{transport-fX59xaJz.mjs → transport-DP0JI-8i.mjs} +1 -1
- package/dist/{transport-fX59xaJz.mjs.map → transport-DP0JI-8i.mjs.map} +1 -1
- package/dist/{trusted-proxy-fe6nEgR4.mjs → trusted-proxy-BTM6UxqD.mjs} +1 -1
- package/dist/{trusted-proxy-fe6nEgR4.mjs.map → trusted-proxy-BTM6UxqD.mjs.map} +1 -1
- package/dist/{types-D_DWe7k9.d.mts → types-2n848aVW.d.mts} +3 -2
- package/dist/types-2n848aVW.d.mts.map +1 -0
- package/dist/types-A2cN6a4a.mjs +3 -0
- package/dist/{types-75KIqzL9.mjs → types-BMXnRIrX.mjs} +4 -2
- package/dist/types-BMXnRIrX.mjs.map +1 -0
- package/dist/{types-Vg6f5i3s.d.mts → types-BouXpOsa.d.mts} +121 -4
- package/dist/types-BouXpOsa.d.mts.map +1 -0
- package/dist/{types-BXUmsINL.mjs → types-ByG2coLw.mjs} +1 -1
- package/dist/{types-BXUmsINL.mjs.map → types-ByG2coLw.mjs.map} +1 -1
- package/dist/types-CQPWhPxE.mjs.map +1 -1
- package/dist/{types-Blb-MRC3.d.mts → types-DEfNJ__A.d.mts} +1 -1
- package/dist/{types-Blb-MRC3.d.mts.map → types-DEfNJ__A.d.mts.map} +1 -1
- package/dist/{types-Br-ERaxh.d.mts → types-DKcKSbtB.d.mts} +23 -7
- package/dist/types-DKcKSbtB.d.mts.map +1 -0
- package/dist/{types-BzBd3PeX.d.mts → types-DRYs7uTL.d.mts} +1 -1
- package/dist/{types-BzBd3PeX.d.mts.map → types-DRYs7uTL.d.mts.map} +1 -1
- package/dist/{types-CLqvnd05.d.mts → types-DaEg7KX2.d.mts} +1 -1
- package/dist/{types-CLqvnd05.d.mts.map → types-DaEg7KX2.d.mts.map} +1 -1
- package/dist/{types-DJQxln7q.d.mts → types-LU8utpP_.d.mts} +14 -10
- package/dist/types-LU8utpP_.d.mts.map +1 -0
- package/dist/{types-D5VVLr7J.d.mts → types-VpYfPUxN.d.mts} +1 -1
- package/dist/{types-D5VVLr7J.d.mts.map → types-VpYfPUxN.d.mts.map} +1 -1
- package/dist/{types-DM3vioBY.mjs → types-c9GP7Dj5.mjs} +1 -1
- package/dist/{types-DM3vioBY.mjs.map → types-c9GP7Dj5.mjs.map} +1 -1
- package/dist/{types-DHxzBjbD.d.mts → types-tJWDK__M.d.mts} +14 -1
- package/dist/types-tJWDK__M.d.mts.map +1 -0
- package/dist/{upload-attempts-CNyGSepg.mjs → upload-attempts-C6S2y-lp.mjs} +1 -1
- package/dist/{upload-attempts-CNyGSepg.mjs.map → upload-attempts-C6S2y-lp.mjs.map} +1 -1
- package/dist/{url-pattern-K-KdXcSe.mjs → url-pattern-UYtxVTuj.mjs} +1 -1
- package/dist/{url-pattern-K-KdXcSe.mjs.map → url-pattern-UYtxVTuj.mjs.map} +1 -1
- package/dist/{user-CtYY0tp2.mjs → user-DIsIXogT.mjs} +2 -2
- package/dist/{user-CtYY0tp2.mjs.map → user-DIsIXogT.mjs.map} +1 -1
- package/dist/{utils-HztC73hq.mjs → utils-BicP5Qbg.mjs} +2 -2
- package/dist/{utils-HztC73hq.mjs.map → utils-BicP5Qbg.mjs.map} +1 -1
- package/dist/{validate-Dd-IUjnZ.mjs → validate-D8VPn4Hv.mjs} +8 -3
- package/dist/validate-D8VPn4Hv.mjs.map +1 -0
- package/dist/{validate-DlqdOZXB.d.mts → validate-Df6Dvwbw.d.mts} +12 -7
- package/dist/validate-Df6Dvwbw.d.mts.map +1 -0
- package/dist/{validation-D83n7Npi.mjs → validation-CzMJn9Ku.mjs} +13 -11
- package/dist/{validation-D83n7Npi.mjs.map → validation-CzMJn9Ku.mjs.map} +1 -1
- package/dist/version-CK67_SXX.mjs +7 -0
- package/dist/{version-ri-sCyAp.mjs.map → version-CK67_SXX.mjs.map} +1 -1
- package/dist/{widgets-CpmZd9Q-.mjs → widgets-RFVAxQl3.mjs} +18 -5
- package/dist/widgets-RFVAxQl3.mjs.map +1 -0
- package/dist/{wxr-taxonomies-BFd0y72_.d.mts → wxr-taxonomies-BX4yQL9s.d.mts} +1 -1
- package/dist/{wxr-taxonomies-BFd0y72_.d.mts.map → wxr-taxonomies-BX4yQL9s.d.mts.map} +1 -1
- package/dist/{wxr-taxonomies-Df4vxWcU.mjs → wxr-taxonomies-Csdp7yde.mjs} +4 -4
- package/dist/{wxr-taxonomies-Df4vxWcU.mjs.map → wxr-taxonomies-Csdp7yde.mjs.map} +1 -1
- package/dist/{zod-generator-DylzusHh.mjs → zod-generator-CNRGdnBY.mjs} +11 -7
- package/dist/zod-generator-CNRGdnBY.mjs.map +1 -0
- package/package.json +16 -11
- package/src/api/errors.ts +9 -0
- package/src/api/handlers/content.ts +115 -90
- package/src/api/handlers/entry-lock.ts +206 -0
- package/src/api/handlers/index.ts +1 -0
- package/src/api/handlers/manifest.ts +162 -12
- package/src/api/handlers/marketplace.ts +28 -20
- package/src/api/handlers/media.ts +30 -0
- package/src/api/handlers/menus.ts +9 -0
- package/src/api/handlers/registry.ts +406 -297
- package/src/api/handlers/revision.ts +2 -1
- package/src/api/handlers/seo.ts +10 -1
- package/src/api/handlers/snapshot.ts +84 -72
- package/src/api/handlers/taxonomies.ts +25 -9
- package/src/api/openapi/document.ts +196 -11
- package/src/api/parse.ts +1 -1
- package/src/api/schemas/auth.ts +4 -4
- package/src/api/schemas/bylines.ts +3 -3
- package/src/api/schemas/comments.ts +1 -1
- package/src/api/schemas/common.ts +3 -2
- package/src/api/schemas/content.ts +86 -22
- package/src/api/schemas/entry-lock.ts +48 -0
- package/src/api/schemas/index.ts +1 -0
- package/src/api/schemas/media.ts +52 -0
- package/src/api/schemas/redirects.ts +6 -1
- package/src/api/schemas/schema.ts +14 -1
- package/src/api/schemas/setup.ts +1 -1
- package/src/api/schemas/taxonomies.ts +2 -2
- package/src/api/schemas/users.ts +1 -1
- package/src/api/types.ts +25 -10
- package/src/astro/dev-typegen.ts +35 -0
- package/src/astro/image-endpoint.ts +2 -2
- package/src/astro/integration/dev-typegen.ts +91 -0
- package/src/astro/integration/index.ts +18 -50
- package/src/astro/integration/routes.ts +10 -0
- package/src/astro/integration/runtime.ts +13 -5
- package/src/astro/integration/vite-config.ts +51 -2
- package/src/astro/middleware.ts +21 -0
- package/src/astro/routes/api/admin/api-tokens/index.ts +4 -1
- package/src/astro/routes/api/admin/oauth-clients/[id].ts +1 -1
- package/src/astro/routes/api/admin/oauth-clients/index.ts +1 -1
- package/src/astro/routes/api/admin/plugins/registry/[id]/update.ts +4 -0
- package/src/astro/routes/api/admin/plugins/registry/artifact.ts +3 -7
- package/src/astro/routes/api/admin/plugins/registry/install.ts +4 -0
- package/src/astro/routes/api/admin/plugins/registry/verify.ts +60 -0
- package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +18 -2
- package/src/astro/routes/api/content/[collection]/[id]/lock.ts +133 -0
- package/src/astro/routes/api/content/[collection]/[id]/publish.ts +12 -1
- package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +20 -0
- package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +16 -2
- package/src/astro/routes/api/content/[collection]/[id].ts +27 -2
- package/src/astro/routes/api/content/[collection]/index.ts +3 -0
- package/src/astro/routes/api/manifest.ts +1 -1
- package/src/astro/routes/api/media/[id]/replace.ts +114 -0
- package/src/astro/routes/api/media/file/[...key].ts +4 -1
- package/src/astro/routes/api/media/upload-url.ts +8 -4
- package/src/astro/routes/api/media.ts +54 -8
- package/src/astro/routes/api/menus/[name]/items/[id].ts +7 -2
- package/src/astro/routes/api/menus/[name]/items.ts +4 -1
- package/src/astro/routes/api/menus/[name]/reorder.ts +4 -1
- package/src/astro/routes/api/menus/[name]/translations.ts +4 -1
- package/src/astro/routes/api/menus/[name].ts +7 -2
- package/src/astro/routes/api/menus/index.ts +4 -1
- package/src/astro/routes/api/settings/email.ts +1 -1
- package/src/astro/routes/api/settings.ts +4 -1
- package/src/astro/routes/api/taxonomies/[name]/reorder.ts +4 -1
- package/src/astro/routes/api/taxonomies/[name]/terms/[slug]/translations.ts +4 -1
- package/src/astro/routes/api/taxonomies/[name]/terms/[slug].ts +7 -2
- package/src/astro/routes/api/taxonomies/[name]/terms/index.ts +4 -1
- package/src/astro/routes/api/taxonomies/[name].ts +7 -2
- package/src/astro/routes/api/taxonomies/index.ts +4 -1
- package/src/astro/routes/api/widget-areas/[name]/reorder.ts +3 -1
- package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +5 -2
- package/src/astro/routes/api/widget-areas/[name]/widgets.ts +3 -1
- package/src/astro/routes/api/widget-areas/[name].ts +3 -1
- package/src/astro/routes/api/widget-areas/index.ts +3 -1
- package/src/astro/routes/sitemap-[collection].xml.ts +4 -0
- package/src/astro/types.ts +36 -8
- package/src/auth/challenge-store.ts +3 -1
- package/src/aws-sdk.d.ts +1 -0
- package/src/cache/chrome-tags.ts +24 -0
- package/src/cli/commands/content.ts +31 -5
- package/src/cli/commands/export-seed.ts +2 -0
- package/src/client/index.ts +34 -7
- package/src/components/EmDashBodyEnd.astro +4 -1
- package/src/components/EmDashBodyStart.astro +4 -1
- package/src/components/EmDashHead.astro +35 -16
- package/src/components/EmDashImage.astro +2 -1
- package/src/components/EmDashMedia.astro +2 -1
- package/src/components/Gallery.astro +18 -4
- package/src/components/InlineEditor.astro +3 -1
- package/src/components/InlinePortableTextEditor.tsx +112 -12
- package/src/components/PortableText.astro +4 -0
- package/src/components/Table.astro +147 -62
- package/src/components/widgets/Archives.astro +2 -37
- package/src/config/errors.ts +13 -0
- package/src/content/converters/index.ts +2 -0
- package/src/content/converters/mark-safety.ts +1 -0
- package/src/content/converters/portable-text-identity.ts +139 -0
- package/src/content/converters/portable-text-to-prosemirror.ts +226 -69
- package/src/content/converters/prosemirror-to-portable-text.ts +128 -28
- package/src/content/converters/types.ts +11 -0
- package/src/database/dialect-helpers.ts +125 -0
- package/src/database/migrations/017_authorization_codes.ts +14 -4
- package/src/database/migrations/074_content_deleted_scheduled_index.ts +55 -0
- package/src/database/migrations/075_entry_edit_locks.ts +44 -0
- package/src/database/migrations/076_collection_nav_group.ts +22 -0
- package/src/database/migrations/077_plugin_storage_revisions.ts +89 -0
- package/src/database/migrations/runner.ts +9 -1
- package/src/database/repositories/byline.ts +32 -16
- package/src/database/repositories/content.ts +284 -48
- package/src/database/repositories/entry-locks.ts +257 -0
- package/src/database/repositories/media-usage.ts +66 -37
- package/src/database/repositories/media.ts +60 -1
- package/src/database/repositories/options.ts +69 -5
- package/src/database/repositories/plugin-storage.ts +233 -9
- package/src/database/repositories/redirect.ts +17 -6
- package/src/database/repositories/taxonomy.ts +8 -0
- package/src/database/repositories/types.ts +11 -7
- package/src/database/types.ts +15 -1
- package/src/db/adapters.ts +8 -1
- package/src/db/postgres.ts +23 -0
- package/src/emdash-runtime.ts +196 -199
- package/src/fields/boolean.ts +1 -1
- package/src/fields/datetime.ts +1 -1
- package/src/fields/file.ts +1 -1
- package/src/fields/integer.ts +1 -1
- package/src/fields/json.ts +1 -1
- package/src/fields/multiselect.ts +1 -1
- package/src/fields/number.ts +1 -1
- package/src/fields/portable-text.ts +1 -1
- package/src/fields/richtext.ts +1 -1
- package/src/fields/select.ts +1 -1
- package/src/fields/slug.ts +1 -1
- package/src/fields/text.ts +1 -1
- package/src/fields/textarea.ts +1 -1
- package/src/fields/types.ts +2 -2
- package/src/i18n/resolve.ts +44 -4
- package/src/index.ts +39 -3
- package/src/loader.ts +96 -12
- package/src/mcp/server.ts +251 -29
- package/src/media/image-endpoint.ts +5 -2
- package/src/media/normalize.ts +15 -4
- package/src/media/responsive.ts +23 -0
- package/src/media/usage/cleanup.ts +9 -8
- package/src/media/usage/content-refresh.ts +2 -1
- package/src/menus/index.ts +33 -21
- package/src/object-cache/index.ts +44 -2
- package/src/page/seo-contributions.ts +78 -1
- package/src/page/seo-panel.ts +47 -0
- package/src/plugin-types.ts +27 -1
- package/src/plugins/conditional-storage.ts +30 -0
- package/src/plugins/context.ts +49 -17
- package/src/plugins/hooks.ts +10 -1
- package/src/plugins/index.ts +15 -0
- package/src/plugins/manager.ts +6 -2
- package/src/plugins/manifest-schema.ts +1 -1
- package/src/plugins/routes.ts +3 -1
- package/src/plugins/sandbox/hook-result.ts +52 -0
- package/src/plugins/sandbox/index.ts +10 -0
- package/src/plugins/sandbox/types.ts +16 -2
- package/src/plugins/storage-query.ts +45 -0
- package/src/plugins/storage-update.ts +96 -0
- package/src/plugins/types.ts +120 -0
- package/src/query.ts +29 -3
- package/src/registry/artifact-checksum.ts +15 -0
- package/src/registry/artifact-verification.ts +85 -0
- package/src/registry/authoritative-records.ts +180 -0
- package/src/registry/config.ts +130 -27
- package/src/registry/record-labels.ts +28 -0
- package/src/registry/types.ts +5 -6
- package/src/schema/collection-slugs-cache.ts +157 -0
- package/src/schema/registry.ts +45 -3
- package/src/schema/types.ts +25 -6
- package/src/schema/zod-generator.ts +16 -13
- package/src/security/ssrf.ts +172 -143
- package/src/seed/apply.ts +4 -0
- package/src/seed/types.ts +7 -2
- package/src/seed/validate.ts +18 -1
- package/src/seo/hreflang.ts +1 -0
- package/src/seo/index.ts +5 -10
- package/src/seo/media-url.ts +26 -0
- package/src/settings/index.ts +16 -0
- package/src/storage/local.ts +1 -0
- package/src/storage/s3.ts +2 -0
- package/src/storage/types.ts +2 -0
- package/src/taxonomies/index.ts +40 -20
- package/src/taxonomies/term-counts.ts +22 -5
- package/src/widgets/archives.ts +67 -0
- package/src/widgets/index.ts +16 -0
- package/dist/api-B0w3uBiG.mjs +0 -2269
- package/dist/api-B0w3uBiG.mjs.map +0 -1
- package/dist/apply-B_VMpJ2P.mjs.map +0 -1
- package/dist/byline-Cpnwrje1.mjs.map +0 -1
- package/dist/challenge-store-D5pSY2S1.mjs.map +0 -1
- package/dist/content-CP-SeXNa.mjs.map +0 -1
- package/dist/content-refresh-DLOfIhYc.mjs.map +0 -1
- package/dist/context-BR5hRWiK.mjs.map +0 -1
- package/dist/dialect-helpers-BSbfaO3F.mjs.map +0 -1
- package/dist/errors-n2j49uNf.mjs.map +0 -1
- package/dist/index-DWbJrsAg.d.mts.map +0 -1
- package/dist/loader-ZsjE4paL.mjs.map +0 -1
- package/dist/manifest-schema-CUYPfCEH.mjs.map +0 -1
- package/dist/media-BjwNuLEu.mjs.map +0 -1
- package/dist/media-D6SeAfBl.mjs.map +0 -1
- package/dist/media-url-DH7giMx_.mjs.map +0 -1
- package/dist/menus-CNg0QlDt.mjs.map +0 -1
- package/dist/normalize-CSxdKBVa.mjs.map +0 -1
- package/dist/object-cache-71tPfV4A.mjs.map +0 -1
- package/dist/options-BHPeIbBd.mjs.map +0 -1
- package/dist/options-BhZIeFY1.d.mts.map +0 -1
- package/dist/query-D18vTdha.mjs.map +0 -1
- package/dist/redirect-CZkbozu9.mjs.map +0 -1
- package/dist/redirects-CRIM55KH.mjs.map +0 -1
- package/dist/registry-BiO5WwPq.mjs +0 -2716
- package/dist/registry-BiO5WwPq.mjs.map +0 -1
- package/dist/registry-Cx-jEJOS.mjs.map +0 -1
- package/dist/relations-BTPM2saV.mjs.map +0 -1
- package/dist/relations-C7B46bcU.d.mts.map +0 -1
- package/dist/resolve-DxUpTMmE.mjs.map +0 -1
- package/dist/runner-77GOZCnH.mjs.map +0 -1
- package/dist/runner-zgqA_CqP.d.mts.map +0 -1
- package/dist/seo-BSiTIXzd.mjs.map +0 -1
- package/dist/settings-BgN-0DT-.mjs.map +0 -1
- package/dist/snapshot-DSB8P7Lm.mjs.map +0 -1
- package/dist/ssrf-DqebVE34.mjs.map +0 -1
- package/dist/taxonomies-CPGxo-bn.mjs.map +0 -1
- package/dist/taxonomies-kmyudNGP.mjs.map +0 -1
- package/dist/types-75KIqzL9.mjs.map +0 -1
- package/dist/types-Br-ERaxh.d.mts.map +0 -1
- package/dist/types-D6OcIp2P.mjs +0 -3
- package/dist/types-DHxzBjbD.d.mts.map +0 -1
- package/dist/types-DJQxln7q.d.mts.map +0 -1
- package/dist/types-D_DWe7k9.d.mts.map +0 -1
- package/dist/types-Vg6f5i3s.d.mts.map +0 -1
- package/dist/validate-Dd-IUjnZ.mjs.map +0 -1
- package/dist/validate-DlqdOZXB.d.mts.map +0 -1
- package/dist/version-ri-sCyAp.mjs +0 -7
- package/dist/widgets-CpmZd9Q-.mjs.map +0 -1
- package/dist/zod-generator-DylzusHh.mjs.map +0 -1
- /package/dist/{api-tokens-B5NHLNUN.mjs → api-tokens-B_lfpmH3.mjs} +0 -0
- /package/dist/{ssrf-BPKzkm6O.mjs → ssrf-TQhaljuI.mjs} +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import "../../../config-C3EBstHi.mjs";
|
|
2
2
|
import { i as encodeBase64, t as decodeBase64 } from "../../../base64-CvLhUKQv.mjs";
|
|
3
3
|
import { i as InvalidCursorError, o as decodeCursor } from "../../../types-CQPWhPxE.mjs";
|
|
4
|
-
import { t as apiError } from "../../../error-
|
|
5
|
-
import { t as CONTENT_TYPE_RE } from "../../../media-
|
|
6
|
-
import {
|
|
7
|
-
import "../../../relations-
|
|
8
|
-
import "../../../status-
|
|
4
|
+
import { t as apiError } from "../../../error-BDcFyoRt.mjs";
|
|
5
|
+
import { t as CONTENT_TYPE_RE } from "../../../media-C1EIZKh1.mjs";
|
|
6
|
+
import { En as bylineUpdateBody, K as createTaxonomyDefBody, On as contentBylineInputSchema, Xt as updateFieldBody, Yt as updateCollectionBody, bn as bylineCreateBody, st as updateTaxonomyDefBody, un as contentSeoInput, zt as createCollectionBody } from "../../../entry-lock-DIYHAaSw.mjs";
|
|
7
|
+
import "../../../relations-rOmbndUJ.mjs";
|
|
8
|
+
import "../../../status-Cenfk_r5.mjs";
|
|
9
9
|
import "../../../api/schemas/index.mjs";
|
|
10
|
-
import { i as hasScope$1 } from "../../../api-tokens-
|
|
11
|
-
import { n as convertDataForWrite, t as convertDataForRead } from "../../../portable-text-
|
|
10
|
+
import { i as hasScope$1 } from "../../../api-tokens-B_lfpmH3.mjs";
|
|
11
|
+
import { n as convertDataForWrite, t as convertDataForRead } from "../../../portable-text-BS3d5n-0.mjs";
|
|
12
12
|
import { z } from "zod";
|
|
13
13
|
import { Permissions, Role, canActOnOwn, hasPermission } from "@emdash-cms/auth";
|
|
14
14
|
import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
|
|
@@ -18,8 +18,26 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
18
18
|
const COLLECTION_SLUG_PATTERN = /^[a-z][a-z0-9_]*$/;
|
|
19
19
|
/** http(s) scheme matcher used by `settings_update` URL validation. */
|
|
20
20
|
const HTTP_SCHEME_PATTERN = /^https?:\/\//i;
|
|
21
|
+
/**
|
|
22
|
+
* Shared wording for the `_rev` parameter on write tools. Agents only see the
|
|
23
|
+
* tool schema, so the retry protocol is stated here.
|
|
24
|
+
*/
|
|
25
|
+
const REV_PARAM_DESCRIPTION = "Revision token proving you have read the current item. Call content_get first and pass back the _rev it returns. If this call fails with CONFLICT the item changed in the meantime: call content_get again and retry with the new token.";
|
|
26
|
+
/**
|
|
27
|
+
* Replaces Zod's "expected string, received undefined" for a caller that never
|
|
28
|
+
* read the schema, so the message says where the token comes from.
|
|
29
|
+
*/
|
|
30
|
+
const REV_MISSING_ERROR = "_rev is required: call content_get for this item and pass back the _rev it returns.";
|
|
21
31
|
const TAXONOMY_CURSOR_VERSION = 2;
|
|
22
32
|
const MAX_TAXONOMY_CURSOR_LENGTH = 2048;
|
|
33
|
+
const contentDateTimeInputSchema = z.iso.datetime({
|
|
34
|
+
offset: true,
|
|
35
|
+
message: "must be an ISO 8601 datetime"
|
|
36
|
+
}).or(z.iso.datetime({
|
|
37
|
+
offset: true,
|
|
38
|
+
precision: -1,
|
|
39
|
+
message: "must be an ISO 8601 datetime"
|
|
40
|
+
}));
|
|
23
41
|
const settingsMediaReferenceSchema = z.object({
|
|
24
42
|
mediaId: z.string().describe("Media item ID (use media_create or media_list)"),
|
|
25
43
|
alt: z.string().optional().describe("Alt text for the media reference")
|
|
@@ -64,10 +82,14 @@ const schemaUpdateCollectionToolSchema = z.object({
|
|
|
64
82
|
urlPattern: updateCollectionBody.shape.urlPattern.describe("New public URL pattern; pass null to clear it"),
|
|
65
83
|
routable: updateCollectionBody.shape.routable.describe("Whether entries require a slug before they can be published"),
|
|
66
84
|
hasSeo: updateCollectionBody.shape.hasSeo.describe("Whether the collection supports SEO metadata"),
|
|
85
|
+
group: updateCollectionBody.shape.group.describe("Admin sidebar folder shared with other collections of the same group; pass null to move the collection back inline"),
|
|
67
86
|
commentsEnabled: updateCollectionBody.shape.commentsEnabled.describe("Whether comments are enabled for this collection"),
|
|
68
87
|
commentsModeration: updateCollectionBody.shape.commentsModeration.describe("Comment moderation policy"),
|
|
69
88
|
commentsClosedAfterDays: updateCollectionBody.shape.commentsClosedAfterDays.describe("Close comments after this many days; 0 keeps them open"),
|
|
70
|
-
commentsAutoApproveUsers: updateCollectionBody.shape.commentsAutoApproveUsers.describe("Whether comments from authenticated users are automatically approved")
|
|
89
|
+
commentsAutoApproveUsers: updateCollectionBody.shape.commentsAutoApproveUsers.describe("Whether comments from authenticated users are automatically approved"),
|
|
90
|
+
editLocking: updateCollectionBody.shape.editLocking.describe("Whether opening an entry takes an edit lock that refuses other editors' writes"),
|
|
91
|
+
titleField: updateCollectionBody.shape.titleField.describe("Field slug to use as the Title column in admin lists; pass null to fall back to the default"),
|
|
92
|
+
dateField: updateCollectionBody.shape.dateField.describe("Datetime field slug to use as the Date column in admin lists; pass null to fall back to the default")
|
|
71
93
|
});
|
|
72
94
|
const schemaUpdateFieldToolSchema = z.object({
|
|
73
95
|
collection: z.string().min(1).max(63).regex(COLLECTION_SLUG_PATTERN, "Invalid collection slug").describe("Collection slug containing the field"),
|
|
@@ -234,7 +256,7 @@ function getEmDash(extra) {
|
|
|
234
256
|
}
|
|
235
257
|
async function getCollectionFields(ec, collection) {
|
|
236
258
|
try {
|
|
237
|
-
const { SchemaRegistry } = await import("../../../schema-
|
|
259
|
+
const { SchemaRegistry } = await import("../../../schema-CRu38Pr5.mjs").then((n) => n.t);
|
|
238
260
|
const col = await new SchemaRegistry(ec.db).getCollectionWithFields(collection);
|
|
239
261
|
return col ? col.fields : null;
|
|
240
262
|
} catch {
|
|
@@ -263,7 +285,7 @@ async function applyReadMarkdown(ec, collection, items) {
|
|
|
263
285
|
for (const item of items) if (item.data && typeof item.data === "object") item.data = convertDataForRead(item.data, fields, false);
|
|
264
286
|
}
|
|
265
287
|
async function invalidateBylines() {
|
|
266
|
-
const { invalidateBylineCache } = await import("../../../bylines-
|
|
288
|
+
const { invalidateBylineCache } = await import("../../../bylines-BX8QhcTk.mjs").then((n) => n.t);
|
|
267
289
|
invalidateBylineCache();
|
|
268
290
|
}
|
|
269
291
|
/**
|
|
@@ -342,6 +364,12 @@ function extractContentId(data) {
|
|
|
342
364
|
const item = obj.item && typeof obj.item === "object" ? obj.item : obj;
|
|
343
365
|
return typeof item?.id === "string" ? item.id : void 0;
|
|
344
366
|
}
|
|
367
|
+
/** Extract the `_rev` token from a content handler response. */
|
|
368
|
+
function extractContentRev(data) {
|
|
369
|
+
if (!data || typeof data !== "object") return void 0;
|
|
370
|
+
const rev = data._rev;
|
|
371
|
+
return typeof rev === "string" ? rev : void 0;
|
|
372
|
+
}
|
|
345
373
|
function createMcpServer(pluginTools = [], request) {
|
|
346
374
|
const server = new McpServer({
|
|
347
375
|
name: "emdash",
|
|
@@ -430,7 +458,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
430
458
|
});
|
|
431
459
|
server.registerTool("content_get", {
|
|
432
460
|
title: "Get Content",
|
|
433
|
-
description: "Get a single content item by its ID or slug. Returns the full content data including all field values, metadata, and a _rev token
|
|
461
|
+
description: "Get a single content item by its ID or slug. Returns the full content data including all field values, metadata, and a _rev token. content_update, content_publish, content_unpublish and content_discard_draft require that token, so read the item here before calling them.",
|
|
434
462
|
inputSchema: z.object({
|
|
435
463
|
collection: z.string().describe("Collection slug (e.g. 'posts', 'pages')"),
|
|
436
464
|
id: z.string().describe("Content item ID (ULID) or slug"),
|
|
@@ -473,7 +501,11 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
473
501
|
}, async (args, extra) => {
|
|
474
502
|
requireScope(extra, "content:write");
|
|
475
503
|
requireRole(extra, Role.CONTRIBUTOR);
|
|
476
|
-
const { emdash, userId } = getExtra(extra);
|
|
504
|
+
const { emdash, userId, userRole } = getExtra(extra);
|
|
505
|
+
const actor = {
|
|
506
|
+
id: userId,
|
|
507
|
+
role: userRole
|
|
508
|
+
};
|
|
477
509
|
if (args.translationOf) {
|
|
478
510
|
const source = await emdash.handleContentGet(args.collection, args.translationOf);
|
|
479
511
|
if (!source.success) return unwrap(source);
|
|
@@ -483,7 +515,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
483
515
|
if (args.status === "published") {
|
|
484
516
|
if (!hasPermission({
|
|
485
517
|
id: userId,
|
|
486
|
-
role:
|
|
518
|
+
role: userRole
|
|
487
519
|
}, "content:publish_own")) throw new EmDashAuthError("Insufficient permissions: publishing requires content:publish_own", "INSUFFICIENT_PERMISSIONS");
|
|
488
520
|
const result = await emdash.handleContentCreate(args.collection, {
|
|
489
521
|
data,
|
|
@@ -492,7 +524,8 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
492
524
|
locale: args.locale,
|
|
493
525
|
translationOf: args.translationOf,
|
|
494
526
|
bylines: args.bylines,
|
|
495
|
-
taxonomies: args.taxonomies
|
|
527
|
+
taxonomies: args.taxonomies,
|
|
528
|
+
actor
|
|
496
529
|
});
|
|
497
530
|
if (!result.success) return unwrap(result);
|
|
498
531
|
const itemId = extractContentId(result.data);
|
|
@@ -506,12 +539,13 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
506
539
|
locale: args.locale,
|
|
507
540
|
translationOf: args.translationOf,
|
|
508
541
|
bylines: args.bylines,
|
|
509
|
-
taxonomies: args.taxonomies
|
|
542
|
+
taxonomies: args.taxonomies,
|
|
543
|
+
actor
|
|
510
544
|
}));
|
|
511
545
|
});
|
|
512
546
|
server.registerTool("content_update", {
|
|
513
547
|
title: "Update Content",
|
|
514
|
-
description: "Update an existing content item. Only include fields you want to change in the 'data' object — unspecified fields are left unchanged. Rich text (portableText) fields accept a Markdown string (recommended, converted automatically); use a Portable Text JSON array only for complex content Markdown can't express (custom blocks, embeds).
|
|
548
|
+
description: "Update an existing content item. Only include fields you want to change in the 'data' object — unspecified fields are left unchanged. Rich text (portableText) fields accept a Markdown string (recommended, converted automatically); use a Portable Text JSON array only for complex content Markdown can't express (custom blocks, embeds). Requires the _rev token from content_get, so read the item before updating it: the update fails if the item changed since that read. When status is not set, a change to a published item is staged as a draft, so the response shows the new values while the live version keeps the old ones until content_publish. `seo` and `bylines` are persisted alongside the field updates in a single transaction. `publishedAt` requires the content:publish_any permission and is useful for migrations or correcting historical dates.",
|
|
515
549
|
inputSchema: z.object({
|
|
516
550
|
collection: z.string().describe("Collection slug"),
|
|
517
551
|
id: z.string().describe("Content item ID or slug"),
|
|
@@ -522,16 +556,17 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
522
556
|
seo: contentSeoInput.optional().describe("Per-content SEO metadata. Only valid for collections with SEO enabled (see schema_get_collection.hasSeo). Fields not included are left unchanged; pass null to clear."),
|
|
523
557
|
bylines: z.array(contentBylineInputSchema).optional().describe("Replace the byline list for this item. The first entry becomes the primary byline. Pass an empty array to clear all bylines."),
|
|
524
558
|
taxonomies: z.record(z.string(), z.array(z.string())).optional().describe("Replace taxonomy term assignments as { taxonomyName: [termSlug, ...] }. Term slugs are resolved in the entry's locale. Only named taxonomies are touched; other taxonomies are left unchanged. Pass an empty array to clear a taxonomy."),
|
|
525
|
-
publishedAt:
|
|
526
|
-
|
|
527
|
-
message: "must be an ISO 8601 datetime"
|
|
528
|
-
}).nullish().describe("Override the publication timestamp (ISO 8601). Requires content:publish_any permission. Pass null to clear. Useful for content migrations."),
|
|
529
|
-
_rev: z.string().optional().describe("Revision token from content_get for conflict detection")
|
|
559
|
+
publishedAt: contentDateTimeInputSchema.nullish().describe("Override the publication timestamp (ISO 8601). Requires content:publish_any permission. Pass null to clear. Useful for content migrations."),
|
|
560
|
+
_rev: z.string({ error: REV_MISSING_ERROR }).describe(REV_PARAM_DESCRIPTION)
|
|
530
561
|
})
|
|
531
562
|
}, async (args, extra) => {
|
|
532
563
|
requireScope(extra, "content:write");
|
|
533
564
|
requireRole(extra, Role.AUTHOR);
|
|
534
565
|
const { emdash, userId, userRole } = getExtra(extra);
|
|
566
|
+
const actor = {
|
|
567
|
+
id: userId,
|
|
568
|
+
role: userRole
|
|
569
|
+
};
|
|
535
570
|
const existing = await emdash.handleContentGet(args.collection, args.id, args.locale);
|
|
536
571
|
if (!existing.success) return unwrap(existing);
|
|
537
572
|
const ownerId = extractContentAuthorId(existing.data);
|
|
@@ -546,11 +581,12 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
546
581
|
const resolvedId = extractContentId(existing.data) ?? args.id;
|
|
547
582
|
if (args.status === "published") {
|
|
548
583
|
requireOwnership(extra, ownerId, "content:publish_own", "content:publish_any");
|
|
584
|
+
let rev = args._rev;
|
|
549
585
|
if (args.data || args.slug || args.seo !== void 0 || args.bylines !== void 0 || args.taxonomies !== void 0 || args.publishedAt !== void 0) {
|
|
550
586
|
const updateResult = await emdash.handleContentUpdate(args.collection, resolvedId, {
|
|
551
587
|
data,
|
|
552
588
|
slug: args.slug,
|
|
553
|
-
|
|
589
|
+
actor,
|
|
554
590
|
locale: args.locale,
|
|
555
591
|
seo: args.seo,
|
|
556
592
|
bylines: args.bylines,
|
|
@@ -559,16 +595,18 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
559
595
|
_rev: args._rev
|
|
560
596
|
});
|
|
561
597
|
if (!updateResult.success) return unwrap(updateResult);
|
|
598
|
+
rev = extractContentRev(updateResult.data);
|
|
562
599
|
}
|
|
563
|
-
return unwrap(await emdash.handleContentPublish(args.collection, resolvedId));
|
|
600
|
+
return unwrap(await emdash.handleContentPublish(args.collection, resolvedId, { _rev: rev }));
|
|
564
601
|
}
|
|
565
602
|
if (args.status === "draft") {
|
|
566
603
|
requireOwnership(extra, ownerId, "content:publish_own", "content:publish_any");
|
|
604
|
+
let rev = args._rev;
|
|
567
605
|
if (args.data || args.slug || args.seo !== void 0 || args.bylines !== void 0 || args.taxonomies !== void 0 || args.publishedAt !== void 0) {
|
|
568
606
|
const updateResult = await emdash.handleContentUpdate(args.collection, resolvedId, {
|
|
569
607
|
data,
|
|
570
608
|
slug: args.slug,
|
|
571
|
-
|
|
609
|
+
actor,
|
|
572
610
|
locale: args.locale,
|
|
573
611
|
seo: args.seo,
|
|
574
612
|
bylines: args.bylines,
|
|
@@ -577,13 +615,14 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
577
615
|
_rev: args._rev
|
|
578
616
|
});
|
|
579
617
|
if (!updateResult.success) return unwrap(updateResult);
|
|
618
|
+
rev = extractContentRev(updateResult.data);
|
|
580
619
|
}
|
|
581
|
-
return unwrap(await emdash.handleContentUnpublish(args.collection, resolvedId));
|
|
620
|
+
return unwrap(await emdash.handleContentUnpublish(args.collection, resolvedId, { _rev: rev }));
|
|
582
621
|
}
|
|
583
622
|
return unwrap(await emdash.handleContentUpdate(args.collection, resolvedId, {
|
|
584
623
|
data,
|
|
585
624
|
slug: args.slug,
|
|
586
|
-
|
|
625
|
+
actor,
|
|
587
626
|
locale: args.locale,
|
|
588
627
|
seo: args.seo,
|
|
589
628
|
bylines: args.bylines,
|
|
@@ -646,10 +685,8 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
646
685
|
inputSchema: z.object({
|
|
647
686
|
collection: z.string().describe("Collection slug"),
|
|
648
687
|
id: z.string().describe("Content item ID or slug"),
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
message: "must be an ISO 8601 datetime"
|
|
652
|
-
}).optional().describe("Override publication timestamp (ISO 8601). Requires content:publish_any permission. Useful when importing content with original publish dates.")
|
|
688
|
+
_rev: z.string({ error: REV_MISSING_ERROR }).describe(REV_PARAM_DESCRIPTION),
|
|
689
|
+
publishedAt: contentDateTimeInputSchema.optional().describe("Override publication timestamp (ISO 8601). Requires content:publish_any permission. Useful when importing content with original publish dates.")
|
|
653
690
|
})
|
|
654
691
|
}, async (args, extra) => {
|
|
655
692
|
requireScope(extra, "content:write");
|
|
@@ -665,14 +702,18 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
665
702
|
}, "content:publish_any")) throw new EmDashAuthError("Setting publishedAt requires content:publish_any permission", "INSUFFICIENT_PERMISSIONS");
|
|
666
703
|
}
|
|
667
704
|
const resolvedId = extractContentId(existing.data) ?? args.id;
|
|
668
|
-
return unwrap(await emdash.handleContentPublish(args.collection, resolvedId, {
|
|
705
|
+
return unwrap(await emdash.handleContentPublish(args.collection, resolvedId, {
|
|
706
|
+
publishedAt: args.publishedAt,
|
|
707
|
+
_rev: args._rev
|
|
708
|
+
}));
|
|
669
709
|
});
|
|
670
710
|
server.registerTool("content_unpublish", {
|
|
671
711
|
title: "Unpublish Content",
|
|
672
|
-
description: "Unpublish a content item, reverting it to draft status. It will no longer be visible on the live site but its content
|
|
712
|
+
description: "Unpublish a content item, reverting it to draft status. It will no longer be visible on the live site, but its content and publication date are preserved.",
|
|
673
713
|
inputSchema: z.object({
|
|
674
714
|
collection: z.string().describe("Collection slug"),
|
|
675
|
-
id: z.string().describe("Content item ID or slug")
|
|
715
|
+
id: z.string().describe("Content item ID or slug"),
|
|
716
|
+
_rev: z.string({ error: REV_MISSING_ERROR }).describe(REV_PARAM_DESCRIPTION)
|
|
676
717
|
})
|
|
677
718
|
}, async (args, extra) => {
|
|
678
719
|
requireScope(extra, "content:write");
|
|
@@ -682,7 +723,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
682
723
|
if (!existing.success) return unwrap(existing);
|
|
683
724
|
requireOwnership(extra, extractContentAuthorId(existing.data), "content:publish_own", "content:publish_any");
|
|
684
725
|
const resolvedId = extractContentId(existing.data) ?? args.id;
|
|
685
|
-
return unwrap(await ec.handleContentUnpublish(args.collection, resolvedId));
|
|
726
|
+
return unwrap(await ec.handleContentUnpublish(args.collection, resolvedId, { _rev: args._rev }));
|
|
686
727
|
});
|
|
687
728
|
server.registerTool("content_schedule", {
|
|
688
729
|
title: "Schedule Content",
|
|
@@ -737,7 +778,8 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
737
778
|
description: "Discard the current draft changes and revert to the last published version. Only works on items that have been published at least once.",
|
|
738
779
|
inputSchema: z.object({
|
|
739
780
|
collection: z.string().describe("Collection slug"),
|
|
740
|
-
id: z.string().describe("Content item ID or slug")
|
|
781
|
+
id: z.string().describe("Content item ID or slug"),
|
|
782
|
+
_rev: z.string({ error: REV_MISSING_ERROR }).describe(REV_PARAM_DESCRIPTION)
|
|
741
783
|
}),
|
|
742
784
|
annotations: { destructiveHint: true }
|
|
743
785
|
}, async (args, extra) => {
|
|
@@ -748,7 +790,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
748
790
|
if (!existing.success) return unwrap(existing);
|
|
749
791
|
requireOwnership(extra, extractContentAuthorId(existing.data), "content:edit_own", "content:edit_any");
|
|
750
792
|
const resolvedId = extractContentId(existing.data) ?? args.id;
|
|
751
|
-
return unwrap(await ec.handleContentDiscardDraft(args.collection, resolvedId));
|
|
793
|
+
return unwrap(await ec.handleContentDiscardDraft(args.collection, resolvedId, { _rev: args._rev }));
|
|
752
794
|
});
|
|
753
795
|
server.registerTool("content_list_trashed", {
|
|
754
796
|
title: "List Trashed Content",
|
|
@@ -819,7 +861,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
819
861
|
requireScope(extra, "content:read");
|
|
820
862
|
const ec = getEmDash(extra);
|
|
821
863
|
try {
|
|
822
|
-
const { BylineRepository } = await import("../../../byline-
|
|
864
|
+
const { BylineRepository } = await import("../../../byline-Vdi85CsZ.mjs").then((n) => n.n);
|
|
823
865
|
return jsonResult(await new BylineRepository(ec.db).findMany({
|
|
824
866
|
search: args.search,
|
|
825
867
|
isGuest: args.isGuest,
|
|
@@ -841,7 +883,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
841
883
|
requireScope(extra, "content:read");
|
|
842
884
|
const ec = getEmDash(extra);
|
|
843
885
|
try {
|
|
844
|
-
const { BylineRepository } = await import("../../../byline-
|
|
886
|
+
const { BylineRepository } = await import("../../../byline-Vdi85CsZ.mjs").then((n) => n.n);
|
|
845
887
|
const byline = await new BylineRepository(ec.db).findById(args.id);
|
|
846
888
|
if (!byline) return respondError("NOT_FOUND", `Byline '${args.id}' not found`);
|
|
847
889
|
return jsonResult(byline);
|
|
@@ -859,7 +901,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
859
901
|
requireRole(extra, Role.EDITOR);
|
|
860
902
|
const ec = getEmDash(extra);
|
|
861
903
|
try {
|
|
862
|
-
const { handleBylineCreate } = await import("../../../bylines-
|
|
904
|
+
const { handleBylineCreate } = await import("../../../bylines-w-E1IEQd.mjs").then((n) => n.t);
|
|
863
905
|
const result = await handleBylineCreate(ec.db, args);
|
|
864
906
|
if (result.success) await invalidateBylines();
|
|
865
907
|
return unwrap(result);
|
|
@@ -879,7 +921,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
879
921
|
requireRole(extra, Role.EDITOR);
|
|
880
922
|
const ec = getEmDash(extra);
|
|
881
923
|
try {
|
|
882
|
-
const { handleBylineUpdate } = await import("../../../bylines-
|
|
924
|
+
const { handleBylineUpdate } = await import("../../../bylines-w-E1IEQd.mjs").then((n) => n.t);
|
|
883
925
|
const { id, ...input } = args;
|
|
884
926
|
const result = await handleBylineUpdate(ec.db, id, input);
|
|
885
927
|
if (result.success) await invalidateBylines();
|
|
@@ -898,7 +940,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
898
940
|
requireRole(extra, Role.EDITOR);
|
|
899
941
|
const ec = getEmDash(extra);
|
|
900
942
|
try {
|
|
901
|
-
const { BylineRepository } = await import("../../../byline-
|
|
943
|
+
const { BylineRepository } = await import("../../../byline-Vdi85CsZ.mjs").then((n) => n.n);
|
|
902
944
|
if (!await new BylineRepository(ec.db).delete(args.id)) return respondError("NOT_FOUND", `Byline '${args.id}' not found`);
|
|
903
945
|
await invalidateBylines();
|
|
904
946
|
return jsonResult({ deleted: args.id });
|
|
@@ -915,7 +957,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
915
957
|
requireScope(extra, "content:read");
|
|
916
958
|
const ec = getEmDash(extra);
|
|
917
959
|
try {
|
|
918
|
-
const { handleBylineTranslations } = await import("../../../bylines-
|
|
960
|
+
const { handleBylineTranslations } = await import("../../../bylines-w-E1IEQd.mjs").then((n) => n.t);
|
|
919
961
|
return unwrap(await handleBylineTranslations(ec.db, args.id));
|
|
920
962
|
} catch (error) {
|
|
921
963
|
return respondHandlerError(error, "BYLINE_TRANSLATIONS_ERROR");
|
|
@@ -931,7 +973,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
931
973
|
requireRole(extra, Role.EDITOR);
|
|
932
974
|
const ec = getEmDash(extra);
|
|
933
975
|
try {
|
|
934
|
-
const { SchemaRegistry } = await import("../../../schema-
|
|
976
|
+
const { SchemaRegistry } = await import("../../../schema-CRu38Pr5.mjs").then((n) => n.t);
|
|
935
977
|
return jsonResult({ items: await new SchemaRegistry(ec.db).listCollections() });
|
|
936
978
|
} catch (error) {
|
|
937
979
|
return respondHandlerError(error, "SCHEMA_LIST_ERROR");
|
|
@@ -947,7 +989,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
947
989
|
requireRole(extra, Role.EDITOR);
|
|
948
990
|
const ec = getEmDash(extra);
|
|
949
991
|
try {
|
|
950
|
-
const { SchemaRegistry } = await import("../../../schema-
|
|
992
|
+
const { SchemaRegistry } = await import("../../../schema-CRu38Pr5.mjs").then((n) => n.t);
|
|
951
993
|
const collection = await new SchemaRegistry(ec.db).getCollectionWithFields(args.slug);
|
|
952
994
|
if (!collection) return respondError("NOT_FOUND", `Collection '${args.slug}' not found`);
|
|
953
995
|
return jsonResult(collection);
|
|
@@ -965,14 +1007,16 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
965
1007
|
description: z.string().optional().describe("Description of this collection"),
|
|
966
1008
|
icon: z.string().optional().describe("Icon name for the admin UI"),
|
|
967
1009
|
supports: createCollectionBody.shape.supports.describe("Features to enable (default: ['drafts', 'revisions'])"),
|
|
968
|
-
routable: createCollectionBody.shape.routable.describe("Require a slug before publishing (default: true)")
|
|
1010
|
+
routable: createCollectionBody.shape.routable.describe("Require a slug before publishing (default: true)"),
|
|
1011
|
+
editLocking: createCollectionBody.shape.editLocking.describe("Take an edit lock when an entry is opened (default: true)"),
|
|
1012
|
+
group: createCollectionBody.shape.group.describe("Admin sidebar folder shared with other collections of the same group")
|
|
969
1013
|
})
|
|
970
1014
|
}, async (args, extra) => {
|
|
971
1015
|
requireScope(extra, "schema:write");
|
|
972
1016
|
requireRole(extra, Role.ADMIN);
|
|
973
1017
|
const ec = getEmDash(extra);
|
|
974
1018
|
try {
|
|
975
|
-
const { SchemaRegistry } = await import("../../../schema-
|
|
1019
|
+
const { SchemaRegistry } = await import("../../../schema-CRu38Pr5.mjs").then((n) => n.t);
|
|
976
1020
|
const collection = await new SchemaRegistry(ec.db).createCollection({
|
|
977
1021
|
slug: args.slug,
|
|
978
1022
|
label: args.label,
|
|
@@ -980,7 +1024,9 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
980
1024
|
description: args.description,
|
|
981
1025
|
icon: args.icon,
|
|
982
1026
|
supports: args.supports,
|
|
983
|
-
routable: args.routable
|
|
1027
|
+
routable: args.routable,
|
|
1028
|
+
editLocking: args.editLocking,
|
|
1029
|
+
group: args.group
|
|
984
1030
|
});
|
|
985
1031
|
ec.invalidateUrlPatternCache();
|
|
986
1032
|
return jsonResult(collection);
|
|
@@ -1001,7 +1047,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1001
1047
|
requireRole(extra, Role.ADMIN);
|
|
1002
1048
|
const ec = getEmDash(extra);
|
|
1003
1049
|
try {
|
|
1004
|
-
const { SchemaRegistry } = await import("../../../schema-
|
|
1050
|
+
const { SchemaRegistry } = await import("../../../schema-CRu38Pr5.mjs").then((n) => n.t);
|
|
1005
1051
|
await new SchemaRegistry(ec.db).deleteCollection(args.slug, { force: args.force });
|
|
1006
1052
|
ec.invalidateUrlPatternCache();
|
|
1007
1053
|
return jsonResult({ deleted: args.slug });
|
|
@@ -1020,7 +1066,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1020
1066
|
const ec = getEmDash(extra);
|
|
1021
1067
|
const { slug, ...input } = args;
|
|
1022
1068
|
try {
|
|
1023
|
-
const { handleSchemaCollectionUpdate } = await import("../../../schema-
|
|
1069
|
+
const { handleSchemaCollectionUpdate } = await import("../../../schema-DifxndJx.mjs").then((n) => n.h);
|
|
1024
1070
|
const result = await handleSchemaCollectionUpdate(ec.db, slug, input);
|
|
1025
1071
|
if (result.success) ec.invalidateUrlPatternCache();
|
|
1026
1072
|
return unwrap(result);
|
|
@@ -1065,7 +1111,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1065
1111
|
options: z.object({
|
|
1066
1112
|
collection: z.string().optional().describe("Target collection slug for reference fields"),
|
|
1067
1113
|
rows: z.number().optional().describe("Number of rows for textarea")
|
|
1068
|
-
}).
|
|
1114
|
+
}).loose().optional().describe("Widget configuration"),
|
|
1069
1115
|
searchable: z.boolean().optional().describe("Include in full-text search index (default false)"),
|
|
1070
1116
|
indexed: z.boolean().optional().describe("Create a physical index for structured sorting"),
|
|
1071
1117
|
translatable: z.boolean().optional().describe("Whether this field is translatable (default true). Non-translatable fields are synced across all locales in a translation group.")
|
|
@@ -1075,7 +1121,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1075
1121
|
requireRole(extra, Role.ADMIN);
|
|
1076
1122
|
const ec = getEmDash(extra);
|
|
1077
1123
|
try {
|
|
1078
|
-
const { SchemaRegistry } = await import("../../../schema-
|
|
1124
|
+
const { SchemaRegistry } = await import("../../../schema-CRu38Pr5.mjs").then((n) => n.t);
|
|
1079
1125
|
return jsonResult(await new SchemaRegistry(ec.db).createField(args.collection, {
|
|
1080
1126
|
slug: args.slug,
|
|
1081
1127
|
label: args.label,
|
|
@@ -1106,7 +1152,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1106
1152
|
requireRole(extra, Role.ADMIN);
|
|
1107
1153
|
const ec = getEmDash(extra);
|
|
1108
1154
|
try {
|
|
1109
|
-
const { SchemaRegistry } = await import("../../../schema-
|
|
1155
|
+
const { SchemaRegistry } = await import("../../../schema-CRu38Pr5.mjs").then((n) => n.t);
|
|
1110
1156
|
await new SchemaRegistry(ec.db).deleteField(args.collection, args.fieldSlug);
|
|
1111
1157
|
return jsonResult({
|
|
1112
1158
|
deleted: args.fieldSlug,
|
|
@@ -1127,7 +1173,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1127
1173
|
const ec = getEmDash(extra);
|
|
1128
1174
|
const { collection, fieldSlug, ...input } = args;
|
|
1129
1175
|
try {
|
|
1130
|
-
const { handleSchemaFieldUpdate } = await import("../../../schema-
|
|
1176
|
+
const { handleSchemaFieldUpdate } = await import("../../../schema-DifxndJx.mjs").then((n) => n.h);
|
|
1131
1177
|
return unwrap(await handleSchemaFieldUpdate(ec.db, collection, fieldSlug, input));
|
|
1132
1178
|
} catch (error) {
|
|
1133
1179
|
return respondHandlerError(error, "SCHEMA_FIELD_UPDATE_ERROR");
|
|
@@ -1187,7 +1233,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1187
1233
|
inputSchema: z.object({
|
|
1188
1234
|
filename: z.string().min(1).describe("Filename including extension (e.g. 'cover.png')"),
|
|
1189
1235
|
base64: z.string().optional().describe("Base64-encoded file contents. Provide exactly one of base64 / url."),
|
|
1190
|
-
url: z.
|
|
1236
|
+
url: z.url().optional().describe("Public http(s) URL to fetch the file from. Provide exactly one of base64 / url."),
|
|
1191
1237
|
contentType: z.string().regex(CONTENT_TYPE_RE, "Invalid content type").optional().describe("MIME type (e.g. 'image/png'). Required with base64; with url it defaults to the response's Content-Type header."),
|
|
1192
1238
|
alt: z.string().optional().describe("Alt text for accessibility")
|
|
1193
1239
|
}),
|
|
@@ -1198,7 +1244,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1198
1244
|
const { emdash, userId } = getExtra(extra);
|
|
1199
1245
|
if (!emdash.storage) return respondError("NO_STORAGE", "Storage not configured");
|
|
1200
1246
|
try {
|
|
1201
|
-
const { handleMediaUpload } = await import("../../../media-upload-
|
|
1247
|
+
const { handleMediaUpload } = await import("../../../media-upload-C7_AQJ5v.mjs");
|
|
1202
1248
|
return unwrap(await handleMediaUpload(emdash.db, emdash.storage, {
|
|
1203
1249
|
filename: args.filename,
|
|
1204
1250
|
base64: args.base64,
|
|
@@ -1278,7 +1324,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1278
1324
|
};
|
|
1279
1325
|
} else input = { scope: "all" };
|
|
1280
1326
|
try {
|
|
1281
|
-
const { handleMediaUsageRepair } = await import("../../../media-usage-
|
|
1327
|
+
const { handleMediaUsageRepair } = await import("../../../media-usage-C1EswMTq.mjs").then((n) => n.o);
|
|
1282
1328
|
return unwrap(await handleMediaUsageRepair(ec.db, input));
|
|
1283
1329
|
} catch (error) {
|
|
1284
1330
|
return respondHandlerError(error, "MEDIA_USAGE_REPAIR_ERROR");
|
|
@@ -1299,7 +1345,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1299
1345
|
requireScope(extra, "content:read");
|
|
1300
1346
|
const ec = getEmDash(extra);
|
|
1301
1347
|
try {
|
|
1302
|
-
const { searchWithDb } = await import("../../../search-
|
|
1348
|
+
const { searchWithDb } = await import("../../../search-DEPFSBFq.mjs").then((n) => n.t);
|
|
1303
1349
|
return jsonResult(await searchWithDb(ec.db, args.query, {
|
|
1304
1350
|
collections: args.collections,
|
|
1305
1351
|
locale: args.locale,
|
|
@@ -1319,12 +1365,105 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1319
1365
|
requireScope(extra, "content:read");
|
|
1320
1366
|
const ec = getEmDash(extra);
|
|
1321
1367
|
try {
|
|
1322
|
-
const { handleTaxonomyList } = await import("../../../taxonomies-
|
|
1368
|
+
const { handleTaxonomyList } = await import("../../../taxonomies-BOdxuZpV.mjs").then((n) => n.m);
|
|
1323
1369
|
return unwrap(await handleTaxonomyList(ec.db, { locale: args.locale }));
|
|
1324
1370
|
} catch (error) {
|
|
1325
1371
|
return respondHandlerError(error, "TAXONOMY_LIST_ERROR");
|
|
1326
1372
|
}
|
|
1327
1373
|
});
|
|
1374
|
+
server.registerTool("taxonomy_get", {
|
|
1375
|
+
title: "Get Taxonomy Definition",
|
|
1376
|
+
description: "Get a single taxonomy definition by name. Taxonomy definitions describe a classification system (e.g. categories or tags), which collections it applies to, and whether it is hierarchical. Pass `locale` to resolve a specific translation; otherwise the lowest matching locale is returned.",
|
|
1377
|
+
inputSchema: z.object({
|
|
1378
|
+
name: z.string().describe("Taxonomy name (e.g. 'categories', 'tags')"),
|
|
1379
|
+
locale: z.string().optional().describe("Locale to resolve the definition for")
|
|
1380
|
+
}),
|
|
1381
|
+
annotations: { readOnlyHint: true }
|
|
1382
|
+
}, async (args, extra) => {
|
|
1383
|
+
requireScope(extra, "content:read");
|
|
1384
|
+
const ec = getEmDash(extra);
|
|
1385
|
+
try {
|
|
1386
|
+
const { handleTaxonomyGet } = await import("../../../taxonomies-BOdxuZpV.mjs").then((n) => n.m);
|
|
1387
|
+
return unwrap(await handleTaxonomyGet(ec.db, args.name, { locale: args.locale }));
|
|
1388
|
+
} catch (error) {
|
|
1389
|
+
return respondHandlerError(error, "TAXONOMY_GET_ERROR");
|
|
1390
|
+
}
|
|
1391
|
+
});
|
|
1392
|
+
server.registerTool("taxonomy_create", {
|
|
1393
|
+
title: "Create Taxonomy Definition",
|
|
1394
|
+
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.",
|
|
1395
|
+
inputSchema: z.object({
|
|
1396
|
+
name: createTaxonomyDefBody.shape.name.describe("Taxonomy name (lowercase letters, numbers, underscores)"),
|
|
1397
|
+
label: createTaxonomyDefBody.shape.label.describe("Display name"),
|
|
1398
|
+
labelSingular: createTaxonomyDefBody.shape.labelSingular.describe("Singular form of the display name"),
|
|
1399
|
+
hierarchical: createTaxonomyDefBody.shape.hierarchical.describe("Whether the taxonomy supports parent/child terms (defaults to false, or inherited from translationOf)"),
|
|
1400
|
+
collections: createTaxonomyDefBody.shape.collections.describe("Collection slugs this taxonomy applies to (defaults to [], or inherited from translationOf)"),
|
|
1401
|
+
locale: z.string().optional().describe("Locale for this definition (e.g. 'fr-fr')"),
|
|
1402
|
+
translationOf: z.string().optional().describe("Existing taxonomy definition id to create this locale variant from")
|
|
1403
|
+
})
|
|
1404
|
+
}, async (args, extra) => {
|
|
1405
|
+
requireScope(extra, "taxonomies:manage");
|
|
1406
|
+
requireRole(extra, Role.EDITOR);
|
|
1407
|
+
const ec = getEmDash(extra);
|
|
1408
|
+
try {
|
|
1409
|
+
const { handleTaxonomyCreate } = await import("../../../taxonomies-BOdxuZpV.mjs").then((n) => n.m);
|
|
1410
|
+
return unwrap(await handleTaxonomyCreate(ec.db, {
|
|
1411
|
+
name: args.name,
|
|
1412
|
+
label: args.label,
|
|
1413
|
+
labelSingular: args.labelSingular,
|
|
1414
|
+
hierarchical: args.hierarchical,
|
|
1415
|
+
collections: args.collections,
|
|
1416
|
+
locale: args.locale,
|
|
1417
|
+
translationOf: args.translationOf
|
|
1418
|
+
}));
|
|
1419
|
+
} catch (error) {
|
|
1420
|
+
return respondHandlerError(error, "TAXONOMY_CREATE_ERROR");
|
|
1421
|
+
}
|
|
1422
|
+
});
|
|
1423
|
+
server.registerTool("taxonomy_update", {
|
|
1424
|
+
title: "Update Taxonomy Definition",
|
|
1425
|
+
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.",
|
|
1426
|
+
inputSchema: z.object({
|
|
1427
|
+
name: z.string().describe("Taxonomy name to update"),
|
|
1428
|
+
label: updateTaxonomyDefBody.shape.label.describe("New display name"),
|
|
1429
|
+
labelSingular: updateTaxonomyDefBody.shape.labelSingular.describe("New singular display name; pass null to clear"),
|
|
1430
|
+
hierarchical: updateTaxonomyDefBody.shape.hierarchical.describe("Whether the taxonomy supports parent/child terms"),
|
|
1431
|
+
collections: updateTaxonomyDefBody.shape.collections.describe("Collection slugs this taxonomy applies to"),
|
|
1432
|
+
locale: z.string().optional().describe("Locale of the definition to update")
|
|
1433
|
+
})
|
|
1434
|
+
}, async (args, extra) => {
|
|
1435
|
+
requireScope(extra, "taxonomies:manage");
|
|
1436
|
+
requireRole(extra, Role.EDITOR);
|
|
1437
|
+
const ec = getEmDash(extra);
|
|
1438
|
+
try {
|
|
1439
|
+
const { handleTaxonomyUpdate } = await import("../../../taxonomies-BOdxuZpV.mjs").then((n) => n.m);
|
|
1440
|
+
return unwrap(await handleTaxonomyUpdate(ec.db, args.name, {
|
|
1441
|
+
label: args.label,
|
|
1442
|
+
labelSingular: args.labelSingular,
|
|
1443
|
+
hierarchical: args.hierarchical,
|
|
1444
|
+
collections: args.collections,
|
|
1445
|
+
locale: args.locale
|
|
1446
|
+
}));
|
|
1447
|
+
} catch (error) {
|
|
1448
|
+
return respondHandlerError(error, "TAXONOMY_UPDATE_ERROR");
|
|
1449
|
+
}
|
|
1450
|
+
});
|
|
1451
|
+
server.registerTool("taxonomy_delete", {
|
|
1452
|
+
title: "Delete Taxonomy Definition",
|
|
1453
|
+
description: "Delete a taxonomy definition and all of its terms in every locale, along with any content assignments those terms hold. This cannot be undone.",
|
|
1454
|
+
inputSchema: z.object({ name: z.string().describe("Taxonomy name to delete") }),
|
|
1455
|
+
annotations: { destructiveHint: true }
|
|
1456
|
+
}, async (args, extra) => {
|
|
1457
|
+
requireScope(extra, "taxonomies:manage");
|
|
1458
|
+
requireRole(extra, Role.EDITOR);
|
|
1459
|
+
const ec = getEmDash(extra);
|
|
1460
|
+
try {
|
|
1461
|
+
const { handleTaxonomyDelete } = await import("../../../taxonomies-BOdxuZpV.mjs").then((n) => n.m);
|
|
1462
|
+
return unwrap(await handleTaxonomyDelete(ec.db, args.name));
|
|
1463
|
+
} catch (error) {
|
|
1464
|
+
return respondHandlerError(error, "TAXONOMY_DELETE_ERROR");
|
|
1465
|
+
}
|
|
1466
|
+
});
|
|
1328
1467
|
server.registerTool("taxonomy_list_terms", {
|
|
1329
1468
|
title: "List Taxonomy Terms",
|
|
1330
1469
|
description: "List terms in a taxonomy with pagination. Terms are individual entries (e.g. specific categories or tags). Hierarchical taxonomies can have parent-child relationships.",
|
|
@@ -1339,11 +1478,11 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1339
1478
|
requireScope(extra, "content:read");
|
|
1340
1479
|
const ec = getEmDash(extra);
|
|
1341
1480
|
try {
|
|
1342
|
-
const { handleTaxonomyList } = await import("../../../taxonomies-
|
|
1481
|
+
const { handleTaxonomyList } = await import("../../../taxonomies-BOdxuZpV.mjs").then((n) => n.m);
|
|
1343
1482
|
const listResult = await handleTaxonomyList(ec.db, { locale: args.locale });
|
|
1344
1483
|
if (!listResult.success) return unwrap(listResult);
|
|
1345
1484
|
if (!listResult.data.taxonomies.find((t) => t.name === args.taxonomy)) return respondError("NOT_FOUND", `Taxonomy '${args.taxonomy}' not found`);
|
|
1346
|
-
const { TaxonomyRepository } = await import("../../../taxonomy-
|
|
1485
|
+
const { TaxonomyRepository } = await import("../../../taxonomy-DP1vny4K.mjs").then((n) => n.n);
|
|
1347
1486
|
const repo = new TaxonomyRepository(ec.db);
|
|
1348
1487
|
const limit = Math.min(args.limit ?? 50, 100);
|
|
1349
1488
|
let cursor;
|
|
@@ -1404,7 +1543,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1404
1543
|
requireRole(extra, Role.EDITOR);
|
|
1405
1544
|
const ec = getEmDash(extra);
|
|
1406
1545
|
try {
|
|
1407
|
-
const { handleTermCreate } = await import("../../../taxonomies-
|
|
1546
|
+
const { handleTermCreate } = await import("../../../taxonomies-BOdxuZpV.mjs").then((n) => n.m);
|
|
1408
1547
|
return unwrap(await handleTermCreate(ec.db, args.taxonomy, {
|
|
1409
1548
|
slug: args.slug,
|
|
1410
1549
|
label: args.label,
|
|
@@ -1433,7 +1572,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1433
1572
|
requireRole(extra, Role.EDITOR);
|
|
1434
1573
|
const ec = getEmDash(extra);
|
|
1435
1574
|
try {
|
|
1436
|
-
const { handleTermUpdate } = await import("../../../taxonomies-
|
|
1575
|
+
const { handleTermUpdate } = await import("../../../taxonomies-BOdxuZpV.mjs").then((n) => n.m);
|
|
1437
1576
|
return unwrap(await handleTermUpdate(ec.db, args.taxonomy, args.termSlug, {
|
|
1438
1577
|
slug: args.slug,
|
|
1439
1578
|
label: args.label,
|
|
@@ -1457,7 +1596,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1457
1596
|
requireRole(extra, Role.EDITOR);
|
|
1458
1597
|
const ec = getEmDash(extra);
|
|
1459
1598
|
try {
|
|
1460
|
-
const { handleTermDelete } = await import("../../../taxonomies-
|
|
1599
|
+
const { handleTermDelete } = await import("../../../taxonomies-BOdxuZpV.mjs").then((n) => n.m);
|
|
1461
1600
|
return unwrap(await handleTermDelete(ec.db, args.taxonomy, args.termSlug));
|
|
1462
1601
|
} catch (error) {
|
|
1463
1602
|
return respondHandlerError(error, "TAXONOMY_TERM_DELETE_ERROR");
|
|
@@ -1472,7 +1611,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1472
1611
|
requireScope(extra, "content:read");
|
|
1473
1612
|
const ec = getEmDash(extra);
|
|
1474
1613
|
try {
|
|
1475
|
-
const { handleTermTranslations } = await import("../../../taxonomies-
|
|
1614
|
+
const { handleTermTranslations } = await import("../../../taxonomies-BOdxuZpV.mjs").then((n) => n.m);
|
|
1476
1615
|
return unwrap(await handleTermTranslations(ec.db, args.id));
|
|
1477
1616
|
} catch (error) {
|
|
1478
1617
|
return respondHandlerError(error, "TERM_TRANSLATIONS_ERROR");
|
|
@@ -1487,7 +1626,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1487
1626
|
requireScope(extra, "content:read");
|
|
1488
1627
|
const ec = getEmDash(extra);
|
|
1489
1628
|
try {
|
|
1490
|
-
const { handleMenuList } = await import("../../../menus-
|
|
1629
|
+
const { handleMenuList } = await import("../../../menus-UdwjHZJC.mjs").then((n) => n.d);
|
|
1491
1630
|
return unwrap(await handleMenuList(ec.db, { locale: args.locale }));
|
|
1492
1631
|
} catch (error) {
|
|
1493
1632
|
return respondHandlerError(error, "MENU_LIST_ERROR");
|
|
@@ -1505,7 +1644,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1505
1644
|
requireScope(extra, "content:read");
|
|
1506
1645
|
const ec = getEmDash(extra);
|
|
1507
1646
|
try {
|
|
1508
|
-
const { handleMenuGet } = await import("../../../menus-
|
|
1647
|
+
const { handleMenuGet } = await import("../../../menus-UdwjHZJC.mjs").then((n) => n.d);
|
|
1509
1648
|
return unwrap(await handleMenuGet(ec.db, args.name, { locale: args.locale }));
|
|
1510
1649
|
} catch (error) {
|
|
1511
1650
|
return respondHandlerError(error, "MENU_GET_ERROR");
|
|
@@ -1520,7 +1659,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1520
1659
|
requireScope(extra, "content:read");
|
|
1521
1660
|
const ec = getEmDash(extra);
|
|
1522
1661
|
try {
|
|
1523
|
-
const { handleMenuTranslations } = await import("../../../menus-
|
|
1662
|
+
const { handleMenuTranslations } = await import("../../../menus-UdwjHZJC.mjs").then((n) => n.d);
|
|
1524
1663
|
return unwrap(await handleMenuTranslations(ec.db, args.id));
|
|
1525
1664
|
} catch (error) {
|
|
1526
1665
|
return respondHandlerError(error, "MENU_TRANSLATIONS_ERROR");
|
|
@@ -1540,7 +1679,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1540
1679
|
requireRole(extra, Role.EDITOR);
|
|
1541
1680
|
const ec = getEmDash(extra);
|
|
1542
1681
|
try {
|
|
1543
|
-
const { handleMenuCreate } = await import("../../../menus-
|
|
1682
|
+
const { handleMenuCreate } = await import("../../../menus-UdwjHZJC.mjs").then((n) => n.d);
|
|
1544
1683
|
return unwrap(await handleMenuCreate(ec.db, {
|
|
1545
1684
|
name: args.name,
|
|
1546
1685
|
label: args.label,
|
|
@@ -1564,7 +1703,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1564
1703
|
requireRole(extra, Role.EDITOR);
|
|
1565
1704
|
const ec = getEmDash(extra);
|
|
1566
1705
|
try {
|
|
1567
|
-
const { handleMenuUpdate } = await import("../../../menus-
|
|
1706
|
+
const { handleMenuUpdate } = await import("../../../menus-UdwjHZJC.mjs").then((n) => n.d);
|
|
1568
1707
|
return unwrap(await handleMenuUpdate(ec.db, args.name, {
|
|
1569
1708
|
label: args.label,
|
|
1570
1709
|
locale: args.locale
|
|
@@ -1586,7 +1725,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1586
1725
|
requireRole(extra, Role.EDITOR);
|
|
1587
1726
|
const ec = getEmDash(extra);
|
|
1588
1727
|
try {
|
|
1589
|
-
const { handleMenuDelete } = await import("../../../menus-
|
|
1728
|
+
const { handleMenuDelete } = await import("../../../menus-UdwjHZJC.mjs").then((n) => n.d);
|
|
1590
1729
|
return unwrap(await handleMenuDelete(ec.db, args.name, { locale: args.locale }));
|
|
1591
1730
|
} catch (error) {
|
|
1592
1731
|
return respondHandlerError(error, "MENU_DELETE_ERROR");
|
|
@@ -1621,7 +1760,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1621
1760
|
requireRole(extra, Role.EDITOR);
|
|
1622
1761
|
const ec = getEmDash(extra);
|
|
1623
1762
|
try {
|
|
1624
|
-
const { handleMenuSetItems } = await import("../../../menus-
|
|
1763
|
+
const { handleMenuSetItems } = await import("../../../menus-UdwjHZJC.mjs").then((n) => n.d);
|
|
1625
1764
|
return unwrap(await handleMenuSetItems(ec.db, args.name, args.items, { locale: args.locale }));
|
|
1626
1765
|
} catch (error) {
|
|
1627
1766
|
return respondHandlerError(error, "MENU_SET_ITEMS_ERROR");
|
|
@@ -1668,7 +1807,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1668
1807
|
requireRole(extra, Role.EDITOR);
|
|
1669
1808
|
const ec = getEmDash(extra);
|
|
1670
1809
|
try {
|
|
1671
|
-
const { handleSettingsGet } = await import("../../../settings-
|
|
1810
|
+
const { handleSettingsGet } = await import("../../../settings-AnEFYICn.mjs").then((n) => n.r);
|
|
1672
1811
|
return unwrap(await handleSettingsGet(ec.db, ec.storage));
|
|
1673
1812
|
} catch (error) {
|
|
1674
1813
|
return respondHandlerError(error, "SETTINGS_READ_ERROR");
|
|
@@ -1682,7 +1821,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1682
1821
|
tagline: z.string().optional().describe("Site tagline / short description"),
|
|
1683
1822
|
logo: settingsMediaReferenceSchema.optional().describe("Logo media reference ({ mediaId, alt? })"),
|
|
1684
1823
|
favicon: settingsMediaReferenceSchema.optional().describe("Favicon media reference ({ mediaId, alt? })"),
|
|
1685
|
-
url: z.union([z.
|
|
1824
|
+
url: z.union([z.url().refine((u) => HTTP_SCHEME_PATTERN.test(u), "URL must use http or https"), z.literal("")]).optional().describe("Canonical site URL (http or https). Empty string clears it."),
|
|
1686
1825
|
postsPerPage: z.number().int().min(1).max(100).optional().describe("Default page size for content listings"),
|
|
1687
1826
|
dateFormat: z.string().optional().describe("Date format token string"),
|
|
1688
1827
|
timezone: z.string().optional().describe("IANA timezone identifier"),
|
|
@@ -1694,7 +1833,7 @@ function createMcpServer(pluginTools = [], request) {
|
|
|
1694
1833
|
requireRole(extra, Role.ADMIN);
|
|
1695
1834
|
const ec = getEmDash(extra);
|
|
1696
1835
|
try {
|
|
1697
|
-
const { handleSettingsUpdate } = await import("../../../settings-
|
|
1836
|
+
const { handleSettingsUpdate } = await import("../../../settings-AnEFYICn.mjs").then((n) => n.r);
|
|
1698
1837
|
return unwrap(await handleSettingsUpdate(ec.db, ec.storage, args));
|
|
1699
1838
|
} catch (error) {
|
|
1700
1839
|
return respondHandlerError(error, "SETTINGS_UPDATE_ERROR");
|