dineway 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/dist/activity-DUaz_w7p.mjs +79 -0
  2. package/dist/{activity-events-y6eT8UW6.mjs → activity-events-CJDvE2uc.mjs} +1 -77
  3. package/dist/{actor-CrObAPV0.mjs → actor-0QJ1Gbtf.mjs} +1 -1
  4. package/dist/{allowed-origins-_oeyP6x-.mjs → allowed-origins--OwHHiY8.mjs} +1 -1
  5. package/dist/api/route-utils.d.mts +9 -10
  6. package/dist/api/route-utils.mjs +14 -14
  7. package/dist/api/schemas/index.d.mts +2 -2
  8. package/dist/api/schemas/index.mjs +5 -5
  9. package/dist/{api-ByrU2q-Z.mjs → api-B4PHIF4V.mjs} +51 -23
  10. package/dist/{api-tokens-CjVMQT-X.mjs → api-tokens-tbK_sORH.mjs} +1 -1
  11. package/dist/{apply-bZswmZPm.mjs → apply-DjTqq6Ae.mjs} +19 -19
  12. package/dist/astro/index.d.mts +10 -11
  13. package/dist/astro/index.mjs +10 -5
  14. package/dist/astro/middleware/auth.d.mts +9 -19
  15. package/dist/astro/middleware/auth.mjs +6 -6
  16. package/dist/astro/middleware/redirect.mjs +5 -5
  17. package/dist/astro/middleware/request-context.mjs +2 -2
  18. package/dist/astro/middleware/seed.d.mts +1 -1
  19. package/dist/astro/middleware/seed.mjs +1 -1
  20. package/dist/astro/middleware/setup.mjs +1 -1
  21. package/dist/astro/middleware.mjs +140 -98
  22. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +6 -6
  23. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +6 -6
  24. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
  25. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
  26. package/dist/astro/routes/api/admin/briefing.mjs +18 -18
  27. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
  28. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +9 -9
  29. package/dist/astro/routes/api/admin/byline-fields/index.mjs +9 -9
  30. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +9 -9
  31. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +16 -16
  32. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +16 -16
  33. package/dist/astro/routes/api/admin/bylines/index.mjs +16 -16
  34. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +12 -12
  35. package/dist/astro/routes/api/admin/comments/_id_.mjs +5 -5
  36. package/dist/astro/routes/api/admin/comments/bulk.mjs +10 -10
  37. package/dist/astro/routes/api/admin/comments/counts.mjs +5 -5
  38. package/dist/astro/routes/api/admin/comments/index.mjs +10 -10
  39. package/dist/astro/routes/api/admin/context/_id_/history.mjs +25 -24
  40. package/dist/astro/routes/api/admin/context/_id_/index.mjs +25 -24
  41. package/dist/astro/routes/api/admin/context/_id_/review.mjs +30 -29
  42. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +30 -29
  43. package/dist/astro/routes/api/admin/context/diff.mjs +29 -28
  44. package/dist/astro/routes/api/admin/context/index.mjs +30 -29
  45. package/dist/astro/routes/api/admin/context/stale.mjs +29 -28
  46. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +25 -24
  47. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +29 -28
  48. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +29 -28
  49. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +26 -25
  50. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +2 -2
  51. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  52. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  53. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +52 -51
  54. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +52 -51
  55. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +44 -44
  56. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +51 -50
  57. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +51 -50
  58. package/dist/astro/routes/api/admin/plugins/index.mjs +44 -44
  59. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  60. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +44 -44
  61. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +51 -50
  62. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +44 -44
  63. package/dist/astro/routes/api/admin/plugins/updates.mjs +44 -44
  64. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +5 -5
  65. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +30 -65
  66. package/dist/astro/routes/api/admin/review-requests/index.d.mts +2 -1
  67. package/dist/astro/routes/api/admin/review-requests/index.mjs +58 -11
  68. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +44 -44
  69. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  70. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +44 -44
  71. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +2 -2
  72. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
  73. package/dist/astro/routes/api/admin/users/_id_/index.mjs +7 -7
  74. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +2 -2
  75. package/dist/astro/routes/api/admin/users/index.mjs +6 -6
  76. package/dist/astro/routes/api/auth/dev-bypass.mjs +4 -4
  77. package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
  78. package/dist/astro/routes/api/auth/invite/complete.mjs +10 -10
  79. package/dist/astro/routes/api/auth/invite/index.mjs +7 -7
  80. package/dist/astro/routes/api/auth/invite/register-options.mjs +9 -9
  81. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  82. package/dist/astro/routes/api/auth/magic-link/send.mjs +9 -9
  83. package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
  84. package/dist/astro/routes/api/auth/me.mjs +8 -8
  85. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  86. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +2 -2
  87. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  88. package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -6
  89. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  90. package/dist/astro/routes/api/auth/passkey/options.mjs +11 -11
  91. package/dist/astro/routes/api/auth/passkey/register/options.mjs +9 -9
  92. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +10 -10
  93. package/dist/astro/routes/api/auth/passkey/verify.mjs +10 -10
  94. package/dist/astro/routes/api/auth/setup-token/index.mjs +5 -5
  95. package/dist/astro/routes/api/auth/setup-token/verify.mjs +2 -2
  96. package/dist/astro/routes/api/auth/signup/complete.mjs +10 -10
  97. package/dist/astro/routes/api/auth/signup/request.mjs +9 -9
  98. package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
  99. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +13 -13
  100. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +12 -12
  101. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  102. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +6 -5
  103. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +6 -5
  104. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +6 -5
  105. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +10 -10
  106. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +49 -21
  107. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +6 -5
  108. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  109. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +67 -33
  110. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +14 -14
  111. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  112. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +6 -5
  113. package/dist/astro/routes/api/content/_collection_/_id_.mjs +11 -10
  114. package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
  115. package/dist/astro/routes/api/content/_collection_/index.mjs +11 -10
  116. package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -7
  117. package/dist/astro/routes/api/dashboard.mjs +8 -8
  118. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  119. package/dist/astro/routes/api/health.mjs +1 -1
  120. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  121. package/dist/astro/routes/api/import/probe.mjs +19 -19
  122. package/dist/astro/routes/api/import/wordpress/analyze.mjs +8 -8
  123. package/dist/astro/routes/api/import/wordpress/execute.d.mts +8 -9
  124. package/dist/astro/routes/api/import/wordpress/execute.mjs +35 -34
  125. package/dist/astro/routes/api/import/wordpress/media.d.mts +8 -9
  126. package/dist/astro/routes/api/import/wordpress/media.mjs +12 -12
  127. package/dist/astro/routes/api/import/wordpress/prepare.mjs +34 -33
  128. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +9 -10
  129. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +31 -30
  130. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  131. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +22 -22
  132. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +8 -9
  133. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +40 -39
  134. package/dist/astro/routes/api/manifest.mjs +4 -4
  135. package/dist/astro/routes/api/mcp.mjs +554 -167
  136. package/dist/astro/routes/api/media/_id_/confirm.mjs +10 -10
  137. package/dist/astro/routes/api/media/_id_.mjs +8 -8
  138. package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
  139. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  140. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  141. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  142. package/dist/astro/routes/api/media/upload-url.mjs +11 -11
  143. package/dist/astro/routes/api/media.mjs +14 -14
  144. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +30 -29
  145. package/dist/astro/routes/api/menus/_name_/items.mjs +30 -29
  146. package/dist/astro/routes/api/menus/_name_/reorder.mjs +30 -29
  147. package/dist/astro/routes/api/menus/_name_/translations.mjs +30 -29
  148. package/dist/astro/routes/api/menus/_name_.mjs +30 -29
  149. package/dist/astro/routes/api/menus/index.mjs +30 -29
  150. package/dist/astro/routes/api/oauth/authorize.mjs +7 -7
  151. package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
  152. package/dist/astro/routes/api/oauth/device/code.mjs +9 -9
  153. package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
  154. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  155. package/dist/astro/routes/api/oauth/token/refresh.mjs +6 -6
  156. package/dist/astro/routes/api/oauth/token/revoke.mjs +6 -6
  157. package/dist/astro/routes/api/oauth/token.mjs +6 -6
  158. package/dist/astro/routes/api/openapi.json.mjs +4 -4
  159. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +20 -5
  160. package/dist/astro/routes/api/redirects/404s/index.mjs +10 -10
  161. package/dist/astro/routes/api/redirects/404s/summary.mjs +10 -10
  162. package/dist/astro/routes/api/redirects/_id_.mjs +31 -30
  163. package/dist/astro/routes/api/redirects/index.mjs +31 -30
  164. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  165. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
  166. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +46 -45
  167. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +46 -45
  168. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +46 -45
  169. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +46 -45
  170. package/dist/astro/routes/api/schema/collections/index.mjs +46 -45
  171. package/dist/astro/routes/api/schema/index.mjs +8 -8
  172. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +44 -44
  173. package/dist/astro/routes/api/schema/orphans/index.mjs +44 -44
  174. package/dist/astro/routes/api/search/enable.mjs +11 -11
  175. package/dist/astro/routes/api/search/index.mjs +10 -10
  176. package/dist/astro/routes/api/search/rebuild.mjs +11 -11
  177. package/dist/astro/routes/api/search/stats.mjs +6 -6
  178. package/dist/astro/routes/api/search/suggest.mjs +10 -10
  179. package/dist/astro/routes/api/sections/_slug_.mjs +30 -29
  180. package/dist/astro/routes/api/sections/index.mjs +30 -29
  181. package/dist/astro/routes/api/settings/email.mjs +3 -3
  182. package/dist/astro/routes/api/settings.mjs +30 -29
  183. package/dist/astro/routes/api/setup/admin-verify.mjs +12 -12
  184. package/dist/astro/routes/api/setup/admin.mjs +10 -10
  185. package/dist/astro/routes/api/setup/dev-bypass.mjs +25 -25
  186. package/dist/astro/routes/api/setup/dev-reset.mjs +1 -1
  187. package/dist/astro/routes/api/setup/index.mjs +27 -27
  188. package/dist/astro/routes/api/setup/status.mjs +3 -3
  189. package/dist/astro/routes/api/snapshot.mjs +6 -6
  190. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +33 -32
  191. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +33 -32
  192. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +33 -32
  193. package/dist/astro/routes/api/taxonomies/index.mjs +33 -32
  194. package/dist/astro/routes/api/themes/preview.mjs +4 -4
  195. package/dist/astro/routes/api/typegen.mjs +4 -4
  196. package/dist/astro/routes/api/well-known/auth.mjs +2 -2
  197. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +3 -3
  198. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +3 -3
  199. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +29 -28
  200. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +30 -29
  201. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +30 -29
  202. package/dist/astro/routes/api/widget-areas/_name_.mjs +27 -26
  203. package/dist/astro/routes/api/widget-areas/index.mjs +30 -29
  204. package/dist/astro/routes/api/widget-components.mjs +2 -2
  205. package/dist/astro/routes/robots.txt.mjs +6 -6
  206. package/dist/astro/routes/sitemap-_collection_.xml.mjs +9 -9
  207. package/dist/astro/routes/sitemap.xml.mjs +7 -7
  208. package/dist/astro/session-driver.d.mts +1 -1
  209. package/dist/astro/session-driver.mjs +2 -2
  210. package/dist/astro/types.d.mts +13 -12
  211. package/dist/{audit-ByVKIwWF.mjs → audit-B2pRxZ20.mjs} +1 -1
  212. package/dist/auth/providers/github.d.mts +1 -1
  213. package/dist/auth/providers/google.d.mts +1 -1
  214. package/dist/{auth-control-guard-CqeUmQsv.mjs → auth-control-guard-D71jourk.mjs} +1 -1
  215. package/dist/{authorize-CcBxcHtz.mjs → authorize-ZXPGPwKn.mjs} +1 -1
  216. package/dist/{briefing-CawZ59CY.mjs → briefing-0rf-su3-.mjs} +7 -7
  217. package/dist/{briefing-BJaJI8dm.mjs → briefing-kRhegBoF.mjs} +1 -1
  218. package/dist/{bundle-7C_DpkEq.mjs → bundle-CEcdUa1s.mjs} +2 -2
  219. package/dist/{byline-e51-fWRs.mjs → byline-7xR185Ly.mjs} +6 -6
  220. package/dist/{byline-fields-D-N5qVIG.mjs → byline-fields-BKzA0fJU.mjs} +1 -1
  221. package/dist/{byline-fields-CUvbslGc.d.mts → byline-fields-Ckeqd1OY.d.mts} +57 -47
  222. package/dist/{byline-fields-DOJO16Gm.mjs → byline-fields-WN7RQT4q.mjs} +10 -4
  223. package/dist/{byline-registry-87nNnYl4.mjs → byline-registry-Ba54M74c.mjs} +2 -2
  224. package/dist/{bylines-CMQNCNFh.mjs → bylines-C-EL6dh3.mjs} +3 -3
  225. package/dist/{bylines-y4LO-dTj.mjs → bylines-CmZFCMr0.mjs} +5 -5
  226. package/dist/{cache-C-FNTFYK.mjs → cache-DkVCKGio.mjs} +2 -2
  227. package/dist/{chunks-CxBt-GxR.mjs → chunks-ChGNDY8r.mjs} +1 -1
  228. package/dist/cli/index.d.mts +29 -1
  229. package/dist/cli/index.mjs +1391 -1123
  230. package/dist/cli/plugin-kit.d.mts +75 -0
  231. package/dist/cli/plugin-kit.mjs +4 -0
  232. package/dist/client/external-auth-headers.d.mts +1 -1
  233. package/dist/client/index.d.mts +27 -52
  234. package/dist/client/index.mjs +34 -7
  235. package/dist/client-factory-BDD9azPJ.mjs +233 -0
  236. package/dist/{comment-DlA4iChg.mjs → comment-DFALgsJD.mjs} +1 -1
  237. package/dist/{comment-reaction-DfFao1ST.mjs → comment-reaction-C37bf99u.mjs} +1 -1
  238. package/dist/{comments-DApFGMsP.mjs → comments-B3NwDBxl.mjs} +1 -1
  239. package/dist/{content-Bh4BDjv8.mjs → content-DJcAYFhz.mjs} +2 -2
  240. package/dist/{content-refresh-CgutSUfO.mjs → content-refresh-B4ZCmxgd.mjs} +5 -5
  241. package/dist/{context-CK4ym2Sf.mjs → context-DnpXcp6Y.mjs} +2 -2
  242. package/dist/{context-C5W3G18y.mjs → context-fSCYLL3c.mjs} +24 -13
  243. package/dist/{context-route-helpers-MASyGgWf.mjs → context-route-helpers-CI8XzcsK.mjs} +2 -2
  244. package/dist/{dashboard-DQkVT7Ei.mjs → dashboard-D0nj5oWg.mjs} +4 -4
  245. package/dist/db/index.d.mts +3 -3
  246. package/dist/db/index.mjs +1 -1
  247. package/dist/db/libsql.d.mts +1 -1
  248. package/dist/db/postgres.d.mts +1 -1
  249. package/dist/db/sqlite.d.mts +1 -1
  250. package/dist/{device-flow-BnqRH-T9.mjs → device-flow-BJe6VEhP.mjs} +5 -5
  251. package/dist/{enrich-DIFIFA8O.mjs → enrich-Ck9tfMqe.mjs} +1 -1
  252. package/dist/{experimental-workflows-BMsUnIAw.mjs → experimental-workflows-GVhUgzEs.mjs} +1 -1
  253. package/dist/{field-defs-cache-DRNdhBJv.mjs → field-defs-cache-DL-T2XVS.mjs} +4 -4
  254. package/dist/forgeway-seo-client-G5ddhVHd.mjs +456 -0
  255. package/dist/{fts-manager-Crzypjqu.mjs → fts-manager-ewTGohf4.mjs} +1 -1
  256. package/dist/{hitl-requests-B4Vbcmaq.mjs → hitl-requests-DEFj8e6u.mjs} +2 -2
  257. package/dist/{hitl-route-helpers-hEVzvP8l.mjs → hitl-route-helpers-C23JHaWz.mjs} +5 -5
  258. package/dist/{import-Bh9biJfx.mjs → import-CXXL5pip.mjs} +7 -7
  259. package/dist/{index-D4y6NGiy.d.mts → index-DcnOCD1e.d.mts} +79 -3
  260. package/dist/index.d.mts +15 -17
  261. package/dist/index.mjs +81 -78
  262. package/dist/{jsonld-Dq0gsnOH.d.mts → jsonld-DzKbhRZ4.d.mts} +2 -2
  263. package/dist/{load-DmYeniXl.mjs → load-CFtJRT3c.mjs} +1 -1
  264. package/dist/{loader-CjWqjweO.mjs → loader-aWkkc1_o.mjs} +2 -2
  265. package/dist/{manifest-schema-BxVPYMJR.mjs → manifest-schema-uA6pRFXi.mjs} +6 -2
  266. package/dist/{mcp-reviewed-executor-TwVbMzG6.mjs → mcp-reviewed-executor-Dn52L_yY.mjs} +6 -3
  267. package/dist/media/image-endpoint.mjs +1 -1
  268. package/dist/media/index.d.mts +1 -1
  269. package/dist/media/index.mjs +2 -2
  270. package/dist/media/local-runtime.d.mts +10 -11
  271. package/dist/media/local-runtime.mjs +2 -2
  272. package/dist/{media-DMj0grzC.mjs → media-CVMOoywq.mjs} +1 -1
  273. package/dist/{media-allowlist-BlVCSzHx.mjs → media-allowlist-zDNJmXCo.mjs} +1 -1
  274. package/dist/{menus-xvsnVZXw.mjs → menus-CCG2z5um.mjs} +6 -6
  275. package/dist/{menus-TaW1gKnk.mjs → menus-CmyIkRG5.mjs} +2 -2
  276. package/dist/{oauth-authorization-DiaGvRVz.mjs → oauth-authorization-B9H7X85L.mjs} +5 -5
  277. package/dist/{oauth-clients-Dl9E8dEM.mjs → oauth-clients-Dwl32-Uj.mjs} +2 -2
  278. package/dist/object-cache/memory.d.mts +1 -1
  279. package/dist/output-DhBe5_Pi.mjs +68 -0
  280. package/dist/page/index.d.mts +9 -3
  281. package/dist/page/index.mjs +1 -1
  282. package/dist/{parse-CbymENaR.mjs → parse-i15EFSAE.mjs} +1 -1
  283. package/dist/plugin-utils.d.mts +8 -9
  284. package/dist/plugins/adapt-sandbox-entry.d.mts +8 -9
  285. package/dist/plugins/adapt-sandbox-entry.mjs +3 -1
  286. package/dist/{plugins-BolVa-tl.mjs → plugins-CPA2PtfY.mjs} +95 -10
  287. package/dist/portable-text-E79LyjGo.d.mts +45 -0
  288. package/dist/{preview-vSVg6fwG.mjs → preview-BjedZm8G.mjs} +2 -2
  289. package/dist/project-env-DKibmuP8.mjs +95 -0
  290. package/dist/{provider-loader-MD8zAbnH.d.mts → provider-loader-DC2JdWeO.d.mts} +1 -1
  291. package/dist/{public-url-gsp3oUbu.d.mts → public-url-DQJCnYi9.d.mts} +1 -1
  292. package/dist/publication-authorization-RKiHXKtq.mjs +985 -0
  293. package/dist/{query-jaAmw8E1.mjs → query-C2U5u5_p.mjs} +3 -3
  294. package/dist/{query-CfRCdaL3.mjs → query-DEv5x6yB.mjs} +13 -13
  295. package/dist/{rate-limit-ZLdyWoZF.mjs → rate-limit-DglsAJSw.mjs} +2 -2
  296. package/dist/{redirect-BAjt4Z6b.mjs → redirect-ubhEqQCQ.mjs} +2 -2
  297. package/dist/{redirects-CA-xylPG.mjs → redirects-Bhpm8bRe.mjs} +18 -10
  298. package/dist/{redirects-BTdwpQtE.mjs → redirects-xs2yahLq.mjs} +4 -4
  299. package/dist/{registry-CtyVedcN.mjs → registry-BYYyb2tF.mjs} +24 -10
  300. package/dist/{request-meta-CUypToDJ.mjs → request-meta-CFe1tW2M.mjs} +1 -1
  301. package/dist/review-payload-BysRWpxS.mjs +111 -0
  302. package/dist/{review-requests-DUyEmtmG.mjs → review-requests-CTWGnWUt.mjs} +1 -1
  303. package/dist/review-requests-D42VEP1l.mjs +142 -0
  304. package/dist/review-route-helpers-C31vO6SI.mjs +41 -0
  305. package/dist/{runner-DB7CRfOF.mjs → runner-BgmttQmD.mjs} +1151 -447
  306. package/dist/{runner-1tC2tIRV.d.mts → runner-D6hzs8L9.d.mts} +1 -1
  307. package/dist/runtime.d.mts +9 -10
  308. package/dist/runtime.mjs +3 -3
  309. package/dist/schema-DUtnZxjZ.mjs +8 -0
  310. package/dist/{search-DSaLgEFI.mjs → search-DUKgZUlm.mjs} +3 -3
  311. package/dist/{secrets-CDZo2k8L.mjs → secrets-ZV5rd8yV.mjs} +1 -1
  312. package/dist/{sections-PVVXHGfp.mjs → sections-DvFgsnda.mjs} +2 -2
  313. package/dist/seed/index.d.mts +2 -2
  314. package/dist/seed/index.mjs +19 -19
  315. package/dist/seo/index.d.mts +1 -1
  316. package/dist/seo/index.mjs +1 -1
  317. package/dist/{seo-CQG3GCHQ.mjs → seo-BU8MLCS9.mjs} +1 -1
  318. package/dist/{service-DiN4ZuPp.mjs → service-FL3fB0Rx.mjs} +2 -2
  319. package/dist/{settings-BbqgHWpU.mjs → settings-BECcAIRH.mjs} +5 -5
  320. package/dist/{settings-i4VPP8bT.mjs → settings-EzADu-dd.mjs} +2 -2
  321. package/dist/{site-activity-Dy3FROs0.mjs → site-activity-h8smOlYI.mjs} +1 -1
  322. package/dist/{site-context-DQiL8Fl5.mjs → site-context-B8T1kpUP.mjs} +565 -129
  323. package/dist/stable-hash-DshcXvRE.mjs +19 -0
  324. package/dist/storage/local.d.mts +1 -1
  325. package/dist/storage/local.mjs +1 -1
  326. package/dist/storage/s3.d.mts +1 -1
  327. package/dist/storage/s3.mjs +1 -1
  328. package/dist/{taxonomies-9s-v03H-.mjs → taxonomies-BiM9NtgW.mjs} +3 -3
  329. package/dist/{taxonomies-DRiixp_E.mjs → taxonomies-DSnY5nOa.mjs} +6 -6
  330. package/dist/{taxonomy-Dvsw6BOs.mjs → taxonomy-0k_vRVsD.mjs} +2 -2
  331. package/dist/{types-4garmdWa.mjs → types-A8fPOJnl.mjs} +5 -2
  332. package/dist/{types-DW_-sFyz.d.mts → types-B_FlxIIl.d.mts} +2 -0
  333. package/dist/{types-Dq1qT19x.mjs → types-ChxYDRvx.mjs} +1 -1
  334. package/dist/{types-DU0bU2Wu.d.mts → types-DuQn1G7-.d.mts} +583 -2
  335. package/dist/{runtime-BOeiQsCv.d.mts → types-DwoUifGE.d.mts} +3560 -1355
  336. package/dist/{types-C_ly5eTp.d.mts → types-opjX_kz6.d.mts} +1 -1
  337. package/dist/ui/server-runtime.d.mts +12 -14
  338. package/dist/ui/server-runtime.mjs +21 -21
  339. package/dist/{user-BIZPzCb9.mjs → user-BH-n01y3.mjs} +2 -2
  340. package/dist/{utils-CMDhr5Xd.mjs → utils-D1SrKGtP.mjs} +1 -1
  341. package/dist/{validate-CZvb-BKB.d.mts → validate-CbVFoJgc.d.mts} +59 -5
  342. package/dist/{validate-DNs0pTSc.mjs → validate-D1HL-oLR.mjs} +2 -2
  343. package/dist/version-C3iVRuaF.mjs +6 -0
  344. package/dist/{widgets-f0ibZUIq.mjs → widgets-BZrLrNgS.mjs} +3 -3
  345. package/dist/{wordpress-slugs-BhHJX8XE.mjs → wordpress-slugs-C3PWcowq.mjs} +1 -1
  346. package/dist/{zod-generator-B7TMjyFJ.mjs → zod-generator-C7AsLpSB.mjs} +2 -2
  347. package/package.json +13 -5
  348. package/dist/hitl-Hw1RmWOq.mjs +0 -677
  349. package/dist/review-requests-C9Ff11Vq.mjs +0 -79
  350. package/dist/schema-DXdYj4R3.mjs +0 -8
  351. package/dist/types-C46EvNdc.d.mts +0 -56
  352. package/dist/types-C8XW6L19.d.mts +0 -1468
  353. package/dist/version-BTvfRGc6.mjs +0 -6
  354. /package/dist/{adapters-NVSs4UH7.d.mts → adapters-BiRymx02.d.mts} +0 -0
  355. /package/dist/{api-tokens-2r7OWi_I.mjs → api-tokens-Ypaly90d.mjs} +0 -0
  356. /package/dist/{challenge-store-Bjlepa2E.mjs → challenge-store-D5pSY2S1.mjs} +0 -0
  357. /package/dist/{components-Bclf98Be.mjs → components-DImzlLhb.mjs} +0 -0
  358. /package/dist/{context-types-DqTo6C79.mjs → context-types-eBuMDAg-.mjs} +0 -0
  359. /package/dist/{cron-cKcNTix_.mjs → cron-B1SL_lsb.mjs} +0 -0
  360. /package/dist/{default--K40jqm0.mjs → default-D4Vygcy_.mjs} +0 -0
  361. /package/dist/{email-console-ChgKFO8-.mjs → email-console-Bp0r68iF.mjs} +0 -0
  362. /package/dist/{error-CytFlgcd.mjs → error-CSVaQNZy.mjs} +0 -0
  363. /package/dist/{escape-Bd4P_xKg.mjs → escape-DN4Qmjsl.mjs} +0 -0
  364. /package/dist/{hash-BPmX6P8I.mjs → hash-mxxx2oPW.mjs} +0 -0
  365. /package/dist/{media-url-lEKSrpr9.mjs → media-url-BdoLPvg8.mjs} +0 -0
  366. /package/dist/{mime-CA7Lgovc.mjs → mime-C0vOHFm7.mjs} +0 -0
  367. /package/dist/{mode-C4CIyjtR.mjs → mode-C8yZnIlR.mjs} +0 -0
  368. /package/dist/{normalize-5ek_z7de.mjs → normalize-Cyt7JdF7.mjs} +0 -0
  369. /package/dist/{oauth-state-store-CNoXafF7.mjs → oauth-state-store-CndT35iw.mjs} +0 -0
  370. /package/dist/{oauth-user-lookup-Ygw4bNyt.mjs → oauth-user-lookup-CMehAaKs.mjs} +0 -0
  371. /package/dist/{parser-C1nYd-81.mjs → parser-06LLLL4E.mjs} +0 -0
  372. /package/dist/{passkey-config-BUwu8BA3.mjs → passkey-config-NYukYGed.mjs} +0 -0
  373. /package/dist/{patterns-BhAvqO0S.mjs → patterns-CoqlXUvk.mjs} +0 -0
  374. /package/dist/{placeholder-uvNRZBX9.d.mts → placeholder-DkWkXfDI.d.mts} +0 -0
  375. /package/dist/{portable-text-dA_UlJwW.mjs → portable-text-BASHceim.mjs} +0 -0
  376. /package/dist/{process-cache-7xgAO9JY.mjs → process-cache-CCDgti7j.mjs} +0 -0
  377. /package/dist/{provider-loader-D0w9dqjm.mjs → provider-loader-BtfrrzfD.mjs} +0 -0
  378. /package/dist/{public-url-BEz_sM9n.mjs → public-url-Cp6hyjVR.mjs} +0 -0
  379. /package/dist/{redirect-wphRBv4y.mjs → redirect-DrbEmU9a.mjs} +0 -0
  380. /package/dist/{request-cache-D9GQBxMP.mjs → request-cache-CBFjCwSt.mjs} +0 -0
  381. /package/dist/{resolve-Cb6Dbz-C.mjs → resolve-DE71WcL9.mjs} +0 -0
  382. /package/dist/{seo-qa7Dn0jK.mjs → seo-BLszyJxd.mjs} +0 -0
  383. /package/dist/{seo-contributions-C1EnikHB.mjs → seo-contributions-GnCuL1ML.mjs} +0 -0
  384. /package/dist/{session-user-CAKImna3.mjs → session-user-Ct6GBLvn.mjs} +0 -0
  385. /package/dist/{setup-complete-B8fl-mjV.mjs → setup-complete-Da0axZEE.mjs} +0 -0
  386. /package/dist/{setup-nonce-CoyjILvW.mjs → setup-nonce-BtkKnvxQ.mjs} +0 -0
  387. /package/dist/{sidecar-client-C3mqXg4C.mjs → sidecar-client-Ctzfyyp-.mjs} +0 -0
  388. /package/dist/{site-url-BML3GQYm.mjs → site-url-DJEid0ml.mjs} +0 -0
  389. /package/dist/{ssrf-DWe8jwAp.mjs → ssrf-FJqwQzj4.mjs} +0 -0
  390. /package/dist/{status-DANd8ERo.mjs → status-NqWOSFAD.mjs} +0 -0
  391. /package/dist/{tokens-1RK1n6ED.mjs → tokens-BDQU29Vd.mjs} +0 -0
  392. /package/dist/{transaction-C2EOMTJA.mjs → transaction-0LEAAy8R.mjs} +0 -0
  393. /package/dist/{transport-BNmCqLu7.mjs → transport-C46KHLMP.mjs} +0 -0
  394. /package/dist/{transport-CcJu3Co8.d.mts → transport-D9pKAzFP.d.mts} +0 -0
  395. /package/dist/{trusted-proxy-DTXQ2IMv.mjs → trusted-proxy-Dm7Mxvt6.mjs} +0 -0
  396. /package/dist/{types-B3t5cxhU.mjs → types-B7TDDFMG.mjs} +0 -0
  397. /package/dist/{types-DF7ZuGGk.d.mts → types-BLQCz46p.d.mts} +0 -0
  398. /package/dist/{types-CDpH6MA4.d.mts → types-Cw0PeCT_.d.mts} +0 -0
  399. /package/dist/{types-Rc3gQqqw.d.mts → types-g0zMtraY.d.mts} +0 -0
  400. /package/dist/{types-C5CVgwsV.mjs → types-mVVgRPaU.mjs} +0 -0
  401. /package/dist/{types-POH8PQZh.d.mts → types-wFu80FrO.d.mts} +0 -0
  402. /package/dist/{url-CpyFDFpO.mjs → url-EMAguGVk.mjs} +0 -0
  403. /package/dist/{url-Cac7a9QZ.mjs → url-guoXQQcV.mjs} +0 -0
