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
@@ -0,0 +1,75 @@
1
+ import { DinewayClient, PluginRequestOptions } from "../client/index.mjs";
2
+ import { SubCommandsDef } from "citty";
3
+
4
+ //#region src/cli/contributions.d.ts
5
+ interface DinewayCliContribution {
6
+ commands: SubCommandsDef;
7
+ }
8
+ //#endregion
9
+ //#region src/cli/client-factory.d.ts
10
+ interface ClientArgs {
11
+ url?: string;
12
+ token?: string;
13
+ }
14
+ /**
15
+ * Shared connection args for all CLI commands that talk to a Dineway instance.
16
+ * Spread into each command's `args` definition.
17
+ */
18
+ declare const connectionArgs: {
19
+ url: {
20
+ type: "string";
21
+ alias: string;
22
+ description: string;
23
+ default: string;
24
+ };
25
+ token: {
26
+ type: "string";
27
+ alias: string;
28
+ description: string;
29
+ };
30
+ header: {
31
+ type: "string";
32
+ alias: string;
33
+ description: string;
34
+ };
35
+ json: {
36
+ type: "boolean";
37
+ description: string;
38
+ };
39
+ };
40
+ /**
41
+ * Create a DinewayClient from CLI args, env vars, and stored credentials.
42
+ *
43
+ * Auth resolution order:
44
+ * 1. --token flag
45
+ * 2. DINEWAY_TOKEN env var
46
+ * 3. Stored credentials (~/.config/dineway/auth.json)
47
+ * 4. Dev bypass (if URL is localhost)
48
+ *
49
+ * Custom headers are merged from (in priority order):
50
+ * 1. Stored credentials (persisted during `dineway login --header`)
51
+ * 2. DINEWAY_HEADERS env var
52
+ * 3. --header CLI flags
53
+ */
54
+ declare function createClientFromArgs(args: ClientArgs): DinewayClient;
55
+ //#endregion
56
+ //#region src/cli/output.d.ts
57
+ interface OutputArgs {
58
+ json?: boolean;
59
+ }
60
+ /**
61
+ * Redirect consola output to stderr so it doesn't pollute JSON on stdout.
62
+ *
63
+ * Call this early in any command that uses `output()` with `--json`.
64
+ * Safe to call multiple times — only applies the redirect once.
65
+ */
66
+ declare function configureOutputMode(args: OutputArgs): void;
67
+ /**
68
+ * Output data as JSON or pretty-printed.
69
+ *
70
+ * If stdout is not a TTY or --json is set, outputs JSON.
71
+ * Otherwise, outputs a formatted representation.
72
+ */
73
+ declare function output(data: unknown, args: OutputArgs): void;
74
+ //#endregion
75
+ export { type DinewayCliContribution, type PluginRequestOptions, configureOutputMode, connectionArgs, createClientFromArgs, output };
@@ -0,0 +1,4 @@
1
+ import { n as output, t as configureOutputMode } from "../output-DhBe5_Pi.mjs";
2
+ import { n as connectionArgs, r as createClientFromArgs } from "../client-factory-BDD9azPJ.mjs";
3
+
4
+ export { configureOutputMode, connectionArgs, createClientFromArgs, output };
@@ -1,4 +1,4 @@
1
- import { t as Interceptor } from "../transport-CcJu3Co8.mjs";
1
+ import { t as Interceptor } from "../transport-D9pKAzFP.mjs";
2
2
 
3
3
  //#region src/client/external-auth-headers.d.ts
