dineway 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/README.md +17 -17
  2. package/dist/activity-BDMlkpYY.mjs +79 -0
  3. package/dist/{activity-events-y6eT8UW6.mjs → activity-events-DEYmJhWd.mjs} +1 -77
  4. package/dist/{actor-CrObAPV0.mjs → actor-DA7yL9Yp.mjs} +1 -1
  5. package/dist/{allowed-origins-_oeyP6x-.mjs → allowed-origins-VLgv2PL1.mjs} +1 -1
  6. package/dist/api/route-utils.d.mts +9 -10
  7. package/dist/api/route-utils.mjs +14 -14
  8. package/dist/api/schemas/index.d.mts +2 -2
  9. package/dist/api/schemas/index.mjs +5 -5
  10. package/dist/{api-ByrU2q-Z.mjs → api-DsO87Qak.mjs} +51 -23
  11. package/dist/{api-tokens-CjVMQT-X.mjs → api-tokens-C4K9eocv.mjs} +1 -1
  12. package/dist/{apply-bZswmZPm.mjs → apply-DHT0l398.mjs} +19 -19
  13. package/dist/astro/index.d.mts +10 -11
  14. package/dist/astro/index.mjs +18 -5
  15. package/dist/astro/middleware/auth.d.mts +9 -19
  16. package/dist/astro/middleware/auth.mjs +6 -6
  17. package/dist/astro/middleware/redirect.mjs +5 -5
  18. package/dist/astro/middleware/request-context.mjs +2 -2
  19. package/dist/astro/middleware/seed.d.mts +1 -1
  20. package/dist/astro/middleware/seed.mjs +1 -1
  21. package/dist/astro/middleware/setup.mjs +1 -1
  22. package/dist/astro/middleware.mjs +142 -98
  23. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +6 -6
  24. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +6 -6
  25. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
  26. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
  27. package/dist/astro/routes/api/admin/briefing.mjs +18 -18
  28. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
  29. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +9 -9
  30. package/dist/astro/routes/api/admin/byline-fields/index.mjs +9 -9
  31. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +9 -9
  32. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +16 -16
  33. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +16 -16
  34. package/dist/astro/routes/api/admin/bylines/index.mjs +16 -16
  35. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +12 -12
  36. package/dist/astro/routes/api/admin/comments/_id_.mjs +5 -5
  37. package/dist/astro/routes/api/admin/comments/bulk.mjs +10 -10
  38. package/dist/astro/routes/api/admin/comments/counts.mjs +5 -5
  39. package/dist/astro/routes/api/admin/comments/index.mjs +10 -10
  40. package/dist/astro/routes/api/admin/context/_id_/history.mjs +25 -24
  41. package/dist/astro/routes/api/admin/context/_id_/index.mjs +25 -24
  42. package/dist/astro/routes/api/admin/context/_id_/review.mjs +30 -29
  43. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +30 -29
  44. package/dist/astro/routes/api/admin/context/diff.mjs +29 -28
  45. package/dist/astro/routes/api/admin/context/index.mjs +30 -29
  46. package/dist/astro/routes/api/admin/context/stale.mjs +29 -28
  47. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +25 -24
  48. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +29 -28
  49. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +29 -28
  50. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +26 -25
  51. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +2 -2
  52. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  53. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  54. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +55 -51
  55. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +55 -51
  56. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +47 -44
  57. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +54 -50
  58. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +54 -50
  59. package/dist/astro/routes/api/admin/plugins/index.mjs +47 -44
  60. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  61. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +47 -44
  62. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +54 -50
  63. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +47 -44
  64. package/dist/astro/routes/api/admin/plugins/updates.mjs +47 -44
  65. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +5 -5
  66. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +30 -65
  67. package/dist/astro/routes/api/admin/review-requests/index.d.mts +2 -1
  68. package/dist/astro/routes/api/admin/review-requests/index.mjs +58 -11
  69. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +47 -44
  70. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  71. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +47 -44
  72. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +2 -2
  73. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
  74. package/dist/astro/routes/api/admin/users/_id_/index.mjs +7 -7
  75. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +2 -2
  76. package/dist/astro/routes/api/admin/users/index.mjs +6 -6
  77. package/dist/astro/routes/api/auth/dev-bypass.mjs +4 -4
  78. package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
  79. package/dist/astro/routes/api/auth/invite/complete.mjs +10 -10
  80. package/dist/astro/routes/api/auth/invite/index.mjs +7 -7
  81. package/dist/astro/routes/api/auth/invite/register-options.mjs +9 -9
  82. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  83. package/dist/astro/routes/api/auth/magic-link/send.mjs +9 -9
  84. package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
  85. package/dist/astro/routes/api/auth/me.mjs +8 -8
  86. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  87. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +2 -2
  88. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  89. package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -6
  90. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  91. package/dist/astro/routes/api/auth/passkey/options.mjs +11 -11
  92. package/dist/astro/routes/api/auth/passkey/register/options.mjs +9 -9
  93. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +10 -10
  94. package/dist/astro/routes/api/auth/passkey/verify.mjs +10 -10
  95. package/dist/astro/routes/api/auth/setup-token/index.mjs +5 -5
  96. package/dist/astro/routes/api/auth/setup-token/verify.mjs +2 -2
  97. package/dist/astro/routes/api/auth/signup/complete.mjs +10 -10
  98. package/dist/astro/routes/api/auth/signup/request.mjs +9 -9
  99. package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
  100. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +13 -13
  101. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +12 -12
  102. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  103. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +6 -5
  104. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +6 -5
  105. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +6 -5
  106. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +10 -10
  107. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +49 -21
  108. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +6 -5
  109. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  110. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +67 -33
  111. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +14 -14
  112. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  113. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +6 -5
  114. package/dist/astro/routes/api/content/_collection_/_id_.mjs +11 -10
  115. package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
  116. package/dist/astro/routes/api/content/_collection_/index.mjs +11 -10
  117. package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -7
  118. package/dist/astro/routes/api/dashboard.mjs +8 -8
  119. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  120. package/dist/astro/routes/api/health.mjs +1 -1
  121. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  122. package/dist/astro/routes/api/import/probe.mjs +19 -19
  123. package/dist/astro/routes/api/import/wordpress/analyze.mjs +8 -8
  124. package/dist/astro/routes/api/import/wordpress/execute.d.mts +8 -9
  125. package/dist/astro/routes/api/import/wordpress/execute.mjs +35 -34
  126. package/dist/astro/routes/api/import/wordpress/media.d.mts +8 -9
  127. package/dist/astro/routes/api/import/wordpress/media.mjs +12 -12
  128. package/dist/astro/routes/api/import/wordpress/prepare.mjs +34 -33
  129. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +9 -10
  130. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +31 -30
  131. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  132. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +22 -22
  133. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +8 -9
  134. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +40 -39
  135. package/dist/astro/routes/api/integrations/_provider_.d.mts +8 -0
  136. package/dist/astro/routes/api/integrations/_provider_.mjs +51 -0
  137. package/dist/astro/routes/api/integrations/index.d.mts +7 -0
  138. package/dist/astro/routes/api/integrations/index.mjs +24 -0
  139. package/dist/astro/routes/api/manifest.mjs +4 -4
  140. package/dist/astro/routes/api/mcp.mjs +474 -167
  141. package/dist/astro/routes/api/media/_id_/confirm.mjs +10 -10
  142. package/dist/astro/routes/api/media/_id_.mjs +8 -8
  143. package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
  144. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  145. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  146. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  147. package/dist/astro/routes/api/media/upload-url.mjs +11 -11
  148. package/dist/astro/routes/api/media.mjs +14 -14
  149. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +30 -29
  150. package/dist/astro/routes/api/menus/_name_/items.mjs +30 -29
  151. package/dist/astro/routes/api/menus/_name_/reorder.mjs +30 -29
  152. package/dist/astro/routes/api/menus/_name_/translations.mjs +30 -29
  153. package/dist/astro/routes/api/menus/_name_.mjs +30 -29
  154. package/dist/astro/routes/api/menus/index.mjs +30 -29
  155. package/dist/astro/routes/api/oauth/authorize.mjs +7 -7
  156. package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
  157. package/dist/astro/routes/api/oauth/device/code.mjs +9 -9
  158. package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
  159. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  160. package/dist/astro/routes/api/oauth/token/refresh.mjs +6 -6
  161. package/dist/astro/routes/api/oauth/token/revoke.mjs +6 -6
  162. package/dist/astro/routes/api/oauth/token.mjs +6 -6
  163. package/dist/astro/routes/api/openapi.json.mjs +4 -4
  164. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +20 -5
  165. package/dist/astro/routes/api/redirects/404s/index.mjs +10 -10
  166. package/dist/astro/routes/api/redirects/404s/summary.mjs +10 -10
  167. package/dist/astro/routes/api/redirects/_id_.mjs +31 -30
  168. package/dist/astro/routes/api/redirects/index.mjs +31 -30
  169. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  170. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
  171. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +49 -45
  172. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +49 -45
  173. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +49 -45
  174. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +49 -45
  175. package/dist/astro/routes/api/schema/collections/index.mjs +49 -45
  176. package/dist/astro/routes/api/schema/index.mjs +8 -8
  177. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +47 -44
  178. package/dist/astro/routes/api/schema/orphans/index.mjs +47 -44
  179. package/dist/astro/routes/api/search/enable.mjs +11 -11
  180. package/dist/astro/routes/api/search/index.mjs +10 -10
  181. package/dist/astro/routes/api/search/rebuild.mjs +11 -11
  182. package/dist/astro/routes/api/search/stats.mjs +6 -6
  183. package/dist/astro/routes/api/search/suggest.mjs +10 -10
  184. package/dist/astro/routes/api/sections/_slug_.mjs +30 -29
  185. package/dist/astro/routes/api/sections/index.mjs +30 -29
  186. package/dist/astro/routes/api/settings/email.mjs +3 -3
  187. package/dist/astro/routes/api/settings.mjs +30 -29
  188. package/dist/astro/routes/api/setup/admin-verify.mjs +12 -12
  189. package/dist/astro/routes/api/setup/admin.mjs +10 -10
  190. package/dist/astro/routes/api/setup/dev-bypass.mjs +25 -25
  191. package/dist/astro/routes/api/setup/dev-reset.mjs +1 -1
  192. package/dist/astro/routes/api/setup/index.mjs +27 -27
  193. package/dist/astro/routes/api/setup/status.mjs +3 -3
  194. package/dist/astro/routes/api/snapshot.mjs +6 -6
  195. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +33 -32
  196. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +33 -32
  197. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +33 -32
  198. package/dist/astro/routes/api/taxonomies/index.mjs +33 -32
  199. package/dist/astro/routes/api/themes/preview.mjs +4 -4
  200. package/dist/astro/routes/api/typegen.mjs +4 -4
  201. package/dist/astro/routes/api/well-known/auth.mjs +2 -2
  202. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +3 -3
  203. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +3 -3
  204. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +29 -28
  205. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +30 -29
  206. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +30 -29
  207. package/dist/astro/routes/api/widget-areas/_name_.mjs +27 -26
  208. package/dist/astro/routes/api/widget-areas/index.mjs +30 -29
  209. package/dist/astro/routes/api/widget-components.mjs +2 -2
  210. package/dist/astro/routes/robots.txt.mjs +6 -6
  211. package/dist/astro/routes/sitemap-_collection_.xml.mjs +9 -9
  212. package/dist/astro/routes/sitemap.xml.mjs +7 -7
  213. package/dist/astro/session-driver.d.mts +1 -1
  214. package/dist/astro/session-driver.mjs +2 -2
  215. package/dist/astro/types.d.mts +13 -12
  216. package/dist/{audit-ByVKIwWF.mjs → audit-BzhwRVym.mjs} +1 -1
  217. package/dist/auth/providers/github.d.mts +1 -1
  218. package/dist/auth/providers/google.d.mts +1 -1
  219. package/dist/{auth-control-guard-CqeUmQsv.mjs → auth-control-guard-B_Dx-epW.mjs} +1 -1
  220. package/dist/{authorize-CcBxcHtz.mjs → authorize-D6MkRtPw.mjs} +1 -1
  221. package/dist/{briefing-BJaJI8dm.mjs → briefing-Cl70iEH5.mjs} +1 -1
  222. package/dist/{briefing-CawZ59CY.mjs → briefing-GFhLTLJo.mjs} +7 -7
  223. package/dist/{bundle-7C_DpkEq.mjs → bundle-CIrUlrkQ.mjs} +2 -2
  224. package/dist/{byline-e51-fWRs.mjs → byline-BJa1MyKB.mjs} +6 -6
  225. package/dist/{byline-fields-D-N5qVIG.mjs → byline-fields-BKzA0fJU.mjs} +1 -1
  226. package/dist/{byline-fields-CUvbslGc.d.mts → byline-fields-DxMpdtsZ.d.mts} +57 -47
  227. package/dist/{byline-fields-DOJO16Gm.mjs → byline-fields-yT4herdN.mjs} +10 -4
  228. package/dist/{byline-registry-87nNnYl4.mjs → byline-registry-Ba54M74c.mjs} +2 -2
  229. package/dist/{bylines-CMQNCNFh.mjs → bylines-B53Saxdb.mjs} +3 -3
  230. package/dist/{bylines-y4LO-dTj.mjs → bylines-kixFoaRV.mjs} +5 -5
  231. package/dist/{cache-C-FNTFYK.mjs → cache-fpisdt5Q.mjs} +2 -2
  232. package/dist/{chunks-CxBt-GxR.mjs → chunks-DX_b8_4Z.mjs} +1 -1
  233. package/dist/cli/index.d.mts +29 -1
  234. package/dist/cli/index.mjs +1527 -1222
  235. package/dist/cli/plugin-kit.d.mts +75 -0
  236. package/dist/cli/plugin-kit.mjs +4 -0
  237. package/dist/client/external-auth-headers.d.mts +1 -1
  238. package/dist/client/index.d.mts +27 -52
  239. package/dist/client/index.mjs +34 -7
  240. package/dist/client-factory-DEtHApCc.mjs +323 -0
  241. package/dist/{comment-DlA4iChg.mjs → comment-B88XcvU1.mjs} +1 -1
  242. package/dist/{comment-reaction-DfFao1ST.mjs → comment-reaction-Ckn6vCmB.mjs} +1 -1
  243. package/dist/{comments-DApFGMsP.mjs → comments-BDXsbL7z.mjs} +1 -1
  244. package/dist/{content-Bh4BDjv8.mjs → content-Cbl8HbIR.mjs} +2 -2
  245. package/dist/{content-refresh-CgutSUfO.mjs → content-refresh-BmkilU5M.mjs} +5 -5
  246. package/dist/{context-CK4ym2Sf.mjs → context-AJNd0tcG.mjs} +2 -2
  247. package/dist/{context-C5W3G18y.mjs → context-DT0tIsfw.mjs} +24 -13
  248. package/dist/{context-route-helpers-MASyGgWf.mjs → context-route-helpers-DhP--tTq.mjs} +2 -2
  249. package/dist/{dashboard-DQkVT7Ei.mjs → dashboard-YvDEYbS3.mjs} +4 -4
  250. package/dist/db/index.d.mts +3 -3
  251. package/dist/db/index.mjs +1 -1
  252. package/dist/db/libsql.d.mts +1 -1
  253. package/dist/db/postgres.d.mts +1 -1
  254. package/dist/db/sqlite.d.mts +1 -1
  255. package/dist/{device-flow-BnqRH-T9.mjs → device-flow-BKKeobcV.mjs} +5 -5
  256. package/dist/{enrich-DIFIFA8O.mjs → enrich-Ck9tfMqe.mjs} +1 -1
  257. package/dist/{error-CytFlgcd.mjs → error-BW9f_ynq.mjs} +16 -2
  258. package/dist/{experimental-workflows-BMsUnIAw.mjs → experimental-workflows-CgO73K4e.mjs} +1 -1
  259. package/dist/{field-defs-cache-DRNdhBJv.mjs → field-defs-cache-CiXP3eO3.mjs} +4 -4
  260. package/dist/{fts-manager-Crzypjqu.mjs → fts-manager-Zo9uhGel.mjs} +1 -1
  261. package/dist/{hitl-requests-B4Vbcmaq.mjs → hitl-requests-Bee8Cjj8.mjs} +2 -2
  262. package/dist/{hitl-route-helpers-hEVzvP8l.mjs → hitl-route-helpers-DtHaKGgm.mjs} +5 -5
  263. package/dist/{import-Bh9biJfx.mjs → import-C-zxnT89.mjs} +7 -7
  264. package/dist/{index-D4y6NGiy.d.mts → index-DybFmYtZ.d.mts} +79 -3
  265. package/dist/index.d.mts +15 -17
  266. package/dist/index.mjs +83 -78
  267. package/dist/integration-credentials-D3ZneN0L.mjs +49 -0
  268. package/dist/{jsonld-Dq0gsnOH.d.mts → jsonld-CoTa8I1a.d.mts} +2 -2
  269. package/dist/{load-DmYeniXl.mjs → load-Cuiyh8LT.mjs} +1 -1
  270. package/dist/{loader-CjWqjweO.mjs → loader-WHf22FwU.mjs} +2 -2
  271. package/dist/{manifest-schema-BxVPYMJR.mjs → manifest-schema-DKa3ZaJL.mjs} +6 -2
  272. package/dist/{mcp-reviewed-executor-TwVbMzG6.mjs → mcp-reviewed-executor-DnlF7mIL.mjs} +6 -3
  273. package/dist/media/image-endpoint.mjs +1 -1
  274. package/dist/media/index.d.mts +1 -1
  275. package/dist/media/index.mjs +2 -2
  276. package/dist/media/local-runtime.d.mts +10 -11
  277. package/dist/media/local-runtime.mjs +2 -2
  278. package/dist/{media-DMj0grzC.mjs → media-B4m-cnmj.mjs} +1 -1
  279. package/dist/{media-allowlist-BlVCSzHx.mjs → media-allowlist-BQyIBPzd.mjs} +1 -1
  280. package/dist/{menus-TaW1gKnk.mjs → menus-LYALU2Mf.mjs} +2 -2
  281. package/dist/{menus-xvsnVZXw.mjs → menus-oYfViqfE.mjs} +6 -6
  282. package/dist/{oauth-authorization-DiaGvRVz.mjs → oauth-authorization-CX7aa8Ph.mjs} +5 -5
  283. package/dist/{oauth-clients-Dl9E8dEM.mjs → oauth-clients-D9Gg0WjF.mjs} +2 -2
  284. package/dist/object-cache/memory.d.mts +1 -1
  285. package/dist/output-13u4dvu-.mjs +68 -0
  286. package/dist/page/index.d.mts +9 -3
  287. package/dist/page/index.mjs +1 -1
  288. package/dist/{parse-CbymENaR.mjs → parse-B-Y84oJl.mjs} +1 -1
  289. package/dist/plugin-utils.d.mts +8 -9
  290. package/dist/plugins/adapt-sandbox-entry.d.mts +8 -9
  291. package/dist/plugins/adapt-sandbox-entry.mjs +3 -1
  292. package/dist/{plugins-BolVa-tl.mjs → plugins-B7-4Okii.mjs} +95 -10
  293. package/dist/portable-text-Ehqj3I_y.d.mts +45 -0
  294. package/dist/{preview-vSVg6fwG.mjs → preview-BMIReQGc.mjs} +2 -2
  295. package/dist/{provider-loader-MD8zAbnH.d.mts → provider-loader-BIbIiz0P.d.mts} +1 -1
  296. package/dist/{public-url-gsp3oUbu.d.mts → public-url-DYISdY_R.d.mts} +1 -1
  297. package/dist/publication-authorization-BVQ5rCAF.mjs +985 -0
  298. package/dist/{query-CfRCdaL3.mjs → query-C_m8sn-S.mjs} +13 -13
  299. package/dist/{query-jaAmw8E1.mjs → query-DNczixZr.mjs} +3 -3
  300. package/dist/{rate-limit-ZLdyWoZF.mjs → rate-limit-oUGexQO1.mjs} +2 -2
  301. package/dist/{redirect-BAjt4Z6b.mjs → redirect-DoDgOWIA.mjs} +2 -2
  302. package/dist/{redirects-BTdwpQtE.mjs → redirects-CrP6U4hZ.mjs} +4 -4
  303. package/dist/{redirects-CA-xylPG.mjs → redirects-E_B6hvuz.mjs} +18 -10
  304. package/dist/{registry-CtyVedcN.mjs → registry-SEJqFliS.mjs} +24 -10
  305. package/dist/{request-meta-CUypToDJ.mjs → request-meta-DHFIzWcf.mjs} +1 -1
  306. package/dist/review-payload-BysRWpxS.mjs +111 -0
  307. package/dist/{review-requests-DUyEmtmG.mjs → review-requests-CObSuTYU.mjs} +1 -1
  308. package/dist/review-requests-Cu9051_B.mjs +142 -0
  309. package/dist/review-route-helpers-Dp_7PH8r.mjs +41 -0
  310. package/dist/{runner-1tC2tIRV.d.mts → runner-Bcy5w0vj.d.mts} +1 -1
  311. package/dist/{runner-DB7CRfOF.mjs → runner-BfWbi9YY.mjs} +1166 -447
  312. package/dist/runtime.d.mts +9 -10
  313. package/dist/runtime.mjs +3 -3
  314. package/dist/schema-Dk_N31V4.mjs +8 -0
  315. package/dist/{search-DSaLgEFI.mjs → search-BXEQepxL.mjs} +3 -3
  316. package/dist/{secrets-CDZo2k8L.mjs → secrets-CpGpyGcO.mjs} +1 -1
  317. package/dist/{sections-PVVXHGfp.mjs → sections-DxvEF6Bj.mjs} +2 -2
  318. package/dist/seed/index.d.mts +2 -2
  319. package/dist/seed/index.mjs +19 -19
  320. package/dist/seo/index.d.mts +1 -1
  321. package/dist/seo/index.mjs +1 -1
  322. package/dist/{seo-CQG3GCHQ.mjs → seo-D1RiaooQ.mjs} +1 -1
  323. package/dist/service-CY0aH6eI.mjs +347 -0
  324. package/dist/{service-DiN4ZuPp.mjs → service-QdG0YHws.mjs} +2 -2
  325. package/dist/{settings-i4VPP8bT.mjs → settings-Dje-PHXo.mjs} +2 -2
  326. package/dist/{settings-BbqgHWpU.mjs → settings-SVDAB7_W.mjs} +5 -5
  327. package/dist/{site-activity-Dy3FROs0.mjs → site-activity-BVK40wCy.mjs} +1 -1
  328. package/dist/{site-context-DQiL8Fl5.mjs → site-context-CzaEGizi.mjs} +565 -129
  329. package/dist/stable-hash-DshcXvRE.mjs +19 -0
  330. package/dist/storage/local.d.mts +1 -1
  331. package/dist/storage/local.mjs +1 -1
  332. package/dist/storage/s3.d.mts +1 -1
  333. package/dist/storage/s3.mjs +1 -1
  334. package/dist/store-CCfMD6nw.mjs +262 -0
  335. package/dist/{taxonomies-9s-v03H-.mjs → taxonomies-DuhGjBa8.mjs} +3 -3
  336. package/dist/{taxonomies-DRiixp_E.mjs → taxonomies-WVnFki0o.mjs} +6 -6
  337. package/dist/{taxonomy-Dvsw6BOs.mjs → taxonomy-CCo2plmV.mjs} +2 -2
  338. package/dist/{types-DU0bU2Wu.d.mts → types-BFeoAIHl.d.mts} +596 -2
  339. package/dist/{types-Dq1qT19x.mjs → types-Bshd_6wQ.mjs} +1 -1
  340. package/dist/{runtime-BOeiQsCv.d.mts → types-CJezJeNE.d.mts} +3561 -1355
  341. package/dist/{types-4garmdWa.mjs → types-CK0r-Xq4.mjs} +5 -2
  342. package/dist/{types-C_ly5eTp.d.mts → types-GtwhHAg8.d.mts} +1 -1
  343. package/dist/{types-DW_-sFyz.d.mts → types-ywmuDETA.d.mts} +2 -0
  344. package/dist/ui/server-runtime.d.mts +12 -14
  345. package/dist/ui/server-runtime.mjs +21 -21
  346. package/dist/{user-BIZPzCb9.mjs → user-Bcvr5ihC.mjs} +2 -2
  347. package/dist/{utils-CMDhr5Xd.mjs → utils-B7gemXz5.mjs} +1 -1
  348. package/dist/{validate-CZvb-BKB.d.mts → validate-YiX3rly5.d.mts} +59 -5
  349. package/dist/{validate-DNs0pTSc.mjs → validate-qKzI3BCv.mjs} +2 -2
  350. package/dist/version-DEAV9k58.mjs +6 -0
  351. package/dist/{widgets-f0ibZUIq.mjs → widgets-DyGcotPM.mjs} +3 -3
  352. package/dist/{wordpress-slugs-BhHJX8XE.mjs → wordpress-slugs-D_LfQCan.mjs} +1 -1
  353. package/dist/{zod-generator-B7TMjyFJ.mjs → zod-generator-Cr3SiHsc.mjs} +2 -2
  354. package/package.json +16 -6
  355. package/dist/hitl-Hw1RmWOq.mjs +0 -677
  356. package/dist/review-requests-C9Ff11Vq.mjs +0 -79
  357. package/dist/schema-DXdYj4R3.mjs +0 -8
  358. package/dist/types-C46EvNdc.d.mts +0 -56
  359. package/dist/types-C8XW6L19.d.mts +0 -1468
  360. package/dist/version-BTvfRGc6.mjs +0 -6
  361. /package/dist/{adapters-NVSs4UH7.d.mts → adapters-DnMDRQ4e.d.mts} +0 -0
  362. /package/dist/{api-tokens-2r7OWi_I.mjs → api-tokens-D4tcY8R6.mjs} +0 -0
  363. /package/dist/{challenge-store-Bjlepa2E.mjs → challenge-store-BMkL2kmt.mjs} +0 -0
  364. /package/dist/{components-Bclf98Be.mjs → components-D0w9MzQe.mjs} +0 -0
  365. /package/dist/{context-types-DqTo6C79.mjs → context-types-eBuMDAg-.mjs} +0 -0
  366. /package/dist/{cron-cKcNTix_.mjs → cron-D_c3WUPN.mjs} +0 -0
  367. /package/dist/{default--K40jqm0.mjs → default-BxoI3SoK.mjs} +0 -0
  368. /package/dist/{email-console-ChgKFO8-.mjs → email-console-BEMwuxhV.mjs} +0 -0
  369. /package/dist/{escape-Bd4P_xKg.mjs → escape-smSUOb7u.mjs} +0 -0
  370. /package/dist/{hash-BPmX6P8I.mjs → hash-mxxx2oPW.mjs} +0 -0
  371. /package/dist/{media-url-lEKSrpr9.mjs → media-url-B6d-yVI6.mjs} +0 -0
  372. /package/dist/{mime-CA7Lgovc.mjs → mime-C0vOHFm7.mjs} +0 -0
  373. /package/dist/{mode-C4CIyjtR.mjs → mode-DPC7segX.mjs} +0 -0
  374. /package/dist/{normalize-5ek_z7de.mjs → normalize-Cyt7JdF7.mjs} +0 -0
  375. /package/dist/{oauth-state-store-CNoXafF7.mjs → oauth-state-store-DPVzeoyY.mjs} +0 -0
  376. /package/dist/{oauth-user-lookup-Ygw4bNyt.mjs → oauth-user-lookup-3E5jlXrr.mjs} +0 -0
  377. /package/dist/{parser-C1nYd-81.mjs → parser-DX_c5iG3.mjs} +0 -0
  378. /package/dist/{passkey-config-BUwu8BA3.mjs → passkey-config-DE_0EGEP.mjs} +0 -0
  379. /package/dist/{patterns-BhAvqO0S.mjs → patterns-CoqlXUvk.mjs} +0 -0
  380. /package/dist/{placeholder-uvNRZBX9.d.mts → placeholder-C6ZjZcmJ.d.mts} +0 -0
  381. /package/dist/{portable-text-dA_UlJwW.mjs → portable-text-BASHceim.mjs} +0 -0
  382. /package/dist/{process-cache-7xgAO9JY.mjs → process-cache-CCDgti7j.mjs} +0 -0
  383. /package/dist/{provider-loader-D0w9dqjm.mjs → provider-loader-BeQcnPN1.mjs} +0 -0
  384. /package/dist/{public-url-BEz_sM9n.mjs → public-url-BA-7LKvQ.mjs} +0 -0
  385. /package/dist/{redirect-wphRBv4y.mjs → redirect-CZFAqHLr.mjs} +0 -0
  386. /package/dist/{request-cache-D9GQBxMP.mjs → request-cache-CBFjCwSt.mjs} +0 -0
  387. /package/dist/{resolve-Cb6Dbz-C.mjs → resolve-B6BpqwAR.mjs} +0 -0
  388. /package/dist/{seo-qa7Dn0jK.mjs → seo-BLszyJxd.mjs} +0 -0
  389. /package/dist/{seo-contributions-C1EnikHB.mjs → seo-contributions-Ci8_12_r.mjs} +0 -0
  390. /package/dist/{session-user-CAKImna3.mjs → session-user-BwliEFp0.mjs} +0 -0
  391. /package/dist/{setup-complete-B8fl-mjV.mjs → setup-complete-PvF8I7Oh.mjs} +0 -0
  392. /package/dist/{setup-nonce-CoyjILvW.mjs → setup-nonce-DkpYROqg.mjs} +0 -0
  393. /package/dist/{sidecar-client-C3mqXg4C.mjs → sidecar-client-dt5fv23q.mjs} +0 -0
  394. /package/dist/{site-url-BML3GQYm.mjs → site-url-DfYDZyWl.mjs} +0 -0
  395. /package/dist/{ssrf-DWe8jwAp.mjs → ssrf-BZHvtFEv.mjs} +0 -0
  396. /package/dist/{status-DANd8ERo.mjs → status-BN40hMpr.mjs} +0 -0
  397. /package/dist/{tokens-1RK1n6ED.mjs → tokens-DIzhPT80.mjs} +0 -0
  398. /package/dist/{transaction-C2EOMTJA.mjs → transaction-0LEAAy8R.mjs} +0 -0
  399. /package/dist/{transport-CcJu3Co8.d.mts → transport-BZ3aqdu7.d.mts} +0 -0
  400. /package/dist/{transport-BNmCqLu7.mjs → transport-C46KHLMP.mjs} +0 -0
  401. /package/dist/{trusted-proxy-DTXQ2IMv.mjs → trusted-proxy-czZuby6G.mjs} +0 -0
  402. /package/dist/{types-B3t5cxhU.mjs → types-B7TDDFMG.mjs} +0 -0
  403. /package/dist/{types-CDpH6MA4.d.mts → types-BsTXSvKG.d.mts} +0 -0
  404. /package/dist/{types-DF7ZuGGk.d.mts → types-CDcuRd4z.d.mts} +0 -0
  405. /package/dist/{types-Rc3gQqqw.d.mts → types-S9VIopdY.d.mts} +0 -0
  406. /package/dist/{types-POH8PQZh.d.mts → types-YxFz4lDr.d.mts} +0 -0
  407. /package/dist/{types-C5CVgwsV.mjs → types-gvNBqijt.mjs} +0 -0
  408. /package/dist/{url-CpyFDFpO.mjs → url-D282S1Zw.mjs} +0 -0
  409. /package/dist/{url-Cac7a9QZ.mjs → url-guoXQQcV.mjs} +0 -0