@@ -1,677 +0,0 @@
1
- import { i as encodeCursor, r as decodeCursor } from "./types-Dq1qT19x.mjs";
2
- import { i as parseSiteBriefingScope } from "./briefing-CawZ59CY.mjs";
3
- import { ulid } from "ulidx";
4
- import { Role } from "@dineway-ai/auth";
5
-
6
- //#region src/database/repositories/entity-aliases.ts
7
- const WHITESPACE_PATTERN = /\s+/g;
8
- function isResolvableEntityType(value) {
9
- return value === "content" || value === "collection" || value === "plugin" || value === "taxonomy" || value === "menu";
10
- }
11
- function mapEntityAlias(row) {
12
- if (!isResolvableEntityType(row.entity_type)) throw new Error(`Invalid entity alias type: ${row.entity_type}`);
13
- return {
14
- id: row.id,
15
- entityType: row.entity_type,
16
- collectionSlug: row.collection_slug,
17
- entityId: row.entity_id,
18
- alias: row.alias,
19
- normalizedAlias: row.normalized_alias,
20
- createdAt: row.created_at
21
- };
22
- }
23
- function normalizeEntityAlias(value) {
24
- return value.trim().toLowerCase().replace(WHITESPACE_PATTERN, " ");
25
- }
26
- var EntityAliasRepository = class {
27
- constructor(db) {
28
- this.db = db;
29
- }
30
- async create(input) {
31
- const id = ulid();
32
- const normalizedAlias = normalizeEntityAlias(input.alias);
33
- await this.db.insertInto("_dineway_entity_aliases").values({
34
- id,
35
- entity_type: input.entityType,
36
- collection_slug: input.collectionSlug ?? null,
37
- entity_id: input.entityId,
38
- alias: input.alias,
39
- normalized_alias: normalizedAlias
40
- }).execute();
41
- return mapEntityAlias(await this.db.selectFrom("_dineway_entity_aliases").selectAll().where("id", "=", id).executeTakeFirstOrThrow());
42
- }
43
- async findByNormalizedAlias(input) {
44
- const limit = Math.min(Math.max(input.limit ?? 10, 1), 50);
45
- const collectionSlug = input.collectionSlug;
46
- let query = this.db.selectFrom("_dineway_entity_aliases").selectAll().where("normalized_alias", "=", input.normalizedAlias);
47
- if (input.entityTypes && input.entityTypes.length > 0) query = query.where("entity_type", "in", input.entityTypes);
48
- if (collectionSlug) query = query.where((eb) => eb.or([eb("collection_slug", "is", null), eb("collection_slug", "=", collectionSlug)]));
49
- return (await query.orderBy("created_at", "desc").limit(limit).execute()).map(mapEntityAlias);
50
- }
51
- };
52
-
53
- //#endregion
54
- //#region src/database/repositories/hitl-requests.ts
55
- const HITL_REQUEST_STATUSES = [
56
- "pending",
57
- "approved",
58
- "rejected"
59
- ];
60
- const HITL_REQUEST_PRIORITIES = [
61
- "low",
62
- "normal",
63
- "high",
64
- "urgent"
65
- ];
66
- var HitlRequestRepository = class {
67
- constructor(db) {
68
- this.db = db;
69
- }
70
- async create(input) {
71
- const id = ulid();
72
- const now = input.createdAt ?? (/* @__PURE__ */ new Date()).toISOString();
73
- await this.db.insertInto("_dineway_hitl_requests").values(toInsertableHitlRequest(id, input, now)).execute();
74
- const request = await this.findById(id);
75
- if (!request) throw new Error("Failed to create HITL request");
76
- return request;
77
- }
78
- async findById(id) {
79
- const row = await this.db.selectFrom("_dineway_hitl_requests").selectAll().where("id", "=", id).executeTakeFirst();
80
- return row ? rowToHitlRequest(row) : null;
81
- }
82
- async list(query = {}) {
83
- const limit = clampLimit$1(query.limit);
84
- const rows = await this.queryRows(query).execute();
85
- const items = rows.slice(0, limit).map(rowToHitlRequest);
86
- const result = { items };
87
- if (rows.length > limit && items.length > 0) {
88
- const last = items.at(-1);
89
- result.nextCursor = encodeCursor(last.createdAt, last.id);
90
- }
91
- return result;
92
- }
93
- async resolve(id, input) {
94
- const resolvedAt = input.resolvedAt ?? (/* @__PURE__ */ new Date()).toISOString();
95
- const result = await this.db.updateTable("_dineway_hitl_requests").set({
96
- status: input.decision,
97
- resolved_by_actor_type: input.resolvedByActorType,
98
- resolved_by_actor_id: input.resolvedByActorId,
99
- resolved_auth_metadata: jsonStringOrNull(input.resolvedAuthMetadata),
100
- review_note: input.reviewNote ?? null,
101
- resolved_at: resolvedAt,
102
- updated_at: resolvedAt
103
- }).where("id", "=", id).where("status", "=", "pending").executeTakeFirst();
104
- if (Number(result.numUpdatedRows ?? 0) === 0) return null;
105
- return this.findById(id);
106
- }
107
- queryRows(query) {
108
- const limit = clampLimit$1(query.limit);
109
- let q = this.db.selectFrom("_dineway_hitl_requests").selectAll().orderBy("created_at", "desc").orderBy("id", "desc").limit(limit + 1);
110
- if (query.scope) q = q.where("scope", "=", query.scope);
111
- if (query.scopes && query.scopes.length > 0) q = q.where("scope", "in", query.scopes);
112
- if (query.statuses && query.statuses.length > 0) q = q.where("status", "in", query.statuses);
113
- if (query.priority) q = q.where("priority", "=", query.priority);
114
- if (query.actionType) q = q.where("action_type", "=", query.actionType);
115
- if (query.targetRefType) q = q.where("target_ref_type", "=", query.targetRefType);
116
- if (query.targetRefId) q = q.where("target_ref_id", "=", query.targetRefId);
117
- if (query.relatedAssignmentId) q = q.where("related_assignment_id", "=", query.relatedAssignmentId);
118
- if (query.requestedByActorType && query.requestedByActorId) q = q.where("requested_by_actor_type", "=", query.requestedByActorType).where("requested_by_actor_id", "=", query.requestedByActorId);
119
- if (query.participantActor) q = q.where("requested_by_actor_type", "=", query.participantActor.actorType).where("requested_by_actor_id", "=", query.participantActor.actorId);
120
- if (query.since) q = q.where("updated_at", ">=", query.since);
121
- if (query.cursor) {
122
- const decoded = decodeCursor(query.cursor);
123
- if (decoded) q = q.where((eb) => eb.or([eb("created_at", "<", decoded.orderValue), eb.and([eb("created_at", "=", decoded.orderValue), eb("id", "<", decoded.id)])]));
124
- }
125
- return q;
126
- }
127
- };
128
- function toInsertableHitlRequest(id, input, now) {
129
- return {
130
- id,
131
- scope: input.scope,
132
- action_type: input.actionType,
133
- status: "pending",
134
- priority: input.priority ?? "normal",
135
- title: input.title,
136
- summary: input.summary ?? null,
137
- risk_reason: input.riskReason,
138
- review_payload: JSON.stringify(input.reviewPayload),
139
- target_ref_type: input.targetRefType,
140
- target_ref_id: input.targetRefId,
141
- requested_by_actor_type: input.requestedByActorType,
142
- requested_by_actor_id: input.requestedByActorId,
143
- requested_auth_metadata: jsonStringOrNull(input.requestedAuthMetadata),
144
- resolved_by_actor_type: null,
145
- resolved_by_actor_id: null,
146
- resolved_auth_metadata: null,
147
- review_note: null,
148
- metadata: jsonString$1(input.metadata),
149
- related_assignment_id: input.relatedAssignmentId ?? null,
150
- related_handoff_snapshot_id: input.relatedHandoffSnapshotId ?? null,
151
- sla_due_at: input.slaDueAt ?? null,
152
- created_at: now,
153
- updated_at: now,
154
- resolved_at: null
155
- };
156
- }
157
- function rowToHitlRequest(row) {
158
- return {
159
- id: row.id,
160
- scope: row.scope,
161
- actionType: row.action_type,
162
- status: row.status,
163
- priority: row.priority,
164
- title: row.title,
165
- summary: row.summary,
166
- riskReason: row.risk_reason,
167
- reviewPayload: parseRecord$2(row.review_payload),
168
- targetRefType: row.target_ref_type,
169
- targetRefId: row.target_ref_id,
170
- requestedByActorType: row.requested_by_actor_type,
171
- requestedByActorId: row.requested_by_actor_id,
172
- requestedAuthMetadata: parseNullableRecord(row.requested_auth_metadata),
173
- resolvedByActorType: row.resolved_by_actor_type,
174
- resolvedByActorId: row.resolved_by_actor_id,
175
- resolvedAuthMetadata: parseNullableRecord(row.resolved_auth_metadata),
176
- reviewNote: row.review_note,
177
- metadata: parseRecord$2(row.metadata),
178
- relatedAssignmentId: row.related_assignment_id,
179
- relatedHandoffSnapshotId: row.related_handoff_snapshot_id,
180
- slaDueAt: row.sla_due_at,
181
- createdAt: row.created_at,
182
- updatedAt: row.updated_at,
183
- resolvedAt: row.resolved_at
184
- };
185
- }
186
- function jsonString$1(value) {
187
- return JSON.stringify(value ?? {});
188
- }
189
- function jsonStringOrNull(value) {
190
- return value ? JSON.stringify(value) : null;
191
- }
192
- function parseRecord$2(value) {
193
- if (!value) return {};
194
- try {
195
- const parsed = JSON.parse(value);
196
- return isRecord$3(parsed) ? parsed : {};
197
- } catch {
198
- return {};
199
- }
200
- }
201
- function parseNullableRecord(value) {
202
- if (!value) return null;
203
- return parseRecord$2(value);
204
- }
205
- function isRecord$3(value) {
206
- return typeof value === "object" && value !== null && !Array.isArray(value);
207
- }
208
- function clampLimit$1(limit) {
209
- if (!limit || limit < 1) return 50;
210
- return Math.min(limit, 100);
211
- }
212
-
213
- //#endregion
214
- //#region src/site-context/action-hash.ts
215
- async function buildStableActionHash(value) {
216
- return sha256Hex(stableStringify(value));
217
- }
218
- function stableStringify(value) {
219
- if (Array.isArray(value)) return `[${value.map((item) => stableStringify(item)).join(",")}]`;
220
- if (isRecord$2(value)) return `{${Object.entries(value).filter(([, entryValue]) => entryValue !== void 0).toSorted(([left], [right]) => left.localeCompare(right)).map(([key, entryValue]) => `${JSON.stringify(key)}:${stableStringify(entryValue)}`).join(",")}}`;
221
- return JSON.stringify(value ?? null);
222
- }
223
- function isRecord$2(value) {
224
- return typeof value === "object" && value !== null && !Array.isArray(value);
225
- }
226
- async function sha256Hex(value) {
227
- const buffer = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value));
228
- return Array.from(new Uint8Array(buffer), (byte) => byte.toString(16).padStart(2, "0")).join("");
229
- }
230
-
231
- //#endregion
232
- //#region src/database/repositories/assignments.ts
233
- const ASSIGNMENT_ACTOR_TYPES = [
234
- "user",
235
- "api_token",
236
- "system"
237
- ];
238
- const ASSIGNMENT_STATUSES = [
239
- "pending",
240
- "accepted",
241
- "in_progress",
242
- "blocked",
243
- "completed",
244
- "declined",
245
- "cancelled"
246
- ];
247
- const ASSIGNMENT_PRIORITIES = [
248
- "low",
249
- "normal",
250
- "high",
251
- "urgent"
252
- ];
253
- var AssignmentRepository = class {
254
- constructor(db) {
255
- this.db = db;
256
- }
257
- async create(input) {
258
- const id = ulid();
259
- const now = input.createdAt ?? (/* @__PURE__ */ new Date()).toISOString();
260
- await this.db.insertInto("_dineway_assignments").values(toInsertableAssignment(id, input, now)).execute();
261
- const assignment = await this.findById(id);
262
- if (!assignment) throw new Error("Failed to create assignment");
263
- return assignment;
264
- }
265
- async findById(id) {
266
- const row = await this.db.selectFrom("_dineway_assignments").selectAll().where("id", "=", id).executeTakeFirst();
267
- return row ? rowToAssignment(row) : null;
268
- }
269
- async list(query = {}) {
270
- const limit = clampLimit(query.limit);
271
- const rows = await this.queryRows(query).execute();
272
- const items = rows.slice(0, limit).map(rowToAssignment);
273
- const result = { items };
274
- if (rows.length > limit && items.length > 0) {
275
- const last = items.at(-1);
276
- result.nextCursor = encodeCursor(last.createdAt, last.id);
277
- }
278
- return result;
279
- }
280
- async accept(id, input = {}) {
281
- const value = input.acceptedAt ?? (/* @__PURE__ */ new Date()).toISOString();
282
- return this.transition(id, ["pending"], {
283
- status: "accepted",
284
- assigned_to_actor_type: input.assignedToActorType ?? null,
285
- assigned_to_actor_id: input.assignedToActorId ?? null,
286
- accepted_at: value,
287
- updated_at: value,
288
- metadata: jsonString(input.metadata)
289
- });
290
- }
291
- async start(id, input = {}) {
292
- const value = input.at ?? (/* @__PURE__ */ new Date()).toISOString();
293
- return this.transition(id, ["accepted", "blocked"], {
294
- status: "in_progress",
295
- started_at: value,
296
- updated_at: value,
297
- metadata: jsonString(input.metadata)
298
- });
299
- }
300
- async block(id, input = {}) {
301
- const value = input.at ?? (/* @__PURE__ */ new Date()).toISOString();
302
- return this.transition(id, ["accepted", "in_progress"], {
303
- status: "blocked",
304
- blocked_at: value,
305
- updated_at: value,
306
- metadata: jsonString(input.metadata)
307
- });
308
- }
309
- async complete(id, input = {}) {
310
- const value = input.at ?? (/* @__PURE__ */ new Date()).toISOString();
311
- return this.transition(id, [
312
- "pending",
313
- "accepted",
314
- "in_progress"
315
- ], {
316
- status: "completed",
317
- completed_at: value,
318
- updated_at: value,
319
- metadata: jsonString(input.metadata)
320
- });
321
- }
322
- async decline(id, input = {}) {
323
- const value = input.at ?? (/* @__PURE__ */ new Date()).toISOString();
324
- return this.transition(id, ["pending", "accepted"], {
325
- status: "declined",
326
- declined_at: value,
327
- updated_at: value,
328
- metadata: jsonString(input.metadata)
329
- });
330
- }
331
- async cancel(id, input = {}) {
332
- const value = input.at ?? (/* @__PURE__ */ new Date()).toISOString();
333
- return this.transition(id, [
334
- "pending",
335
- "accepted",
336
- "in_progress",
337
- "blocked"
338
- ], {
339
- status: "cancelled",
340
- cancelled_at: value,
341
- updated_at: value,
342
- metadata: jsonString(input.metadata)
343
- });
344
- }
345
- async linkHitlRequest(id, relatedHitlRequestId, at = (/* @__PURE__ */ new Date()).toISOString()) {
346
- const result = await this.db.updateTable("_dineway_assignments").set({
347
- related_hitl_request_id: relatedHitlRequestId,
348
- updated_at: at
349
- }).where("id", "=", id).executeTakeFirst();
350
- if (Number(result.numUpdatedRows ?? 0) === 0) return null;
351
- return this.findById(id);
352
- }
353
- queryRows(query) {
354
- const limit = clampLimit(query.limit);
355
- let q = this.db.selectFrom("_dineway_assignments").selectAll().orderBy("created_at", "desc").orderBy("id", "desc").limit(limit + 1);
356
- if (query.scope) q = q.where("scope", "=", query.scope);
357
- if (query.scopes && query.scopes.length > 0) q = q.where("scope", "in", query.scopes);
358
- if (query.statuses && query.statuses.length > 0) q = q.where("status", "in", query.statuses);
359
- if (query.priority) q = q.where("priority", "=", query.priority);
360
- if (query.assignmentType) q = q.where("assignment_type", "=", query.assignmentType);
361
- if (query.assignedToActorType && query.assignedToActorId) q = q.where("assigned_to_actor_type", "=", query.assignedToActorType).where("assigned_to_actor_id", "=", query.assignedToActorId);
362
- if (query.assignedByActorType && query.assignedByActorId) q = q.where("assigned_by_actor_type", "=", query.assignedByActorType).where("assigned_by_actor_id", "=", query.assignedByActorId);
363
- if (query.participantActor) q = q.where((eb) => eb.or([eb.and([eb("assigned_by_actor_type", "=", query.participantActor.actorType), eb("assigned_by_actor_id", "=", query.participantActor.actorId)]), eb.and([eb("assigned_to_actor_type", "=", query.participantActor.actorType), eb("assigned_to_actor_id", "=", query.participantActor.actorId)])]));
364
- if (query.since) q = q.where("updated_at", ">=", query.since);
365
- if (query.cursor) {
366
- const decoded = decodeCursor(query.cursor);
367
- if (decoded) q = q.where((eb) => eb.or([eb("created_at", "<", decoded.orderValue), eb.and([eb("created_at", "=", decoded.orderValue), eb("id", "<", decoded.id)])]));
368
- }
369
- return q;
370
- }
371
- async transition(id, validFrom, update) {
372
- const result = await this.db.updateTable("_dineway_assignments").set(update).where("id", "=", id).where("status", "in", validFrom).executeTakeFirst();
373
- if (Number(result.numUpdatedRows ?? 0) === 0) return null;
374
- return this.findById(id);
375
- }
376
- };
377
- function toInsertableAssignment(id, input, now) {
378
- return {
379
- id,
380
- scope: input.scope,
381
- assignment_type: input.assignmentType,
382
- status: "pending",
383
- priority: input.priority ?? "normal",
384
- title: input.title,
385
- summary: input.summary ?? null,
386
- details: input.details ?? null,
387
- assigned_by_actor_type: input.assignedByActorType,
388
- assigned_by_actor_id: input.assignedByActorId,
389
- assigned_to_actor_type: input.assignedToActorType ?? null,
390
- assigned_to_actor_id: input.assignedToActorId ?? null,
391
- metadata: jsonString(input.metadata),
392
- related_handoff_snapshot_id: input.relatedHandoffSnapshotId ?? null,
393
- related_hitl_request_id: input.relatedHitlRequestId ?? null,
394
- due_at: input.dueAt ?? null,
395
- created_at: now,
396
- updated_at: now,
397
- accepted_at: null,
398
- started_at: null,
399
- blocked_at: null,
400
- completed_at: null,
401
- declined_at: null,
402
- cancelled_at: null
403
- };
404
- }
405
- function rowToAssignment(row) {
406
- return {
407
- id: row.id,
408
- scope: row.scope,
409
- assignmentType: row.assignment_type,
410
- status: row.status,
411
- priority: row.priority,
412
- title: row.title,
413
- summary: row.summary,
414
- details: row.details,
415
- assignedByActorType: row.assigned_by_actor_type,
416
- assignedByActorId: row.assigned_by_actor_id,
417
- assignedToActorType: row.assigned_to_actor_type,
418
- assignedToActorId: row.assigned_to_actor_id,
419
- metadata: parseRecord$1(row.metadata),
420
- relatedHandoffSnapshotId: row.related_handoff_snapshot_id,
421
- relatedHitlRequestId: row.related_hitl_request_id,
422
- dueAt: row.due_at,
423
- createdAt: row.created_at,
424
- updatedAt: row.updated_at,
425
- acceptedAt: row.accepted_at,
426
- startedAt: row.started_at,
427
- blockedAt: row.blocked_at,
428
- completedAt: row.completed_at,
429
- declinedAt: row.declined_at,
430
- cancelledAt: row.cancelled_at
431
- };
432
- }
433
- function jsonString(value) {
434
- return JSON.stringify(value ?? {});
435
- }
436
- function parseRecord$1(value) {
437
- if (!value) return {};
438
- try {
439
- const parsed = JSON.parse(value);
440
- return isRecord$1(parsed) ? parsed : {};
441
- } catch {
442
- return {};
443
- }
444
- }
445
- function isRecord$1(value) {
446
- return typeof value === "object" && value !== null && !Array.isArray(value);
447
- }
448
- function clampLimit(limit) {
449
- if (!limit || limit < 1) return 50;
450
- return Math.min(limit, 100);
451
- }
452
-
453
- //#endregion
454
- //#region src/database/repositories/handoff-snapshots.ts
455
- var HandoffSnapshotRepository = class {
456
- constructor(db) {
457
- this.db = db;
458
- }
459
- async create(input) {
460
- const id = ulid();
461
- await this.db.insertInto("_dineway_handoff_snapshots").values(toInsertableHandoffSnapshot(id, input)).execute();
462
- return this.findById(id).then((snapshot) => {
463
- if (!snapshot) throw new Error("Failed to create handoff snapshot");
464
- return snapshot;
465
- });
466
- }
467
- async findById(id) {
468
- const row = await this.db.selectFrom("_dineway_handoff_snapshots").selectAll().where("id", "=", id).executeTakeFirst();
469
- return row ? rowToHandoffSnapshot(row) : null;
470
- }
471
- async markResumed(id, resumedAt) {
472
- const value = resumedAt ?? (/* @__PURE__ */ new Date()).toISOString();
473
- await this.db.updateTable("_dineway_handoff_snapshots").set({ resumed_at: value }).where("id", "=", id).execute();
474
- return this.findById(id);
475
- }
476
- };
477
- function toInsertableHandoffSnapshot(id, input) {
478
- return {
479
- id,
480
- scope: input.scope,
481
- actor_type: input.actorType,
482
- actor_id: input.actorId,
483
- auth_metadata: jsonOrNull(input.authMetadata),
484
- objective: input.objective,
485
- reasoning: input.reasoning,
486
- key_findings: JSON.stringify(input.keyFindings ?? []),
487
- touched_objects: JSON.stringify(input.touchedObjects ?? []),
488
- pending_actions: JSON.stringify(input.pendingActions ?? []),
489
- tool_evidence: JSON.stringify(input.toolEvidence ?? []),
490
- confidence: input.confidence ?? null,
491
- handoff_kind: input.handoffKind ?? "pause",
492
- reference_type: input.referenceType ?? null,
493
- reference_id: input.referenceId ?? null,
494
- created_at: input.createdAt ?? (/* @__PURE__ */ new Date()).toISOString(),
495
- resumed_at: null
496
- };
497
- }
498
- function rowToHandoffSnapshot(row) {
499
- return {
500
- id: row.id,
501
- scope: row.scope,
502
- actorType: row.actor_type,
503
- actorId: row.actor_id,
504
- authMetadata: parseRecord(row.auth_metadata),
505
- objective: row.objective,
506
- reasoning: row.reasoning,
507
- keyFindings: parseArray(row.key_findings),
508
- touchedObjects: parseArray(row.touched_objects),
509
- pendingActions: parseArray(row.pending_actions),
510
- toolEvidence: parseArray(row.tool_evidence),
511
- confidence: row.confidence,
512
- handoffKind: row.handoff_kind,
513
- referenceType: row.reference_type,
514
- referenceId: row.reference_id,
515
- createdAt: row.created_at,
516
- resumedAt: row.resumed_at
517
- };
518
- }
519
- function jsonOrNull(value) {
520
- return value ? JSON.stringify(value) : null;
521
- }
522
- function parseRecord(value) {
523
- if (!value) return null;
524
- try {
525
- const parsed = JSON.parse(value);
526
- return isRecord(parsed) ? parsed : null;
527
- } catch {
528
- return null;
529
- }
530
- }
531
- function parseArray(value) {
532
- if (!value) return [];
533
- try {
534
- const parsed = JSON.parse(value);
535
- return Array.isArray(parsed) ? parsed.filter((_item) => true) : [];
536
- } catch {
537
- return [];
538
- }
539
- }
540
- function isRecord(value) {
541
- return typeof value === "object" && value !== null && !Array.isArray(value);
542
- }
543
-
544
- //#endregion
545
- //#region src/site-context/hitl.ts
546
- const HITL_REQUEST_VALID_FROM = { resolve: ["pending"] };
547
- var HitlRequestService = class {
548
- repository;
549
- assignments;
550
- constructor(db) {
551
- this.db = db;
552
- this.repository = new HitlRequestRepository(db);
553
- this.assignments = new AssignmentRepository(db);
554
- }
555
- async create(actor, input) {
556
- parseSiteBriefingScope(input.scope);
557
- const assignment = input.relatedAssignmentId ? await this.assignments.findById(input.relatedAssignmentId) : null;
558
- if (input.relatedAssignmentId && !assignment) throw new Error(`Assignment not found: ${input.relatedAssignmentId}`);
559
- if (assignment) {
560
- this.assertRelatedAssignmentReadable(assignment, actor);
561
- if (assignment.scope !== input.scope) throw new Error("Related assignment scope must match the HITL request scope.");
562
- if (assignment.relatedHitlRequestId) throw new Error(`Assignment ${assignment.id} is already linked to HITL request ${assignment.relatedHitlRequestId}.`);
563
- }
564
- if (input.relatedHandoffSnapshotId) {
565
- const snapshot = await new HandoffSnapshotRepository(this.db).findById(input.relatedHandoffSnapshotId);
566
- if (!snapshot) throw new Error(`Handoff snapshot not found: ${input.relatedHandoffSnapshotId}`);
567
- this.assertRelatedHandoffSnapshotReadable(snapshot, actor);
568
- if (snapshot.scope !== input.scope) throw new Error("Related handoff snapshot scope must match the HITL request scope.");
569
- }
570
- const request = await this.repository.create({
571
- scope: input.scope,
572
- actionType: input.actionType,
573
- title: input.title,
574
- summary: input.summary,
575
- riskReason: input.riskReason,
576
- reviewPayload: input.reviewPayload,
577
- targetRefType: input.targetRefType,
578
- targetRefId: input.targetRefId,
579
- requestedByActorType: actor.actorType,
580
- requestedByActorId: actor.actorId,
581
- requestedAuthMetadata: actor.authMetadata,
582
- priority: input.priority,
583
- metadata: input.metadata,
584
- relatedAssignmentId: input.relatedAssignmentId,
585
- relatedHandoffSnapshotId: input.relatedHandoffSnapshotId,
586
- slaDueAt: input.slaDueAt,
587
- createdAt: input.createdAt
588
- });
589
- if (assignment) {
590
- if (!await this.assignments.linkHitlRequest(assignment.id, request.id, request.createdAt)) throw new Error(`Failed to link assignment ${assignment.id} to HITL request ${request.id}.`);
591
- }
592
- return request;
593
- }
594
- async get(id, actor) {
595
- const request = await this.repository.findById(id);
596
- if (!request) return null;
597
- this.assertReadable(request, actor);
598
- return request;
599
- }
600
- async list(actor, input = {}) {
601
- return this.repository.list(this.buildListQuery(actor, input));
602
- }
603
- async resolve(input) {
604
- const request = await this.loadExisting(input.id);
605
- this.assertResolver(input.actor);
606
- this.assertReadable(request, input.actor);
607
- this.assertValidAction("resolve", request.status);
608
- const resolved = await this.repository.resolve(request.id, {
609
- decision: input.decision,
610
- resolvedByActorType: input.actor.actorType,
611
- resolvedByActorId: input.actor.actorId,
612
- resolvedAuthMetadata: input.actor.authMetadata,
613
- reviewNote: input.reviewNote,
614
- resolvedAt: input.at
615
- });
616
- if (!resolved) throw new Error(`Failed to resolve HITL request ${request.id}.`);
617
- return resolved;
618
- }
619
- buildListQuery(actor, input) {
620
- const query = {
621
- scope: input.scope,
622
- scopes: input.scopes,
623
- statuses: input.statuses,
624
- priority: input.priority,
625
- actionType: input.actionType,
626
- targetRefType: input.targetRefType,
627
- targetRefId: input.targetRefId,
628
- relatedAssignmentId: input.relatedAssignmentId,
629
- since: input.since,
630
- limit: input.limit,
631
- cursor: input.cursor
632
- };
633
- if (isHitlSupervisor(actor.userRole)) return query;
634
- return {
635
- ...query,
636
- requestedByActorType: actor.actorType,
637
- requestedByActorId: actor.actorId
638
- };
639
- }
640
- async loadExisting(id) {
641
- const request = await this.repository.findById(id);
642
- if (!request) throw new Error(`HITL request not found: ${id}`);
643
- return request;
644
- }
645
- assertReadable(request, actor) {
646
- if (isHitlSupervisor(actor.userRole)) return;
647
- if (request.requestedByActorType === actor.actorType && request.requestedByActorId === actor.actorId) return;
648
- throw new Error("Insufficient permissions to read this HITL request.");
649
- }
650
- assertResolver(actor) {
651
- if (isHitlSupervisor(actor.userRole)) return;
652
- throw new Error("HITL requests may only be resolved by an editor or admin.");
653
- }
654
- assertRelatedAssignmentReadable(assignment, actor) {
655
- if (isHitlSupervisor(actor.userRole)) return;
656
- if (matchesActor(assignment.assignedByActorType, assignment.assignedByActorId, actor) || matchesActor(assignment.assignedToActorType, assignment.assignedToActorId, actor)) return;
657
- throw new Error("Insufficient permissions to link this assignment to a HITL request.");
658
- }
659
- assertRelatedHandoffSnapshotReadable(snapshot, actor) {
660
- if (isHitlSupervisor(actor.userRole)) return;
661
- if (matchesActor(snapshot.actorType, snapshot.actorId, actor)) return;
662
- throw new Error("Insufficient permissions to link this handoff snapshot to a HITL request.");
663
- }
664
- assertValidAction(action, status) {
665
- const validFrom = HITL_REQUEST_VALID_FROM[action];
666
- if (!validFrom.includes(status)) throw new Error(`Cannot ${action} a HITL request in status "${status}". Valid statuses: ${validFrom.join(", ")}.`);
667
- }
668
- };
669
- function isHitlSupervisor(role) {
670
- return role >= Role.EDITOR;
671
- }
672
- function matchesActor(actorType, actorId, actor) {
673
- return actorType === actor.actorType && actorId === actor.actorId;
674
- }
675
-
676
- //#endregion
677
- export { ASSIGNMENT_STATUSES as a, stableStringify as c, HitlRequestRepository as d, EntityAliasRepository as f, ASSIGNMENT_PRIORITIES as i, HITL_REQUEST_PRIORITIES as l, HandoffSnapshotRepository as n, AssignmentRepository as o, normalizeEntityAlias as p, ASSIGNMENT_ACTOR_TYPES as r, buildStableActionHash as s, HitlRequestService as t, HITL_REQUEST_STATUSES as u };