4
4
  /**
@@ -1,49 +1,6 @@
1
- import { a as tokenInterceptor, i as devBypassInterceptor, n as createTransport, r as csrfInterceptor, t as Interceptor } from "../transport-CcJu3Co8.mjs";
1
+ import { a as tokenInterceptor, i as devBypassInterceptor, n as createTransport, r as csrfInterceptor, t as Interceptor } from "../transport-D9pKAzFP.mjs";
2
+ import { n as markdownToPortableText, r as portableTextToMarkdown, t as PortableTextBlock } from "../portable-text-E79LyjGo.mjs";
2
3
 
3
- //#region src/client/portable-text.d.ts
4
- /**
5
- * Portable Text <-> Markdown conversion layer.
6
- *
7
- * Three tiers of block handling:
8
- * Tier 1: Standard PT blocks <-> standard Markdown (headings, paragraphs, lists, etc.)
9
- * Tier 2: Dineway custom blocks <-> Markdown directives (future)
10
- * Tier 3: Unknown blocks <-> opaque HTML comment fences (preserved, not editable)
11
- */
12
- /** Minimal Portable Text block shape */
13
- interface PortableTextBlock {
14
- _type: string;
15
- _key?: string;
16
- style?: string;
17
- level?: number;
18
- listItem?: string;
19
- markDefs?: MarkDef[];
20
- children?: PortableTextSpan[];
21
- [key: string]: unknown;
22
- }
23
- interface PortableTextSpan {
24
- _type: string;
25
- _key?: string;
26
- text?: string;
27
- marks?: string[];
28
- [key: string]: unknown;
29
- }
30
- interface MarkDef {
31
- _key: string;
32
- _type: string;
33
- href?: string;
34
- [key: string]: unknown;
35
- }
36
- /**
37
- * Convert Portable Text blocks to Markdown.
38
- * Unknown block types are serialized as opaque fences.
39
- */
40
- declare function portableTextToMarkdown(blocks: PortableTextBlock[]): string;
41
- /**
42
- * Convert Markdown to Portable Text blocks.
43
- * Opaque fences (<!--ec:block ... -->) are deserialized and spliced back in.
44
- */
45
- declare function markdownToPortableText(markdown: string): PortableTextBlock[];
46
- //#endregion
47
4
  //#region src/client/index.d.ts
