@riverbankcms/sdk 0.129.0 → 0.129.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 (260) hide show
  1. package/README.md +19 -256
  2. package/dist/{PreviewEditorSidebar-B43CJ0g_.mjs → PreviewEditorSidebar-DceRseRV.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-DHirVkeM.mjs → PreviewEditorUI-BNunq3kk.mjs} +2 -2
  4. package/dist/{SdkPreviewModeRuntime-BJumZy1B.mjs → SdkPreviewModeRuntime-Bt87-62u.mjs} +3 -3
  5. package/dist/{SiteChromeCustomizeContext-D9SlpwEj.mjs → SiteChromeCustomizeContext-BLl-OlL4.mjs} +460 -393
  6. package/dist/_dts/ai/src/contracts/commandExposure.d.ts +1 -1
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +4897 -4897
  8. package/dist/_dts/api/src/index.d.ts +2 -1
  9. package/dist/_dts/api/src/sdk-event-management.d.ts +53 -0
  10. package/dist/_dts/api/src/sdk-event-schedule.d.ts +3 -6
  11. package/dist/_dts/api/src/sdkContracts.d.ts +37 -50
  12. package/dist/_dts/api/src/sdkThemeWire.d.ts +2595 -0
  13. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +13 -29
  14. package/dist/_dts/media-core/src/index.d.ts +1 -0
  15. package/dist/_dts/sdk/src/config/types.d.ts +4 -4
  16. package/dist/_dts/sdk/src/version.d.ts +1 -1
  17. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  18. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
  19. package/dist/_dts/theme-core/src/site-styles/headerLayoutStyleCatalog.d.ts +254 -0
  20. package/dist/_dts/theme-core/src/site-styles/headerLegacyLooks.d.ts +372 -0
  21. package/dist/_dts/theme-core/src/site-styles/headerLookBranding.d.ts +106 -0
  22. package/dist/_dts/theme-core/src/site-styles/headerLookSelection.d.ts +2 -0
  23. package/dist/_dts/theme-core/src/site-styles/headerLookTypes.d.ts +212 -0
  24. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +7 -841
  25. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +3 -0
  26. package/dist/_dts/theme-core/src/site-styles/headerStyleCompilerPrimitives.d.ts +23 -0
  27. package/dist/client/client.mjs +492 -426
  28. package/dist/client/hooks.mjs +59 -36
  29. package/dist/client/rendering/client.mjs +593 -547
  30. package/dist/client/rendering.mjs +491 -425
  31. package/dist/preview-next/client/runtime.mjs +3 -3
  32. package/dist/{sdk-runtime-CfZd5pAm.mjs → sdk-runtime-C20CVWbb.mjs} +1 -1
  33. package/dist/{separator-DkTe68HE.mjs → separator-BE3NCquy.mjs} +1 -1
  34. package/dist/server/components.mjs +72 -49
  35. package/dist/server/config-validation.mjs +59 -36
  36. package/dist/server/config.mjs +59 -36
  37. package/dist/server/data.mjs +59 -36
  38. package/dist/server/index.mjs +1 -1
  39. package/dist/server/manifest.mjs +4966 -0
  40. package/dist/server/next.mjs +73 -50
  41. package/dist/server/page-converter.mjs +40 -36
  42. package/dist/server/prebuild.mjs +1 -1
  43. package/dist/server/rendering/server.mjs +72 -49
  44. package/dist/server/rendering.mjs +72 -49
  45. package/dist/server/routing.mjs +472 -402
  46. package/dist/server/server.mjs +60 -37
  47. package/dist/server/theme-bridge.mjs +70 -66
  48. package/package.json +9 -12
  49. package/dist/_dts/api/src/event-presentation.d.ts +0 -14
  50. package/dist/_dts/blocks/src/definitions.d.ts +0 -14
  51. package/dist/_dts/sdk/src/cli/canonical-entry-policy.d.ts +0 -53
  52. package/dist/_dts/sdk/src/cli/commands/audit.d.ts +0 -101
  53. package/dist/_dts/sdk/src/cli/commands/block.d.ts +0 -24
  54. package/dist/_dts/sdk/src/cli/commands/compare.d.ts +0 -62
  55. package/dist/_dts/sdk/src/cli/commands/content-type.d.ts +0 -10
  56. package/dist/_dts/sdk/src/cli/commands/content.d.ts +0 -56
  57. package/dist/_dts/sdk/src/cli/commands/delete.d.ts +0 -14
  58. package/dist/_dts/sdk/src/cli/commands/deploy.d.ts +0 -43
  59. package/dist/_dts/sdk/src/cli/commands/drafts.d.ts +0 -18
  60. package/dist/_dts/sdk/src/cli/commands/entry.d.ts +0 -55
  61. package/dist/_dts/sdk/src/cli/commands/env.d.ts +0 -31
  62. package/dist/_dts/sdk/src/cli/commands/event.d.ts +0 -23
  63. package/dist/_dts/sdk/src/cli/commands/eventOccurrenceSchedule.d.ts +0 -12
  64. package/dist/_dts/sdk/src/cli/commands/identifiers.d.ts +0 -10
  65. package/dist/_dts/sdk/src/cli/commands/init-docs.d.ts +0 -13
  66. package/dist/_dts/sdk/src/cli/commands/manifest.d.ts +0 -10
  67. package/dist/_dts/sdk/src/cli/commands/media-validation.d.ts +0 -3
  68. package/dist/_dts/sdk/src/cli/commands/migrate.d.ts +0 -11
  69. package/dist/_dts/sdk/src/cli/commands/navigation.d.ts +0 -12
  70. package/dist/_dts/sdk/src/cli/commands/page.d.ts +0 -14
  71. package/dist/_dts/sdk/src/cli/commands/publish-all.d.ts +0 -50
  72. package/dist/_dts/sdk/src/cli/commands/pull-dated-offering-scope.d.ts +0 -10
  73. package/dist/_dts/sdk/src/cli/commands/pull-dry-run.d.ts +0 -70
  74. package/dist/_dts/sdk/src/cli/commands/pull-scope-diff.d.ts +0 -8
  75. package/dist/_dts/sdk/src/cli/commands/pull.d.ts +0 -43
  76. package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +0 -3
  77. package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +0 -19
  78. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +0 -42
  79. package/dist/_dts/sdk/src/cli/commands/push/execute/localMediaReporting.d.ts +0 -23
  80. package/dist/_dts/sdk/src/cli/commands/push/execute/media.d.ts +0 -22
  81. package/dist/_dts/sdk/src/cli/commands/push/execute/metadata.d.ts +0 -1
  82. package/dist/_dts/sdk/src/cli/commands/push/execute/reporting.d.ts +0 -7
  83. package/dist/_dts/sdk/src/cli/commands/push/execute/theme.d.ts +0 -63
  84. package/dist/_dts/sdk/src/cli/commands/push/filter.d.ts +0 -15
  85. package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +0 -29
  86. package/dist/_dts/sdk/src/cli/commands/push/normalizeLocalContent.d.ts +0 -2
  87. package/dist/_dts/sdk/src/cli/commands/push/options.d.ts +0 -32
  88. package/dist/_dts/sdk/src/cli/commands/push/publishGuidance.d.ts +0 -15
  89. package/dist/_dts/sdk/src/cli/commands/push/pushAllExtras.d.ts +0 -25
  90. package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +0 -83
  91. package/dist/_dts/sdk/src/cli/commands/push/scopes/eventCategories.d.ts +0 -4
  92. package/dist/_dts/sdk/src/cli/commands/push/scopes/events.d.ts +0 -4
  93. package/dist/_dts/sdk/src/cli/commands/push/scopes/mediaPrep.d.ts +0 -14
  94. package/dist/_dts/sdk/src/cli/commands/push/scopes/pushScopeGeneric.d.ts +0 -6
  95. package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +0 -87
  96. package/dist/_dts/sdk/src/cli/commands/push/scopes/venues.d.ts +0 -4
  97. package/dist/_dts/sdk/src/cli/commands/push/stale-resolution.d.ts +0 -48
  98. package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +0 -17
  99. package/dist/_dts/sdk/src/cli/commands/push/verification.d.ts +0 -56
  100. package/dist/_dts/sdk/src/cli/commands/push/workflowPlan.d.ts +0 -34
  101. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +0 -54
  102. package/dist/_dts/sdk/src/cli/commands/push.d.ts +0 -40
  103. package/dist/_dts/sdk/src/cli/commands/setup.d.ts +0 -3
  104. package/dist/_dts/sdk/src/cli/commands/style.d.ts +0 -60
  105. package/dist/_dts/sdk/src/cli/commands/verify.d.ts +0 -11
  106. package/dist/_dts/sdk/src/cli/commands/webhooks.d.ts +0 -44
  107. package/dist/_dts/sdk/src/cli/config-loader.d.ts +0 -47
  108. package/dist/_dts/sdk/src/cli/content/collectionWriters.d.ts +0 -23
  109. package/dist/_dts/sdk/src/cli/content/edit/format.d.ts +0 -2
  110. package/dist/_dts/sdk/src/cli/content/edit/path.d.ts +0 -14
  111. package/dist/_dts/sdk/src/cli/content/edit/planner.d.ts +0 -46
  112. package/dist/_dts/sdk/src/cli/content/entryPaths.d.ts +0 -6
  113. package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +0 -10
  114. package/dist/_dts/sdk/src/cli/content/fs-utils.d.ts +0 -39
  115. package/dist/_dts/sdk/src/cli/content/legacyEventScheduleShapeError.d.ts +0 -5
  116. package/dist/_dts/sdk/src/cli/content/localEventSchedule.d.ts +0 -17
  117. package/dist/_dts/sdk/src/cli/content/media-manifest.d.ts +0 -13
  118. package/dist/_dts/sdk/src/cli/content/metadataAfterPush.d.ts +0 -25
  119. package/dist/_dts/sdk/src/cli/content/metadataStore.d.ts +0 -29
  120. package/dist/_dts/sdk/src/cli/content/reader.d.ts +0 -488
  121. package/dist/_dts/sdk/src/cli/content/writer.d.ts +0 -142
  122. package/dist/_dts/sdk/src/cli/env-scope.d.ts +0 -2
  123. package/dist/_dts/sdk/src/cli/env.d.ts +0 -71
  124. package/dist/_dts/sdk/src/cli/errors.d.ts +0 -62
  125. package/dist/_dts/sdk/src/cli/helpers/ai-runtime.d.ts +0 -2
  126. package/dist/_dts/sdk/src/cli/helpers.d.ts +0 -399
  127. package/dist/_dts/sdk/src/cli/index.d.ts +0 -11
  128. package/dist/_dts/sdk/src/cli/init-docs/constants.d.ts +0 -16
  129. package/dist/_dts/sdk/src/cli/init-docs/index.d.ts +0 -12
  130. package/dist/_dts/sdk/src/cli/init-docs/templates.d.ts +0 -18
  131. package/dist/_dts/sdk/src/cli/init-docs/zod-to-markdown.d.ts +0 -28
  132. package/dist/_dts/sdk/src/cli/load-config.d.ts +0 -14
  133. package/dist/_dts/sdk/src/cli/media/identifiers.d.ts +0 -18
  134. package/dist/_dts/sdk/src/cli/media/local-media.d.ts +0 -14
  135. package/dist/_dts/sdk/src/cli/media/local-sync.d.ts +0 -91
  136. package/dist/_dts/sdk/src/cli/media/portable.d.ts +0 -11
  137. package/dist/_dts/sdk/src/cli/media/rich-text.d.ts +0 -12
  138. package/dist/_dts/sdk/src/cli/media/value-utils.d.ts +0 -15
  139. package/dist/_dts/sdk/src/cli/media/write-guard.d.ts +0 -52
  140. package/dist/_dts/sdk/src/cli/merge-remote/entryLocal.d.ts +0 -3
  141. package/dist/_dts/sdk/src/cli/merge-remote/entryMerge.d.ts +0 -78
  142. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePlan.d.ts +0 -45
  143. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +0 -24
  144. package/dist/_dts/sdk/src/cli/merge-remote/entryMergeReport.d.ts +0 -18
  145. package/dist/_dts/sdk/src/cli/merge-remote/entryRemote.d.ts +0 -9
  146. package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +0 -48
  147. package/dist/_dts/sdk/src/cli/merge-remote/mergeFieldChanges.d.ts +0 -22
  148. package/dist/_dts/sdk/src/cli/merge-remote/pageLocal.d.ts +0 -3
  149. package/dist/_dts/sdk/src/cli/merge-remote/pageMerge.d.ts +0 -78
  150. package/dist/_dts/sdk/src/cli/merge-remote/pageMergePlan.d.ts +0 -36
  151. package/dist/_dts/sdk/src/cli/merge-remote/pageMergePush.d.ts +0 -23
  152. package/dist/_dts/sdk/src/cli/merge-remote/pageMergeReport.d.ts +0 -17
  153. package/dist/_dts/sdk/src/cli/merge-remote/pageSnapshots.d.ts +0 -46
  154. package/dist/_dts/sdk/src/cli/merge-remote/sharedBaseSnapshots.d.ts +0 -32
  155. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergePlan.d.ts +0 -27
  156. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergeReport.d.ts +0 -63
  157. package/dist/_dts/sdk/src/cli/migrations/entries.d.ts +0 -28
  158. package/dist/_dts/sdk/src/cli/migrations/events.d.ts +0 -73
  159. package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +0 -11
  160. package/dist/_dts/sdk/src/cli/output.d.ts +0 -133
  161. package/dist/_dts/sdk/src/cli/program.d.ts +0 -29
  162. package/dist/_dts/sdk/src/cli/push-config.d.ts +0 -49
  163. package/dist/_dts/sdk/src/cli/setup/setupPlan.d.ts +0 -51
  164. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +0 -13
  165. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +0 -170
  166. package/dist/_dts/sdk/src/cli/site-commands/commandRuntimeCompat.d.ts +0 -21
  167. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +0 -32
  168. package/dist/_dts/sdk/src/cli/site-commands/datedOfferingCommands.d.ts +0 -53
  169. package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +0 -65
  170. package/dist/_dts/sdk/src/cli/site-commands/eventScheduleCompiler.d.ts +0 -24
  171. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +0 -68
  172. package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +0 -53
  173. package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +0 -8
  174. package/dist/_dts/sdk/src/cli/site-commands/localBlockManifestResolver.d.ts +0 -31
  175. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +0 -57
  176. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +0 -82
  177. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +0 -84
  178. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +0 -39
  179. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionPlan.d.ts +0 -8
  180. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +0 -97
  181. package/dist/_dts/sdk/src/cli/site-commands/residualSettingsTrimming.d.ts +0 -15
  182. package/dist/_dts/sdk/src/cli/sync/diff.d.ts +0 -222
  183. package/dist/_dts/sdk/src/cli/sync/executor.d.ts +0 -84
  184. package/dist/_dts/sdk/src/cli/sync/field-diff.d.ts +0 -39
  185. package/dist/_dts/sdk/src/cli/sync/index.d.ts +0 -10
  186. package/dist/_dts/sdk/src/cli/sync/mapper.d.ts +0 -41
  187. package/dist/_dts/sdk/src/cli/sync/media-sync.d.ts +0 -15
  188. package/dist/_dts/sdk/src/cli/sync/media.d.ts +0 -158
  189. package/dist/_dts/sdk/src/cli/sync/syncResultAggregation.d.ts +0 -4
  190. package/dist/_dts/sdk/src/cli/sync/validation.d.ts +0 -68
  191. package/dist/_dts/sdk/src/cli/utils/checksum.d.ts +0 -1
  192. package/dist/_dts/sdk/src/client/management/blocks.d.ts +0 -19
  193. package/dist/_dts/sdk/src/client/management/catalog.d.ts +0 -10
  194. package/dist/_dts/sdk/src/client/management/entries.d.ts +0 -6
  195. package/dist/_dts/sdk/src/client/management/eventCategories.d.ts +0 -6
  196. package/dist/_dts/sdk/src/client/management/events.d.ts +0 -7
  197. package/dist/_dts/sdk/src/client/management/footer.d.ts +0 -9
  198. package/dist/_dts/sdk/src/client/management/forms.d.ts +0 -6
  199. package/dist/_dts/sdk/src/client/management/http.d.ts +0 -79
  200. package/dist/_dts/sdk/src/client/management/identifiers.d.ts +0 -11
  201. package/dist/_dts/sdk/src/client/management/index.d.ts +0 -41
  202. package/dist/_dts/sdk/src/client/management/media.d.ts +0 -72
  203. package/dist/_dts/sdk/src/client/management/navigation.d.ts +0 -6
  204. package/dist/_dts/sdk/src/client/management/pages.d.ts +0 -6
  205. package/dist/_dts/sdk/src/client/management/pull.d.ts +0 -6
  206. package/dist/_dts/sdk/src/client/management/settings-branding.d.ts +0 -32
  207. package/dist/_dts/sdk/src/client/management/settings.d.ts +0 -6
  208. package/dist/_dts/sdk/src/client/management/theme.d.ts +0 -8
  209. package/dist/_dts/sdk/src/client/management/types.d.ts +0 -1069
  210. package/dist/_dts/sdk/src/client/management/venues.d.ts +0 -6
  211. package/dist/_dts/sdk/src/client/management/webhooks.d.ts +0 -3
  212. package/dist/_dts/sdk/src/test/env.d.ts +0 -4
  213. package/dist/_dts/site-commands/src/adapter.d.ts +0 -23
  214. package/dist/_dts/site-commands/src/appointmentCommandSchemas.d.ts +0 -100
  215. package/dist/_dts/site-commands/src/capabilityGaps.d.ts +0 -8
  216. package/dist/_dts/site-commands/src/commandContract.d.ts +0 -1277
  217. package/dist/_dts/site-commands/src/commandDomain.d.ts +0 -20
  218. package/dist/_dts/site-commands/src/commandIdentifiers.d.ts +0 -7
  219. package/dist/_dts/site-commands/src/commandValidation.d.ts +0 -10
  220. package/dist/_dts/site-commands/src/commands.d.ts +0 -1983
  221. package/dist/_dts/site-commands/src/domain.d.ts +0 -104
  222. package/dist/_dts/site-commands/src/eventCommandContent.d.ts +0 -11
  223. package/dist/_dts/site-commands/src/exposure.d.ts +0 -41
  224. package/dist/_dts/site-commands/src/guards.d.ts +0 -1
  225. package/dist/_dts/site-commands/src/index.d.ts +0 -18
  226. package/dist/_dts/site-commands/src/metadata.d.ts +0 -555
  227. package/dist/_dts/site-commands/src/pagePaths.d.ts +0 -6
  228. package/dist/_dts/site-commands/src/planner.d.ts +0 -58
  229. package/dist/_dts/site-commands/src/refContributions.d.ts +0 -11
  230. package/dist/_dts/site-commands/src/refs.d.ts +0 -90
  231. package/dist/_dts/site-commands/src/siteStyleCommandSchema.d.ts +0 -405
  232. package/dist/_dts/site-commands/src/siteStyleSelectionSchemaBuilder.d.ts +0 -46
  233. package/dist/_dts/site-commands/src/stableJson.d.ts +0 -5
  234. package/dist/_dts/site-commands/src/staticExecutionGaps.d.ts +0 -10
  235. package/dist/_dts/site-commands/src/venueCommandMapping.d.ts +0 -21
  236. package/dist/_dts/theme-core/src/data.d.ts +0 -12
  237. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +0 -4
  238. package/dist/cli/index.mjs +0 -162988
  239. package/dist/cli/init-docs/content/agents-section.md +0 -67
  240. package/dist/cli/init-docs/content/cli-reference.md +0 -1238
  241. package/dist/cli/init-docs/content/content-management.md +0 -792
  242. package/dist/cli/init-docs/content/context-brand.md +0 -125
  243. package/dist/cli/init-docs/content/context-brief.md +0 -77
  244. package/dist/cli/init-docs/content/context-knowledge.md +0 -111
  245. package/dist/cli/init-docs/content/getting-started.md +0 -171
  246. package/dist/cli/init-docs/content/site-workflows-readme.md +0 -96
  247. package/dist/cli/init-docs/content/workflow-add-block.md +0 -299
  248. package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +0 -83
  249. package/dist/cli/init-docs/content/workflow-block-extensions.md +0 -370
  250. package/dist/cli/init-docs/content/workflow-cmsify-page.md +0 -357
  251. package/dist/cli/init-docs/content/workflow-content-types.md +0 -330
  252. package/dist/cli/init-docs/content/workflow-create-page.md +0 -212
  253. package/dist/cli/init-docs/content/workflow-custom-block.md +0 -470
  254. package/dist/cli/init-docs/content/workflow-editor-workflows.md +0 -130
  255. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +0 -158
  256. package/dist/cli/init-docs/content/workflow-preview-mode.md +0 -252
  257. package/dist/cli/init-docs/content/workflow-publish.md +0 -285
  258. package/dist/cli/init-docs/content/workflow-remote-setup.md +0 -51
  259. package/dist/cli/init-docs/content/workflow-templates.md +0 -381
  260. /package/dist/_dts/{sdk/src/cli/utils/mime.d.ts → media-core/src/mimeType.d.ts} +0 -0
