dineway 0.2.33 → 0.2.34

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 (457) hide show
  1. package/dist/{activity-CfryM8jO.mjs → activity-CZnq5YlZ.mjs} +2 -2
  2. package/dist/{activity-events-BVo9rMUz.mjs → activity-events-D-yGV7cW.mjs} +1 -1
  3. package/dist/{actor-DrJJsvy6.mjs → actor-DxUAJgQX.mjs} +20 -6
  4. package/dist/{adapters-DHt3f2lu.d.mts → adapters-BQ8CQbBm.d.mts} +5 -7
  5. package/dist/after-BVaUn7bK.mjs +24 -0
  6. package/dist/{allowed-origins-DGSyhRCz.mjs → allowed-origins-DV3LWuWW.mjs} +1 -1
  7. package/dist/api/route-utils.d.mts +10 -10
  8. package/dist/api/route-utils.mjs +23 -19
  9. package/dist/api/schemas/index.d.mts +1 -1
  10. package/dist/api/schemas/index.mjs +5 -5
  11. package/dist/{api-CTf1SLmg.mjs → api-CL4pG2zf.mjs} +55 -1215
  12. package/dist/api-tokens-D5K_Csub.mjs +3 -0
  13. package/dist/{api-tokens-CSomx-l3.mjs → api-tokens-_6tMD1W4.mjs} +1 -1
  14. package/dist/{apply-Bs2jXsms.mjs → apply-CYLUMiZg.mjs} +109 -93
  15. package/dist/astro/index.d.mts +16 -12
  16. package/dist/astro/index.mjs +50 -9
  17. package/dist/astro/middleware/auth.d.mts +9 -9
  18. package/dist/astro/middleware/auth.mjs +29 -8
  19. package/dist/astro/middleware/redirect.mjs +8 -7
  20. package/dist/astro/middleware/request-context.mjs +17 -10
  21. package/dist/astro/middleware/seed.d.mts +1 -1
  22. package/dist/astro/middleware/seed.mjs +93 -71
  23. package/dist/astro/middleware/setup.mjs +1 -1
  24. package/dist/astro/middleware/workers.d.mts +6 -0
  25. package/dist/astro/middleware/workers.mjs +8 -0
  26. package/dist/astro/middleware.mjs +288 -159
  27. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +7 -7
  28. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +7 -7
  29. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
  30. package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
  31. package/dist/astro/routes/api/admin/briefing.mjs +25 -23
  32. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +5 -4
  33. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +11 -10
  34. package/dist/astro/routes/api/admin/byline-fields/index.mjs +11 -10
  35. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +11 -10
  36. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +22 -20
  37. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +22 -20
  38. package/dist/astro/routes/api/admin/bylines/index.mjs +22 -20
  39. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +17 -16
  40. package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -7
  41. package/dist/astro/routes/api/admin/comments/bulk.mjs +14 -13
  42. package/dist/astro/routes/api/admin/comments/counts.mjs +8 -7
  43. package/dist/astro/routes/api/admin/comments/index.mjs +14 -13
  44. package/dist/astro/routes/api/admin/context/_id_/history.mjs +43 -31
  45. package/dist/astro/routes/api/admin/context/_id_/index.mjs +43 -31
  46. package/dist/astro/routes/api/admin/context/_id_/review.mjs +48 -36
  47. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +48 -36
  48. package/dist/astro/routes/api/admin/context/diff.mjs +47 -35
  49. package/dist/astro/routes/api/admin/context/index.mjs +48 -36
  50. package/dist/astro/routes/api/admin/context/stale.mjs +47 -35
  51. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +43 -31
  52. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +47 -35
  53. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +47 -35
  54. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +44 -32
  55. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
  56. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +7 -7
  57. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +7 -7
  58. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +72 -66
  59. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +72 -66
  60. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +64 -58
  61. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +71 -65
  62. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +71 -65
  63. package/dist/astro/routes/api/admin/plugins/index.mjs +64 -58
  64. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  65. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +64 -58
  66. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +71 -65
  67. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +64 -58
  68. package/dist/astro/routes/api/admin/plugins/updates.mjs +64 -58
  69. package/dist/astro/routes/api/admin/review-requests/_id_/image.mjs +26 -23
  70. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +33 -25
  71. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +56 -43
  72. package/dist/astro/routes/api/admin/review-requests/_id_/revoke.mjs +10 -9
  73. package/dist/astro/routes/api/admin/review-requests/index.mjs +54 -41
  74. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +64 -58
  75. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  76. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +64 -58
  77. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +20 -12
  78. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
  79. package/dist/astro/routes/api/admin/users/_id_/index.mjs +40 -32
  80. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +3 -3
  81. package/dist/astro/routes/api/admin/users/index.mjs +7 -7
  82. package/dist/astro/routes/api/auth/dev-bypass.mjs +6 -5
  83. package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
  84. package/dist/astro/routes/api/auth/invite/complete.mjs +12 -12
  85. package/dist/astro/routes/api/auth/invite/index.mjs +9 -9
  86. package/dist/astro/routes/api/auth/invite/register-options.mjs +11 -11
  87. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  88. package/dist/astro/routes/api/auth/magic-link/send.mjs +12 -11
  89. package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
  90. package/dist/astro/routes/api/auth/me.mjs +11 -11
  91. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  92. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +5 -4
  93. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +5 -4
  94. package/dist/astro/routes/api/auth/passkey/_id_.mjs +7 -7
  95. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  96. package/dist/astro/routes/api/auth/passkey/options.mjs +14 -13
  97. package/dist/astro/routes/api/auth/passkey/register/options.mjs +11 -11
  98. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +12 -12
  99. package/dist/astro/routes/api/auth/passkey/verify.mjs +12 -12
  100. package/dist/astro/routes/api/auth/setup-token/index.mjs +32 -23
  101. package/dist/astro/routes/api/auth/setup-token/verify.mjs +32 -26
  102. package/dist/astro/routes/api/auth/signup/complete.mjs +12 -12
  103. package/dist/astro/routes/api/auth/signup/request.mjs +12 -11
  104. package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
  105. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +21 -18
  106. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +19 -16
  107. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  108. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +8 -7
  109. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +8 -7
  110. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +8 -7
  111. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +24 -21
  112. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +35 -22
  113. package/dist/astro/routes/api/content/_collection_/_id_/release-readiness.mjs +9 -9
  114. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +8 -7
  115. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  116. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +35 -22
  117. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +23 -19
  118. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  119. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +8 -7
  120. package/dist/astro/routes/api/content/_collection_/_id_.mjs +14 -13
  121. package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
  122. package/dist/astro/routes/api/content/_collection_/index.mjs +14 -13
  123. package/dist/astro/routes/api/content/_collection_/trash.mjs +8 -8
  124. package/dist/astro/routes/api/dashboard.mjs +16 -11
  125. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  126. package/dist/astro/routes/api/health.mjs +1 -1
  127. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  128. package/dist/astro/routes/api/import/probe.mjs +25 -24
  129. package/dist/astro/routes/api/import/wordpress/analyze.mjs +12 -11
  130. package/dist/astro/routes/api/import/wordpress/execute.d.mts +9 -9
  131. package/dist/astro/routes/api/import/wordpress/execute.mjs +51 -42
  132. package/dist/astro/routes/api/import/wordpress/media.d.mts +9 -9
  133. package/dist/astro/routes/api/import/wordpress/media.mjs +14 -14
  134. package/dist/astro/routes/api/import/wordpress/prepare.mjs +52 -40
  135. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +10 -10
  136. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +50 -38
  137. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  138. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +29 -27
  139. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
  140. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +9 -9
  141. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +56 -47
  142. package/dist/astro/routes/api/integration/artifact.mjs +11 -8
  143. package/dist/astro/routes/api/integration/dispatch.mjs +17 -14
  144. package/dist/astro/routes/api/integrations/_provider_.mjs +11 -8
  145. package/dist/astro/routes/api/integrations/index.mjs +10 -7
  146. package/dist/astro/routes/api/manifest.mjs +5 -5
  147. package/dist/astro/routes/api/mcp.mjs +98 -88
  148. package/dist/astro/routes/api/media/_id_/confirm.mjs +12 -12
  149. package/dist/astro/routes/api/media/_id_.mjs +9 -9
  150. package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
  151. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  152. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  153. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  154. package/dist/astro/routes/api/media/upload-url.mjs +13 -13
  155. package/dist/astro/routes/api/media.mjs +16 -16
  156. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +48 -36
  157. package/dist/astro/routes/api/menus/_name_/items.mjs +48 -36
  158. package/dist/astro/routes/api/menus/_name_/reorder.mjs +48 -36
  159. package/dist/astro/routes/api/menus/_name_/translations.mjs +48 -36
  160. package/dist/astro/routes/api/menus/_name_.mjs +48 -36
  161. package/dist/astro/routes/api/menus/index.mjs +48 -36
  162. package/dist/astro/routes/api/oauth/authorize.mjs +9 -7
  163. package/dist/astro/routes/api/oauth/device/authorize.mjs +7 -6
  164. package/dist/astro/routes/api/oauth/device/code.mjs +11 -9
  165. package/dist/astro/routes/api/oauth/device/token.mjs +10 -8
  166. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  167. package/dist/astro/routes/api/oauth/token/refresh.mjs +7 -6
  168. package/dist/astro/routes/api/oauth/token/revoke.mjs +7 -6
  169. package/dist/astro/routes/api/oauth/token.mjs +8 -6
  170. package/dist/astro/routes/api/openapi.json.mjs +5 -5
  171. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
  172. package/dist/astro/routes/api/redirects/404s/index.mjs +15 -14
  173. package/dist/astro/routes/api/redirects/404s/summary.mjs +15 -14
  174. package/dist/astro/routes/api/redirects/_id_.mjs +48 -37
  175. package/dist/astro/routes/api/redirects/index.mjs +48 -37
  176. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  177. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
  178. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +66 -60
  179. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +66 -60
  180. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +66 -60
  181. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +66 -60
  182. package/dist/astro/routes/api/schema/collections/index.mjs +66 -60
  183. package/dist/astro/routes/api/schema/index.mjs +12 -11
  184. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +64 -58
  185. package/dist/astro/routes/api/schema/orphans/index.mjs +64 -58
  186. package/dist/astro/routes/api/search/enable.mjs +15 -14
  187. package/dist/astro/routes/api/search/index.mjs +14 -13
  188. package/dist/astro/routes/api/search/rebuild.mjs +15 -14
  189. package/dist/astro/routes/api/search/stats.mjs +9 -8
  190. package/dist/astro/routes/api/search/suggest.mjs +14 -13
  191. package/dist/astro/routes/api/sections/_slug_.mjs +48 -36
  192. package/dist/astro/routes/api/sections/index.mjs +48 -36
  193. package/dist/astro/routes/api/settings/email.mjs +5 -5
  194. package/dist/astro/routes/api/settings/reviews.mjs +11 -10
  195. package/dist/astro/routes/api/settings.mjs +48 -36
  196. package/dist/astro/routes/api/setup/admin-verify.mjs +14 -14
  197. package/dist/astro/routes/api/setup/admin.mjs +12 -12
  198. package/dist/astro/routes/api/setup/dev-bypass.mjs +35 -31
  199. package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
  200. package/dist/astro/routes/api/setup/index.mjs +37 -33
  201. package/dist/astro/routes/api/setup/status.mjs +3 -3
  202. package/dist/astro/routes/api/snapshot.mjs +11 -9
  203. package/dist/astro/routes/api/system/heartbeat.mjs +2 -2
  204. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +51 -39
  205. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +51 -39
  206. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +51 -39
  207. package/dist/astro/routes/api/taxonomies/index.mjs +51 -39
  208. package/dist/astro/routes/api/themes/preview.mjs +8 -6
  209. package/dist/astro/routes/api/typegen.mjs +4 -4
  210. package/dist/astro/routes/api/well-known/auth.mjs +3 -3
  211. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +3 -3
  212. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +3 -3
  213. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +47 -35
  214. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +48 -36
  215. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +48 -36
  216. package/dist/astro/routes/api/widget-areas/_name_.mjs +45 -33
  217. package/dist/astro/routes/api/widget-areas/index.mjs +48 -36
  218. package/dist/astro/routes/api/widget-components.mjs +2 -2
  219. package/dist/astro/routes/robots.txt.mjs +11 -10
  220. package/dist/astro/routes/sitemap-_collection_.xml.mjs +20 -18
  221. package/dist/astro/routes/sitemap.xml.mjs +19 -17
  222. package/dist/astro/session-driver.d.mts +1 -1
  223. package/dist/astro/session-driver.mjs +4 -4
  224. package/dist/astro/types.d.mts +13 -13
  225. package/dist/atomic-authority-CnBQJ14T.mjs +33 -0
  226. package/dist/{audit-CYjfxG9i.mjs → audit-F5iWkbcJ.mjs} +11 -4
  227. package/dist/auth/providers/github.d.mts +1 -1
  228. package/dist/auth/providers/google.d.mts +1 -1
  229. package/dist/{auth-control-guard-CITT8ZA_.mjs → auth-control-guard-D4WW-wFF.mjs} +1 -1
  230. package/dist/{authorize-KcI0pAfN.mjs → authorize-EnP57AQl.mjs} +1 -1
  231. package/dist/{briefing-r3hXCDQC.mjs → briefing-BXsVwd4P.mjs} +1 -1
  232. package/dist/{briefing-BgQTljQt.mjs → briefing-CkCi6S-W.mjs} +445 -447
  233. package/dist/{bundle-S6zx-V4D.mjs → bundle-Cgak1zGE.mjs} +3 -3
  234. package/dist/{byline-Ctil4rij.mjs → byline-DEZKlzD9.mjs} +107 -113
  235. package/dist/{byline-fields-QpmruT5r.mjs → byline-fields-BGEIA9dZ.mjs} +3 -3
  236. package/dist/{byline-fields-51ja6JDa.d.mts → byline-fields-BmkhEDFF.d.mts} +10 -10
  237. package/dist/{byline-fields-DiCyW6eQ.mjs → byline-fields-Qg8TesxL.mjs} +1 -1
  238. package/dist/{byline-registry-rkr73qSE.mjs → byline-registry-CkuVVeJJ.mjs} +46 -76
  239. package/dist/{bylines-BcuBpzVi.mjs → bylines-7BQxRGyG.mjs} +4 -4
  240. package/dist/{bylines-v_ZUQnR-.mjs → bylines-LqNRjma2.mjs} +6 -6
  241. package/dist/{cache-V2BCplaY.mjs → cache-CSTy-R-K.mjs} +2 -2
  242. package/dist/{chunks-CnuL55JE.mjs → chunks-BnG3LPMN.mjs} +1 -1
  243. package/dist/cli/index.mjs +452 -263
  244. package/dist/cli/plugin-kit.d.mts +9 -9
  245. package/dist/cli/plugin-kit.mjs +2 -2
  246. package/dist/client/external-auth-headers.d.mts +1 -1
  247. package/dist/client/index.d.mts +11 -11
  248. package/dist/client/index.mjs +2 -2
  249. package/dist/{client-factory-C-y9VZDX.mjs → client-factory-BLSkgsTg.mjs} +1 -1
  250. package/dist/{comment-_nvJSS-A.mjs → comment-Bi7cJ9SS.mjs} +2 -2
  251. package/dist/{comment-reaction-DhVgJ17S.mjs → comment-reaction-BLqIj5mx.mjs} +1 -1
  252. package/dist/{comments-D4mIDjvA.mjs → comments-Dg_gWBEB.mjs} +1 -1
  253. package/dist/content-De_XeXy_.mjs +1230 -0
  254. package/dist/{content-CVCrcuvD.mjs → content-NobcQti0.mjs} +240 -161
  255. package/dist/{content-refresh-QvBIyb_g.mjs → content-refresh-l4mPoGeX.mjs} +170 -193
  256. package/dist/{context-MftkHbWx.mjs → context-6uqzU-M9.mjs} +95 -77
  257. package/dist/{context-JjKucxBm.mjs → context-B0SG9Xkc.mjs} +2 -2
  258. package/dist/{context-route-helpers-e1APrqSm.mjs → context-route-helpers-C8s26uDT.mjs} +2 -2
  259. package/dist/{cron-mGVPQ5e6.mjs → cron-D7zB6m8i.mjs} +36 -32
  260. package/dist/d1-binding-D6HZa3ks.mjs +8 -0
  261. package/dist/d1-dialect-B1b8cmxX.mjs +48 -0
  262. package/dist/{dashboard-ZJ7sMcBI.mjs → dashboard-B-OybCMw.mjs} +5 -5
  263. package/dist/database/batch.d.mts +20 -0
  264. package/dist/database/batch.mjs +69 -0
  265. package/dist/database/d1/index.d.mts +18 -0
  266. package/dist/database/d1/index.mjs +8 -0
  267. package/dist/db/d1.d.mts +7 -0
  268. package/dist/db/d1.mjs +13 -0
  269. package/dist/db/index.d.mts +4 -4
  270. package/dist/db/index.mjs +10 -7
  271. package/dist/db/libsql.d.mts +1 -1
  272. package/dist/db/libsql.mjs +46 -3
  273. package/dist/db/postgres.d.mts +1 -1
  274. package/dist/db/sqlite.d.mts +1 -1
  275. package/dist/{device-flow-eOcL5m0Q.mjs → device-flow-DhpCzMo0.mjs} +130 -94
  276. package/dist/{dialect-helpers-fk43GbDb.mjs → dialect-helpers-C6xtO-Ui.mjs} +1 -1
  277. package/dist/{discovery-CJkuHGhZ.mjs → discovery-CqXbN0WZ.mjs} +5 -5
  278. package/dist/{enrich-KErvJOuI.mjs → enrich-BjF-J4sF.mjs} +1 -1
  279. package/dist/{evidence-6IUv9ML3.mjs → evidence-xJf8hQgH.mjs} +7 -7
  280. package/dist/{field-defs-cache-CwrIyZFT.mjs → field-defs-cache-BKKFFf_V.mjs} +5 -5
  281. package/dist/{forgeway-account-lYJ8iX3G.mjs → forgeway-account-BeKJlKh1.mjs} +1 -1
  282. package/dist/{fts-manager-DX7ZkrCa.mjs → fts-manager-BeWtB7ZD.mjs} +72 -57
  283. package/dist/{hitl-requests-CmYVunm-.mjs → hitl-requests-evSsel48.mjs} +2 -2
  284. package/dist/{hitl-route-helpers-CRm537zS.mjs → hitl-route-helpers-D2kJSOFX.mjs} +5 -5
  285. package/dist/{import-DqRAgsKr.mjs → import-Jpta-CYE.mjs} +9 -9
  286. package/dist/{index-Co7xtjkd.d.mts → index-CSUSBfdD.d.mts} +7 -4
  287. package/dist/index.d.mts +16 -16
  288. package/dist/index.mjs +104 -96
  289. package/dist/{integration-credentials-qudN6yRr.mjs → integration-credentials-BrQr0fb_.mjs} +2 -2
  290. package/dist/{jsonld-BpvnSp2m.d.mts → jsonld-CqIVIeZK.d.mts} +2 -2
  291. package/dist/{load-fCOciq0Q.mjs → load-Dc5ttyg4.mjs} +1 -1
  292. package/dist/{loader-BDje8ME2.mjs → loader-Cgsx23wU.mjs} +4 -4
  293. package/dist/{manifest-schema-CfKD0thC.mjs → manifest-schema-DG29meRy.mjs} +1 -1
  294. package/dist/{mcp-reviewed-executor-DmhM3Cy6.mjs → mcp-reviewed-executor-DAZL3Ckt.mjs} +7 -7
  295. package/dist/media/image-endpoint.mjs +1 -1
  296. package/dist/media/index.d.mts +1 -1
  297. package/dist/media/index.mjs +2 -2
  298. package/dist/media/local-runtime.d.mts +11 -11
  299. package/dist/media/local-runtime.mjs +3 -3
  300. package/dist/{media-dvRjj4po.mjs → media-3fK0u-bo.mjs} +1 -1
  301. package/dist/{media-allowlist-DaG6lNoy.mjs → media-allowlist-rN4qIF6W.mjs} +1 -1
  302. package/dist/{menus-CpuR4Qkm.mjs → menus-5liJusbp.mjs} +138 -90
  303. package/dist/{menus-CZbz5L_V.mjs → menus-CbR_J8cJ.mjs} +8 -8
  304. package/dist/migrations-CMdxWKx-.mjs +76 -0
  305. package/dist/oauth-authority-CCqo4eBm.mjs +43 -0
  306. package/dist/{oauth-authorization-Jf5e3azH.mjs → oauth-authorization--0UtTZpv.mjs} +89 -98
  307. package/dist/{oauth-clients-tovQ4D4h.mjs → oauth-clients-D4WBYaYW.mjs} +2 -2
  308. package/dist/object-cache/memory.d.mts +1 -1
  309. package/dist/{object-cache-D51qOseS.mjs → object-cache-BGjIlY9s.mjs} +1 -1
  310. package/dist/page/index.d.mts +10 -10
  311. package/dist/page/index.mjs +1 -1
  312. package/dist/{parse-IsGn-5lt.mjs → parse--7nG62_h.mjs} +1 -1
  313. package/dist/plugin-utils.d.mts +9 -9
  314. package/dist/plugins/adapt-sandbox-entry.d.mts +9 -9
  315. package/dist/plugins/adapt-sandbox-entry.mjs +1 -1
  316. package/dist/{plugins-DXyLI3Hb.mjs → plugins-DK1wLuao.mjs} +35 -84
  317. package/dist/{policy-DKdNMv8y.mjs → policy-Dej7NJFD.mjs} +2 -2
  318. package/dist/{preview-BXmS1SXL.mjs → preview-q0pkibNO.mjs} +2 -2
  319. package/dist/{provider-loader-DDq7R_RN.d.mts → provider-loader-C0GaLwKB.d.mts} +1 -1
  320. package/dist/{public-url-Ci7UbC0W.d.mts → public-url-B9zEdO8p.d.mts} +1 -1
  321. package/dist/{public-url-BQ9vf0AS.d.mts → public-url-BV-YQ_LF.d.mts} +2 -2
  322. package/dist/{publication-authorization-C-vYPGD8.mjs → publication-authorization-BrEZ2TsE.mjs} +459 -33
  323. package/dist/{query-CrW2yI6G.mjs → query-CEn9HXnf.mjs} +15 -15
  324. package/dist/{query-DcB9uGTW.mjs → query-DAS6VbMS.mjs} +4 -4
  325. package/dist/{rate-limit-DEkoxTsP.mjs → rate-limit-Dd1TnzZP.mjs} +2 -2
  326. package/dist/{redirect-DG-o0CKV.mjs → redirect-HLI3wT5Y.mjs} +26 -14
  327. package/dist/{redirects-Bjp4iKJU.mjs → redirects-DmOdfRjI.mjs} +5 -5
  328. package/dist/{redirects-N8gmWhVM.mjs → redirects-UCXyL0lP.mjs} +3 -3
  329. package/dist/{registry-D-IV_h50.mjs → registry-RD9qTnYL.mjs} +183 -186
  330. package/dist/release-BR08Slqf.mjs +5148 -0
  331. package/dist/request-context.d.mts +8 -0
  332. package/dist/{request-meta-BW0the1R.mjs → request-meta-BOcuHAXD.mjs} +1 -1
  333. package/dist/{resolve-pZ4NQM-X.mjs → resolve-C80Pm2DW.mjs} +1 -1
  334. package/dist/{review-payload-f1L4lzQg.mjs → review-payload-DEylbssM.mjs} +52 -4
  335. package/dist/{review-requests-DICrYH2-.mjs → review-requests-BF2eEKr8.mjs} +93 -37
  336. package/dist/{review-requests-BTKfeWlS.mjs → review-requests-CyfWbJ6W.mjs} +2 -2
  337. package/dist/{review-route-helpers-DaZBBps8.mjs → review-route-helpers-lKA-CXms.mjs} +2 -2
  338. package/dist/{revision-De7OmYVD.mjs → revision-090sZyGc.mjs} +28 -22
  339. package/dist/revocation-B7GL5fMl.mjs +53 -0
  340. package/dist/{runner-DJiRFyLI.mjs → runner-CVeq0266.mjs} +594 -491
  341. package/dist/{runner-Dye73myO.d.mts → runner-JnJSGXEB.d.mts} +1 -1
  342. package/dist/{runs-DEujUDOj.mjs → runs-B5BExdKO.mjs} +5 -5
  343. package/dist/runtime-env-CQVAWHzH.mjs +19 -0
  344. package/dist/runtime.d.mts +10 -10
  345. package/dist/runtime.mjs +5 -5
  346. package/dist/schema-DLMkODQc.mjs +8 -0
  347. package/dist/{search-DxUKN9Zz.mjs → search-CRzWNfxX.mjs} +4 -4
  348. package/dist/{secrets-AdCrGg1c.mjs → secrets-Cg0D2gQW.mjs} +10 -11
  349. package/dist/{sections-BPFOEMK6.mjs → sections-BwUjOGqn.mjs} +2 -2
  350. package/dist/seed/index.d.mts +2 -2
  351. package/dist/seed/index.mjs +29 -25
  352. package/dist/seo/index.d.mts +3 -3
  353. package/dist/seo/index.mjs +11 -10
  354. package/dist/{seo-DWHdo5aW.mjs → seo-BOTuCeh-.mjs} +25 -15
  355. package/dist/{seo-GfovzqpU.mjs → seo-B_tBFyud.mjs} +1 -1
  356. package/dist/{service-DbgjHWyW.mjs → service--bQht6oN.mjs} +2 -2
  357. package/dist/{service-BrNKVCjC.mjs → service-DilVsWGD.mjs} +3 -3
  358. package/dist/{session-user-D8WwGEPH.mjs → session-user-DeqTcAmR.mjs} +1 -1
  359. package/dist/{settings-CAsQLi0N.mjs → settings-DFzevIrU.mjs} +8 -8
  360. package/dist/{settings-BKEHw6Bu.mjs → settings-Deqx3Upy.mjs} +2 -2
  361. package/dist/{setup-complete-CHCYS5KV.mjs → setup-complete-BFqudwbW.mjs} +1 -1
  362. package/dist/{site-activity-7oezuHXK.mjs → site-activity-BrN2NviL.mjs} +11 -4
  363. package/dist/{site-context-CA7rbxux.mjs → site-context-vCiDRr4H.mjs} +50 -37
  364. package/dist/{site-url-DoZf_jVj.mjs → site-url-wXFqbm9c.mjs} +1 -1
  365. package/dist/state-jyNZ6-7L.mjs +30 -0
  366. package/dist/storage/local.d.mts +1 -1
  367. package/dist/storage/local.mjs +1 -1
  368. package/dist/storage/s3.d.mts +1 -1
  369. package/dist/storage/s3.mjs +3 -3
  370. package/dist/{store-c4qx3gVh.mjs → store-C1yDxxfv.mjs} +37 -12
  371. package/dist/submission-BsHNfHc7.mjs +155 -0
  372. package/dist/{taxonomies-ALDiRQ84.mjs → taxonomies-4cnTcbD6.mjs} +3 -3
  373. package/dist/{taxonomies-93DV-1QT.mjs → taxonomies-CllxqaH0.mjs} +7 -7
  374. package/dist/{taxonomy-BOBTJ_aE.mjs → taxonomy-DWxxLpp5.mjs} +3 -3
  375. package/dist/{tokens-c-qxNqzC.mjs → tokens-Bjuf1HID.mjs} +1 -1
  376. package/dist/{trusted-proxy-CdEl6g6B.mjs → trusted-proxy-CAW9o4Dw.mjs} +4 -12
  377. package/dist/{types-BRCUO8NR.d.mts → types-7Th6Mwz3.d.mts} +1 -0
  378. package/dist/{types-BpSTdH1H.mjs → types-BqxIv8Il.mjs} +2 -2
  379. package/dist/{types-6KmeXInJ.d.mts → types-CFgTpfPk.d.mts} +1 -1
  380. package/dist/{types-CfpX1og5.d.mts → types-QjOcidFc.d.mts} +301 -173
  381. package/dist/ui/server-runtime.d.mts +13 -13
  382. package/dist/ui/server-runtime.mjs +28 -26
  383. package/dist/{user-D0NJ7gYf.mjs → user-1-YV30lf.mjs} +2 -2
  384. package/dist/{utils-BK2efsHv.mjs → utils-Cglcqpm2.mjs} +2 -2
  385. package/dist/{validate-CDWVODvc.d.mts → validate-A27peRc4.d.mts} +3 -3
  386. package/dist/{validate-C9g9iX3q.mjs → validate-Wl4MSf3V.mjs} +3 -3
  387. package/dist/version-BWxyC5s4.mjs +6 -0
  388. package/dist/{widgets-Cm5Qx2Np.mjs → widgets-Di-6yDH7.mjs} +3 -3
  389. package/dist/{wordpress-slugs-WdPZaVXf.mjs → wordpress-slugs-vOx7R1dM.mjs} +1 -1
  390. package/dist/{worker-Bhuu7eqS.mjs → worker-RpaMP71d.mjs} +76 -47
  391. package/dist/workers-build-BaQCrSmf.mjs +36 -0
  392. package/dist/{zod-generator-DS5oZNaL.mjs → zod-generator-Cylvl_SM.mjs} +2 -2
  393. package/package.json +35 -9
  394. package/dist/after-BfniwgIf.mjs +0 -9
  395. package/dist/api-tokens-CmT83Bgj.mjs +0 -3
  396. package/dist/db/libsql-http.d.mts +0 -27
  397. package/dist/db/libsql-http.mjs +0 -29
  398. package/dist/libsql-dialect-CANq6UNI.mjs +0 -47
  399. package/dist/oauth-user-lookup-B451pZmd.mjs +0 -25
  400. package/dist/revocation-CkTOhdlw.mjs +0 -42
  401. package/dist/schema-IjuRxkqq.mjs +0 -8
  402. package/dist/submission-C47cHBIg.mjs +0 -67
  403. package/dist/transaction-BGQgnwUi.mjs +0 -28
  404. package/dist/version-CJqc1mwj.mjs +0 -6
  405. /package/dist/{base64-F8-DUraK.mjs → base64-Cz-aU0X1.mjs} +0 -0
  406. /package/dist/{challenge-store-CDKfye2r.mjs → challenge-store-D-_-VavY.mjs} +0 -0
  407. /package/dist/{components-DAq_4iPX.mjs → components-BWQUCJEr.mjs} +0 -0
  408. /package/dist/{config-CVssduLe.mjs → config-XW5tMrH8.mjs} +0 -0
  409. /package/dist/{content-index-names-Bbu1FY1r.mjs → content-index-names-CDc2IQIx.mjs} +0 -0
  410. /package/dist/{context-types-CPWAJRs5.mjs → context-types-DqTo6C79.mjs} +0 -0
  411. /package/dist/{default-BeIzUa1e.mjs → default-D9zxuUU7.mjs} +0 -0
  412. /package/dist/{email-console-Bfi_exVg.mjs → email-console-BONByQiC.mjs} +0 -0
  413. /package/dist/{error-DLg1H2LT.mjs → error-Dd8LtpG5.mjs} +0 -0
  414. /package/dist/{escape-C6lkys0j.mjs → escape-BWC4s5bV.mjs} +0 -0
  415. /package/dist/{experimental-workflows-B9x8delL.mjs → experimental-workflows-M5D3RTFo.mjs} +0 -0
  416. /package/dist/{hash-jhbF98tT.mjs → hash-lNx3KJis.mjs} +0 -0
  417. /package/dist/{media-url-CL3NzgLh.mjs → media-url-B4YtTY6c.mjs} +0 -0
  418. /package/dist/{mime-CDTtL7jE.mjs → mime-D_ae-u_U.mjs} +0 -0
  419. /package/dist/{mode-DJeacFCZ.mjs → mode-CPf_KZ37.mjs} +0 -0
  420. /package/dist/{normalize-Ev3FiBMx.mjs → normalize-5rct_U0I.mjs} +0 -0
  421. /package/dist/{oauth-state-store-Do1a_o3H.mjs → oauth-state-store-CMgcimzA.mjs} +0 -0
  422. /package/dist/{options-1dBRkoCl.mjs → options-BcqHWpc-.mjs} +0 -0
  423. /package/dist/{output-8j9oltTf.mjs → output-BYpiVUBf.mjs} +0 -0
  424. /package/dist/{parser-C9rzPuSZ.mjs → parser-BV0wzQHo.mjs} +0 -0
  425. /package/dist/{passkey-config-CRN44T04.mjs → passkey-config-BG4GO4OO.mjs} +0 -0
  426. /package/dist/{patterns-3XE9bU4r.mjs → patterns-CZ7D4y_R.mjs} +0 -0
  427. /package/dist/{placeholder-D03pGvqM.d.mts → placeholder-BHTaoCYx.d.mts} +0 -0
  428. /package/dist/{portable-text-tIk9_uz_.mjs → portable-text-B9YuySom.mjs} +0 -0
  429. /package/dist/{portable-text-BdRm4uZq.d.mts → portable-text-FKf3IrPz.d.mts} +0 -0
  430. /package/dist/{process-cache-B-L-A9zg.mjs → process-cache-MHM4Sqzs.mjs} +0 -0
  431. /package/dist/{provider-loader-C4i82ll1.mjs → provider-loader-3MY1SjzA.mjs} +0 -0
  432. /package/dist/{public-discovery-CyDzK1-S.mjs → public-discovery-BAbOvKiR.mjs} +0 -0
  433. /package/dist/{public-url-oudwI7K0.mjs → public-url-C7pbmS_7.mjs} +0 -0
  434. /package/dist/{public-url-BVIjzMo3.mjs → public-url-D5Wjq0sy.mjs} +0 -0
  435. /package/dist/{redirect-Dp5u-8dH.mjs → redirect-Bx96u2nS.mjs} +0 -0
  436. /package/dist/{request-cache-BruBnFAR.mjs → request-cache-DPmV5nk4.mjs} +0 -0
  437. /package/dist/{seo-contributions-BAtRDXEQ.mjs → seo-contributions-Dt57p6Sq.mjs} +0 -0
  438. /package/dist/{service-DeX1PRNt.mjs → service-wYQ_ePZ4.mjs} +0 -0
  439. /package/dist/{setup-nonce-D-CEYlw7.mjs → setup-nonce-CAqDUxxU.mjs} +0 -0
  440. /package/dist/{sidecar-client-Bw2C0XTf.mjs → sidecar-client-CnpGTvYq.mjs} +0 -0
  441. /package/dist/{slugify-KSsVD_D3.mjs → slugify-Di8Q_MFq.mjs} +0 -0
  442. /package/dist/{ssrf-C7tTSD1r.mjs → ssrf-LN16WMip.mjs} +0 -0
  443. /package/dist/{stable-hash-DF7R5eN8.mjs → stable-hash-DEtJgcp7.mjs} +0 -0
  444. /package/dist/{status-Bba6RbkS.mjs → status-Bwkeuz8g.mjs} +0 -0
  445. /package/dist/{transport-BddGhTAI.mjs → transport-472KVGBe.mjs} +0 -0
  446. /package/dist/{transport-ktLL9r2O.d.mts → transport-C0jj-Nc8.d.mts} +0 -0
  447. /package/dist/{types-BQZFeZjd.mjs → types-BDq9t5lG.mjs} +0 -0
  448. /package/dist/{types-CKIt_jmM.d.mts → types-Bs-7Geuh.d.mts} +0 -0
  449. /package/dist/{types-CLMOusxP.d.mts → types-CwkJp6zr.d.mts} +0 -0
  450. /package/dist/{types-C0DPvhR5.mjs → types-CyBH89BS.mjs} +0 -0
  451. /package/dist/{types-BbkkkAb6.mjs → types-D17dJRht.mjs} +0 -0
  452. /package/dist/{types--3oJQ0hs.d.mts → types-DTjrkhKU.d.mts} +0 -0
  453. /package/dist/{types-CPaVj_GC.d.mts → types-DkXuBo8k.d.mts} +0 -0
  454. /package/dist/{types-CU3Wn2HC.d.mts → types-b2sq7ZDk.d.mts} +0 -0
  455. /package/dist/{url-C_pLSrGZ.mjs → url-D375-6LM.mjs} +0 -0
  456. /package/dist/{url-Dumsft7G.mjs → url-bv5i4JN0.mjs} +0 -0
  457. /package/dist/{validate-VPnKoIzW.mjs → validate-Co3j6T_K.mjs} +0 -0