48
5
  interface DinewayClientOptions {
49
6
  /** Base URL of the Dineway instance */
@@ -59,6 +16,11 @@ interface DinewayClientOptions {
59
16
  /** Additional request interceptors */
60
17
  interceptors?: Interceptor[];
61
18
  }
19
+ interface PluginRequestOptions {
20
+ method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
21
+ query?: Record<string, string | number | boolean | null | undefined>;
22
+ body?: unknown;
23
+ }
62
24
  /** Standard API error shape */
63
25
  interface ApiError {
64
26
  code: string;
@@ -93,6 +55,18 @@ interface ContentItem {
93
55
  translationGroup: string | null;
94
56
  _rev?: string;
95
57
  }
58
+ interface ContentPublishOptions {
59
+ reviewRequestId: string;
60
+ releaseAuthorizationId?: string;
61
+ publishedAt?: string;
62
+ locale?: string;
63
+ }
64
+ interface ContentScheduleOptions {
65
+ at: string;
66
+ reviewRequestId: string;
67
+ releaseAuthorizationId?: string;
68
+ locale?: string;
69
+ }
96
70
  /** Collection metadata */
97
71
  interface Collection {
98
72
  slug: string;
@@ -105,6 +79,7 @@ interface Collection {
105
79
  /** Collection with fields */
106
80
  interface CollectionWithFields extends Collection {
107
81
  fields: Field[];
82
+ schemaFingerprint: string;
108
83
  }
109
84
  /** Field metadata */
110
85
  interface Field {
@@ -320,14 +295,12 @@ declare class DinewayClient {
320
295
  }): Promise<ContentItem>;
321
296
  /** Delete (soft) a content item */
322
297
  delete(collection: string, id: string): Promise<void>;
323
- /** Publish a content item */
324
- publish(collection: string, id: string): Promise<void>;
298
+ /** Publish an exact, editorially approved Draft Revision */
299
+ publish(collection: string, id: string, options: ContentPublishOptions): Promise<void>;
325
300
  /** Unpublish a content item */
326
301
  unpublish(collection: string, id: string): Promise<void>;
327
- /** Schedule publishing */
328
- schedule(collection: string, id: string, options: {
329
- at: string;
330
- }): Promise<void>;
302
+ /** Schedule an exact, editorially approved Draft Revision */
303
+ schedule(collection: string, id: string, options: ContentScheduleOptions): Promise<void>;
331
304
  /** Restore a trashed content item */
332
305
  restore(collection: string, id: string): Promise<void>;
333
306
  /** Compare live and draft revisions */
@@ -394,6 +367,8 @@ declare class DinewayClient {
394
367
  menu(name: string): Promise<MenuWithItems>;
395
368
  /** Create a one-time browser setup link for the current admin user. */
396
369
  createSetupLink(): Promise<SetupLinkResult>;
370
+ /** Invoke a deterministic application-service route contributed by an active plugin. */
371
+ pluginRequest<T>(pluginId: string, routePath: string, options?: PluginRequestOptions): Promise<T>;
397
372
  /** Make a typed JSON request to the API */
398
373
  private request;
399
374
  /** Make a raw request — caller handles response */
@@ -404,4 +379,4 @@ declare class DinewayClient {
404
379
  private getFieldSchemas;
405
380
  }
406
381
  //#endregion
407
- export { ApiError, ClientResponse, Collection, CollectionWithFields, ContentItem, DinewayApiError, DinewayClient, DinewayClientError, DinewayClientOptions, Field, type Interceptor, ListResult, Manifest, MediaItem, Menu, MenuItem, MenuWithItems, type PortableTextBlock, SchemaExport, SearchResult, SetupLinkResult, Taxonomy, Term, createTransport, csrfInterceptor, devBypassInterceptor, markdownToPortableText, portableTextToMarkdown, tokenInterceptor };
382
+ export { ApiError, ClientResponse, Collection, CollectionWithFields, ContentItem, ContentPublishOptions, ContentScheduleOptions, DinewayApiError, DinewayClient, DinewayClientError, DinewayClientOptions, Field, type Interceptor, ListResult, Manifest, MediaItem, Menu, MenuItem, MenuWithItems, PluginRequestOptions, type PortableTextBlock, SchemaExport, SearchResult, SetupLinkResult, Taxonomy, Term, createTransport, csrfInterceptor, devBypassInterceptor, markdownToPortableText, portableTextToMarkdown, tokenInterceptor };
@@ -1,5 +1,5 @@
1
- import { i as portableTextToMarkdown, n as convertDataForWrite, r as markdownToPortableText, t as convertDataForRead } from "../portable-text-dA_UlJwW.mjs";
2
- import { a as tokenInterceptor, i as refreshInterceptor, n as csrfInterceptor, r as devBypassInterceptor, t as createTransport } from "../transport-BNmCqLu7.mjs";
1
+ import { i as portableTextToMarkdown, n as convertDataForWrite, r as markdownToPortableText, t as convertDataForRead } from "../portable-text-BASHceim.mjs";
2
+ import { a as tokenInterceptor, i as refreshInterceptor, n as csrfInterceptor, r as devBypassInterceptor, t as createTransport } from "../transport-C46KHLMP.mjs";
3
3
  import mime from "mime/lite";
4
4
 
5
5
  //#region src/client/index.ts
@@ -22,6 +22,8 @@ import mime from "mime/lite";
22
22
  * ```
23
23
  */
24
24
  const TRAILING_SLASH_PATTERN = /\/$/;
25
+ const LEADING_TRAILING_SLASH_PATTERN = /^\/+|\/+$/g;
26
+ const PLUGIN_ID_PATTERN = /^[a-z][a-z0-9-]*$/;
25
27
  function mimeFromFilename(filename) {
26
28
  return mime.getType(filename) ?? "application/octet-stream";
27
29
  }
@@ -189,17 +191,31 @@ var DinewayClient = class {
189
191
  async delete(collection, id) {
190
192
  await this.request("DELETE", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}`);
191
193
  }
192
- /** Publish a content item */
193
- async publish(collection, id) {
194
- await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/publish`);
194
+ /** Publish an exact, editorially approved Draft Revision */
195
+ async publish(collection, id, options) {
196
+ const params = new URLSearchParams();
197
+ if (options.locale) params.set("locale", options.locale);
198
+ const qs = params.toString();
199
+ await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/publish${qs ? `?${qs}` : ""}`, {
200
+ reviewRequestId: options.reviewRequestId,
201
+ releaseAuthorizationId: options.releaseAuthorizationId,
202
+ publishedAt: options.publishedAt
203
+ });
195
204
  }
196
205
  /** Unpublish a content item */
197
206
  async unpublish(collection, id) {
198
207
  await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/unpublish`);
199
208
  }
200
- /** Schedule publishing */
209
+ /** Schedule an exact, editorially approved Draft Revision */
201
210
  async schedule(collection, id, options) {
202
- await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/schedule`, { scheduledAt: options.at });
211
+ const params = new URLSearchParams();
212
+ if (options.locale) params.set("locale", options.locale);
213
+ const qs = params.toString();
214
+ await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/schedule${qs ? `?${qs}` : ""}`, {
215
+ scheduledAt: options.at,
216
+ reviewRequestId: options.reviewRequestId,
217
+ releaseAuthorizationId: options.releaseAuthorizationId
218
+ });
203
219
  }
204
220
  /** Restore a trashed content item */
205
221
  async restore(collection, id) {
@@ -292,6 +308,17 @@ var DinewayClient = class {
292
308
  async createSetupLink() {
293
309
  return this.request("POST", "/auth/setup-token");
294
310
  }
311
+ /** Invoke a deterministic application-service route contributed by an active plugin. */
312
+ async pluginRequest(pluginId, routePath, options = {}) {
313
+ if (!PLUGIN_ID_PATTERN.test(pluginId)) throw new Error("Invalid plugin ID");
314
+ const segments = routePath.replace(LEADING_TRAILING_SLASH_PATTERN, "").split("/");
315
+ if (segments.length === 0 || segments.some((segment) => !segment || segment === "." || segment === "..")) throw new Error("Invalid plugin route path");
316
+ const encodedPath = segments.map((segment) => encodeURIComponent(segment)).join("/");
317
+ const query = new URLSearchParams();
318
+ for (const [key, value] of Object.entries(options.query ?? {})) if (value !== void 0 && value !== null) query.set(key, String(value));
319
+ const suffix = query.size > 0 ? `?${query.toString()}` : "";
320
+ return this.request(options.method ?? "GET", `/plugins/${encodeURIComponent(pluginId)}/${encodedPath}${suffix}`, options.body);
321
+ }
295
322
  /** Make a typed JSON request to the API */
296
323
  async request(method, path, body) {
297
324
  const response = await this.requestRaw(method, path, body);
@@ -0,0 +1,233 @@
1
+ import { a as __exportAll } from "./runner-BgmttQmD.mjs";
2
+ import { customHeadersInterceptor, resolveCustomHeaders } from "./client/external-auth-headers.mjs";
3
+ import { DinewayClient } from "./client/index.mjs";
4
+ import { a as resolveDinewayBaseUrl, o as resolveDinewayToken, t as DEFAULT_DINEWAY_URL } from "./project-env-DKibmuP8.mjs";
5
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
6
+ import { join, resolve } from "node:path";
7
+ import { homedir } from "node:os";
8
+
9
+ //#region src/cli/credentials.ts
10
+ /**
11
+ * Credential storage for CLI auth tokens.
12
+ *
13
+ * Stores OAuth tokens in ~/.config/dineway/auth.json.
14
+ * Remote URLs are keyed by origin, local dev by project path.
15
+ */
16
+ function getConfigDir() {
17
+ const xdg = process.env["XDG_CONFIG_HOME"];
18
+ if (xdg) return join(xdg, "dineway");
19
+ return join(homedir(), ".config", "dineway");
20
+ }
21
+ function getCredentialPath() {
22
+ return join(getConfigDir(), "auth.json");
23
+ }
24
+ /**
25
+ * Resolve the credential key for a given URL.
26
+ *
27
+ * Remote URLs are keyed by origin (e.g. "https://my-site.pages.dev").
28
+ * Local dev instances are keyed by project path (e.g. "path:/Users/matt/sites/blog").
29
+ */
30
+ function resolveCredentialKey(baseUrl) {
31
+ try {
32
+ const url = new URL(baseUrl);
33
+ if (url.hostname === "localhost" || url.hostname === "127.0.0.1" || url.hostname === "[::1]") {
34
+ const projectPath = findProjectRoot(process.cwd());
35
+ if (projectPath) return `path:${projectPath}`;
36
+ return url.origin;
37
+ }
38
+ return url.origin;
39
+ } catch {
40
+ return baseUrl;
41
+ }
42
+ }
43
+ /**
44
+ * Walk up from cwd to find the project root (directory containing astro.config.*).
45
+ */
46
+ function findProjectRoot(from) {
47
+ let dir = resolve(from);
48
+ const root = resolve("/");
49
+ while (dir !== root) {
50
+ for (const name of [
51
+ "astro.config.ts",
52
+ "astro.config.mts",
53
+ "astro.config.js",
54
+ "astro.config.mjs"
55
+ ]) if (existsSync(join(dir, name))) return dir;
56
+ const parent = resolve(dir, "..");
57
+ if (parent === dir) break;
58
+ dir = parent;
59
+ }
60
+ return null;
61
+ }
62
+ function readStore() {
63
+ const path = getCredentialPath();
64
+ try {
65
+ if (existsSync(path)) {
66
+ const content = readFileSync(path, "utf-8");
67
+ return JSON.parse(content);
68
+ }
69
+ } catch {}
70
+ return {};
71
+ }
72
+ function writeStore(store) {
73
+ mkdirSync(getConfigDir(), {
74
+ recursive: true,
75
+ mode: 448
76
+ });
77
+ writeFileSync(getCredentialPath(), JSON.stringify(store, null, " "), {
78
+ encoding: "utf-8",
79
+ mode: 384
80
+ });
81
+ }
82
+ /**
83
+ * Get stored credentials for a URL.
84
+ */
85
+ function getCredentials(baseUrl) {
86
+ const key = resolveCredentialKey(baseUrl);
87
+ const cred = readStore()[key];
88
+ if (!cred || !("accessToken" in cred)) return null;
89
+ return cred;
90
+ }
91
+ /**
92
+ * Save credentials for a URL.
93
+ */
94
+ function saveCredentials(baseUrl, cred) {
95
+ const key = resolveCredentialKey(baseUrl);
96
+ const store = readStore();
97
+ store[key] = cred;
98
+ writeStore(store);
99
+ }
100
+ /**
101
+ * Remove credentials for a URL.
102
+ */
103
+ function removeCredentials(baseUrl) {
104
+ const key = resolveCredentialKey(baseUrl);
105
+ const store = readStore();
106
+ if (key in store) {
107
+ delete store[key];
108
+ writeStore(store);
109
+ return true;
110
+ }
111
+ return false;
112
+ }
113
+ function marketplaceKey(registryUrl) {
114
+ try {
115
+ return `marketplace:${new URL(registryUrl).origin}`;
116
+ } catch {
117
+ return `marketplace:${registryUrl}`;
118
+ }
119
+ }
120
+ /**
121
+ * Get stored marketplace credential for a registry URL.
122
+ */
123
+ function getMarketplaceCredential(registryUrl) {
124
+ const key = marketplaceKey(registryUrl);
125
+ const cred = readStore()[key];
126
+ if (!cred || !("token" in cred)) return null;
127
+ if (new Date(cred.expiresAt) < /* @__PURE__ */ new Date()) return null;
128
+ return cred;
129
+ }
130
+ /**
131
+ * Save marketplace credential for a registry URL.
132
+ */
133
+ function saveMarketplaceCredential(registryUrl, cred) {
134
+ const key = marketplaceKey(registryUrl);
135
+ const store = readStore();
136
+ store[key] = cred;
137
+ writeStore(store);
138
+ }
139
+ /**
140
+ * Remove marketplace credential for a registry URL.
141
+ */
142
+ function removeMarketplaceCredential(registryUrl) {
143
+ const key = marketplaceKey(registryUrl);
144
+ const store = readStore();
145
+ if (key in store) {
146
+ delete store[key];
147
+ writeStore(store);
148
+ return true;
149
+ }
150
+ return false;
151
+ }
152
+
153
+ //#endregion
154
+ //#region src/cli/client-factory.ts
155
+ var client_factory_exports = /* @__PURE__ */ __exportAll({
156
+ connectionArgs: () => connectionArgs,
157
+ createClientFromArgs: () => createClientFromArgs
158
+ });
159
+ /**
160
+ * Shared connection args for all CLI commands that talk to a Dineway instance.
161
+ * Spread into each command's `args` definition.
162
+ */
163
+ const connectionArgs = {
164
+ url: {
165
+ type: "string",
166
+ alias: "u",
167
+ description: "Dineway instance URL",
168
+ default: DEFAULT_DINEWAY_URL
169
+ },
170
+ token: {
171
+ type: "string",
172
+ alias: "t",
173
+ description: "Auth token"
174
+ },
175
+ header: {
176
+ type: "string",
177
+ alias: "H",
178
+ description: "Custom header \"Name: Value\" (repeatable, or use DINEWAY_HEADERS env)"
179
+ },
180
+ json: {
181
+ type: "boolean",
182
+ description: "Output as JSON"
183
+ }
184
+ };
185
+ /**
186
+ * Create a DinewayClient from CLI args, env vars, and stored credentials.
187
+ *
188
+ * Auth resolution order:
189
+ * 1. --token flag
190
+ * 2. DINEWAY_TOKEN env var
191
+ * 3. Stored credentials (~/.config/dineway/auth.json)
192
+ * 4. Dev bypass (if URL is localhost)
193
+ *
194
+ * Custom headers are merged from (in priority order):
195
+ * 1. Stored credentials (persisted during `dineway login --header`)
196
+ * 2. DINEWAY_HEADERS env var
197
+ * 3. --header CLI flags
198
+ */
199
+ function createClientFromArgs(args) {
200
+ const baseUrl = resolveDinewayBaseUrl(args.url);
201
+ let token = resolveDinewayToken(args.token);
202
+ const isLocal = baseUrl.includes("localhost") || baseUrl.includes("127.0.0.1");
203
+ const cred = !token ? getCredentials(baseUrl) : null;
204
+ const customHeaders = {
205
+ ...cred?.customHeaders,
206
+ ...resolveCustomHeaders()
207
+ };
208
+ const extraInterceptors = [];
209
+ if (Object.keys(customHeaders).length > 0) extraInterceptors.push(customHeadersInterceptor(customHeaders));
210
+ if (!token && cred) if (new Date(cred.expiresAt) > /* @__PURE__ */ new Date()) token = cred.accessToken;
211
+ else return new DinewayClient({
212
+ baseUrl,
213
+ token: cred.accessToken,
214
+ refreshToken: cred.refreshToken,
215
+ onTokenRefresh: (newAccessToken, expiresIn) => {
216
+ saveCredentials(baseUrl, {
217
+ ...cred,
218
+ accessToken: newAccessToken,
219
+ expiresAt: new Date(Date.now() + expiresIn * 1e3).toISOString()
220
+ });
221
+ },
222
+ interceptors: extraInterceptors
223
+ });
224
+ return new DinewayClient({
225
+ baseUrl,
226
+ token,
227
+ devBypass: !token && isLocal,
228
+ interceptors: extraInterceptors
229
+ });
230
+ }
231
+
232
+ //#endregion
233
+ export { getMarketplaceCredential as a, resolveCredentialKey as c, getCredentials as i, saveCredentials as l, connectionArgs as n, removeCredentials as o, createClientFromArgs as r, removeMarketplaceCredential as s, client_factory_exports as t, saveMarketplaceCredential as u };
@@ -1,4 +1,4 @@
1
- import { i as encodeCursor, r as decodeCursor } from "./types-Dq1qT19x.mjs";
1
+ import { i as encodeCursor, r as decodeCursor } from "./types-ChxYDRvx.mjs";
2
2
  import { s as invalidateCommentObjectCache } from "./object-cache-D51qOseS.mjs";
3
3
  import { sql } from "kysely";
4
4
  import { ulid } from "ulidx";
@@ -1,4 +1,4 @@
1
- import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-CxBt-GxR.mjs";
1
+ import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-ChGNDY8r.mjs";
2
2
  import { ulid } from "ulidx";
3
3
 
4
4
  //#region src/database/repositories/comment-reaction.ts
@@ -1,4 +1,4 @@
1
- import { t as CommentRepository } from "./comment-DlA4iChg.mjs";
1
+ import { t as CommentRepository } from "./comment-DFALgsJD.mjs";
2
2
 
3
3
  //#region src/api/handlers/comments.ts
4
4
  async function handleCommentList(db, collection, contentId, options = {}) {
@@ -1,6 +1,6 @@
1
- import { a as __exportAll } from "./runner-DB7CRfOF.mjs";
1
+ import { a as __exportAll } from "./runner-BgmttQmD.mjs";
2
2
  import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
3
- import { i as encodeCursor, n as ScheduledNotDueError, r as decodeCursor, t as DinewayValidationError } from "./types-Dq1qT19x.mjs";
3
+ import { i as encodeCursor, n as ScheduledNotDueError, r as decodeCursor, t as DinewayValidationError } from "./types-ChxYDRvx.mjs";
4
4
  import { o as invalidateCollectionCache } from "./object-cache-D51qOseS.mjs";
5
5
  import { n as slugify } from "./slugify-KSsVD_D3.mjs";
6
6
  import { sql } from "kysely";
@@ -1,10 +1,10 @@
1
1
  import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
2
2
  import { r as isI18nEnabled } from "./config-CVssduLe.mjs";
3
- import { i as encodeCursor, r as decodeCursor } from "./types-Dq1qT19x.mjs";
4
- import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-CxBt-GxR.mjs";
5
- import { t as withTransaction } from "./transaction-C2EOMTJA.mjs";
6
- import { n as normalizeMime } from "./mime-CA7Lgovc.mjs";
7
- import { n as hashString } from "./hash-BPmX6P8I.mjs";
3
+ import { i as encodeCursor, r as decodeCursor } from "./types-ChxYDRvx.mjs";
4
+ import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-ChGNDY8r.mjs";
5
+ import { t as withTransaction } from "./transaction-0LEAAy8R.mjs";
6
+ import { n as normalizeMime } from "./mime-C0vOHFm7.mjs";
7
+ import { n as hashString } from "./hash-mxxx2oPW.mjs";
8
8
  import { sql } from "kysely";
9
9
  import { ulid } from "ulidx";
10
10
 
@@ -1,5 +1,5 @@
1
- import { a as ContextRepository, i as parseSiteBriefingScope, n as SiteBriefingError } from "./briefing-CawZ59CY.mjs";
2
- import { b as toPublicContextEntryPage, v as toPublicContextDiff, y as toPublicContextEntry } from "./site-context-DQiL8Fl5.mjs";
1
+ import { _ as toPublicContextDiff, v as toPublicContextEntry, y as toPublicContextEntryPage } from "./site-context-B8T1kpUP.mjs";
2
+ import { a as ContextRepository, i as parseSiteBriefingScope, n as SiteBriefingError } from "./briefing-0rf-su3-.mjs";
3
3
 
4
4
  //#region src/api/handlers/context.ts
5
5
  async function handleContextEntryList(db, input = {}) {
@@ -1,16 +1,16 @@
1
1
  import { n as validateJsonFieldName } from "./validate-VPnKoIzW.mjs";
2
2
  import { c as jsonExtractExpr } from "./dialect-helpers-fk43GbDb.mjs";
3
- import { i as encodeCursor, r as decodeCursor } from "./types-Dq1qT19x.mjs";
4
- import { t as ContentRepository } from "./content-Bh4BDjv8.mjs";
5
- import { t as MediaRepository } from "./media-DMj0grzC.mjs";
6
- import { t as UserRepository } from "./user-BIZPzCb9.mjs";
3
+ import { i as encodeCursor, r as decodeCursor } from "./types-ChxYDRvx.mjs";
4
+ import { t as ContentRepository } from "./content-DJcAYFhz.mjs";
5
+ import { t as MediaRepository } from "./media-CVMOoywq.mjs";
6
+ import { t as UserRepository } from "./user-BH-n01y3.mjs";
7
7
  import { t as OptionsRepository } from "./options-DQPTH5n0.mjs";
8
- import { t as withTransaction } from "./transaction-C2EOMTJA.mjs";
9
- import { t as enrichImageMetadata } from "./enrich-DIFIFA8O.mjs";
10
- import { t as SeoRepository } from "./seo-CQG3GCHQ.mjs";
11
- import { a as markContentMediaUsageCollectionStaleSafely } from "./content-refresh-CgutSUfO.mjs";
12
- import { a as validateExternalUrl, i as stripCredentialHeaders, t as SsrfError } from "./ssrf-DWe8jwAp.mjs";
13
- import { t as CronAccessImpl } from "./cron-cKcNTix_.mjs";
8
+ import { t as withTransaction } from "./transaction-0LEAAy8R.mjs";
9
+ import { t as enrichImageMetadata } from "./enrich-Ck9tfMqe.mjs";
10
+ import { t as SeoRepository } from "./seo-BU8MLCS9.mjs";
11
+ import { a as markContentMediaUsageCollectionStaleSafely } from "./content-refresh-B4ZCmxgd.mjs";
12
+ import { a as validateExternalUrl, i as stripCredentialHeaders, t as SsrfError } from "./ssrf-FJqwQzj4.mjs";
13
+ import { t as CronAccessImpl } from "./cron-B1SL_lsb.mjs";
14
14
  import { sql } from "kysely";
15
15
  import { ulid } from "ulidx";
16
16
 
@@ -703,13 +703,13 @@ function createHttpAccess(pluginId, allowedHosts) {
703
703
  * No host validation, but applies SSRF protection on redirect targets to
704
704
  * prevent plugins from being tricked into reaching internal services.
705
705
  */
706
- function createUnrestrictedHttpAccess(pluginId) {
706
+ function createUnrestrictedHttpAccess(pluginId, options = {}) {
707
707
  return { async fetch(url, init) {
708
708
  let currentUrl = url;
709
709
  let currentInit = init;
710
710
  for (let i = 0; i <= MAX_PLUGIN_REDIRECTS; i++) {
711
711
  try {
712
- validateExternalUrl(currentUrl);
712
+ if (!isAllowedDevelopmentLoopback(currentUrl, options.allowDevelopmentLoopback)) validateExternalUrl(currentUrl);
713
713
  } catch (e) {
714
714
  const msg = e instanceof SsrfError ? e.message : "SSRF validation failed";
715
715
  throw new Error(`Plugin "${pluginId}": blocked fetch to "${new URL(currentUrl).hostname}": ${msg}`, { cause: e });
@@ -728,6 +728,17 @@ function createUnrestrictedHttpAccess(pluginId) {
728
728
  throw new Error(`Plugin "${pluginId}": too many redirects (max ${MAX_PLUGIN_REDIRECTS})`);
729
729
  } };
730
730
  }
731
+ function isAllowedDevelopmentLoopback(url, capability = false) {
732
+ if (!capability || process.env.NODE_ENV !== "development") return false;
733
+ let parsed;
734
+ try {
735
+ parsed = new URL(url);
736
+ } catch {
737
+ return false;
738
+ }
739
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") return false;
740
+ return parsed.hostname === "127.0.0.1" || parsed.hostname === "[::1]";
741
+ }
731
742
  /**
732
743
  * Create logger for a plugin
733
744
  */
@@ -868,7 +879,7 @@ var PluginContextFactory = class {
868
879
  }
869
880
  else if (capabilities.has("media:read")) media = createMediaAccess(db);
870
881
  let http;
871
- if (capabilities.has("network:request:unrestricted")) http = createUnrestrictedHttpAccess(plugin.id);
882
+ if (capabilities.has("network:request:unrestricted")) http = createUnrestrictedHttpAccess(plugin.id, { allowDevelopmentLoopback: capabilities.has("network:request:development-loopback") });
872
883
  else if (capabilities.has("network:request")) http = createHttpAccess(plugin.id, plugin.allowedHosts);
873
884
  let users;
874
885
  if (capabilities.has("users:read")) users = createUserAccess(db);
@@ -1,5 +1,5 @@
1
- import { t as resolveActorIdentity } from "./actor-CrObAPV0.mjs";
2
- import { p as logSiteActivitySafely } from "./activity-events-y6eT8UW6.mjs";
1
+ import { n as resolveActorIdentity } from "./actor-0QJ1Gbtf.mjs";
2
+ import { p as logSiteActivitySafely } from "./activity-events-CJDvE2uc.mjs";
3
3
 
4
4
  //#region src/api/context-route-helpers.ts
5
5
  function resolveContextRouteActor(locals) {
@@ -1,8 +1,8 @@
1
1
  import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
2
- import { t as ContentRepository } from "./content-Bh4BDjv8.mjs";
3
- import { t as MediaRepository } from "./media-DMj0grzC.mjs";
4
- import { t as UserRepository } from "./user-BIZPzCb9.mjs";
5
- import { t as ReviewRequestRepository } from "./review-requests-DUyEmtmG.mjs";
2
+ import { t as ContentRepository } from "./content-DJcAYFhz.mjs";
3
+ import { t as MediaRepository } from "./media-CVMOoywq.mjs";
4
+ import { t as UserRepository } from "./user-BH-n01y3.mjs";
5
+ import { t as ReviewRequestRepository } from "./review-requests-CTWGnWUt.mjs";
6
6
  import { sql } from "kysely";
7
7
 
8
8
  //#region src/api/handlers/dashboard.ts