@@ -1,10 +1,10 @@
1
- import { a as __exportAll } from "./runner-DB7CRfOF.mjs";
1
+ import { a as __exportAll } from "./runner-BfWbi9YY.mjs";
2
2
  import { n as getI18nConfig, r as isI18nEnabled, t as getFallbackChain } from "./config-CVssduLe.mjs";
3
3
  import { getRequestContext } from "./request-context.mjs";
4
- import { i as encodeCursor } from "./types-Dq1qT19x.mjs";
5
- import { o as isMissingTableError, s as takeLiveCollectionMeta, t as CURSOR_RAW_VALUES } from "./loader-CjWqjweO.mjs";
4
+ import { i as encodeCursor } from "./types-Bshd_6wQ.mjs";
5
+ import { o as isMissingTableError, s as takeLiveCollectionMeta, t as CURSOR_RAW_VALUES } from "./loader-WHf22FwU.mjs";
6
6
  import { i as contentNamespaces, n as cachedQuery, u as invalidateSchemaObjectCache } from "./object-cache-D51qOseS.mjs";
7
- import { r as requestCached } from "./request-cache-D9GQBxMP.mjs";
7
+ import { r as requestCached } from "./request-cache-CBFjCwSt.mjs";
8
8
 
9
9
  //#region src/visual-editing/editable.ts