@@ -1,9 +1,11 @@
1
- import { t as withTransaction } from "./transaction-BGQgnwUi.mjs";
2
- import { a as hashApiToken, n as TOKEN_PREFIXES, r as generatePrefixedToken, t as ALL_VALID_SCOPES } from "./api-tokens-CmT83Bgj.mjs";
3
- import { a as filterExperimentalSiteContextWorkflowScopes, i as experimentalSiteContextWorkflowsEnabled, o as getExperimentalSiteContextWorkflowScopesDisabledMessage, r as disabledExperimentalSiteContextWorkflowScopes } from "./experimental-workflows-B9x8delL.mjs";
4
- import { c as validateRedirectUri, o as lookupOAuthClient, s as validateClientRedirectUri } from "./oauth-clients-tovQ4D4h.mjs";
5
- import { t as lookupUserRoleAndStatus } from "./oauth-user-lookup-B451pZmd.mjs";
6
- import { clampScopes, computeS256Challenge, secureCompare } from "@dineway-ai/auth";
1
+ import { AtomicWriteConflict, atomicBatch, rowUnchanged } from "./database/batch.mjs";
2
+ import { r as currentIsoTimestampValue } from "./dialect-helpers-C6xtO-Ui.mjs";
3
+ import { a as hashApiToken, n as TOKEN_PREFIXES, r as generatePrefixedToken, t as ALL_VALID_SCOPES } from "./api-tokens-D5K_Csub.mjs";
4
+ import { a as filterExperimentalSiteContextWorkflowScopes, i as experimentalSiteContextWorkflowsEnabled, o as getExperimentalSiteContextWorkflowScopesDisabledMessage, r as disabledExperimentalSiteContextWorkflowScopes } from "./experimental-workflows-M5D3RTFo.mjs";
5
+ import { c as validateRedirectUri, s as validateClientRedirectUri } from "./oauth-clients-D4WBYaYW.mjs";
6
+ import { t as readTokenAuthority } from "./oauth-authority-CCqo4eBm.mjs";
7
+ import { sql } from "kysely";
8
+ import { clampScopes, computeS256Challenge, secureCompare, toRoleLevel } from "@dineway-ai/auth";
7
9
  import { generateCodeVerifier } from "arctic";