@@ -1,792 +0,0 @@
1
- # Content Management Guide
2
-
3
- This guide explains the RiverbankCMS content model and how to work with content via the SDK.
4
-
5
- ## Content Model Overview
6
-
7
- RiverbankCMS organizes content into five main types:
8
-
9
- ### 1. Entries
10
-
11
- Content items for a specific content type (e.g., blog posts, products, team members).
12
-
13
- - Defined by content types in `riverbank.config.ts`
14
- - Each entry has an identifier, slug, and type-specific data
15
- - Can be draft or published
16
-
17
- **Local file structure:**
18
-
19
- ```
20
- content/
21
- entries/
22
- blog-post.json # All blog-post entries
23
- product.json # All product entries
24
- ```
25
-
26
- ### 2. Pages
27
-
28
- Standalone pages that contain blocks.
29
-
30
- - Have a path (URL), title, and SEO metadata
31
- - Contain an ordered list of blocks
32
- - Can be draft or published
33
-
34
- **Local file structure:**
35
-
36
- ```
37
- content/
38
- pages/
39
- home.json # Home page with blocks
40
- about.json # About page with blocks
41
- ```
42
-
43
- ### 3. Blocks
44
-
45
- Content components within pages.
46
-
47
- - Each block has a kind (e.g., `block.hero`, `block.body-text`)
48
- - Contains kind-specific content data
49
- - Ordered by position within a page
50
-
51
- **Common block kinds:**
52
-
53
- | Kind | Description |
54
- | --------------------- | ------------------------------------------------------ |
55
- | `block.hero` | Hero/banner sections with heading, image, CTA |
56
- | `block.body-text` | Rich text content |
57
- | `block.image` | Image with caption |
58
- | `block.image-gallery` | Image gallery (grid/carousel/masonry/marquee variants) |
59
- | `block.cta` | Call-to-action buttons |
60
- | `block.embed` | Embedded content (videos, etc.) |
61
-
62
- See `block-types.md` for the full list.
63
-
64
- ### 4. Navigation
65
-
66
- Menu structures for site navigation.
67
-
68
- - Named menus (e.g., "main", "footer")
69
- - Hierarchical items with labels, URLs, and children
70
-
71
- **Local file structure:**
72
-
73
- ```
74
- content/
75
- navigation.json # All navigation menus
76
- ```
77
-
78
- ### 5. Themes
79
-
80
- Site theme objects used for rendering blocks.
81
-
82
- **Local file structure:**
83
-
84
- ```
85
- content/
86
- themes/
87
- current.json # Default theme (pulled from CMS or edited locally)
88
- ```
89
-
90
- ### 6. Footer Content
91
-
92
- Site footer content (non-navigation), currently just optional bottom text.
93
-
94
- - Optional rich text for copyright notices, legal text, etc.
95
-
96
- **Local file structure:**
97
-
98
- ```
99
- content/
100
- footer.json # Footer bottom text (non-navigation)
101
- ```
102
-
103
- **Note:** Footer links are managed via navigation menus. `content/footer.json` is for non-link content only.
104
-
105
- ### 7. Event-Related Content
106
-
107
- For sites with events functionality, additional content types are available:
108
-
109
- **Venues** - Physical locations where events take place.
110
-
111
- ```
112
- content/
113
- venues/
114
- main-hall.json # Venue details with address, capacity, etc.
115
- ```
116
-
117
- **Event Categories** - Categories for organizing events.
118
-
119
- ```
120
- content/
121
- event-categories/
122
- workshop.json # Category with name, description, color
123
- ```
124
-
125
- **Events** - Event series with scheduling, pricing, and registration.
126
-
127
- ```
128
- content/
129
- events/
130
- yoga-class.json # Event with schedule, pricing, venue/category refs
131
- ```
132
-
133
- ---
134
-
135
- ## Working with Identifiers
136
-
137
- Identifiers are stable, human-readable names for content:
138
-
139
- - Used by the SDK to reference content reliably
140
- - Should be kebab-case (e.g., `my-blog-post`, `about-us`)
141
- - Are idempotent - upserting with same identifier updates existing content
142
- - Allow content to be tracked across environments
143
-
144
- **Examples:**
145
-
146
- ```bash
147
- # Entry identifier
148
- riverbankcms entry upsert blog-post my-first-post --data '...'
149
-
150
- # Page identifier
151
- riverbankcms page upsert about --title "About Us" --path /about
152
-
153
- # Block identifier (within a page)
154
- riverbankcms block upsert about hero-section --kind block.hero --data '...'
155
- ```
156
-
157
- **Backfill identifiers for legacy content:**
158
-
159
- ```bash
160
- riverbankcms identifiers backfill
161
- ```
162
-
163
- ---
164
-
165
- ## Media Identifiers (Local Sync)
166
-
167
- For media fields, you can reference files by a stable identifier:
168
-
169
- - Add `identifier` to the media field value (slug only, no extension)
170
- - Place files at `content/media/<identifier>.<ext>`
171
- - Pull/download media: `riverbankcms pull --local-media`
172
- - Push/upload media: `riverbankcms push` (default-on)
173
-
174
- Rich text images (TipTap JSON) are also identifier-based:
175
-
176
- - Store images as `{ type: "image", attrs: { identifier: "..." } }` (no persisted `attrs.src`)
177
- - External `attrs.src` URLs are auto-imported into CMS media on write
178
-
179
- ### `content/media` is local cache by default
180
-
181
- The generated SDK site `.gitignore` treats `content/media/*` as local cache and
182
- migration working data by default. This prevents large downloaded files, such as
183
- audio libraries or environment-clone media, from being staged accidentally. The
184
- portable source of truth is the media identifier in content JSON; local files are
185
- only the bytes used by pull/push workflows.
186
-
187
- If a project intentionally wants to version a few small media fixtures, place
188
- them under `content/media/fixtures/`. That directory is unignored by the generated
189
- pattern. For existing SDK repos that already committed local media, opt in to the
190
- new default with:
191
-
192
- ```bash
193
- git rm --cached -r content/media
194
- git add .gitignore
195
- git commit -m "Treat content/media as local cache"
196
- ```
197
-
198
- Review the staged diff before committing if you keep intentional fixtures.
199
-
200
- ### Managing Site Logo and Favicon
201
-
202
- Use `content/settings.json` as the repo-managed source of truth for branding:
203
-
204
- ```json
205
- {
206
- "homepageId": null,
207
- "seoDefaults": null,
208
- "logoIdentifier": "positive-play-primary-logo",
209
- "faviconIdentifier": "positive-play-primary-logo"
210
- }
211
- ```
212
-
213
- Recommended workflow:
214
-
215
- 1. Add the branding files to `content/media/`, for example `content/media/positive-play-primary-logo.svg`
216
- 2. Reference those identifiers in `content/settings.json`
217
- 3. Run `riverbankcms push settings`
218
- 4. Run `riverbankcms pull settings` if you want to confirm the CMS state round-trips cleanly
219
-
220
- Notes:
221
-
222
- - `riverbankcms push settings` uploads missing branding files through the normal local-media sync path before updating site settings, without pushing unrelated content
223
- - `riverbankcms pull settings` warns and omits `logoIdentifier` / `faviconIdentifier` if the current CMS branding asset has no media identifier yet
224
- - Dashboard branding edits and CLI pushes both update the same site settings row, so treat them as last-write-wins and pull before pushing after dashboard-side edits
225
-
226
- ---
227
-
228
- ## Draft vs Published
229
-
230
- All content has a publication status:
231
-
232
- | Status | Visibility |
233
- | --------- | ---------------------------- |
234
- | Draft | Only visible in preview mode |
235
- | Published | Visible on the live site |
236
-
237
- New content is created as a draft by default.
238
-
239
- ### Checking Status
240
-
241
- ```bash
242
- # Check entry status
243
- riverbankcms entry get blog-post my-post
244
-
245
- # Check page status
246
- riverbankcms page get about
247
-
248
- # List with JSON to see status field (--json wraps output in an envelope: reach into .result)
249
- riverbankcms entry list blog-post --json | jq '.result.entries[] | {identifier, status}'
250
-
251
- # Everything with pending changes, across all content types (server-filtered, uncapped)
252
- riverbankcms drafts
253
- ```
254
-
255
- ### Publishing Content
256
-
257
- ```bash
258
- # Publish entry
259
- riverbankcms entry publish blog-post my-post
260
-
261
- # Publish page
262
- riverbankcms page publish about
263
- ```
264
-
265
- ### Unpublishing Content
266
-
267
- ```bash
268
- # Unpublish entry (revert to draft)
269
- riverbankcms entry unpublish blog-post my-post
270
-
271
- # Unpublish page
272
- riverbankcms page unpublish about
273
- ```
274
-
275
- ### Unpublished Changes
276
-
277
- When you modify published content, it stays published but gains unpublished changes. The live site shows the last published version until you publish again.
278
-
279
- ```bash
280
- # Check for unpublished changes (--json wraps output: the entry is under .result)
281
- riverbankcms entry get blog-post my-post --json | jq '.result.hasUnpublishedChanges'
282
-
283
- # Publish to apply pending changes
284
- riverbankcms entry publish blog-post my-post
285
- ```
286
-
287
- ---
288
-
289
- ## Content Sync Workflow
290
-
291
- ### Pulling Content
292
-
293
- Downloads CMS content to local JSON files:
294
-
295
- ```bash
296
- # Pull all content
297
- riverbankcms pull
298
-
299
- # Pull specific types
300
- riverbankcms pull entries
301
- riverbankcms pull entries blog-post
302
- riverbankcms pull entries blog-post my-post
303
- riverbankcms pull pages
304
- riverbankcms pull pages home
305
- riverbankcms pull navigation
306
- riverbankcms pull footer # Footer content
307
- riverbankcms pull forms
308
- riverbankcms pull venues # Event venues
309
- riverbankcms pull event-categories # Event categories
310
- riverbankcms pull events # Event series
311
- riverbankcms pull events summer-fest # Specific event series
312
- ```
313
-
314
- **Output directory structure:**
315
-
316
- ```
317
- content/
318
- ├── entries/
319
- │ ├── blog-post/
320
- │ │ └── my-post.json
321
- │ └── product/
322
- │ └── featured-product.json
323
- ├── pages/
324
- │ ├── home.json
325
- │ └── about.json
326
- ├── navigation.json
327
- └── footer.json
328
- ```
329
-
330
- ### Pushing Content
331
-
332
- Uploads local changes to the CMS:
333
-
334
- ```bash
335
- # Preview changes (recommended)
336
- riverbankcms push --dry-run
337
-
338
- # Apply changes
339
- riverbankcms push
340
- ```
341
-
342
- For agent work, prefer scoped pushes over broad pushes:
343
-
344
- ```bash
345
- # One page
346
- riverbankcms push pages privacy-policy --env=remote --dry-run
347
- riverbankcms push pages privacy-policy --env=remote --yes
348
-
349
- # One content type or entry
350
- riverbankcms push entries blog-post --env=remote --dry-run
351
- riverbankcms push entries blog-post welcome --env=remote --dry-run
352
- ```
353
-
354
- Use CLI `--env=local` / `--env=remote` rather than `RIVERBANK_ENV=...` shell prefixes for sync commands. Site `.env.local` files may set `RIVERBANK_ENV`, while the CLI flag explicitly selects the sync target.
355
-
356
- If local files include unrelated page or entry differences, isolate the changed files with `--content-dir`:
357
-
358
- ```bash
359
- tmpdir=$(mktemp -d)
360
- mkdir -p "$tmpdir/pages"
361
- cp content/pages/privacy-policy.json "$tmpdir/pages/privacy-policy.json"
362
-
363
- riverbankcms push pages --content-dir "$tmpdir" --env=remote --dry-run
364
- riverbankcms push pages --content-dir "$tmpdir" --env=remote --yes
365
-
366
- rm -rf "$tmpdir"
367
- ```
368
-
369
- See `workflows/agent-safe-sync.md` for the full safe-push checklist.
370
-
371
- ### Sync Configuration
372
-
373
- Configure sync behavior in `riverbank.config.ts`:
374
-
375
- ```typescript
376
- export default defineConfig({
377
- siteId: "...",
378
- sync: {
379
- // How to handle existing entries during push
380
- existingEntries: "update", // 'skip' (default) or 'update'
381
- },
382
- });
383
- ```
384
-
385
- `push-config` syncs schema/config surfaces such as custom blocks, block extensions/options, content type schemas/templates, SDK-managed settings, and footer blocks. It does not replace `push pages`, `push entries`, or `push navigation` for file-backed content.
386
-
387
- | Option | Values | Description |
388
- | ----------------- | ---------------- | -------------------------------------------- |
389
- | `existingEntries` | `skip`, `update` | Whether to update entries that already exist |
390
-
391
- **Status Sync**: Push automatically syncs draft/published status based on the `status` field in your local content files. Set `"status": "published"` in a local file to publish on push, or `"status": "draft"` to unpublish.
392
-
393
- ### Environment Cloning (Remote ↔ Local) Best Practices
394
-
395
- Broken images after env pulls/pushes usually happen when env-specific media fields (like `assetId` or storage paths) leak into portable content JSON. The SDK is designed so **content JSON is portable** and media references are **identifier-only**.
396
-
397
- **Rules of thumb:**
398
-
399
- - **Do not** commit or hand-write `assetId`, `storagePath`, `storageBucket`, or `src` into content JSON.
400
- - Prefer `{ type: "image", identifier: "..." }` in structured content, and `{ type: "image", attrs: { identifier: "..." } }` in rich text.
401
- - If you hit an `INVALID_MEDIA_REFERENCE` error during push, re-run a fresh pull with the latest CLI and push again.
402
-
403
- #### Clone production CMS → local CMS (recommended)
404
-
405
- This is the safest “env clone” flow (portable JSON + local media files → push into target CMS):
406
-
407
- ```bash
408
- # 1) Pull remote content to a dedicated directory
409
- riverbankcms pull --env=remote --output .tmp/remote-clone --yes
410
-
411
- # 2) Download the media bytes referenced by identifiers into .tmp/remote-clone/media
412
- riverbankcms pull --env=remote --output .tmp/remote-clone --local-media --yes
413
-
414
- # 3) Push that snapshot into your local CMS (local DB gets its own assetIds)
415
- riverbankcms push --env=local --content-dir .tmp/remote-clone --yes
416
- ```
417
-
418
- #### Sync media bytes CMS → CMS (optional, faster for large libraries)
419
-
420
- Use this when you explicitly want to copy media bytes between environments without going through local files:
421
-
422
- ```bash
423
- # Remote storage -> local storage (identifier + checksum based)
424
- riverbankcms pull --env=remote --sync-media --yes
425
-
426
- # Fail-safe by default: checksum mismatches abort unless you explicitly overwrite
427
- riverbankcms pull --env=remote --sync-media --overwrite-media --yes
428
- ```
429
-
430
- Notes:
431
-
432
- - `--sync-media` is **identifier + checksum** based. If the target already has an identifier with different bytes, the command fails unless you pass `--overwrite-media`.
433
- - When pulling from remote, `--sync-media` may need to **write to the source CMS** to backfill missing identifiers, so remote sync requires `--yes`.
434
- - Local media bytes live under `content/media/`, which is treated as cache/migration working data by default in generated SDK sites.
435
-
436
- #### Promote local files → production CMS
437
-
438
- ```bash
439
- # Always pull first to refresh stale detection metadata
440
- riverbankcms pull --env=remote --yes
441
-
442
- # Then push your local content snapshot
443
- riverbankcms push --env=remote --yes
444
- ```
445
-
446
- ---
447
-
448
- ## Local Content Files
449
-
450
- ### Entry File Format
451
-
452
- `content/entries/blog-post.json`:
453
-
454
- ```json
455
- [
456
- {
457
- "identifier": "my-first-post",
458
- "slug": "my-first-post",
459
- "data": {
460
- "title": "My First Post",
461
- "content": "<p>Hello world!</p>",
462
- "publishedAt": "2024-01-15"
463
- }
464
- },
465
- {
466
- "identifier": "another-post",
467
- "slug": "another-post",
468
- "data": {
469
- "title": "Another Post",
470
- "content": "<p>More content...</p>"
471
- }
472
- }
473
- ]
474
- ```
475
-
476
- ### Page File Format
477
-
478
- `content/pages/home.json`:
479
-
480
- ```json
481
- {
482
- "identifier": "home",
483
- "title": "Home",
484
- "path": "/",
485
- "seo": {
486
- "title": "Welcome | My Site",
487
- "description": "The home page"
488
- },
489
- "blocks": [
490
- {
491
- "identifier": "hero-main",
492
- "kind": "block.hero",
493
- "content": {
494
- "heading": "Welcome to My Site",
495
- "subheading": "We build great things"
496
- }
497
- },
498
- {
499
- "identifier": "intro-text",
500
- "kind": "block.body-text",
501
- "content": {
502
- "content": "<p>Introduction text here...</p>"
503
- }
504
- }
505
- ]
506
- }
507
- ```
508
-
509
- ### Navigation File Format
510
-
511
- `content/navigation.json`:
512
-
513
- ```json
514
- {
515
- "menus": [
516
- {
517
- "identifier": "main",
518
- "name": "Main Navigation",
519
- "items": [
520
- { "label": "Home", "link": { "kind": "page", "identifier": "home" } },
521
- {
522
- "label": "Get Started",
523
- "link": { "kind": "url", "href": "/signup" },
524
- "isCta": true
525
- },
526
- {
527
- "label": "Products",
528
- "children": [
529
- {
530
- "label": "Category A",
531
- "link": { "kind": "url", "href": "/products/a" }
532
- },
533
- {
534
- "label": "Category B",
535
- "link": { "kind": "url", "href": "/products/b" }
536
- }
537
- ]
538
- }
539
- ]
540
- },
541
- {
542
- "identifier": "footer",
543
- "name": "Footer Navigation",
544
- "items": [
545
- { "label": "Privacy", "link": { "kind": "url", "href": "/privacy" } },
546
- { "label": "Terms", "link": { "kind": "url", "href": "/terms" } }
547
- ]
548
- }
549
- ]
550
- }
551
- ```
552
-
553
- `isCta` is optional and only applies to root-level link items. Dropdown containers and nested child items cannot be CTAs.
554
-
555
- ### Footer File Format
556
-
557
- `content/footer.json`:
558
-
559
- ```json
560
- {
561
- "bottomText": {
562
- "type": "doc",
563
- "content": [
564
- {
565
- "type": "paragraph",
566
- "content": [
567
- {
568
- "type": "text",
569
- "text": "© 2024 Your Company. All rights reserved."
570
- }
571
- ]
572
- }
573
- ]
574
- }
575
- }
576
- ```
577
-
578
- **Footer fields:**
579
-
580
- | Field | Type | Description |
581
- | ------------ | ---------------- | -------------------------------------------- |
582
- | `bottomText` | ProseMirror JSON | Rich text for copyright, legal notices, etc. |
583
-
584
- Footer links are managed via the site's footer navigation menu (see `content/navigation.json`).
585
-
586
- ### Venue File Format
587
-
588
- `content/venues/main-hall.json`:
589
-
590
- ```json
591
- {
592
- "slug": "main-hall",
593
- "title": "Main Conference Hall",
594
- "description": "Our main venue for large events",
595
- "timezone": "America/Los_Angeles",
596
- "capacity": 200,
597
- "address": {
598
- "line1": "123 Main St",
599
- "city": "San Francisco",
600
- "region": "CA",
601
- "postcode": "94102",
602
- "country": "US"
603
- }
604
- }
605
- ```
606
-
607
- ### Event Category File Format
608
-
609
- `content/event-categories/workshop.json`:
610
-
611
- ```json
612
- {
613
- "identifier": "workshop",
614
- "name": "Workshop",
615
- "description": "Hands-on learning sessions",
616
- "color": "#3B82F6",
617
- "sortOrder": 1
618
- }
619
- ```
620
-
621
- ### Event File Format
622
-
623
- `content/events/yoga-class.json`:
624
-
625
- ```json
626
- {
627
- "identifier": "yoga-class",
628
- "title": "Morning Yoga Class",
629
- "slug": "yoga-class",
630
- "path": "/events/yoga-class",
631
- "status": "active",
632
- "visibility": "public",
633
- "preset": "class",
634
- "bookingScope": "single_occurrence",
635
- "occurrences": [
636
- {
637
- "startsAt": "2026-01-05T15:00:00.000Z",
638
- "endsAt": "2026-01-05T16:00:00.000Z",
639
- "timeZone": "America/Los_Angeles"
640
- },
641
- {
642
- "startsAt": "2026-01-12T15:00:00.000Z",
643
- "endsAt": "2026-01-12T16:00:00.000Z",
644
- "timeZone": "America/Los_Angeles"
645
- }
646
- ],
647
- "venueRef": "main-hall",
648
- "categoryRef": "workshop",
649
- "capacity": 30,
650
- "pricing": {
651
- "requiresPayment": true,
652
- "priceAmount": 2500,
653
- "priceCurrency": "usd",
654
- "acceptsPasses": true,
655
- "acceptsMemberships": true
656
- },
657
- "content": {
658
- "summary": "Start your day with energizing yoga",
659
- "body": "<p>Join us for a revitalizing morning yoga session.</p>"
660
- },
661
- "blocks": {
662
- "main": [
663
- {
664
- "identifier": "class-introduction",
665
- "kind": "block.body-text",
666
- "content": {
667
- "body": "<p>Bring a mat and arrive ten minutes early.</p>"
668
- }
669
- },
670
- {
671
- "identifier": "what-to-expect",
672
- "kind": "custom.event-callout",
673
- "content": {
674
- "headline": "Gentle, steady, welcoming"
675
- }
676
- }
677
- ]
678
- }
679
- }
680
- ```
681
-
682
- **Event field notes:**
683
-
684
- - `priceAmount` is in cents (2500 = $25.00)
685
- - `preset` controls the event's presentation defaults; `bookingScope` controls
686
- whether a registration selects one occurrence or the complete series.
687
- - `occurrences` is the complete authored schedule. Instants use canonical UTC
688
- ISO datetimes and every item carries the event's IANA timezone.
689
- - `venueRef` and `categoryRef` reference slugs/identifiers from venues and event-categories
690
- - `status`: "draft", "active", "completed", "cancelled", or "archived"
691
- - `visibility`: "private", "public", or "unlisted"
692
- - `path` sets the draft route owned by the event's native page surface. Omit it to keep the CMS-generated route.
693
- - Event page content is owned by the native `eventOffering` or `eventSeries` page-surface subject.
694
- - `blocks` writes to the event page surface's template-defined surface slots. The default event template declares `blocks.main`.
695
- - Use stable block `identifier` values. Re-pushing the same event updates matching slot blocks instead of creating duplicates.
696
- - Default surface slots accept built-in content blocks plus enabled SDK custom blocks. If a template sets `allowedBlocks`, that explicit list is authoritative.
697
- - `riverbankcms push events` aborts when two `content/events/*.json` files use the same `identifier`; merge or delete stale duplicates before pushing.
698
-
699
- See `cli-reference.md` for event-related CLI commands: `riverbankcms push/pull venues|event-categories|events`.
700
-
701
- `riverbankcms pull events` writes every non-cancelled occurrence to the event
702
- file. Pushing a new event creates that explicit schedule, and pushing an
703
- unchanged existing schedule is safe. Existing-series additions, removals, or
704
- retiming remain an explicit capability gap; use `riverbankcms event occurrence
705
- list|add|update|cancel|delete` for those operational changes. Cancelled rows are
706
- operational tombstones and are not recreated from portable content.
707
-
708
- ---
709
-
710
- ## Configuration Reference
711
-
712
- ### riverbank.config.ts
713
-
714
- Main SDK configuration:
715
-
716
- ```typescript
717
- import { defineConfig } from '@riverbankcms/sdk';
718
-
719
- export default defineConfig({
720
- // Required: Your site ID
721
- siteId: 'your-site-id',
722
-
723
- // Optional: Dashboard UI configuration (navigation visibility, etc.)
724
- dashboard: {
725
- navigation: {
726
- // Top nav (Overview/Content/Media/Settings/etc.)
727
- siteNav: {
728
- // mode: 'augment' | 'restrict'
729
- // allowIds: [...]
730
- // denyIds: [...]
731
- // roles: { editor: { ... }, administrator: { ... } }
732
- },
733
- // Settings sidebar (General/Emails/Members/etc.)
734
- settingsNav: {
735
- // mode: 'augment' | 'restrict'
736
- // allowIds: [...]
737
- // denyIds: [...]
738
- // roles: { editor: { ... }, administrator: { ... } }
739
- },
740
- },
741
- },
742
-
743
- // Custom blocks (see schema.md)
744
- customBlocks: [...],
745
-
746
- // Extend built-in blocks with new fields
747
- blockFieldExtensions: {...},
748
-
749
- // Override select field options
750
- blockFieldOptions: {...},
751
-
752
- // Content scaffolding
753
- content: {
754
- contentTypes: [...],
755
- pages: [...],
756
- entries: {...},
757
- navigation: {...},
758
- },
759
-
760
- // Sync settings
761
- sync: {
762
- existingEntries: 'update',
763
- },
764
- });
765
- ```
766
-
767
- ### Environment Variables
768
-
769
- Local development (default):
770
-
771
- ```bash
772
- RIVERBANK_LOCAL_SITE_ID=your-site-id
773
- RIVERBANK_LOCAL_DASHBOARD_URL=http://localhost:4000
774
- RIVERBANK_LOCAL_MGMT_API_KEY=bld_mgmt_sk_...
775
- ```
776
-
777
- Production (`--env=remote`):
778
-
779
- ```bash
780
- RIVERBANK_REMOTE_SITE_ID=your-site-id
781
- RIVERBANK_REMOTE_DASHBOARD_URL=https://your-dashboard.riverbankcms.com
782
- RIVERBANK_REMOTE_MGMT_API_KEY=bld_mgmt_sk_...
783
- ```
784
-
785
- ---
786
-
787
- ## Related Documentation
788
-
789
- - `cli-reference.md` - Full CLI command reference
790
- - `schema.md` - This site's content types and custom blocks
791
- - `block-types.md` - Available block types
792
- - `workflows/` - Step-by-step guides for common tasks, including editor workflows