10
10
  /**
@@ -613,9 +613,9 @@ async function hydrateEntryBylines(type, entries) {
613
613
  let needsQueryPath = parsed.some((item) => item.credits.length === 0 && (dataStr(item.data, "authorId") !== "" || dataStr(item.data, "primaryBylineId") !== ""));
614
614
  let hasCustomFields = false;
615
615
  if (!needsQueryPath) try {
616
- const { getDb } = await import("./loader-CjWqjweO.mjs").then((n) => n.i);
616
+ const { getDb } = await import("./loader-WHf22FwU.mjs").then((n) => n.i);
617
617
  const db = await getDb();
618
- const { getBylineFieldDefs } = await import("./field-defs-cache-DRNdhBJv.mjs").then((n) => n.t);
618
+ const { getBylineFieldDefs } = await import("./field-defs-cache-CiXP3eO3.mjs").then((n) => n.t);
619
619
  hasCustomFields = (await getBylineFieldDefs(db)).length > 0;
620
620
  } catch (error) {
621
621
  if (!isMissingTableError(error)) needsQueryPath = true;
@@ -629,7 +629,7 @@ async function hydrateEntryBylines(type, entries) {
629
629
  }
630
630
  }
631
631
  try {
632
- const { getBylinesForEntries } = await import("./bylines-y4LO-dTj.mjs").then((n) => n.t);
632
+ const { getBylinesForEntries } = await import("./bylines-kixFoaRV.mjs").then((n) => n.t);
633
633
  const refs = entries.map((entry) => {
634
634
  const data = entryData(entry);
635
635
  const id = dataStr(data, "id");
@@ -687,12 +687,12 @@ async function hydrateEntryTerms(type, entries, locale) {
687
687
  byTaxonomy: grouped
688
688
  });
689
689
  }
690
- const { primeFoldedEntryTerms } = await import("./taxonomies-DRiixp_E.mjs").then((n) => n.u);
690
+ const { primeFoldedEntryTerms } = await import("./taxonomies-WVnFki0o.mjs").then((n) => n.u);
691
691
  primeFoldedEntryTerms(type, perEntry, { locale });
692
692
  return;
693
693
  }
694
694
  try {
695
- const { getAllTermsForEntries } = await import("./taxonomies-DRiixp_E.mjs").then((n) => n.u);
695
+ const { getAllTermsForEntries } = await import("./taxonomies-WVnFki0o.mjs").then((n) => n.u);
696
696
  const ids = entries.map((entry) => dataStr(entryData(entry), "id")).filter(Boolean);
697
697
  if (ids.length === 0) return;
698
698
  const termsMap = await getAllTermsForEntries(type, ids, { locale });
@@ -726,9 +726,9 @@ async function hydrateEntryTerms(type, entries, locale) {
726
726
  */