8
10
 
9
11
  //#region src/api/handlers/oauth-authorization.ts
@@ -58,7 +60,15 @@ async function handleAuthorizationApproval(db, userId, userRole, params) {
58
60
  message: uriError
59
61
  }
60
62
  };
61
- const client = await lookupOAuthClient(db, params.client_id);
63
+ const authority = await readTokenAuthority(db, userId, params.client_id);
64
+ if (!authority.user || authority.user.disabled) return {
65
+ success: false,
66
+ error: {
67
+ code: "FORBIDDEN",
68
+ message: "User account is unavailable"
69
+ }
70
+ };
71
+ const client = authority.client;
62
72
  if (!client) return {
63
73
  success: false,
64
74
  error: {
@@ -96,7 +106,7 @@ async function handleAuthorizationApproval(db, userId, userRole, params) {
96
106
  message: getExperimentalSiteContextWorkflowScopesDisabledMessage()
97
107
  }
98
108
  };
99
- const userScopes = clampScopes(normalizeScopes(requestedScopes), userRole, { includeExperimental: experimentalSiteContextWorkflowsEnabled() });
109
+ const userScopes = clampScopes(normalizeScopes(requestedScopes), toRoleLevel(Math.min(userRole, authority.user.role)), { includeExperimental: experimentalSiteContextWorkflowsEnabled() });
100
110
  const clientScopes = client.scopes;
101
111
  const scopes = clientScopes?.length ? userScopes.filter((s) => clientScopes.includes(s)) : userScopes;
102
112
  if (scopes.length === 0) return {
@@ -108,17 +118,20 @@ async function handleAuthorizationApproval(db, userId, userRole, params) {
108
118
  };
109
119
  const code = generateCodeVerifier();
110
120
  const codeHash = hashApiToken(code);
111
- await db.insertInto("_dineway_authorization_codes").values({
112
- code_hash: codeHash,
113
- client_id: params.client_id,
114
- redirect_uri: params.redirect_uri,
115
- user_id: userId,
116
- scopes: JSON.stringify(scopes),
117
- code_challenge: params.code_challenge,
118
- code_challenge_method: params.code_challenge_method,
119
- resource: params.resource ?? null,
120
- expires_at: expiresAt(AUTH_CODE_TTL_SECONDS)
121
- }).execute();
121
+ await atomicBatch(db, {
122
+ checks: authority.checks,
123
+ statements: [db.insertInto("_dineway_authorization_codes").values({
124
+ code_hash: codeHash,
125
+ client_id: params.client_id,
126
+ redirect_uri: params.redirect_uri,
127
+ user_id: userId,
128
+ scopes: JSON.stringify(scopes),
129
+ code_challenge: params.code_challenge,
130
+ code_challenge_method: params.code_challenge_method,
131
+ resource: params.resource ?? null,
132
+ expires_at: expiresAt(AUTH_CODE_TTL_SECONDS)
133
+ }).compile()]
134
+ });
122
135
  const redirectUrl = new URL(params.redirect_uri);
123
136
  redirectUrl.searchParams.set("code", code);
124
137
  if (params.state) redirectUrl.searchParams.set("state", params.state);
@@ -153,7 +166,7 @@ async function handleAuthorizationCodeExchange(db, params) {
153
166
  }
154
167
  };
155
168
  const codeHash = hashApiToken(params.code);
156
- const row = await db.deleteFrom("_dineway_authorization_codes").where("code_hash", "=", codeHash).returningAll().executeTakeFirst();
169
+ const row = await db.selectFrom("_dineway_authorization_codes").selectAll().where("code_hash", "=", codeHash).executeTakeFirst();
157
170
  if (!row) return {
158
171
  success: false,
159
172
  error: {
@@ -161,91 +174,62 @@ async function handleAuthorizationCodeExchange(db, params) {
161
174
  message: "Invalid authorization code"
162
175
  }
163
176
  };
164
- if (new Date(row.expires_at) < /* @__PURE__ */ new Date()) return {
165
- success: false,
166
- error: {
167
- code: "invalid_grant",
168
- message: "Authorization code expired"
169
- }
170
- };
171
- if (row.redirect_uri !== params.redirect_uri) return {
172
- success: false,
173
- error: {
174
- code: "invalid_grant",
175
- message: "redirect_uri mismatch"
176
- }
177
- };
178
- if (row.client_id !== params.client_id) return {
179
- success: false,
180
- error: {
181
- code: "invalid_grant",
182
- message: "client_id mismatch"
183
- }
184
- };
185
- if (!secureCompare(computeS256Challenge(params.code_verifier), row.code_challenge)) return {
186
- success: false,
187
- error: {
188
- code: "invalid_grant",
189
- message: "PKCE verification failed"
190
- }
191
- };
192
- if (row.resource && params.resource && row.resource !== params.resource) return {
193
- success: false,
194
- error: {
195
- code: "invalid_grant",
196
- message: "resource mismatch"
197
- }
198
- };
199
- const userInfo = await lookupUserRoleAndStatus(db, row.user_id);
200
- if (!userInfo) return {
201
- success: false,
202
- error: {
203
- code: "invalid_grant",
204
- message: "User not found"
205
- }
206
- };
207
- if (userInfo.disabled) return {
208
- success: false,
209
- error: {
210
- code: "invalid_grant",
211
- message: "User account is disabled"
212
- }
177
+ const rejectCode = async (message) => {
178
+ await db.deleteFrom("_dineway_authorization_codes").where("code_hash", "=", codeHash).execute();
179
+ return {
180
+ success: false,
181
+ error: {
182
+ code: "invalid_grant",
183
+ message
184
+ }
185
+ };
213
186
  };
187
+ if (new Date(row.expires_at) < /* @__PURE__ */ new Date()) return rejectCode("Authorization code expired");
188
+ if (row.redirect_uri !== params.redirect_uri) return rejectCode("redirect_uri mismatch");
189
+ if (row.client_id !== params.client_id) return rejectCode("client_id mismatch");
190
+ if (!secureCompare(computeS256Challenge(params.code_verifier), row.code_challenge)) return rejectCode("PKCE verification failed");
191
+ if (row.resource && params.resource && row.resource !== params.resource) return rejectCode("resource mismatch");
192
+ const authority = await readTokenAuthority(db, row.user_id, row.client_id);
193
+ const userInfo = authority.user;
194
+ if (!userInfo) return rejectCode("User not found");
195
+ if (userInfo.disabled) return rejectCode("User account is disabled");
214
196
  let scopes = clampScopes(filterExperimentalSiteContextWorkflowScopes(JSON.parse(row.scopes)), userInfo.role, { includeExperimental: experimentalSiteContextWorkflowsEnabled() });
215
- const client = await lookupOAuthClient(db, row.client_id);
197
+ const client = authority.client;
216
198
  if (client?.scopes?.length) scopes = scopes.filter((scope) => client.scopes.includes(scope));
217
- if (scopes.length === 0) return {
218
- success: false,
219
- error: {
220
- code: "invalid_grant",
221
- message: "User role no longer supports any of the requested scopes"
222
- }
223
- };
199
+ if (scopes.length === 0 || !client || !client.redirectUris.includes(row.redirect_uri)) return rejectCode("User role no longer supports any of the requested scopes");
224
200
  const accessToken = generatePrefixedToken(TOKEN_PREFIXES.OAUTH_ACCESS);
225
201
  const accessExpires = expiresAt(ACCESS_TOKEN_TTL_SECONDS);
226
202
  const refreshToken = generatePrefixedToken(TOKEN_PREFIXES.OAUTH_REFRESH);
227
203
  const refreshExpires = expiresAt(REFRESH_TOKEN_TTL_SECONDS);
228
- await withTransaction(db, async (trx) => {
229
- await trx.insertInto("_dineway_oauth_tokens").values({
230
- token_hash: accessToken.hash,
231
- token_type: "access",
232
- user_id: row.user_id,
233
- scopes: JSON.stringify(scopes),
234
- client_type: "mcp",
235
- expires_at: accessExpires,
236
- refresh_token_hash: refreshToken.hash,
237
- client_id: row.client_id
238
- }).execute();
239
- await trx.insertInto("_dineway_oauth_tokens").values({
240
- token_hash: refreshToken.hash,
241
- token_type: "refresh",
242
- user_id: row.user_id,
243
- scopes: JSON.stringify(scopes),
244
- client_type: "mcp",
245
- expires_at: refreshExpires,
246
- refresh_token_hash: null,
247
- client_id: row.client_id
248
- }).execute();
204
+ await atomicBatch(db, {
205
+ checks: [
206
+ rowUnchanged("_dineway_authorization_codes", row),
207
+ ...authority.checks,
208
+ sql`EXISTS (SELECT 1 FROM _dineway_authorization_codes WHERE code_hash = ${codeHash} AND expires_at > ${currentIsoTimestampValue(db)})`
209
+ ],
210
+ statements: [
211
+ db.deleteFrom("_dineway_authorization_codes").where("code_hash", "=", codeHash).compile(),
212
+ db.insertInto("_dineway_oauth_tokens").values({
213
+ token_hash: accessToken.hash,
214
+ token_type: "access",
215
+ user_id: row.user_id,
216
+ scopes: JSON.stringify(scopes),
217
+ client_type: "mcp",
218
+ expires_at: accessExpires,
219
+ refresh_token_hash: refreshToken.hash,
220
+ client_id: row.client_id
221
+ }).compile(),
222
+ db.insertInto("_dineway_oauth_tokens").values({
223
+ token_hash: refreshToken.hash,
224
+ token_type: "refresh",
225
+ user_id: row.user_id,
226
+ scopes: JSON.stringify(scopes),
227
+ client_type: "mcp",
228
+ expires_at: refreshExpires,
229
+ refresh_token_hash: null,
230
+ client_id: row.client_id
231
+ }).compile()
232
+ ]
249
233
  });
250
234
  return {
251
235
  success: true,
@@ -258,6 +242,13 @@ async function handleAuthorizationCodeExchange(db, params) {
258
242
  }
259
243
  };
260
244
  } catch (error) {
245
+ if (error instanceof AtomicWriteConflict) return {
246
+ success: false,
247
+ error: {
248
+ code: "invalid_grant",
249
+ message: "Authorization code or account permissions changed"
250
+ }
251
+ };
261
252
  console.error("Token exchange error:", error);
262
253
  return {
263
254
  success: false,
@@ -1,5 +1,5 @@
1
- import { s as validateScopes } from "./api-tokens-CmT83Bgj.mjs";
2
- import { o as getExperimentalSiteContextWorkflowScopesDisabledMessage, r as disabledExperimentalSiteContextWorkflowScopes } from "./experimental-workflows-B9x8delL.mjs";
1
+ import { s as validateScopes } from "./api-tokens-D5K_Csub.mjs";
2
+ import { o as getExperimentalSiteContextWorkflowScopesDisabledMessage, r as disabledExperimentalSiteContextWorkflowScopes } from "./experimental-workflows-M5D3RTFo.mjs";
3
3
 
4
4
  //#region src/api/oauth/redirect-uri.ts
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { t as CreateObjectCacheBackendFn } from "../types-CU3Wn2HC.mjs";
1
+ import { t as CreateObjectCacheBackendFn } from "../types-b2sq7ZDk.mjs";
2
2
 
3
3
  //#region src/object-cache/memory.d.ts
4
4
  /**
@@ -1,5 +1,5 @@
1
1
  import { getRequestContext } from "./request-context.mjs";
2
- import { t as after } from "./after-BfniwgIf.mjs";
2
+ import { t as after } from "./after-BVaUn7bK.mjs";
3
3
 
4
4
  //#region src/object-cache/codec.ts
5
5
  /**
@@ -1,13 +1,13 @@
1
- import { Dt as PublicSchemaNode, Et as PublicPageSchema, F as PageMetadataContribution, M as PageFragmentContribution, Tt as PublicPageImage, wt as PublicPageContext } from "../types-CfpX1og5.mjs";
2
- import "../types-BRCUO8NR.mjs";
3
- import "../runner-Dye73myO.mjs";
4
- import "../index-Co7xtjkd.mjs";
5
- import "../types-CPaVj_GC.mjs";
6
- import "../public-url-BQ9vf0AS.mjs";
7
- import "../validate-CDWVODvc.mjs";
8
- import "../byline-fields-51ja6JDa.mjs";
9
- import "../types--3oJQ0hs.mjs";
10
- import { _ as CreatePublicPageContextInput, a as generateSiteSeoContributions, c as ResolvedPageMetadata, d as renderPageMetadata, f as resolvePageMetadata, g as resolvePageImage, h as imageMetadataContributions, i as generateBaseSeoContributions, l as createSha256CspHash, m as mergePageSchema, n as buildWebSiteJsonLd, o as renderFragments, p as safeJsonLdSerialize, r as cleanJsonLd, s as resolveFragments, t as buildBlogPostingJsonLd, u as escapeHtmlAttr, v as createPublicPageContext } from "../jsonld-BpvnSp2m.mjs";
1
+ import { Dt as PublicPageSchema, Et as PublicPageImage, F as PageMetadataContribution, M as PageFragmentContribution, Ot as PublicSchemaNode, Tt as PublicPageContext } from "../types-QjOcidFc.mjs";
2
+ import "../types-7Th6Mwz3.mjs";
3
+ import "../runner-JnJSGXEB.mjs";
4
+ import "../index-CSUSBfdD.mjs";
5
+ import "../types-DkXuBo8k.mjs";
6
+ import "../public-url-BV-YQ_LF.mjs";
7
+ import "../validate-A27peRc4.mjs";
8
+ import "../byline-fields-BmkhEDFF.mjs";
9
+ import "../types-DTjrkhKU.mjs";
10
+ import { _ as CreatePublicPageContextInput, a as generateSiteSeoContributions, c as ResolvedPageMetadata, d as renderPageMetadata, f as resolvePageMetadata, g as resolvePageImage, h as imageMetadataContributions, i as generateBaseSeoContributions, l as createSha256CspHash, m as mergePageSchema, n as buildWebSiteJsonLd, o as renderFragments, p as safeJsonLdSerialize, r as cleanJsonLd, s as resolveFragments, t as buildBlogPostingJsonLd, u as escapeHtmlAttr, v as createPublicPageContext } from "../jsonld-CqIVIeZK.mjs";
11
11
 
12
12
  //#region src/page/index.d.ts
13
13
  /**
@@ -1,4 +1,4 @@
1
- import { _ as createPublicPageContext, a as createSha256CspHash, c as resolvePageMetadata, d as buildBlogPostingJsonLd, f as buildWebSiteJsonLd, h as resolvePageImage, i as resolveFragments, l as safeJsonLdSerialize, m as imageMetadataContributions, n as generateSiteSeoContributions, o as escapeHtmlAttr, p as cleanJsonLd, r as renderFragments, s as renderPageMetadata, t as generateBaseSeoContributions, u as mergePageSchema } from "../seo-contributions-BAtRDXEQ.mjs";
1
+ import { _ as createPublicPageContext, a as createSha256CspHash, c as resolvePageMetadata, d as buildBlogPostingJsonLd, f as buildWebSiteJsonLd, h as resolvePageImage, i as resolveFragments, l as safeJsonLdSerialize, m as imageMetadataContributions, n as generateSiteSeoContributions, o as escapeHtmlAttr, p as cleanJsonLd, r as renderFragments, s as renderPageMetadata, t as generateBaseSeoContributions, u as mergePageSchema } from "../seo-contributions-Dt57p6Sq.mjs";
2
2
 
3
3
  //#region src/page/index.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { t as apiError } from "./error-DLg1H2LT.mjs";
1
+ import { t as apiError } from "./error-Dd8LtpG5.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/api/parse.ts
@@ -1,12 +1,12 @@
1
- import "./types-CfpX1og5.mjs";
2
- import "./types-BRCUO8NR.mjs";
3
- import "./runner-Dye73myO.mjs";
4
- import "./index-Co7xtjkd.mjs";
5
- import "./types-CPaVj_GC.mjs";
6
- import "./public-url-BQ9vf0AS.mjs";
7
- import "./validate-CDWVODvc.mjs";
8
- import "./byline-fields-51ja6JDa.mjs";
9
- import "./types--3oJQ0hs.mjs";
1
+ import "./types-QjOcidFc.mjs";
2
+ import "./types-7Th6Mwz3.mjs";
3
+ import "./runner-JnJSGXEB.mjs";
4
+ import "./index-CSUSBfdD.mjs";
5
+ import "./types-DkXuBo8k.mjs";
6
+ import "./public-url-BV-YQ_LF.mjs";
7
+ import "./validate-A27peRc4.mjs";
8
+ import "./byline-fields-BmkhEDFF.mjs";
9
+ import "./types-DTjrkhKU.mjs";
10
10
  import { DinewayHandlers } from "./astro/types.mjs";
11
11
 
12
12
  //#region src/plugin-utils.d.ts
@@ -1,12 +1,12 @@
1
- import { Ft as StandardPluginDefinition, ko as PluginDescriptor, kt as ResolvedPlugin } from "../types-CfpX1og5.mjs";
2
- import "../types-BRCUO8NR.mjs";
3
- import "../runner-Dye73myO.mjs";
4
- import "../index-Co7xtjkd.mjs";
5
- import "../types-CPaVj_GC.mjs";
6
- import "../public-url-BQ9vf0AS.mjs";
7
- import "../validate-CDWVODvc.mjs";
8
- import "../byline-fields-51ja6JDa.mjs";
9
- import "../types--3oJQ0hs.mjs";
1
+ import { At as ResolvedPlugin, It as StandardPluginDefinition, jo as PluginDescriptor } from "../types-QjOcidFc.mjs";
2
+ import "../types-7Th6Mwz3.mjs";
3
+ import "../runner-JnJSGXEB.mjs";
4
+ import "../index-CSUSBfdD.mjs";
5
+ import "../types-DkXuBo8k.mjs";
6
+ import "../public-url-BV-YQ_LF.mjs";
7
+ import "../validate-A27peRc4.mjs";
8
+ import "../byline-fields-BmkhEDFF.mjs";
9
+ import "../types-DTjrkhKU.mjs";
10
10
 
11
11
  //#region src/plugins/adapt-sandbox-entry.d.ts
12
12
  /**
@@ -1,4 +1,4 @@
1
- import { n as PLUGIN_CAPABILITIES, t as HOOK_NAMES } from "../manifest-schema-CfKD0thC.mjs";
1
+ import { n as PLUGIN_CAPABILITIES, t as HOOK_NAMES } from "../manifest-schema-DG29meRy.mjs";
2
2
 
3
3
  //#region src/plugins/adapt-sandbox-entry.ts
4
4
  /**
@@ -1,16 +1,17 @@
1
- import { r as validatePluginIdentifier, t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
2
- import { i as encodeBase64url, n as decodeBase64url } from "./base64-F8-DUraK.mjs";
3
- import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-CnuL55JE.mjs";
4
- import { t as OptionsRepository } from "./options-1dBRkoCl.mjs";
5
- import { n as createPluginContext, t as PluginContextFactory } from "./context-MftkHbWx.mjs";
6
- import { i as parseEncryptionKeys, t as DinewaySecretsError } from "./secrets-AdCrGg1c.mjs";
7
- import { t as extractRequestMeta } from "./request-meta-BW0the1R.mjs";
8
- import { r as setCronTasksEnabled } from "./cron-mGVPQ5e6.mjs";
9
- import { Migrator, sql } from "kysely";
10
- import { AsyncLocalStorage } from "node:async_hooks";
1
+ import { r as validatePluginIdentifier, t as validateIdentifier } from "./validate-Co3j6T_K.mjs";
2
+ import { i as encodeBase64url, n as decodeBase64url } from "./base64-Cz-aU0X1.mjs";
3
+ import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-BnG3LPMN.mjs";
4
+ import { t as OptionsRepository } from "./options-BcqHWpc-.mjs";
5
+ import { n as createPluginContext, t as PluginContextFactory } from "./context-6uqzU-M9.mjs";
6
+ import { t as readRuntimeEnv } from "./runtime-env-CQVAWHzH.mjs";
7
+ import { i as parseEncryptionKeys, t as DinewaySecretsError } from "./secrets-Cg0D2gQW.mjs";
8
+ import { t as extractRequestMeta } from "./request-meta-BOcuHAXD.mjs";
9
+ import { r as setCronTasksEnabled } from "./cron-D7zB6m8i.mjs";
10
+ import { sql } from "kysely";
11
11
  import { ulid } from "ulidx";
12
- import { z } from "astro/zod";
12
+ import { AsyncLocalStorage } from "node:async_hooks";
13
13
  import { Permissions } from "@dineway-ai/auth";
14
+ import { z } from "astro/zod";
14
15
  import { Worker } from "node:worker_threads";
15
16
 
16
17
  //#region src/database/repositories/plugin-secrets.ts
@@ -18,7 +19,7 @@ var PluginSecretRepository = class {
18
19
  constructor(db) {
19
20
  this.db = db;
20
21
  }
21
- async put(input) {
22
+ preparePut(input) {
22
23
  const now = input.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString();
23
24
  const row = {
24
25
  plugin_id: input.pluginId,
@@ -31,14 +32,17 @@ var PluginSecretRepository = class {
31
32
  created_at: now,
32
33
  updated_at: now
33
34
  };
34
- await this.db.insertInto("_dineway_plugin_secrets").values(row).onConflict((conflict) => conflict.columns(["plugin_id", "secret_name"]).doUpdateSet({
35
+ return this.db.insertInto("_dineway_plugin_secrets").values(row).onConflict((conflict) => conflict.columns(["plugin_id", "secret_name"]).doUpdateSet({
35
36
  encryption_version: row.encryption_version,
36
37
  key_id: row.key_id,
37
38
  nonce: row.nonce,
38
39
  ciphertext: row.ciphertext,
39
40
  fingerprint: row.fingerprint,
40
41
  updated_at: now
41
- })).execute();
42
+ })).compile();
43
+ }
44
+ async put(input) {
45
+ await this.db.executeQuery(this.preparePut(input));
42
46
  const stored = await this.find(input.pluginId, input.name);
43
47
  if (!stored) throw new Error("Plugin secret write did not persist.");
44
48
  return stored;
@@ -50,6 +54,9 @@ var PluginSecretRepository = class {
50
54
  async list(pluginId) {
51
55
  return (await this.db.selectFrom("_dineway_plugin_secrets").selectAll().where("plugin_id", "=", pluginId).orderBy("secret_name", "asc").execute()).map(rowToStoredPluginSecret);
52
56
  }
57
+ prepareDelete(pluginId, name) {
58
+ return this.db.deleteFrom("_dineway_plugin_secrets").where("plugin_id", "=", pluginId).where("secret_name", "=", name).compile();
59
+ }
53
60
  async delete(pluginId, name) {
54
61
  const result = await this.db.deleteFrom("_dineway_plugin_secrets").where("plugin_id", "=", pluginId).where("secret_name", "=", name).executeTakeFirst();
55
62
  return Number(result.numDeletedRows ?? 0) > 0;
@@ -1304,6 +1311,7 @@ function defineNativePlugin(definition) {
1304
1311
  return {
1305
1312
  id,
1306
1313
  version,
1314
+ d1: definition.d1,
1307
1315
  capabilities: normalizedCapabilities,
1308
1316
  allowedHosts,
1309
1317
  storage,
@@ -1439,69 +1447,6 @@ function resolveHook(hook, pluginId) {
1439
1447
  };
1440
1448
  }
1441
1449
 
1442
- //#endregion
1443
- //#region src/plugins/migrations.ts
1444
- const LEADING_AT = /^@/;
1445
- var StaticPluginMigrationProvider = class {
1446
- constructor(migrations) {
1447
- this.migrations = migrations;
1448
- }
1449
- async getMigrations() {
1450
- return this.migrations;
1451
- }
1452
- };
1453
- /**
1454
- * Run migrations contributed by configured trusted native plugins.
1455
- *
1456
- * Each plugin receives isolated Kysely migration and lock tables. This keeps migration history valid
1457
- * when another plugin is removed and lets different plugins safely reuse local migration names.
1458
- */
1459
- async function runPluginMigrations(db, plugins) {
1460
- const applied = [];
1461
- for (const plugin of [...plugins].toSorted((left, right) => left.id.localeCompare(right.id))) {
1462
- if (Object.keys(plugin.migrations).length === 0) continue;
1463
- const tables = pluginMigrationTableNames(plugin.id);
1464
- const { error, results } = await new Migrator({
1465
- db,
1466
- provider: new StaticPluginMigrationProvider(plugin.migrations),
1467
- migrationTableName: tables.migrations,
1468
- migrationLockTableName: tables.lock
1469
- }).migrateToLatest();
1470
- const successful = results?.filter((result) => result.status === "Success").map((result) => result.migrationName) ?? [];
1471
- if (error) {
1472
- const failed = results?.find((result) => result.status === "Error")?.migrationName;
1473
- throw new Error(`Plugin migration failed for ${plugin.id}${failed ? ` (${failed})` : ""}: ${errorMessage(error)}`, { cause: error });
1474
- }
1475
- applied.push({
1476
- pluginId: plugin.id,
1477
- applied: successful
1478
- });
1479
- }
1480
- return applied;
1481
- }
1482
- function pluginMigrationTableNames(pluginId) {
1483
- const slug = pluginId.replace(LEADING_AT, "").replaceAll("/", "_").replaceAll("-", "_").slice(0, 20);
1484
- const suffix = fnv1a(pluginId);
1485
- return {
1486
- migrations: `_dineway_plugin_migration_${slug}_${suffix}`,
1487
- lock: `_dineway_plugin_migration_lock_${slug}_${suffix}`
1488
- };
1489
- }
1490
- function fnv1a(value) {
1491
- let hash = 2166136261;
1492
- for (let index = 0; index < value.length; index++) {
1493
- hash ^= value.charCodeAt(index);
1494
- hash = Math.imul(hash, 16777619);
1495
- }
1496
- return (hash >>> 0).toString(16).padStart(8, "0");
1497
- }
1498
- function errorMessage(error) {
1499
- if (!(error instanceof Error)) return JSON.stringify(error);
1500
- if (error.message) return error.message;
1501
- if (error.cause instanceof Error && error.cause.message) return error.cause.message;
1502
- return "unknown error";
1503
- }
1504
-
1505
1450
  //#endregion
1506
1451
  //#region src/plugins/hooks.ts
1507
1452
  /**
@@ -2922,13 +2867,13 @@ var PluginSecretStore = class {
2922
2867
  this.repository = new PluginSecretRepository(db);
2923
2868
  this.keysPromise = options.keys ? Promise.resolve(options.keys) : parseEncryptionKeys(readEncryptionKey(options.env));
2924
2869
  }
2925
- async set(pluginId, name, value) {
2870
+ async prepareValue(pluginId, name, value) {
2926
2871
  validateSecretIdentity(pluginId, name);
2927
2872
  validateSecretValue(value);
2928
2873
  const primaryKey = (await this.requireKeys())[0];
2929
2874
  if (!primaryKey) throw encryptionKeyRequired();
2930
2875
  const encrypted = await encryptSecret(primaryKey, pluginId, name, value);
2931
- return toStatus(await this.repository.put({
2876
+ return {
2932
2877
  pluginId,
2933
2878
  name,
2934
2879
  encryptionVersion: ENCRYPTION_VERSION,
@@ -2936,7 +2881,15 @@ var PluginSecretStore = class {
2936
2881
  nonce: encrypted.nonce,
2937
2882
  ciphertext: encrypted.ciphertext,
2938
2883
  fingerprint: await fingerprintSecret(primaryKey, value)
2939
- }));
2884
+ };
2885
+ }
2886
+ /** Encrypt before composing a larger atomic write; this method does not change storage. */
2887
+ async prepareWrite(pluginId, name, value) {
2888
+ validateSecretIdentity(pluginId, name);
2889
+ return value === null ? this.repository.prepareDelete(pluginId, name) : this.repository.preparePut(await this.prepareValue(pluginId, name, value));
2890
+ }
2891
+ async set(pluginId, name, value) {
2892
+ return toStatus(await this.repository.put(await this.prepareValue(pluginId, name, value)));
2940
2893
  }
2941
2894
  async status(pluginId, name) {
2942
2895
  validateSecretIdentity(pluginId, name);
@@ -3045,9 +2998,7 @@ function encryptionKeyRequired() {
3045
2998
  }
3046
2999
  function readEncryptionKey(env) {
3047
3000
  if (env) return env.DINEWAY_ENCRYPTION_KEY;
3048
- const meta = import.meta.env ?? {};
3049
- const proc = typeof process !== "undefined" && process.env ? process.env : {};
3050
- return meta.DINEWAY_ENCRYPTION_KEY ?? proc.DINEWAY_ENCRYPTION_KEY;
3001
+ return readRuntimeEnv("DINEWAY_ENCRYPTION_KEY");
3051
3002
  }
3052
3003
  function toStatus(stored) {
3053
3004
  return {
@@ -4324,4 +4275,4 @@ function createNodeSandboxRunner(options) {
4324
4275
  }
4325
4276
 
4326
4277
  //#endregion
4327
- export { portableTextToProsemirror as C, image as D, reference as E, RelationRepository as O, verifyGuestAccessToken as S, portableText as T, DEFAULT_PLUGIN_RAW_BODY_LIMIT_BYTES as _, createNoopSandboxRunner as a, hashGuestAccessToken as b, PluginSecretStore as c, EmailPipeline as d, HookPipeline as f, definePlugin as g, runPluginMigrations as h, SandboxNotAvailableError as i, PluginRouteError as l, resolveExclusiveHooks as m, createNodeSandboxRunner as n, PluginManager as o, createHookPipeline as p, NoopSandboxRunner as r, createPluginManager as s, NodeSandboxRunner as t, PluginRouteRegistry as u, readBoundedPluginRouteBody as v, prosemirrorToPortableText as w, issueGuestAccessToken as x, GuestAccessTokenConfigurationError as y };
4278
+ export { prosemirrorToPortableText as C, RelationRepository as D, image as E, portableTextToProsemirror as S, reference as T, readBoundedPluginRouteBody as _, createNoopSandboxRunner as a, issueGuestAccessToken as b, PluginSecretStore as c, EmailPipeline as d, HookPipeline as f, DEFAULT_PLUGIN_RAW_BODY_LIMIT_BYTES as g, definePlugin as h, SandboxNotAvailableError as i, PluginRouteError as l, resolveExclusiveHooks as m, createNodeSandboxRunner as n, PluginManager as o, createHookPipeline as p, NoopSandboxRunner as r, createPluginManager as s, NodeSandboxRunner as t, PluginRouteRegistry as u, GuestAccessTokenConfigurationError as v, portableText as w, verifyGuestAccessToken as x, hashGuestAccessToken as y };
@@ -1,5 +1,5 @@
1
- import { t as OptionsRepository } from "./options-1dBRkoCl.mjs";
2
- import { t as buildStableHash } from "./stable-hash-DF7R5eN8.mjs";
1
+ import { t as OptionsRepository } from "./options-BcqHWpc-.mjs";
2
+ import { t as buildStableHash } from "./stable-hash-DEtJgcp7.mjs";
3
3
  import { z } from "zod";
4
4
 
5
5
  //#region src/review-automation/policy.ts
@@ -1,7 +1,7 @@
1
1
  import { n as loadBetterSqlite3, t as createDatabase } from "./connection-DJ3GzHVH.mjs";
2
2
  import { runWithContext } from "./request-context.mjs";
3
- import { a as verifyPreviewSignature, t as buildPreviewSignatureHeader } from "./sidecar-client-Bw2C0XTf.mjs";
4
- import { t as generatePreviewToken } from "./tokens-c-qxNqzC.mjs";
3
+ import { a as verifyPreviewSignature, t as buildPreviewSignatureHeader } from "./sidecar-client-CnpGTvYq.mjs";
4
+ import { t as generatePreviewToken } from "./tokens-Bjuf1HID.mjs";
5
5
  import { createHash } from "node:crypto";
6
6
  import { sql } from "kysely";
7
7
  import { ulid } from "ulidx";
@@ -1,4 +1,4 @@
1
- import { f as MediaProvider } from "./placeholder-D03pGvqM.mjs";
1
+ import { f as MediaProvider } from "./placeholder-BHTaoCYx.mjs";
2
2
 
3
3
  //#region src/media/provider-loader.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { Oo as DinewayConfig } from "./types-CfpX1og5.mjs";
1
+ import { Ao as DinewayConfig } from "./types-QjOcidFc.mjs";
2
2
 
3
3
  //#region src/api/public-url.d.ts
4
4
  /**
@@ -1,5 +1,5 @@
1
- import { i as CollectionWithFields } from "./types-CKIt_jmM.mjs";
2
- import { t as Database } from "./types-BRCUO8NR.mjs";
1
+ import { i as CollectionWithFields } from "./types-Bs-7Geuh.mjs";
2
+ import { t as Database } from "./types-7Th6Mwz3.mjs";
3
3
  import { Kysely } from "kysely";
4
4
  import { z } from "zod";
5
5