727
727
  async function getTranslations(type, id) {
728
728
  try {
729
- const db = (await import("./loader-CjWqjweO.mjs").then((n) => n.i)).getDb;
729
+ const db = (await import("./loader-WHf22FwU.mjs").then((n) => n.i)).getDb;
730
730
  const dbInstance = await db();
731
- const { ContentRepository } = await import("./content-Bh4BDjv8.mjs").then((n) => n.n);
731
+ const { ContentRepository } = await import("./content-Cbl8HbIR.mjs").then((n) => n.n);
732
732
  const repo = new ContentRepository(dbInstance);
733
733
  const item = await repo.findByIdOrSlug(type, id);
734
734
  if (!item) return {
@@ -796,8 +796,8 @@ async function resolveDinewayPath(path) {
796
796
  const hasDbOverride = !!getRequestContext()?.db;
797
797
  let patterns = !hasDbOverride ? cachedUrlPatterns : null;
798
798
  if (!patterns) {
799
- const { getDb } = await import("./loader-CjWqjweO.mjs").then((n) => n.i);
800
- const { SchemaRegistry } = await import("./registry-CtyVedcN.mjs").then((n) => n.r);
799
+ const { getDb } = await import("./loader-WHf22FwU.mjs").then((n) => n.i);
800
+ const { SchemaRegistry } = await import("./registry-SEJqFliS.mjs").then((n) => n.r);
801
801
  patterns = (await new SchemaRegistry(await getDb()).listCollections()).filter((collection) => collection.urlPattern).map((collection) => {
802
802
  const { regex, paramNames } = patternToRegex(collection.urlPattern);
803
803
  return {
@@ -1,7 +1,7 @@
1
- import { r as getDb } from "./loader-CjWqjweO.mjs";
1
+ import { r as getDb } from "./loader-WHf22FwU.mjs";
2
2
  import { n as cachedQuery, t as CacheNamespace } from "./object-cache-D51qOseS.mjs";
3
- import { r as requestCached } from "./request-cache-D9GQBxMP.mjs";
4
- import { n as SchemaRegistry } from "./registry-CtyVedcN.mjs";
3
+ import { r as requestCached } from "./request-cache-CBFjCwSt.mjs";
4
+ import { n as SchemaRegistry } from "./registry-SEJqFliS.mjs";
5
5
 
6
6
  //#region src/schema/query.ts
7
7
  /**
@@ -1,5 +1,5 @@
1
- import { t as apiError } from "./error-CytFlgcd.mjs";
2
- import { n as normalizeTrustedHeaders } from "./trusted-proxy-DTXQ2IMv.mjs";
1
+ import { t as apiError } from "./error-BW9f_ynq.mjs";
2
+ import { n as normalizeTrustedHeaders } from "./trusted-proxy-czZuby6G.mjs";
3
3
  import { sql } from "kysely";
4
4
 
5
5
  //#region src/auth/rate-limit.ts
@@ -1,6 +1,6 @@
1
1
  import { a as currentTimestampValue } from "./dialect-helpers-fk43GbDb.mjs";
2
- import { i as encodeCursor, r as decodeCursor } from "./types-Dq1qT19x.mjs";
3
- import { i as matchPattern, n as interpolateDestination, r as isPattern, t as compilePattern } from "./patterns-BhAvqO0S.mjs";
2
+ import { i as encodeCursor, r as decodeCursor } from "./types-Bshd_6wQ.mjs";
3
+ import { i as matchPattern, n as interpolateDestination, r as isPattern, t as compilePattern } from "./patterns-CoqlXUvk.mjs";
4
4
  import { sql } from "kysely";
5
5
  import { ulid } from "ulidx";
6
6
 
@@ -1,8 +1,8 @@
1
1
  import { t as OptionsRepository } from "./options-DQPTH5n0.mjs";
2
- import { t as RedirectRepository } from "./redirect-BAjt4Z6b.mjs";
3
- import { a as validateDestinationParams, i as matchPattern, n as interpolateDestination, o as validatePattern, r as isPattern, t as compilePattern } from "./patterns-BhAvqO0S.mjs";
4
- import { i as invalidateRedirectCache } from "./cache-C-FNTFYK.mjs";
5
- import { n as isTerminalStatus } from "./status-DANd8ERo.mjs";
2
+ import { t as RedirectRepository } from "./redirect-DoDgOWIA.mjs";
3
+ import { a as validateDestinationParams, i as matchPattern, n as interpolateDestination, o as validatePattern, r as isPattern, t as compilePattern } from "./patterns-CoqlXUvk.mjs";
4
+ import { i as invalidateRedirectCache } from "./cache-fpisdt5Q.mjs";
5
+ import { n as isTerminalStatus } from "./status-BN40hMpr.mjs";
6
6
 
7
7
  //#region src/redirects/loops.ts
8
8
  /**
@@ -1,5 +1,5 @@
1
- import { t as isSafeHref } from "./url-CpyFDFpO.mjs";
2
- import { n as isTerminalStatus, t as REDIRECT_RULE_STATUSES } from "./status-DANd8ERo.mjs";
1
+ import { t as isSafeHref } from "./url-D282S1Zw.mjs";
2
+ import { n as isTerminalStatus, t as REDIRECT_RULE_STATUSES } from "./status-BN40hMpr.mjs";
3
3
  import { z } from "zod";
4
4
 
5
5
  //#region src/api/schemas/common.ts
@@ -177,14 +177,22 @@ const contentUpdateBody = z.object({
177
177
  seo: contentSeoInput.optional(),
178
178
  publishedAt: contentDateOverride
179
179
  }).meta({ id: "ContentUpdateBody" });
180
- const contentScheduleBody = z.object({ scheduledAt: z.string().min(1, "scheduledAt is required").meta({
181
- description: "ISO 8601 datetime for scheduled publishing",
182
- example: "2025-06-15T09:00:00Z"
183
- }) }).meta({ id: "ContentScheduleBody" });
184
- const contentPublishBody = z.object({ publishedAt: z.iso.datetime({
185
- offset: true,
186
- message: "must be an ISO 8601 datetime"
187
- }).optional().meta({ description: "Optional ISO 8601 datetime to backdate the publish. Requires content:publish_any permission. Without this, existing published_at is preserved on re-publish." }) }).meta({ id: "ContentPublishBody" });
180
+ const contentScheduleBody = z.object({
181
+ scheduledAt: z.string().min(1, "scheduledAt is required").meta({
182
+ description: "ISO 8601 datetime for scheduled publishing",
183
+ example: "2025-06-15T09:00:00Z"
184
+ }),
185
+ reviewRequestId: z.string().min(1, "reviewRequestId is required").meta({ description: "Approved editorial Review Request bound to the exact Draft Revision" }),
186
+ releaseAuthorizationId: z.string().min(1).optional().meta({ description: "Approved exact release HITL Request required for token actors" })
187
+ }).meta({ id: "ContentScheduleBody" });
188
+ const contentPublishBody = z.object({
189
+ publishedAt: z.iso.datetime({
190
+ offset: true,
191
+ message: "must be an ISO 8601 datetime"
192
+ }).optional().meta({ description: "Optional ISO 8601 datetime to backdate the publish. Requires content:publish_any permission. Without this, existing published_at is preserved on re-publish." }),
193
+ reviewRequestId: z.string().min(1, "reviewRequestId is required").meta({ description: "Approved editorial Review Request bound to the exact Draft Revision" }),
194
+ releaseAuthorizationId: z.string().min(1).optional().meta({ description: "Approved exact release HITL Request required for token actors" })
195
+ }).meta({ id: "ContentPublishBody" });
188
196
  const contentPreviewUrlBody = z.object({
189
197
  expiresIn: z.union([z.string(), z.number()]).optional(),
190
198
  pathPattern: z.string().optional()
@@ -1,12 +1,13 @@
1
- import { a as __exportAll } from "./runner-DB7CRfOF.mjs";
1
+ import { a as __exportAll } from "./runner-BfWbi9YY.mjs";
2
2
  import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
3
3
  import { i as currentTimestamp, l as listTablesLike, n as columnExists, u as tableExists } from "./dialect-helpers-fk43GbDb.mjs";
4
4
  import { n as contentLocaleUpdatedIndexName, t as contentLocaleCreatedIndexName } from "./content-index-names-Bbu1FY1r.mjs";
5
- import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-CxBt-GxR.mjs";
6
- import { t as withTransaction } from "./transaction-C2EOMTJA.mjs";
7
- import { a as RESERVED_COLLECTION_SLUGS, o as RESERVED_FIELD_SLUGS, r as FIELD_TYPE_TO_COLUMN } from "./types-B3t5cxhU.mjs";
8
- import { a as markContentMediaUsageCollectionStaleSafely, n as deleteContentMediaUsageCollection } from "./content-refresh-CgutSUfO.mjs";
9
- import { t as FTSManager } from "./fts-manager-Crzypjqu.mjs";
5
+ import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-DX_b8_4Z.mjs";
6
+ import { t as withTransaction } from "./transaction-0LEAAy8R.mjs";
7
+ import { a as RESERVED_COLLECTION_SLUGS, o as RESERVED_FIELD_SLUGS, r as FIELD_TYPE_TO_COLUMN } from "./types-B7TDDFMG.mjs";
8
+ import { a as markContentMediaUsageCollectionStaleSafely, n as deleteContentMediaUsageCollection } from "./content-refresh-BmkilU5M.mjs";
9
+ import { t as FTSManager } from "./fts-manager-Zo9uhGel.mjs";
10
+ import { t as buildStableHash } from "./stable-hash-DshcXvRE.mjs";
10
11
  import { sql } from "kysely";
11
12
  import { ulid } from "ulidx";
12
13
 
@@ -94,9 +95,17 @@ var SchemaRegistry = class {
94
95
  else fieldsByCollectionId.set(field.collectionId, [field]);
95
96
  }
96
97
  }
97
- return collections.map((collection) => ({
98
- ...collection,
99
- fields: fieldsByCollectionId.get(collection.id) ?? []
98
+ return Promise.all(collections.map(async (collection) => {
99
+ const fields = fieldsByCollectionId.get(collection.id) ?? [];
100
+ const schemaFingerprint = await buildStableHash({
101
+ collection,
102
+ fields
103
+ });
104
+ return {
105
+ ...collection,
106
+ fields,
107
+ schemaFingerprint
108
+ };
100
109
  }));
101
110
  }
102
111
  /**
@@ -113,9 +122,14 @@ var SchemaRegistry = class {
113
122
  const collection = await this.getCollection(slug);
114
123
  if (!collection) return null;
115
124
  const fields = await this.listFields(collection.id);
125
+ const schemaFingerprint = await buildStableHash({
126
+ collection,
127
+ fields
128
+ });
116
129
  return {
117
130
  ...collection,
118
- fields
131
+ fields,
132
+ schemaFingerprint
119
133
  };
120
134
  }
121
135
  /**
@@ -1,4 +1,4 @@
1
- import { n as normalizeTrustedHeaders, t as getTrustedProxyHeaders } from "./trusted-proxy-DTXQ2IMv.mjs";
1
+ import { n as normalizeTrustedHeaders, t as getTrustedProxyHeaders } from "./trusted-proxy-czZuby6G.mjs";
2
2
 
3
3
  //#region src/plugins/request-meta.ts
4
4
  /**
@@ -0,0 +1,111 @@
1
+ import { n as stableStringify, t as buildStableHash } from "./stable-hash-DshcXvRE.mjs";
2
+
3
+ //#region src/site-context/action-hash.ts
4
+ async function buildStableActionHash(value) {
5
+ return buildStableHash(value);
6
+ }
7
+
8
+ //#endregion
9
+ //#region src/site-context/review-payload.ts
10
+ var ReviewPayloadBuilder = class {
11
+ constructor(handlers) {
12
+ this.handlers = handlers;
13
+ }
14
+ async buildContentReviewPayload(input) {
15
+ const actionType = input.actionType ?? "content.publish";
16
+ const content = await this.loadContent(input.collection, input.id);
17
+ const compare = await this.loadCompare(input.collection, content.entryId);
18
+ const live = asRecord(compare.live);
19
+ const draft = asRecord(compare.draft) ?? content.data;
20
+ const hasChanges = typeof compare.hasChanges === "boolean" ? compare.hasChanges : stableStringify(live) !== stableStringify(draft);
21
+ const actionHash = await buildStableActionHash({
22
+ actionType,
23
+ collection: input.collection,
24
+ entryId: content.entryId,
25
+ liveRevisionId: content.liveRevisionId,
26
+ draftRevisionId: content.draftRevisionId,
27
+ reviewedRev: content.reviewedRev,
28
+ live,
29
+ draft
30
+ });
31
+ const scope = `content:${input.collection}:${content.entryId}`;
32
+ const summary = input.summary ?? `Review ${actionType} for ${input.collection}/${content.displayTitle ?? content.entryId}`;
33
+ return {
34
+ collection: input.collection,
35
+ entryId: content.entryId,
36
+ scope,
37
+ liveRevisionId: content.liveRevisionId,
38
+ draftRevisionId: content.draftRevisionId,
39
+ reviewedRev: content.reviewedRev,
40
+ actionType,
41
+ actionHash,
42
+ reviewPayload: {
43
+ kind: "content_review",
44
+ actionType,
45
+ summary,
46
+ target: {
47
+ collection: input.collection,
48
+ entryId: content.entryId,
49
+ scope,
50
+ liveRevisionId: content.liveRevisionId,
51
+ draftRevisionId: content.draftRevisionId,
52
+ reviewedRev: content.reviewedRev,
53
+ actionHash
54
+ },
55
+ content: {
56
+ id: content.entryId,
57
+ slug: content.slug,
58
+ status: content.status,
59
+ title: content.displayTitle,
60
+ updatedAt: content.updatedAt
61
+ },
62
+ diff: {
63
+ hasChanges,
64
+ live,
65
+ draft
66
+ }
67
+ }
68
+ };
69
+ }
70
+ async loadContent(collection, id) {
71
+ const result = await this.handlers.handleContentGet(collection, id);
72
+ if (!result.success) throw new Error(result.error?.message ?? `Content item not found: ${collection}/${id}`);
73
+ const payload = asRecord(result.data);
74
+ const item = asRecord(payload?.item);
75
+ if (!payload || !item) throw new Error("Content get response did not include an item");
76
+ const entryId = stringOrNull(item.id);
77
+ const reviewedRev = stringOrNull(payload._rev);
78
+ if (!entryId) throw new Error("Content item is missing id");
79
+ if (!reviewedRev) throw new Error("Content item is missing _rev for review binding");
80
+ const data = asRecord(item.data) ?? {};
81
+ const title = stringOrNull(data.title) ?? stringOrNull(item.title) ?? stringOrNull(item.slug);
82
+ return {
83
+ entryId,
84
+ reviewedRev,
85
+ liveRevisionId: stringOrNull(item.liveRevisionId),
86
+ draftRevisionId: stringOrNull(item.draftRevisionId),
87
+ slug: stringOrNull(item.slug),
88
+ status: stringOrNull(item.status),
89
+ updatedAt: stringOrNull(item.updatedAt),
90
+ displayTitle: title,
91
+ data
92
+ };
93
+ }
94
+ async loadCompare(collection, id) {
95
+ const result = await this.handlers.handleContentCompare(collection, id);
96
+ if (!result.success) throw new Error(result.error?.message ?? `Failed to compare content: ${collection}/${id}`);
97
+ return asRecord(result.data) ?? {};
98
+ }
99
+ };
100
+ function asRecord(value) {
101
+ return isRecord(value) ? value : null;
102
+ }
103
+ function isRecord(value) {
104
+ return typeof value === "object" && value !== null && !Array.isArray(value);
105
+ }
106
+ function stringOrNull(value) {
107
+ return typeof value === "string" && value.length > 0 ? value : null;
108
+ }
109
+
110
+ //#endregion
111
+ export { buildStableActionHash as n, ReviewPayloadBuilder as t };
@@ -1,4 +1,4 @@
1
- import { i as encodeCursor, r as decodeCursor } from "./types-Dq1qT19x.mjs";
1
+ import { i as encodeCursor, r as decodeCursor } from "./types-Bshd_6wQ.mjs";
2
2
  import { ulid } from "ulidx";
3
3
 
4
4
  //#region src/database/repositories/review-requests.ts
@@ -0,0 +1,142 @@
1
+ import { t as ReviewRequestRepository } from "./review-requests-CObSuTYU.mjs";
2
+ import { t as ReviewPayloadBuilder } from "./review-payload-BysRWpxS.mjs";
3
+
4
+ //#region src/api/handlers/review-requests.ts
5
+ async function handleReviewRequestCreate(db, handlers, input) {
6
+ try {
7
+ const built = await new ReviewPayloadBuilder(handlers).buildContentReviewPayload({
8
+ collection: input.collection,
9
+ id: input.id,
10
+ summary: input.summary
11
+ });
12
+ const repository = new ReviewRequestRepository(db);
13
+ const approved = await repository.findApprovedForTarget(built);
14
+ if (approved) return {
15
+ success: true,
16
+ data: {
17
+ item: approved,
18
+ created: false
19
+ }
20
+ };
21
+ const existing = (await repository.list({
22
+ status: "pending",
23
+ collection: built.collection,
24
+ entryId: built.entryId,
25
+ actionType: built.actionType,
26
+ limit: 100
27
+ })).items.find((item) => item.scope === built.scope && item.liveRevisionId === built.liveRevisionId && item.draftRevisionId === built.draftRevisionId && item.reviewedRev === built.reviewedRev && item.actionHash === built.actionHash);
28
+ if (existing) return {
29
+ success: true,
30
+ data: {
31
+ item: existing,
32
+ created: false
33
+ }
34
+ };
35
+ return {
36
+ success: true,
37
+ data: {
38
+ item: await repository.create({
39
+ collection: built.collection,
40
+ entryId: built.entryId,
41
+ scope: built.scope,
42
+ liveRevisionId: built.liveRevisionId,
43
+ draftRevisionId: built.draftRevisionId,
44
+ reviewedRev: built.reviewedRev,
45
+ actionType: built.actionType,
46
+ actionHash: built.actionHash,
47
+ riskReason: input.riskReason,
48
+ reviewPayload: built.reviewPayload,
49
+ requestedByActorType: input.actor.actorType,
50
+ requestedByActorId: input.actor.actorId,
51
+ requestedAuthMetadata: input.actor.authMetadata
52
+ }),
53
+ created: true
54
+ }
55
+ };
56
+ } catch (error) {
57
+ console.error("Review request create error:", error);
58
+ return {
59
+ success: false,
60
+ error: {
61
+ code: "REVIEW_REQUEST_CREATE_ERROR",
62
+ message: "Failed to submit review request"
63
+ }
64
+ };
65
+ }
66
+ }
67
+ async function handleReviewRequestList(db, query) {
68
+ try {
69
+ return {
70
+ success: true,
71
+ data: await new ReviewRequestRepository(db).list(query)
72
+ };
73
+ } catch (error) {
74
+ console.error("Review request list error:", error);
75
+ return {
76
+ success: false,
77
+ error: {
78
+ code: "REVIEW_REQUEST_LIST_ERROR",
79
+ message: "Failed to list review requests"
80
+ }
81
+ };
82
+ }
83
+ }
84
+ async function handleReviewRequestGet(db, id) {
85
+ try {
86
+ const item = await new ReviewRequestRepository(db).findById(id);
87
+ if (!item) return {
88
+ success: false,
89
+ error: {
90
+ code: "NOT_FOUND",
91
+ message: "Review request not found"
92
+ }
93
+ };
94
+ return {
95
+ success: true,
96
+ data: { item }
97
+ };
98
+ } catch (error) {
99
+ console.error("Review request get error:", error);
100
+ return {
101
+ success: false,
102
+ error: {
103
+ code: "REVIEW_REQUEST_GET_ERROR",
104
+ message: "Failed to fetch review request"
105
+ }
106
+ };
107
+ }
108
+ }
109
+ async function handleReviewRequestResolve(db, id, input) {
110
+ try {
111
+ const item = await new ReviewRequestRepository(db).resolve(id, {
112
+ decision: input.decision,
113
+ reviewNote: input.reviewNote,
114
+ resolvedByActorType: input.actor.actorType,
115
+ resolvedByActorId: input.actor.actorId,
116
+ resolvedAuthMetadata: input.actor.authMetadata
117
+ });
118
+ if (!item) return {
119
+ success: false,
120
+ error: {
121
+ code: "NOT_FOUND",
122
+ message: "Review request not found or already resolved"
123
+ }
124
+ };
125
+ return {
126
+ success: true,
127
+ data: { item }
128
+ };
129
+ } catch (error) {
130
+ console.error("Review request resolve error:", error);
131
+ return {
132
+ success: false,
133
+ error: {
134
+ code: "REVIEW_REQUEST_RESOLVE_ERROR",
135
+ message: "Failed to resolve review request"
136
+ }
137
+ };
138
+ }
139
+ }
140
+
141
+ //#endregion
142
+ export { handleReviewRequestResolve as i, handleReviewRequestGet as n, handleReviewRequestList as r, handleReviewRequestCreate as t };
@@ -0,0 +1,41 @@
1
+ import { n as resolveActorIdentity } from "./actor-DA7yL9Yp.mjs";
2
+ import { p as logSiteActivitySafely } from "./activity-events-DEYmJhWd.mjs";
3
+
4
+ //#region src/api/review-route-helpers.ts
5
+ function resolveReviewRouteActor(locals) {
6
+ const actor = resolveActorIdentity(toActorLocals(locals));
7
+ return {
8
+ actorType: actor.actorType,
9
+ actorId: actor.actorId,
10
+ authMetadata: actor.authMetadata
11
+ };
12
+ }
13
+ async function logReviewRouteActivity(db, locals, input) {
14
+ const submitted = input.actionType === "review.submitted";
15
+ await logSiteActivitySafely(db, toActorLocals(locals), {
16
+ actionType: input.actionType,
17
+ subjectType: "review_request",
18
+ subjectId: input.item.id,
19
+ scope: input.item.scope,
20
+ sourceType: "api_route",
21
+ sourceName: submitted ? "admin.review_requests.submit" : "admin.review_requests.resolve",
22
+ summary: `${submitted ? "Submitted" : input.actionType === "review.approved" ? "Approved" : "Rejected"} review request ${input.item.id}`,
23
+ detail: {
24
+ collection: input.item.collection,
25
+ entryId: input.item.entryId,
26
+ actionType: input.item.actionType,
27
+ actionHash: input.item.actionHash,
28
+ reviewNote: input.item.reviewNote
29
+ }
30
+ });
31
+ }
32
+ function toActorLocals(locals) {
33
+ return {
34
+ user: locals.user ? { id: locals.user.id } : null,
35
+ tokenScopes: locals.tokenScopes,
36
+ authToken: locals.authToken
37
+ };
38
+ }
39
+
40
+ //#endregion
41
+ export { resolveReviewRouteActor as n, logReviewRouteActivity as t };
@@ -1,4 +1,4 @@
1
- import { t as Database } from "./types-DU0bU2Wu.mjs";
1
+ import { t as Database } from "./types-BFeoAIHl.mjs";
2
2
  import { Kysely } from "kysely";
3
3
 
4
4
  //#region src/database/migrations/runner.d.ts