@riverbankcms/sdk 0.128.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.
- package/README.md +52 -256
- package/dist/{PreviewEditorSidebar-Dbvb7GIr.mjs → PreviewEditorSidebar-DceRseRV.mjs} +3 -3
- package/dist/{PreviewEditorUI-e9O9l20X.mjs → PreviewEditorUI-BNunq3kk.mjs} +2 -2
- package/dist/{SdkPreviewModeRuntime-BZHt6e9w.mjs → SdkPreviewModeRuntime-Bt87-62u.mjs} +495 -292
- package/dist/{SiteChromeCustomizeContext-CvuGbHJX.mjs → SiteChromeCustomizeContext-BLl-OlL4.mjs} +600 -533
- package/dist/_dts/ai/src/contracts/commandExposure.d.ts +1 -1
- package/dist/_dts/ai/src/contracts/proposals.d.ts +4897 -4897
- package/dist/_dts/api/src/index.d.ts +2 -1
- package/dist/_dts/api/src/sdk-event-management.d.ts +53 -0
- package/dist/_dts/api/src/sdk-event-schedule.d.ts +3 -6
- package/dist/_dts/api/src/sdkContracts.d.ts +37 -50
- package/dist/_dts/api/src/sdkThemeWire.d.ts +2595 -0
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +13 -29
- package/dist/_dts/blocks/src/PageRenderer.d.ts +20 -10
- package/dist/_dts/blocks/src/index.d.ts +2 -1
- package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +30 -0
- package/dist/_dts/blocks/src/pageRenderingMode.d.ts +37 -0
- package/dist/_dts/blocks/src/server.d.ts +1 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +14 -0
- package/dist/_dts/media-core/src/index.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/index.d.ts +47 -47
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +18 -6
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +30 -21
- package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +18 -5
- package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +9 -0
- package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +21 -6
- package/dist/_dts/preview-next/src/client/sdk-runtime.d.ts +8 -8
- package/dist/_dts/sdk/src/config/types.d.ts +4 -4
- package/dist/_dts/sdk/src/next/catch-all.d.ts +6 -0
- package/dist/_dts/sdk/src/next/index.d.ts +2 -1
- package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +33 -0
- package/dist/_dts/sdk/src/next/types.d.ts +23 -9
- package/dist/_dts/sdk/src/preview-next/before-render.d.ts +4 -6
- package/dist/_dts/sdk/src/preview-next/client/index.d.ts +3 -3
- package/dist/_dts/sdk/src/preview-next/client/runtime.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +25 -3
- package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +13 -2
- package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +31 -18
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +20 -9
- package/dist/_dts/sdk/src/rendering/index.d.ts +4 -2
- package/dist/_dts/sdk/src/rendering/renderingMode.d.ts +23 -0
- package/dist/_dts/sdk/src/rendering/server.d.ts +5 -3
- package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +6 -0
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/site-styles/headerLayoutStyleCatalog.d.ts +254 -0
- package/dist/_dts/theme-core/src/site-styles/headerLegacyLooks.d.ts +372 -0
- package/dist/_dts/theme-core/src/site-styles/headerLookBranding.d.ts +106 -0
- package/dist/_dts/theme-core/src/site-styles/headerLookSelection.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/headerLookTypes.d.ts +212 -0
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +7 -841
- package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +3 -0
- package/dist/_dts/theme-core/src/site-styles/headerStyleCompilerPrimitives.d.ts +23 -0
- package/dist/client/client.mjs +911 -762
- package/dist/client/hooks.mjs +59 -36
- package/dist/client/rendering/client.mjs +593 -547
- package/dist/client/rendering.mjs +994 -783
- package/dist/preview-next/before-render.mjs +10 -3
- package/dist/preview-next/client/runtime.mjs +3 -3
- package/dist/{sdk-runtime-Cn_QSCOg.mjs → sdk-runtime-C20CVWbb.mjs} +1 -1
- package/dist/{separator-CEoGABRc.mjs → separator-BE3NCquy.mjs} +1 -1
- package/dist/server/components.mjs +549 -399
- package/dist/server/config-validation.mjs +59 -36
- package/dist/server/config.mjs +59 -36
- package/dist/server/data.mjs +59 -36
- package/dist/server/index.mjs +1 -1
- package/dist/server/manifest.mjs +4966 -0
- package/dist/server/next.mjs +700 -537
- package/dist/server/page-converter.mjs +40 -36
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +571 -404
- package/dist/server/rendering.mjs +571 -404
- package/dist/server/routing.mjs +472 -402
- package/dist/server/server.mjs +60 -37
- package/dist/server/theme-bridge.mjs +70 -66
- package/package.json +9 -12
- package/dist/_dts/api/src/event-presentation.d.ts +0 -14
- package/dist/_dts/blocks/src/definitions.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/canonical-entry-policy.d.ts +0 -53
- package/dist/_dts/sdk/src/cli/commands/audit.d.ts +0 -101
- package/dist/_dts/sdk/src/cli/commands/block.d.ts +0 -24
- package/dist/_dts/sdk/src/cli/commands/compare.d.ts +0 -62
- package/dist/_dts/sdk/src/cli/commands/content-type.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/commands/content.d.ts +0 -56
- package/dist/_dts/sdk/src/cli/commands/delete.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/commands/deploy.d.ts +0 -43
- package/dist/_dts/sdk/src/cli/commands/drafts.d.ts +0 -18
- package/dist/_dts/sdk/src/cli/commands/entry.d.ts +0 -55
- package/dist/_dts/sdk/src/cli/commands/env.d.ts +0 -31
- package/dist/_dts/sdk/src/cli/commands/event.d.ts +0 -23
- package/dist/_dts/sdk/src/cli/commands/eventOccurrenceSchedule.d.ts +0 -12
- package/dist/_dts/sdk/src/cli/commands/identifiers.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/commands/init-docs.d.ts +0 -13
- package/dist/_dts/sdk/src/cli/commands/manifest.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/commands/media-validation.d.ts +0 -3
- package/dist/_dts/sdk/src/cli/commands/migrate.d.ts +0 -11
- package/dist/_dts/sdk/src/cli/commands/navigation.d.ts +0 -12
- package/dist/_dts/sdk/src/cli/commands/page.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/commands/publish-all.d.ts +0 -50
- package/dist/_dts/sdk/src/cli/commands/pull-dated-offering-scope.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/commands/pull-dry-run.d.ts +0 -70
- package/dist/_dts/sdk/src/cli/commands/pull-scope-diff.d.ts +0 -8
- package/dist/_dts/sdk/src/cli/commands/pull.d.ts +0 -43
- package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +0 -3
- package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +0 -19
- package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +0 -42
- package/dist/_dts/sdk/src/cli/commands/push/execute/localMediaReporting.d.ts +0 -23
- package/dist/_dts/sdk/src/cli/commands/push/execute/media.d.ts +0 -22
- package/dist/_dts/sdk/src/cli/commands/push/execute/metadata.d.ts +0 -1
- package/dist/_dts/sdk/src/cli/commands/push/execute/reporting.d.ts +0 -7
- package/dist/_dts/sdk/src/cli/commands/push/execute/theme.d.ts +0 -63
- package/dist/_dts/sdk/src/cli/commands/push/filter.d.ts +0 -15
- package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +0 -29
- package/dist/_dts/sdk/src/cli/commands/push/normalizeLocalContent.d.ts +0 -2
- package/dist/_dts/sdk/src/cli/commands/push/options.d.ts +0 -32
- package/dist/_dts/sdk/src/cli/commands/push/publishGuidance.d.ts +0 -15
- package/dist/_dts/sdk/src/cli/commands/push/pushAllExtras.d.ts +0 -25
- package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +0 -83
- package/dist/_dts/sdk/src/cli/commands/push/scopes/eventCategories.d.ts +0 -4
- package/dist/_dts/sdk/src/cli/commands/push/scopes/events.d.ts +0 -4
- package/dist/_dts/sdk/src/cli/commands/push/scopes/mediaPrep.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/commands/push/scopes/pushScopeGeneric.d.ts +0 -6
- package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +0 -87
- package/dist/_dts/sdk/src/cli/commands/push/scopes/venues.d.ts +0 -4
- package/dist/_dts/sdk/src/cli/commands/push/stale-resolution.d.ts +0 -48
- package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +0 -17
- package/dist/_dts/sdk/src/cli/commands/push/verification.d.ts +0 -56
- package/dist/_dts/sdk/src/cli/commands/push/workflowPlan.d.ts +0 -34
- package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +0 -54
- package/dist/_dts/sdk/src/cli/commands/push.d.ts +0 -40
- package/dist/_dts/sdk/src/cli/commands/setup.d.ts +0 -3
- package/dist/_dts/sdk/src/cli/commands/style.d.ts +0 -60
- package/dist/_dts/sdk/src/cli/commands/verify.d.ts +0 -11
- package/dist/_dts/sdk/src/cli/commands/webhooks.d.ts +0 -44
- package/dist/_dts/sdk/src/cli/config-loader.d.ts +0 -47
- package/dist/_dts/sdk/src/cli/content/collectionWriters.d.ts +0 -23
- package/dist/_dts/sdk/src/cli/content/edit/format.d.ts +0 -2
- package/dist/_dts/sdk/src/cli/content/edit/path.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/content/edit/planner.d.ts +0 -46
- package/dist/_dts/sdk/src/cli/content/entryPaths.d.ts +0 -6
- package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/content/fs-utils.d.ts +0 -39
- package/dist/_dts/sdk/src/cli/content/legacyEventScheduleShapeError.d.ts +0 -5
- package/dist/_dts/sdk/src/cli/content/localEventSchedule.d.ts +0 -17
- package/dist/_dts/sdk/src/cli/content/media-manifest.d.ts +0 -13
- package/dist/_dts/sdk/src/cli/content/metadataAfterPush.d.ts +0 -25
- package/dist/_dts/sdk/src/cli/content/metadataStore.d.ts +0 -29
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +0 -488
- package/dist/_dts/sdk/src/cli/content/writer.d.ts +0 -142
- package/dist/_dts/sdk/src/cli/env-scope.d.ts +0 -2
- package/dist/_dts/sdk/src/cli/env.d.ts +0 -71
- package/dist/_dts/sdk/src/cli/errors.d.ts +0 -62
- package/dist/_dts/sdk/src/cli/helpers/ai-runtime.d.ts +0 -2
- package/dist/_dts/sdk/src/cli/helpers.d.ts +0 -399
- package/dist/_dts/sdk/src/cli/index.d.ts +0 -11
- package/dist/_dts/sdk/src/cli/init-docs/constants.d.ts +0 -16
- package/dist/_dts/sdk/src/cli/init-docs/index.d.ts +0 -12
- package/dist/_dts/sdk/src/cli/init-docs/templates.d.ts +0 -18
- package/dist/_dts/sdk/src/cli/init-docs/zod-to-markdown.d.ts +0 -28
- package/dist/_dts/sdk/src/cli/load-config.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/media/identifiers.d.ts +0 -18
- package/dist/_dts/sdk/src/cli/media/local-media.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/media/local-sync.d.ts +0 -91
- package/dist/_dts/sdk/src/cli/media/portable.d.ts +0 -11
- package/dist/_dts/sdk/src/cli/media/rich-text.d.ts +0 -12
- package/dist/_dts/sdk/src/cli/media/value-utils.d.ts +0 -15
- package/dist/_dts/sdk/src/cli/media/write-guard.d.ts +0 -52
- package/dist/_dts/sdk/src/cli/merge-remote/entryLocal.d.ts +0 -3
- package/dist/_dts/sdk/src/cli/merge-remote/entryMerge.d.ts +0 -78
- package/dist/_dts/sdk/src/cli/merge-remote/entryMergePlan.d.ts +0 -45
- package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +0 -24
- package/dist/_dts/sdk/src/cli/merge-remote/entryMergeReport.d.ts +0 -18
- package/dist/_dts/sdk/src/cli/merge-remote/entryRemote.d.ts +0 -9
- package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +0 -48
- package/dist/_dts/sdk/src/cli/merge-remote/mergeFieldChanges.d.ts +0 -22
- package/dist/_dts/sdk/src/cli/merge-remote/pageLocal.d.ts +0 -3
- package/dist/_dts/sdk/src/cli/merge-remote/pageMerge.d.ts +0 -78
- package/dist/_dts/sdk/src/cli/merge-remote/pageMergePlan.d.ts +0 -36
- package/dist/_dts/sdk/src/cli/merge-remote/pageMergePush.d.ts +0 -23
- package/dist/_dts/sdk/src/cli/merge-remote/pageMergeReport.d.ts +0 -17
- package/dist/_dts/sdk/src/cli/merge-remote/pageSnapshots.d.ts +0 -46
- package/dist/_dts/sdk/src/cli/merge-remote/sharedBaseSnapshots.d.ts +0 -32
- package/dist/_dts/sdk/src/cli/merge-remote/sharedMergePlan.d.ts +0 -27
- package/dist/_dts/sdk/src/cli/merge-remote/sharedMergeReport.d.ts +0 -63
- package/dist/_dts/sdk/src/cli/migrations/entries.d.ts +0 -28
- package/dist/_dts/sdk/src/cli/migrations/events.d.ts +0 -73
- package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +0 -11
- package/dist/_dts/sdk/src/cli/output.d.ts +0 -133
- package/dist/_dts/sdk/src/cli/program.d.ts +0 -29
- package/dist/_dts/sdk/src/cli/push-config.d.ts +0 -49
- package/dist/_dts/sdk/src/cli/setup/setupPlan.d.ts +0 -51
- package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +0 -13
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +0 -170
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntimeCompat.d.ts +0 -21
- package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +0 -32
- package/dist/_dts/sdk/src/cli/site-commands/datedOfferingCommands.d.ts +0 -53
- package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +0 -65
- package/dist/_dts/sdk/src/cli/site-commands/eventScheduleCompiler.d.ts +0 -24
- package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +0 -68
- package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +0 -53
- package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +0 -8
- package/dist/_dts/sdk/src/cli/site-commands/localBlockManifestResolver.d.ts +0 -31
- package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +0 -57
- package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +0 -82
- package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +0 -84
- package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +0 -39
- package/dist/_dts/sdk/src/cli/site-commands/pushExecutionPlan.d.ts +0 -8
- package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +0 -97
- package/dist/_dts/sdk/src/cli/site-commands/residualSettingsTrimming.d.ts +0 -15
- package/dist/_dts/sdk/src/cli/sync/diff.d.ts +0 -222
- package/dist/_dts/sdk/src/cli/sync/executor.d.ts +0 -84
- package/dist/_dts/sdk/src/cli/sync/field-diff.d.ts +0 -39
- package/dist/_dts/sdk/src/cli/sync/index.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/sync/mapper.d.ts +0 -41
- package/dist/_dts/sdk/src/cli/sync/media-sync.d.ts +0 -15
- package/dist/_dts/sdk/src/cli/sync/media.d.ts +0 -158
- package/dist/_dts/sdk/src/cli/sync/syncResultAggregation.d.ts +0 -4
- package/dist/_dts/sdk/src/cli/sync/validation.d.ts +0 -68
- package/dist/_dts/sdk/src/cli/utils/checksum.d.ts +0 -1
- package/dist/_dts/sdk/src/client/management/blocks.d.ts +0 -19
- package/dist/_dts/sdk/src/client/management/catalog.d.ts +0 -10
- package/dist/_dts/sdk/src/client/management/entries.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/eventCategories.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/events.d.ts +0 -7
- package/dist/_dts/sdk/src/client/management/footer.d.ts +0 -9
- package/dist/_dts/sdk/src/client/management/forms.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/http.d.ts +0 -79
- package/dist/_dts/sdk/src/client/management/identifiers.d.ts +0 -11
- package/dist/_dts/sdk/src/client/management/index.d.ts +0 -41
- package/dist/_dts/sdk/src/client/management/media.d.ts +0 -72
- package/dist/_dts/sdk/src/client/management/navigation.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/pages.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/pull.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/settings-branding.d.ts +0 -32
- package/dist/_dts/sdk/src/client/management/settings.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/theme.d.ts +0 -8
- package/dist/_dts/sdk/src/client/management/types.d.ts +0 -1069
- package/dist/_dts/sdk/src/client/management/venues.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/webhooks.d.ts +0 -3
- package/dist/_dts/sdk/src/test/env.d.ts +0 -4
- package/dist/_dts/site-commands/src/adapter.d.ts +0 -23
- package/dist/_dts/site-commands/src/appointmentCommandSchemas.d.ts +0 -100
- package/dist/_dts/site-commands/src/capabilityGaps.d.ts +0 -8
- package/dist/_dts/site-commands/src/commandContract.d.ts +0 -1277
- package/dist/_dts/site-commands/src/commandDomain.d.ts +0 -20
- package/dist/_dts/site-commands/src/commandIdentifiers.d.ts +0 -7
- package/dist/_dts/site-commands/src/commandValidation.d.ts +0 -10
- package/dist/_dts/site-commands/src/commands.d.ts +0 -1983
- package/dist/_dts/site-commands/src/domain.d.ts +0 -104
- package/dist/_dts/site-commands/src/eventCommandContent.d.ts +0 -11
- package/dist/_dts/site-commands/src/exposure.d.ts +0 -41
- package/dist/_dts/site-commands/src/guards.d.ts +0 -1
- package/dist/_dts/site-commands/src/index.d.ts +0 -18
- package/dist/_dts/site-commands/src/metadata.d.ts +0 -555
- package/dist/_dts/site-commands/src/pagePaths.d.ts +0 -6
- package/dist/_dts/site-commands/src/planner.d.ts +0 -58
- package/dist/_dts/site-commands/src/refContributions.d.ts +0 -11
- package/dist/_dts/site-commands/src/refs.d.ts +0 -90
- package/dist/_dts/site-commands/src/siteStyleCommandSchema.d.ts +0 -405
- package/dist/_dts/site-commands/src/siteStyleSelectionSchemaBuilder.d.ts +0 -46
- package/dist/_dts/site-commands/src/stableJson.d.ts +0 -5
- package/dist/_dts/site-commands/src/staticExecutionGaps.d.ts +0 -10
- package/dist/_dts/site-commands/src/venueCommandMapping.d.ts +0 -21
- package/dist/_dts/theme-core/src/data.d.ts +0 -12
- package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +0 -4
- package/dist/cli/index.mjs +0 -162962
- package/dist/cli/init-docs/content/agents-section.md +0 -67
- package/dist/cli/init-docs/content/cli-reference.md +0 -1238
- package/dist/cli/init-docs/content/content-management.md +0 -792
- package/dist/cli/init-docs/content/context-brand.md +0 -125
- package/dist/cli/init-docs/content/context-brief.md +0 -77
- package/dist/cli/init-docs/content/context-knowledge.md +0 -111
- package/dist/cli/init-docs/content/getting-started.md +0 -171
- package/dist/cli/init-docs/content/site-workflows-readme.md +0 -96
- package/dist/cli/init-docs/content/workflow-add-block.md +0 -299
- package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +0 -83
- package/dist/cli/init-docs/content/workflow-block-extensions.md +0 -370
- package/dist/cli/init-docs/content/workflow-cmsify-page.md +0 -357
- package/dist/cli/init-docs/content/workflow-content-types.md +0 -330
- package/dist/cli/init-docs/content/workflow-create-page.md +0 -212
- package/dist/cli/init-docs/content/workflow-custom-block.md +0 -470
- package/dist/cli/init-docs/content/workflow-editor-workflows.md +0 -130
- package/dist/cli/init-docs/content/workflow-isr-revalidation.md +0 -158
- package/dist/cli/init-docs/content/workflow-preview-mode.md +0 -239
- package/dist/cli/init-docs/content/workflow-publish.md +0 -285
- package/dist/cli/init-docs/content/workflow-remote-setup.md +0 -51
- package/dist/cli/init-docs/content/workflow-templates.md +0 -381
- /package/dist/_dts/{sdk/src/cli/utils/mime.d.ts → media-core/src/mimeType.d.ts} +0 -0
|
@@ -1,1238 +0,0 @@
|
|
|
1
|
-
# SDK CLI Reference
|
|
2
|
-
|
|
3
|
-
The RiverbankCMS SDK CLI (`riverbankcms`) manages content synchronization between local files and the CMS.
|
|
4
|
-
|
|
5
|
-
## Global Options
|
|
6
|
-
|
|
7
|
-
All commands support these options:
|
|
8
|
-
|
|
9
|
-
| Option | Description |
|
|
10
|
-
| ---------------- | ---------------------------------------------------------- |
|
|
11
|
-
| `--json` | Output a single JSON envelope for machine parsing |
|
|
12
|
-
| `--quiet` | Minimal output (suppress non-essential messages) |
|
|
13
|
-
| `--env <target>` | Target environment: `local` (default), `remote`, or `both` |
|
|
14
|
-
| `--remote` | **[Deprecated]** Use `--env=remote` instead |
|
|
15
|
-
|
|
16
|
-
**The `--json` envelope (single-document contract):** under `--json`, *every* invocation emits **exactly one** JSON document on stdout:
|
|
17
|
-
|
|
18
|
-
```json
|
|
19
|
-
{ "ok": true, "command": "entry get", "result": { }, "warnings": [], "errors": [] }
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
- `ok: false` always carries a non-empty `errors` array, and the process exits non-zero — failures never print a stack trace on stdout. `ok: true` always has empty `errors`.
|
|
23
|
-
- Commander's own paths ride the same envelope: `--help`, `--version`, and even an unknown command emit one document (an unknown command is `ok: false` with a non-zero exit).
|
|
24
|
-
- Prompts are written to stderr, so JSON mode requires `--yes` for anything that would otherwise ask for confirmation. Non-envelope diagnostics (deprecation notices, warnings) go to stderr and never pollute the stdout document.
|
|
25
|
-
|
|
26
|
-
**Environment targeting:**
|
|
27
|
-
|
|
28
|
-
- `--env=local` (default): Target local Supabase/development environment
|
|
29
|
-
- `--env=remote`: Target production CMS
|
|
30
|
-
- `--env=both`: Run against both environments sequentially
|
|
31
|
-
|
|
32
|
-
**Safety behavior:**
|
|
33
|
-
|
|
34
|
-
- Local operations execute immediately
|
|
35
|
-
- Remote operations default to dry-run and require `--yes` to execute
|
|
36
|
-
- When using `--env=both`, local runs first, then remote with the same safety rules
|
|
37
|
-
|
|
38
|
-
Prefer the CLI `--env` flag over shell prefixes such as `RIVERBANK_ENV=remote riverbankcms ...`. Site `.env.local` files may define `RIVERBANK_ENV`, and command-specific `--env` is the reliable way to target local or remote CMS sync.
|
|
39
|
-
|
|
40
|
-
## Environment Variables
|
|
41
|
-
|
|
42
|
-
### Local Environment (default)
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
# Required
|
|
46
|
-
RIVERBANK_LOCAL_SITE_ID=your-site-id
|
|
47
|
-
RIVERBANK_LOCAL_DASHBOARD_URL=http://localhost:4000
|
|
48
|
-
RIVERBANK_LOCAL_MGMT_API_KEY=bld_mgmt_sk_...
|
|
49
|
-
|
|
50
|
-
# Optional
|
|
51
|
-
RIVERBANK_LOCAL_API_KEY=bld_live_sk_... # For prebuild/content fetching
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Remote Environment (--env=remote)
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
# Required
|
|
58
|
-
RIVERBANK_REMOTE_SITE_ID=your-site-id
|
|
59
|
-
RIVERBANK_REMOTE_DASHBOARD_URL=https://your-dashboard.riverbankcms.com
|
|
60
|
-
RIVERBANK_REMOTE_MGMT_API_KEY=bld_mgmt_sk_...
|
|
61
|
-
|
|
62
|
-
# Optional
|
|
63
|
-
RIVERBANK_REMOTE_API_KEY=bld_live_sk_... # Required for deploy command
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**Notes:**
|
|
67
|
-
|
|
68
|
-
- Management API keys start with `bld_mgmt_sk_` (for write operations)
|
|
69
|
-
- Content API keys start with `bld_live_sk_` (for read-only operations)
|
|
70
|
-
- `RIVERBANK_*_SUPABASE_URL` is deprecated and ignored by media sync
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Setup Commands
|
|
75
|
-
|
|
76
|
-
### setup plan
|
|
77
|
-
|
|
78
|
-
Show the safe site, key, user access, and env setup lifecycle for the selected environment.
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
# Show local setup status and lifecycle
|
|
82
|
-
riverbankcms setup plan
|
|
83
|
-
|
|
84
|
-
# Show remote setup status and lifecycle
|
|
85
|
-
riverbankcms setup plan --env=remote
|
|
86
|
-
|
|
87
|
-
# Show both targets as JSON
|
|
88
|
-
riverbankcms setup plan --env=both --json
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
The setup planner is read-only. It does not create sites, issue API keys, or grant dashboard access. Those operations require a dashboard/admin actor or an approved CMS repo script with service-role/admin credentials. SDK management keys are site-scoped and are only used for verifying access and syncing content/config for an existing site.
|
|
92
|
-
|
|
93
|
-
Use this command when a project has missing `RIVERBANK_*_SITE_ID`, `RIVERBANK_*_DASHBOARD_URL`, or `RIVERBANK_*_MGMT_API_KEY` values, or when onboarding an existing remote site into an SDK repo.
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## Content Sync Commands
|
|
98
|
-
|
|
99
|
-
### pull
|
|
100
|
-
|
|
101
|
-
Download content from the CMS to local files.
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
# Pull all content
|
|
105
|
-
riverbankcms pull
|
|
106
|
-
|
|
107
|
-
# Pull from production
|
|
108
|
-
riverbankcms pull --env=remote
|
|
109
|
-
|
|
110
|
-
# Download identifier-based media to content/media
|
|
111
|
-
riverbankcms pull --local-media
|
|
112
|
-
|
|
113
|
-
# Pull specific content types
|
|
114
|
-
riverbankcms pull entries # All entries
|
|
115
|
-
riverbankcms pull entries blog-post # Specific content type
|
|
116
|
-
riverbankcms pull entries blog-post welcome # Specific entry
|
|
117
|
-
riverbankcms pull pages # All pages with blocks
|
|
118
|
-
riverbankcms pull pages home # Specific page with blocks
|
|
119
|
-
riverbankcms pull navigation # Navigation menus
|
|
120
|
-
riverbankcms pull settings # Site settings
|
|
121
|
-
riverbankcms pull forms # Forms
|
|
122
|
-
riverbankcms pull theme # Theme to content/themes/current.json
|
|
123
|
-
riverbankcms pull venues # Event venues
|
|
124
|
-
riverbankcms pull event-categories # Event categories
|
|
125
|
-
riverbankcms pull events # Event series
|
|
126
|
-
riverbankcms pull events summer-fest # Specific event series
|
|
127
|
-
riverbankcms pull --with-theme # Pull content and theme together
|
|
128
|
-
|
|
129
|
-
# Custom output directory
|
|
130
|
-
riverbankcms pull --output ./src/content
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
**Options:**
|
|
134
|
-
|
|
135
|
-
| Option | Description |
|
|
136
|
-
| ------------------- | ------------------------------------------------------------------------------------ |
|
|
137
|
-
| `--output <dir>` | Output directory (default: ./content) |
|
|
138
|
-
| `--force` | Overwrite existing files without prompting |
|
|
139
|
-
| `--yes` | Skip confirmation prompt |
|
|
140
|
-
| `--local-media` | Download media referenced by identifiers to content/media |
|
|
141
|
-
| `--sync-media` | Sync media files between environments |
|
|
142
|
-
| `--overwrite-media` | When using `--sync-media`, overwrite target media on checksum mismatch |
|
|
143
|
-
| `--with-theme` | Also pull theme when pulling all content |
|
|
144
|
-
| `--name <name>` | Theme name for `pull theme` / `pull --with-theme` (default: current) |
|
|
145
|
-
| `--no-meta` | Skip writing `.meta/` and media manifest files (content files still written) |
|
|
146
|
-
| `--diff` | Show human-readable field-level diff with before/after values (requires `--dry-run`) |
|
|
147
|
-
|
|
148
|
-
**Theme files:**
|
|
149
|
-
|
|
150
|
-
- `riverbankcms pull theme` writes to `content/themes/current.json` (or `contentDir/themes/current.json` if configured).
|
|
151
|
-
- `riverbankcms pull` does not pull theme by default. Use `riverbankcms pull theme` or `riverbankcms pull --with-theme`.
|
|
152
|
-
|
|
153
|
-
### push
|
|
154
|
-
|
|
155
|
-
Push local content changes to the CMS.
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
# Push all content
|
|
159
|
-
riverbankcms push
|
|
160
|
-
|
|
161
|
-
# Preview changes without applying
|
|
162
|
-
riverbankcms push --dry-run
|
|
163
|
-
|
|
164
|
-
# Push to production (requires --yes)
|
|
165
|
-
riverbankcms push --env=remote --yes
|
|
166
|
-
|
|
167
|
-
# Push specific content types
|
|
168
|
-
riverbankcms push entries # All entries
|
|
169
|
-
riverbankcms push entries blog-post # Specific content type
|
|
170
|
-
riverbankcms push entries blog-post welcome # Specific entry
|
|
171
|
-
riverbankcms push pages # All pages with blocks
|
|
172
|
-
riverbankcms push pages home # Specific page with blocks
|
|
173
|
-
riverbankcms push navigation # Navigation menus
|
|
174
|
-
riverbankcms push settings # Site settings / branding
|
|
175
|
-
riverbankcms push forms # Forms
|
|
176
|
-
riverbankcms push theme # Push content/themes/{activeTheme|current}.json
|
|
177
|
-
riverbankcms push venues # Event venues
|
|
178
|
-
riverbankcms push event-categories # Event categories
|
|
179
|
-
riverbankcms push events # Event series, page-surface routes, and surface-slot blocks
|
|
180
|
-
riverbankcms push --with-theme # Also push theme when pushing all content
|
|
181
|
-
|
|
182
|
-
# JSON diff verbosity for agents (folded into the --json envelope)
|
|
183
|
-
riverbankcms push --dry-run --json --diff-detail=summary
|
|
184
|
-
riverbankcms push --dry-run --json --diff-detail=full
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
**Agent-safe scoped push example:**
|
|
188
|
-
|
|
189
|
-
```bash
|
|
190
|
-
riverbankcms push pages privacy-policy --env=remote --dry-run
|
|
191
|
-
riverbankcms push pages privacy-policy --env=remote --yes
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
If unrelated local files would be included by a broad scope, stage a temporary content directory containing only the intended file(s) and use `--content-dir`; see `workflows/agent-safe-sync.md`.
|
|
195
|
-
|
|
196
|
-
**Options:**
|
|
197
|
-
|
|
198
|
-
| Option | Description |
|
|
199
|
-
| ---------------------- | ------------------------------------------------------------------------------------ |
|
|
200
|
-
| `--content-dir <dir>` | Content directory (overrides config) |
|
|
201
|
-
| `--dry-run` | Show changes without applying |
|
|
202
|
-
| `--yes` | Skip confirmation (required for `--env=remote` or `--env=both`) |
|
|
203
|
-
| `--force` | Push even if remote is newer (skip stale check) |
|
|
204
|
-
| `--force-update-asset` | Replace CMS media when identifiers conflict (local media sync only) |
|
|
205
|
-
| `--allow-truncated` | Push even if remote content was truncated (may cause incomplete sync) |
|
|
206
|
-
| `--diff-detail <mode>` | Diff verbosity carried in the `--json` envelope: `summary` (default) or `full` |
|
|
207
|
-
| `--json-diff [mode]` | **[Deprecated]** Alias of `--diff-detail`; folded into the `--json` envelope (warns on stderr) |
|
|
208
|
-
| `--with-config` | Push SDK schema/config before dependent file content |
|
|
209
|
-
| `--with-theme` | Also push theme when pushing all content |
|
|
210
|
-
| `--sync-media` | Sync media files from local to remote environment |
|
|
211
|
-
| `--overwrite-media` | When using `--sync-media`, overwrite target media on checksum mismatch |
|
|
212
|
-
| `--merge-remote` | Plan an entries/pages three-way merge for `--env=remote` that preserves remote edits |
|
|
213
|
-
| `--delete-orphaned` | Delete CMS entries not present in local files |
|
|
214
|
-
| `--auto-pull-stale` | Automatically pull stale content and retry push |
|
|
215
|
-
| `--no-meta` | Skip writing `.meta/` and media manifest files (content files still written) |
|
|
216
|
-
| `--diff` | Show human-readable field-level diff with before/after values (requires `--dry-run`) |
|
|
217
|
-
| `--verify-noop` | After an applied push, re-fetch the target and fail if changes remain |
|
|
218
|
-
| `--delete-missing` | **[Deprecated]** Use `--delete-orphaned` instead |
|
|
219
|
-
|
|
220
|
-
**Theme files:**
|
|
221
|
-
|
|
222
|
-
- `riverbankcms push theme` reads from `content/themes/{activeTheme}.json` (falls back to `current.json`).
|
|
223
|
-
- `riverbankcms push` does not push theme by default (to avoid overwriting dashboard edits). Use `riverbankcms push theme` or `riverbankcms push --with-theme`.
|
|
224
|
-
|
|
225
|
-
**Delete Missing Entries:**
|
|
226
|
-
|
|
227
|
-
The `--delete-missing` flag deletes CMS entries that don't exist in your local content file, making local content the source of truth. This is useful for keeping environments exactly in sync.
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
# Delete CMS entries not in local file
|
|
231
|
-
riverbankcms push entries service-tile --delete-missing
|
|
232
|
-
|
|
233
|
-
# Preview deletes (dry-run is default for --env=remote)
|
|
234
|
-
riverbankcms push entries service-tile --env=remote --delete-orphaned
|
|
235
|
-
|
|
236
|
-
# Execute deletes on production
|
|
237
|
-
riverbankcms push entries service-tile --env=remote --yes --delete-orphaned
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
**Warning:** This is a destructive operation. Always use `--dry-run` first to preview which entries will be deleted.
|
|
241
|
-
|
|
242
|
-
**Remote-aware content merge:**
|
|
243
|
-
|
|
244
|
-
Use `--merge-remote` when pushing entries or pages to production and you want to preserve remote dashboard edits instead of treating local files as the whole source of truth. The CLI compares the last pulled base snapshot, local files, and current remote content, then prints a merge plan. Remote runs still default to dry-run; add `--yes` only after reviewing the plan. Page block changes are treated conservatively as conflicts unless remote blocks are unchanged.
|
|
245
|
-
|
|
246
|
-
```bash
|
|
247
|
-
# Preview a merge for one content type
|
|
248
|
-
riverbankcms push entries blog-post --env=remote --merge-remote
|
|
249
|
-
|
|
250
|
-
# Apply after reviewing the plan
|
|
251
|
-
riverbankcms push entries blog-post --env=remote --merge-remote --yes
|
|
252
|
-
|
|
253
|
-
# Target a single entry
|
|
254
|
-
riverbankcms push entries blog-post welcome --env=remote --merge-remote --yes
|
|
255
|
-
|
|
256
|
-
# Target a single page
|
|
257
|
-
riverbankcms push pages home --env=remote --merge-remote
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
In v1 this mode supports `entries` and `pages` with `--env=remote`. It rejects `--env=both`, unsupported scopes, `--force`, `--delete-orphaned`, and `--auto-pull-stale`.
|
|
261
|
-
|
|
262
|
-
**Local content edit helpers:**
|
|
263
|
-
|
|
264
|
-
Use `content edit` for local file-backed edits. These commands do not call the CMS. They preview by default and require `--write` to mutate local files.
|
|
265
|
-
|
|
266
|
-
```bash
|
|
267
|
-
# Preview removing a block from content/pages/home.json
|
|
268
|
-
riverbankcms content edit remove-page-block home old-hero
|
|
269
|
-
|
|
270
|
-
# Move a page block and write the file
|
|
271
|
-
riverbankcms content edit move-page-block home intro --after hero --write
|
|
272
|
-
|
|
273
|
-
# Set a string field
|
|
274
|
-
riverbankcms content edit set-page-field home title --value "New title" --write
|
|
275
|
-
|
|
276
|
-
# Set a JSON value
|
|
277
|
-
riverbankcms content edit set-page-field home blocks[0].data.count --json-value 3
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
After editing, run `riverbankcms push --dry-run --diff`, then push with `--verify-noop` when ready.
|
|
281
|
-
|
|
282
|
-
**Post-push no-op verification:**
|
|
283
|
-
|
|
284
|
-
Use `--verify-noop` when automation should prove the target CMS compares cleanly after an applied push. Verification re-reads local files from disk, re-fetches the target environment, and fails the command if remaining changes are found.
|
|
285
|
-
|
|
286
|
-
```bash
|
|
287
|
-
riverbankcms push --yes --verify-noop
|
|
288
|
-
riverbankcms push --env=both --yes --verify-noop
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
`--verify-noop` cannot be combined with `--dry-run`; dry-run already answers the pre-push question. For remote targets, pass `--yes` so the push actually applies before verification. In JSON mode the CLI emits a `verification` object with `clean`, `dirty`, `fetch_failed`, or `unsupported_scope` status. A dirty result usually means the push did not leave the target in sync, but it can also mean another user or process changed remote content between the push and verification fetch.
|
|
292
|
-
|
|
293
|
-
**Stale Content Detection:**
|
|
294
|
-
|
|
295
|
-
Push compares local metadata timestamps against the remote CMS. If the remote has newer changes than your last pull, push aborts by default to prevent overwriting someone else's edits.
|
|
296
|
-
|
|
297
|
-
Metadata is stored separately per CLI target under `content/.meta/local/` and `content/.meta/remote/`, with a small target marker so local and remote pulls do not overwrite each other's stale-detection base. Older flat `content/.meta/*.json` files are still read as a fallback and are written forward to the scoped layout on the next pull or metadata update.
|
|
298
|
-
|
|
299
|
-
Options for handling stale content:
|
|
300
|
-
|
|
301
|
-
- **Interactive prompt** (default in TTY): Push asks whether to pull the stale items and retry.
|
|
302
|
-
- `--auto-pull-stale`: Automatically pull only the stale items and continue the push. Non-stale local content is preserved.
|
|
303
|
-
- `--force`: Skip stale detection entirely and push regardless.
|
|
304
|
-
- `--dry-run`: Stale warnings are shown but the push continues (no changes are made).
|
|
305
|
-
|
|
306
|
-
```bash
|
|
307
|
-
# Auto-resolve stale content without prompting
|
|
308
|
-
riverbankcms push --auto-pull-stale
|
|
309
|
-
|
|
310
|
-
# Useful in CI where there's no TTY for interactive prompts
|
|
311
|
-
riverbankcms push --auto-pull-stale --yes --env=remote
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
For theme and footer pushes, stale resolution updates only the metadata timestamp (since the local file IS the content being pushed). For entries, pages, navigation, and forms, stale resolution writes the remote version of only the stale items to disk and updates their metadata before continuing the push.
|
|
315
|
-
|
|
316
|
-
**Local Media (Identifiers):**
|
|
317
|
-
|
|
318
|
-
- Add `identifier` to media fields (slug only, no extension)
|
|
319
|
-
- Place files at `content/media/<identifier>.<ext>`
|
|
320
|
-
- Run `riverbankcms push` to upload referenced files (default-on)
|
|
321
|
-
- Treat `content/media/*` as local cache/migration working data by default. Generated SDK sites gitignore it, while allowing intentional small fixtures under `content/media/fixtures/`.
|
|
322
|
-
|
|
323
|
-
**Branding workflow (`content/settings.json`):**
|
|
324
|
-
|
|
325
|
-
```json
|
|
326
|
-
{
|
|
327
|
-
"homepageId": null,
|
|
328
|
-
"seoDefaults": null,
|
|
329
|
-
"logoIdentifier": "positive-play-primary-logo",
|
|
330
|
-
"faviconIdentifier": "positive-play-primary-logo"
|
|
331
|
-
}
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
- Use `logoIdentifier` / `faviconIdentifier` to manage the site logo and favicon from the repo
|
|
335
|
-
- The identifiers should match files in `content/media/`
|
|
336
|
-
- `riverbankcms push settings` reuses the normal local-media upload flow before updating site settings, without pushing unrelated content
|
|
337
|
-
- `riverbankcms pull settings` warns and omits a branding field if the current CMS asset cannot be represented by an identifier yet
|
|
338
|
-
- Dashboard branding edits and CLI pushes are last-write-wins on the same settings row, so pull before pushing after dashboard-side changes
|
|
339
|
-
|
|
340
|
-
**Media portability (important):**
|
|
341
|
-
|
|
342
|
-
- Content JSON is portable across environments; media references must be **identifier-only**.
|
|
343
|
-
- The CLI writes identifier-only media objects on pull. Do not add `assetId`, `storagePath`, `storageBucket`, or `src` to your content JSON.
|
|
344
|
-
- `--sync-media` copies **bytes** between CMS environments (identifier + checksum verified). It does not “push entries/pages” by itself (content changes still require `push`).
|
|
345
|
-
|
|
346
|
-
**Sync Behavior** (configured in `riverbank.config.ts`):
|
|
347
|
-
|
|
348
|
-
```typescript
|
|
349
|
-
export default defineConfig({
|
|
350
|
-
siteId: "...",
|
|
351
|
-
sync: {
|
|
352
|
-
existingEntries: "update", // 'skip' (default) or 'update'
|
|
353
|
-
},
|
|
354
|
-
});
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
**Status Sync**: Push automatically syncs draft/published status based on the `status` field in your local content files. If local content is "published" but remote is "draft", push will publish it. If local is "draft" but remote is "published", push will unpublish it.
|
|
358
|
-
|
|
359
|
-
### push-config
|
|
360
|
-
|
|
361
|
-
Push SDK configuration to the CMS dashboard.
|
|
362
|
-
|
|
363
|
-
```bash
|
|
364
|
-
riverbankcms push-config
|
|
365
|
-
riverbankcms push-config --dry-run
|
|
366
|
-
riverbankcms push-config --env=remote
|
|
367
|
-
riverbankcms push-config --config ./src/riverbank.config.ts
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
Syncs SDK schema/config surfaces such as custom blocks, block field options/extensions, content type definitions/templates, SDK-managed site settings, and footer blocks. Pages, entries, and navigation menus are synced with explicit `riverbankcms push` scopes.
|
|
371
|
-
|
|
372
|
-
Use `--dry-run` to validate config and preview the schema/config surfaces that would be considered without mutating the dashboard.
|
|
373
|
-
|
|
374
|
-
If `push-config` returns template binding validation errors, treat them as schema feedback. For example, a content type `reference` field should bind to a custom block `reference` field with the same `referenceKind`, not to a plain `text` field.
|
|
375
|
-
|
|
376
|
-
This syncs:
|
|
377
|
-
|
|
378
|
-
- Custom blocks
|
|
379
|
-
- Block field extensions
|
|
380
|
-
- Block field options
|
|
381
|
-
- Dashboard UI configuration (e.g. navigation visibility)
|
|
382
|
-
- Content type definitions and templates
|
|
383
|
-
- SDK-managed site settings and footer blocks
|
|
384
|
-
|
|
385
|
-
**Options:**
|
|
386
|
-
|
|
387
|
-
| Option | Description |
|
|
388
|
-
| ------------------- | ------------------ |
|
|
389
|
-
| `--api-key <key>` | Management API key |
|
|
390
|
-
| `--dashboard <url>` | Dashboard URL |
|
|
391
|
-
| `--config <path>` | Config file path |
|
|
392
|
-
|
|
393
|
-
---
|
|
394
|
-
|
|
395
|
-
## Entry Commands
|
|
396
|
-
|
|
397
|
-
Manage content entries.
|
|
398
|
-
|
|
399
|
-
### entry upsert
|
|
400
|
-
|
|
401
|
-
Create or update an entry.
|
|
402
|
-
|
|
403
|
-
```bash
|
|
404
|
-
# With inline JSON data
|
|
405
|
-
riverbankcms entry upsert <type> <identifier> --data '{"title": "Hello World"}'
|
|
406
|
-
|
|
407
|
-
# With JSON file
|
|
408
|
-
riverbankcms entry upsert <type> <identifier> --file ./data.json
|
|
409
|
-
|
|
410
|
-
# With individual fields
|
|
411
|
-
riverbankcms entry upsert blog-post my-post \
|
|
412
|
-
--slug my-post \
|
|
413
|
-
--title "My Blog Post"
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
**Arguments:**
|
|
417
|
-
|
|
418
|
-
- `<type>` - Content type key (e.g., `blog-post`, `product`)
|
|
419
|
-
- `<identifier>` - Unique identifier for the entry
|
|
420
|
-
|
|
421
|
-
**Options:**
|
|
422
|
-
|
|
423
|
-
| Option | Description |
|
|
424
|
-
| ----------------- | --------------------------------- |
|
|
425
|
-
| `--data <json>` | Entry data as JSON string |
|
|
426
|
-
| `--file <path>` | Path to JSON file with entry data |
|
|
427
|
-
| `--slug <slug>` | Entry slug |
|
|
428
|
-
| `--title <title>` | Entry title |
|
|
429
|
-
|
|
430
|
-
### entry publish
|
|
431
|
-
|
|
432
|
-
Publish an entry.
|
|
433
|
-
|
|
434
|
-
```bash
|
|
435
|
-
riverbankcms entry publish <type> <identifier>
|
|
436
|
-
riverbankcms entry publish blog-post my-post
|
|
437
|
-
```
|
|
438
|
-
|
|
439
|
-
### entry unpublish
|
|
440
|
-
|
|
441
|
-
Unpublish an entry (revert to draft).
|
|
442
|
-
|
|
443
|
-
```bash
|
|
444
|
-
riverbankcms entry unpublish <type> <identifier>
|
|
445
|
-
riverbankcms entry unpublish blog-post my-post
|
|
446
|
-
```
|
|
447
|
-
|
|
448
|
-
### entry get
|
|
449
|
-
|
|
450
|
-
Retrieve a single entry.
|
|
451
|
-
|
|
452
|
-
```bash
|
|
453
|
-
riverbankcms entry get <type> <identifier>
|
|
454
|
-
riverbankcms entry get blog-post my-post
|
|
455
|
-
riverbankcms entry get blog-post 00000000-0000-0000-0000-000000000000 --by-id
|
|
456
|
-
riverbankcms entry get blog-post my-post --json
|
|
457
|
-
```
|
|
458
|
-
|
|
459
|
-
**Options:**
|
|
460
|
-
|
|
461
|
-
| Option | Description |
|
|
462
|
-
| --------- | ---------------------------------------------------------------------------- |
|
|
463
|
-
| `--by-id` | Interpret `<identifier>` as an entry UUID and search within the content type |
|
|
464
|
-
|
|
465
|
-
### entry list
|
|
466
|
-
|
|
467
|
-
List entries for a content type.
|
|
468
|
-
|
|
469
|
-
```bash
|
|
470
|
-
riverbankcms entry list <type>
|
|
471
|
-
riverbankcms entry list blog-post
|
|
472
|
-
riverbankcms entry list blog-post --limit 10 --page 2
|
|
473
|
-
riverbankcms entry list blog-post --json
|
|
474
|
-
riverbankcms entry list blog-post --columns id,identifier,slug,status
|
|
475
|
-
riverbankcms entry list blog-post --columns id,identifier --status published
|
|
476
|
-
```
|
|
477
|
-
|
|
478
|
-
**Options:**
|
|
479
|
-
|
|
480
|
-
| Option | Description |
|
|
481
|
-
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
|
|
482
|
-
| `--limit <n>` | Number of entries per page |
|
|
483
|
-
| `--page <n>` | Page number (1-indexed) |
|
|
484
|
-
| `--columns <csv>` | Comma-separated columns (e.g. `id,identifier,slug,status`). Aliases: `unpublished`→`hasUnpublishedChanges`, `updated`→`updatedAt`, `created`→`createdAt`, `published`→`publishedAt`, `type`→`contentType` |
|
|
485
|
-
| `--status <draft | published>` | Filter by status. **Applies only to the returned page (post-pagination)** — for a complete cross-type overview of unpublished content use `riverbankcms drafts`. Passing `--status draft` emits a warning pointing you there. |
|
|
486
|
-
|
|
487
|
-
---
|
|
488
|
-
|
|
489
|
-
### entry scaffold
|
|
490
|
-
|
|
491
|
-
Emit a machine-readable placeholder template plus fill-in diagnostics for a content type, derived from its field schema (pulled from the discovery catalog).
|
|
492
|
-
|
|
493
|
-
```bash
|
|
494
|
-
riverbankcms entry scaffold blog-post # Template + diagnostics
|
|
495
|
-
riverbankcms entry scaffold blog-post --json # Rides the single JSON envelope
|
|
496
|
-
riverbankcms entry scaffold blog-post > new-post.json # Pipe the template to a file
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
Required fields are stubbed with placeholder sentinels (`"<REQUIRED: text>"`, `{"identifier":"<REQUIRED: media-identifier>"}`, …) and optional fields are omitted. The template is **not** upsert-valid unfilled: replace every placeholder with a valid value and `entry upsert` accepts it without changing the object shape. `entry upsert` runs the same validator as a pre-flight, so any unfilled sentinel is rejected before any HTTP request. `diagnostics` lists what to fill and flags fields that reference existing site resources (media, files, entry references).
|
|
500
|
-
|
|
501
|
-
In human mode the template prints to stdout (so it pipes cleanly) and diagnostics go to stderr. An unknown content type fails with the list of available types.
|
|
502
|
-
|
|
503
|
-
---
|
|
504
|
-
|
|
505
|
-
## Page Commands
|
|
506
|
-
|
|
507
|
-
Manage pages.
|
|
508
|
-
|
|
509
|
-
### page upsert
|
|
510
|
-
|
|
511
|
-
Create or update a page.
|
|
512
|
-
|
|
513
|
-
```bash
|
|
514
|
-
riverbankcms page upsert <identifier> --title "Page Title" --path /url-path
|
|
515
|
-
|
|
516
|
-
# Full example
|
|
517
|
-
riverbankcms page upsert about \
|
|
518
|
-
--title "About Us" \
|
|
519
|
-
--path /about \
|
|
520
|
-
--seo-title "About Us | Company Name" \
|
|
521
|
-
--seo-description "Learn more about our company"
|
|
522
|
-
```
|
|
523
|
-
|
|
524
|
-
**Arguments:**
|
|
525
|
-
|
|
526
|
-
- `<identifier>` - Unique identifier for the page
|
|
527
|
-
|
|
528
|
-
**Options:**
|
|
529
|
-
|
|
530
|
-
| Option | Description |
|
|
531
|
-
| -------------------------- | ------------------------- |
|
|
532
|
-
| `--title <title>` | Page title |
|
|
533
|
-
| `--path <path>` | URL path (e.g., `/about`) |
|
|
534
|
-
| `--seo-title <title>` | SEO title tag |
|
|
535
|
-
| `--seo-description <desc>` | SEO meta description |
|
|
536
|
-
|
|
537
|
-
### page publish
|
|
538
|
-
|
|
539
|
-
Publish a page.
|
|
540
|
-
|
|
541
|
-
```bash
|
|
542
|
-
riverbankcms page publish <identifier>
|
|
543
|
-
riverbankcms page publish about
|
|
544
|
-
```
|
|
545
|
-
|
|
546
|
-
### page unpublish
|
|
547
|
-
|
|
548
|
-
Unpublish a page (revert to draft).
|
|
549
|
-
|
|
550
|
-
```bash
|
|
551
|
-
riverbankcms page unpublish <identifier>
|
|
552
|
-
riverbankcms page unpublish about
|
|
553
|
-
```
|
|
554
|
-
|
|
555
|
-
### page get
|
|
556
|
-
|
|
557
|
-
Retrieve a single page with its blocks.
|
|
558
|
-
|
|
559
|
-
```bash
|
|
560
|
-
riverbankcms page get <identifier>
|
|
561
|
-
riverbankcms page get about
|
|
562
|
-
riverbankcms page get about --json
|
|
563
|
-
```
|
|
564
|
-
|
|
565
|
-
### page list
|
|
566
|
-
|
|
567
|
-
List all pages.
|
|
568
|
-
|
|
569
|
-
```bash
|
|
570
|
-
riverbankcms page list
|
|
571
|
-
riverbankcms page list --limit 10 --page 1
|
|
572
|
-
riverbankcms page list --json
|
|
573
|
-
```
|
|
574
|
-
|
|
575
|
-
---
|
|
576
|
-
|
|
577
|
-
## Block Commands
|
|
578
|
-
|
|
579
|
-
Manage blocks within pages.
|
|
580
|
-
|
|
581
|
-
### block upsert
|
|
582
|
-
|
|
583
|
-
Create or update a block on a page.
|
|
584
|
-
|
|
585
|
-
```bash
|
|
586
|
-
# Basic usage
|
|
587
|
-
riverbankcms block upsert <page-id> <block-id> --kind <block-kind> --data '<json>'
|
|
588
|
-
|
|
589
|
-
# Examples
|
|
590
|
-
riverbankcms block upsert home hero-main \
|
|
591
|
-
--kind block.hero \
|
|
592
|
-
--data '{"heading": "Welcome", "subheading": "to our site"}'
|
|
593
|
-
|
|
594
|
-
# With JSON file
|
|
595
|
-
riverbankcms block upsert home hero-main \
|
|
596
|
-
--kind block.hero \
|
|
597
|
-
--file ./hero-content.json
|
|
598
|
-
|
|
599
|
-
# With position
|
|
600
|
-
riverbankcms block upsert home new-section \
|
|
601
|
-
--kind block.body-text \
|
|
602
|
-
--data '{"content": "<p>Hello</p>"}' \
|
|
603
|
-
--position 0
|
|
604
|
-
```
|
|
605
|
-
|
|
606
|
-
**Arguments:**
|
|
607
|
-
|
|
608
|
-
- `<page-id>` - Page identifier
|
|
609
|
-
- `<block-id>` - Block identifier (unique within the page)
|
|
610
|
-
|
|
611
|
-
**Options:**
|
|
612
|
-
|
|
613
|
-
| Option | Description |
|
|
614
|
-
| ---------------- | -------------------------------------------------- |
|
|
615
|
-
| `--kind <kind>` | Block type (e.g., `block.hero`, `block.body-text`) |
|
|
616
|
-
| `--data <json>` | Block content as JSON string |
|
|
617
|
-
| `--file <path>` | Path to JSON file with block content |
|
|
618
|
-
| `--position <n>` | Position in the block list (0-indexed) |
|
|
619
|
-
|
|
620
|
-
### block reorder
|
|
621
|
-
|
|
622
|
-
Reorder blocks on a page.
|
|
623
|
-
|
|
624
|
-
```bash
|
|
625
|
-
riverbankcms block reorder <page-id> <block-id-1> <block-id-2> ...
|
|
626
|
-
|
|
627
|
-
# Example: Put hero first, then intro, then features
|
|
628
|
-
riverbankcms block reorder home hero-main intro-text features-grid
|
|
629
|
-
```
|
|
630
|
-
|
|
631
|
-
### block get
|
|
632
|
-
|
|
633
|
-
Retrieve a specific block.
|
|
634
|
-
|
|
635
|
-
```bash
|
|
636
|
-
riverbankcms block get <page-id> <block-id>
|
|
637
|
-
riverbankcms block get home hero-main
|
|
638
|
-
riverbankcms block get home hero-main --json
|
|
639
|
-
```
|
|
640
|
-
|
|
641
|
-
### block list
|
|
642
|
-
|
|
643
|
-
List all blocks on a page.
|
|
644
|
-
|
|
645
|
-
```bash
|
|
646
|
-
riverbankcms block list <page-id>
|
|
647
|
-
riverbankcms block list home
|
|
648
|
-
riverbankcms block list home --json
|
|
649
|
-
```
|
|
650
|
-
|
|
651
|
-
---
|
|
652
|
-
|
|
653
|
-
## Navigation Commands
|
|
654
|
-
|
|
655
|
-
Manage navigation menus.
|
|
656
|
-
|
|
657
|
-
### navigation upsert
|
|
658
|
-
|
|
659
|
-
Create or update a navigation menu.
|
|
660
|
-
|
|
661
|
-
```bash
|
|
662
|
-
# With inline JSON
|
|
663
|
-
riverbankcms navigation upsert <menu-name> --data '[{"label": "Home", "url": "/"}]'
|
|
664
|
-
|
|
665
|
-
# With JSON file
|
|
666
|
-
riverbankcms navigation upsert main --file ./main-nav.json
|
|
667
|
-
```
|
|
668
|
-
|
|
669
|
-
**Example menu structure:**
|
|
670
|
-
|
|
671
|
-
```json
|
|
672
|
-
[
|
|
673
|
-
{ "label": "Home", "url": "/" },
|
|
674
|
-
{ "label": "About", "url": "/about" },
|
|
675
|
-
{
|
|
676
|
-
"label": "Products",
|
|
677
|
-
"url": "/products",
|
|
678
|
-
"children": [
|
|
679
|
-
{ "label": "Category A", "url": "/products/a" },
|
|
680
|
-
{ "label": "Category B", "url": "/products/b" }
|
|
681
|
-
]
|
|
682
|
-
}
|
|
683
|
-
]
|
|
684
|
-
```
|
|
685
|
-
|
|
686
|
-
### navigation get
|
|
687
|
-
|
|
688
|
-
Retrieve a navigation menu.
|
|
689
|
-
|
|
690
|
-
```bash
|
|
691
|
-
riverbankcms navigation get <menu-name>
|
|
692
|
-
riverbankcms navigation get main
|
|
693
|
-
riverbankcms navigation get main --json
|
|
694
|
-
```
|
|
695
|
-
|
|
696
|
-
### navigation list
|
|
697
|
-
|
|
698
|
-
List all navigation menus.
|
|
699
|
-
|
|
700
|
-
```bash
|
|
701
|
-
riverbankcms navigation list
|
|
702
|
-
riverbankcms navigation list --json
|
|
703
|
-
```
|
|
704
|
-
|
|
705
|
-
---
|
|
706
|
-
|
|
707
|
-
## Delete Commands
|
|
708
|
-
|
|
709
|
-
Delete content from the CMS.
|
|
710
|
-
|
|
711
|
-
### delete entry
|
|
712
|
-
|
|
713
|
-
Delete an entry.
|
|
714
|
-
|
|
715
|
-
```bash
|
|
716
|
-
riverbankcms delete entry <type> <identifier> --yes
|
|
717
|
-
riverbankcms delete entry blog-post old-post --yes
|
|
718
|
-
```
|
|
719
|
-
|
|
720
|
-
### delete block
|
|
721
|
-
|
|
722
|
-
Delete a block from a page.
|
|
723
|
-
|
|
724
|
-
```bash
|
|
725
|
-
riverbankcms delete block <page-id> <block-id> --yes
|
|
726
|
-
riverbankcms delete block home old-section --yes
|
|
727
|
-
```
|
|
728
|
-
|
|
729
|
-
**Note:** The `--yes` flag is required to confirm deletion.
|
|
730
|
-
|
|
731
|
-
---
|
|
732
|
-
|
|
733
|
-
## Utility Commands
|
|
734
|
-
|
|
735
|
-
### preview
|
|
736
|
-
|
|
737
|
-
Render a block preview.
|
|
738
|
-
|
|
739
|
-
```bash
|
|
740
|
-
# Print HTML to terminal
|
|
741
|
-
riverbankcms preview <kind> --data '<json>'
|
|
742
|
-
|
|
743
|
-
# Open in browser
|
|
744
|
-
riverbankcms preview block.hero --data '{"heading": "Test"}' --open
|
|
745
|
-
|
|
746
|
-
# Capture screenshot
|
|
747
|
-
riverbankcms preview block.hero --data '{"heading": "Test"}' --screenshot
|
|
748
|
-
|
|
749
|
-
# With custom CSS
|
|
750
|
-
riverbankcms preview block.hero --data '...' --css ./styles.css
|
|
751
|
-
|
|
752
|
-
# From JSON file
|
|
753
|
-
riverbankcms preview block.hero --file ./hero-data.json
|
|
754
|
-
```
|
|
755
|
-
|
|
756
|
-
**Options:**
|
|
757
|
-
|
|
758
|
-
| Option | Description |
|
|
759
|
-
| ------------------------- | -------------------------------- |
|
|
760
|
-
| `--data <json>` | Block content as JSON |
|
|
761
|
-
| `--file <path>` | Path to JSON file |
|
|
762
|
-
| `--terminal` | Print HTML to terminal (default) |
|
|
763
|
-
| `--open` | Open in browser |
|
|
764
|
-
| `--screenshot` | Capture screenshot |
|
|
765
|
-
| `--output <path>` | Screenshot output path |
|
|
766
|
-
| `--css <paths...>` | Additional CSS files |
|
|
767
|
-
| `--validation <mode>` | `strict` or `lenient` |
|
|
768
|
-
| `--preview-stage <stage>` | `published` or `preview` |
|
|
769
|
-
|
|
770
|
-
### identifiers backfill
|
|
771
|
-
|
|
772
|
-
Generate identifiers for content created before the SDK.
|
|
773
|
-
|
|
774
|
-
```bash
|
|
775
|
-
riverbankcms identifiers backfill
|
|
776
|
-
riverbankcms identifiers backfill --env=remote
|
|
777
|
-
```
|
|
778
|
-
|
|
779
|
-
Use this when migrating existing content to use SDK identifiers.
|
|
780
|
-
|
|
781
|
-
### init-docs
|
|
782
|
-
|
|
783
|
-
Scaffold agent documentation for your project.
|
|
784
|
-
|
|
785
|
-
```bash
|
|
786
|
-
riverbankcms init-docs
|
|
787
|
-
riverbankcms init-docs --path ./custom-path
|
|
788
|
-
riverbankcms init-docs --config ./riverbank.config.ts
|
|
789
|
-
```
|
|
790
|
-
|
|
791
|
-
**Creates:**
|
|
792
|
-
|
|
793
|
-
- `.riverbank/docs/` - Agent reference documentation
|
|
794
|
-
- `.riverbank/docs/workflows/` - Core workflow guides (always updated):
|
|
795
|
-
- `create-page.md` - Creating new pages via CLI
|
|
796
|
-
- `add-block.md` - Adding blocks to pages
|
|
797
|
-
- `publish-workflow.md` - Publishing content safely
|
|
798
|
-
- `block-extensions.md` - Adding layout variants to system blocks
|
|
799
|
-
- `custom-block.md` - Creating custom blocks
|
|
800
|
-
- `content-types.md` - Content types and block.embed
|
|
801
|
-
- `cmsify-page.md` - Converting hard-coded pages to CMS-driven
|
|
802
|
-
- `editor-workflows.md` - Building manual editor workflows for entries and pages
|
|
803
|
-
- `.riverbank/docs/site-workflows/` - Site-specific workflows (preserved on re-run)
|
|
804
|
-
- `.riverbank/docs/block-types-site.md` - Site-relevant blocks with config applied (always updated)
|
|
805
|
-
- `.riverbank/docs/theme-schema.md` - Theme schema reference auto-generated from Zod (always updated)
|
|
806
|
-
|
|
807
|
-
**Theme schema documentation:**
|
|
808
|
-
|
|
809
|
-
The `theme-schema.md` file is auto-generated from the actual Zod schema (`themeSchema` from `@riverbankcms/blocks`). This ensures documentation stays in sync with the schema and shows only current (non-deprecated) fields. Fields are organized by category (Core, Design Axes, Palette, Typography, etc.).
|
|
810
|
-
|
|
811
|
-
**Note:** Core workflow files are always overwritten on `init-docs` to stay current. Site-specific workflows in `site-workflows/` are never overwritten.
|
|
812
|
-
|
|
813
|
-
---
|
|
814
|
-
|
|
815
|
-
## Validation Commands
|
|
816
|
-
|
|
817
|
-
Commands for validating content integrity and comparing environments.
|
|
818
|
-
|
|
819
|
-
### audit
|
|
820
|
-
|
|
821
|
-
Validate content integrity by checking for broken references and inconsistencies.
|
|
822
|
-
|
|
823
|
-
```bash
|
|
824
|
-
# Audit against local CMS
|
|
825
|
-
riverbankcms audit
|
|
826
|
-
|
|
827
|
-
# Audit against remote CMS
|
|
828
|
-
riverbankcms audit --env=remote
|
|
829
|
-
|
|
830
|
-
# JSON output for CI/CD pipelines
|
|
831
|
-
riverbankcms audit --json
|
|
832
|
-
```
|
|
833
|
-
|
|
834
|
-
**Options:**
|
|
835
|
-
|
|
836
|
-
| Option | Description |
|
|
837
|
-
| ---------------------- | ----------------------------------------------------- |
|
|
838
|
-
| `--content-dir <path>` | Content directory (default: from riverbank.config.ts) |
|
|
839
|
-
|
|
840
|
-
**Checks performed:**
|
|
841
|
-
|
|
842
|
-
- Embed blocks referencing missing entries
|
|
843
|
-
- Navigation internal URL paths to missing pages
|
|
844
|
-
- Duplicate page paths
|
|
845
|
-
- Orphaned entries in CMS (warning only)
|
|
846
|
-
- Invalid content type references
|
|
847
|
-
- Event venue/category/form reference integrity
|
|
848
|
-
|
|
849
|
-
**Prerequisites:**
|
|
850
|
-
|
|
851
|
-
- Local content directory must exist (run `riverbankcms pull` first)
|
|
852
|
-
- Environment variables configured for target environment
|
|
853
|
-
|
|
854
|
-
**Exit codes:**
|
|
855
|
-
|
|
856
|
-
- `0`: Audit passed (may have warnings)
|
|
857
|
-
- `1`: Audit failed with errors
|
|
858
|
-
|
|
859
|
-
### compare
|
|
860
|
-
|
|
861
|
-
Compare content between local files and CMS, or between environments.
|
|
862
|
-
|
|
863
|
-
```bash
|
|
864
|
-
# Compare local files vs local CMS
|
|
865
|
-
riverbankcms compare entries blog-post
|
|
866
|
-
|
|
867
|
-
# Compare local files vs remote CMS
|
|
868
|
-
riverbankcms compare entries blog-post --env=remote
|
|
869
|
-
|
|
870
|
-
# Show detailed content diff
|
|
871
|
-
riverbankcms compare entries blog-post --diff
|
|
872
|
-
|
|
873
|
-
# Compare local CMS vs remote CMS
|
|
874
|
-
riverbankcms compare entries blog-post --local-vs-remote
|
|
875
|
-
|
|
876
|
-
# JSON output for scripts
|
|
877
|
-
riverbankcms compare entries blog-post --json
|
|
878
|
-
|
|
879
|
-
# Compare event scopes
|
|
880
|
-
riverbankcms compare events
|
|
881
|
-
```
|
|
882
|
-
|
|
883
|
-
**Arguments:**
|
|
884
|
-
|
|
885
|
-
- `<scope>`: What to compare (`entries` or `events`)
|
|
886
|
-
- `[content-type]`: Content type to compare (required for entries)
|
|
887
|
-
|
|
888
|
-
**Options:**
|
|
889
|
-
|
|
890
|
-
| Option | Description |
|
|
891
|
-
| ---------------------- | --------------------------------------------------------------- |
|
|
892
|
-
| `--content-dir <path>` | Content directory (default: from riverbank.config.ts) |
|
|
893
|
-
| `--diff` | Show detailed diff for modified entries |
|
|
894
|
-
| `--local-vs-remote` | Compare local CMS vs remote CMS (instead of local files vs CMS) |
|
|
895
|
-
| `--summary` | Show only summary counts (default behavior) |
|
|
896
|
-
|
|
897
|
-
**Comparison modes:**
|
|
898
|
-
|
|
899
|
-
- Default: Compare local JSON files against CMS content
|
|
900
|
-
- `--local-vs-remote`: Compare local CMS against remote CMS (requires both env configs)
|
|
901
|
-
|
|
902
|
-
**Exit codes:**
|
|
903
|
-
|
|
904
|
-
- `0`: Content is in sync
|
|
905
|
-
- `1`: Differences found
|
|
906
|
-
|
|
907
|
-
### event
|
|
908
|
-
|
|
909
|
-
Manage event series directly through the CLI.
|
|
910
|
-
|
|
911
|
-
```bash
|
|
912
|
-
riverbankcms event list
|
|
913
|
-
riverbankcms event get summer-fest
|
|
914
|
-
riverbankcms event upsert summer-fest --file ./content/events/summer-fest.json
|
|
915
|
-
riverbankcms event cancel summer-fest
|
|
916
|
-
riverbankcms event delete summer-fest --yes
|
|
917
|
-
riverbankcms event occurrence list summer-fest
|
|
918
|
-
riverbankcms event occurrence add summer-fest \
|
|
919
|
-
--starts-at 2026-08-01T10:00 \
|
|
920
|
-
--duration-minutes 60
|
|
921
|
-
riverbankcms event occurrence update summer-fest <occurrence-uuid> \
|
|
922
|
-
--capacity 20
|
|
923
|
-
riverbankcms event occurrence cancel summer-fest <occurrence-uuid>
|
|
924
|
-
riverbankcms event occurrence delete summer-fest <occurrence-uuid> --yes
|
|
925
|
-
```
|
|
926
|
-
|
|
927
|
-
`event upsert` and `push events` accept canonical event files with `path` and `blocks`. Events use native page authority: an `eventOffering` or `eventSeries` subject owns a page surface, and that surface owns its route, field content, publication state, and slots. `path` updates the page-surface route. `blocks` maps slot keys to surface-slot blocks, for example `blocks.main` for the built-in event template. Use stable block identifiers so repeat pushes update existing slot blocks safely. Unknown slot keys or block kinds fail validation; default slots accept enabled SDK `custom.*` blocks, while explicit template `allowedBlocks` lists remain authoritative. Ordinary editorial entries continue to use the separate `entry` commands and content-entry model described above.
|
|
928
|
-
|
|
929
|
-
#### Individual event dates
|
|
930
|
-
|
|
931
|
-
`event occurrence` manages bookable dates without replacing the parent event
|
|
932
|
-
series. Mutation commands always use the occurrence UUID shown by `list`; a
|
|
933
|
-
calendar date is never accepted as an identity.
|
|
934
|
-
|
|
935
|
-
- `list <event-identifier>` shows all future dates, including cancelled dates.
|
|
936
|
-
Add `--all` to include history or `--status scheduled|cancelled|completed` to
|
|
937
|
-
filter. The CLI follows the API's bounded pages, while `--json` keeps the
|
|
938
|
-
canonical UTC instants in its single result envelope.
|
|
939
|
-
- `add` requires `--starts-at` plus exactly one of `--ends-at` or
|
|
940
|
-
`--duration-minutes`. `update` accepts the same complete schedule replacement,
|
|
941
|
-
`--capacity <positive-integer>`, or `--inherit-capacity`.
|
|
942
|
-
- Local timestamps such as `2026-08-01T10:00` use the event's effective
|
|
943
|
-
timezone: occurrence venue override, then series venue, then site default.
|
|
944
|
-
Offset timestamps such as `2026-08-01T10:00+01:00` are absolute instants.
|
|
945
|
-
Do not mix the two modes in one start/end pair.
|
|
946
|
-
- Local times that do not exist during a spring clock change are rejected.
|
|
947
|
-
Repeated autumn times are also rejected unless both start and end include
|
|
948
|
-
explicit offsets. A duration is elapsed real time from the resolved start,
|
|
949
|
-
even when clocks change during the date.
|
|
950
|
-
- A manual date or recurring exception can be rescheduled. A generated
|
|
951
|
-
recurring date cannot be moved or deleted because schedule reconciliation
|
|
952
|
-
owns it; cancel the generated date and add a replacement exception instead.
|
|
953
|
-
Cancellation preserves registrations and is idempotent. Deletion requires
|
|
954
|
-
zero registrations and confirmation (`--yes` for remote or JSON use).
|
|
955
|
-
|
|
956
|
-
`pull events` writes the complete non-cancelled occurrence schedule into each
|
|
957
|
-
portable event file. `push events` creates those rows for a new series and
|
|
958
|
-
accepts an exact replay for an existing series. It deliberately rejects
|
|
959
|
-
existing-series additions, removals, or retiming; use the imperative occurrence
|
|
960
|
-
commands for those operational changes. Cancelled occurrence tombstones remain
|
|
961
|
-
in the CMS and are omitted from portable authored content.
|
|
962
|
-
|
|
963
|
-
### verify
|
|
964
|
-
|
|
965
|
-
Compare local SDK config content types against target site.
|
|
966
|
-
|
|
967
|
-
```bash
|
|
968
|
-
# Compare with local site
|
|
969
|
-
riverbankcms verify
|
|
970
|
-
|
|
971
|
-
# Compare with remote site
|
|
972
|
-
riverbankcms verify --env=remote
|
|
973
|
-
|
|
974
|
-
# Output as JSON
|
|
975
|
-
riverbankcms verify --json
|
|
976
|
-
|
|
977
|
-
# Custom config path
|
|
978
|
-
riverbankcms verify --config ./src/riverbank.config.ts
|
|
979
|
-
```
|
|
980
|
-
|
|
981
|
-
**Options:**
|
|
982
|
-
|
|
983
|
-
| Option | Description |
|
|
984
|
-
| ----------------- | ---------------------------------------------------- |
|
|
985
|
-
| `--config <path>` | Path to config file (default: ./riverbank.config.ts) |
|
|
986
|
-
|
|
987
|
-
**Output:**
|
|
988
|
-
|
|
989
|
-
- **Matched**: Content types present in both local config and target site
|
|
990
|
-
- **Missing on target**: Content types in local config but not on target site
|
|
991
|
-
- **Extra on target**: Content types on target site but not in local config
|
|
992
|
-
|
|
993
|
-
**Exit codes:**
|
|
994
|
-
|
|
995
|
-
- `0`: All content types match
|
|
996
|
-
- `1`: Mismatches found
|
|
997
|
-
|
|
998
|
-
---
|
|
999
|
-
|
|
1000
|
-
## Deployment Commands
|
|
1001
|
-
|
|
1002
|
-
Commands for deploying SDK sites.
|
|
1003
|
-
|
|
1004
|
-
### deploy
|
|
1005
|
-
|
|
1006
|
-
Automates the full deploy workflow for SDK sites.
|
|
1007
|
-
|
|
1008
|
-
```bash
|
|
1009
|
-
# Full deploy with cache generation
|
|
1010
|
-
riverbankcms deploy
|
|
1011
|
-
|
|
1012
|
-
# Preview deploy (skip cache generation)
|
|
1013
|
-
riverbankcms deploy --preview
|
|
1014
|
-
```
|
|
1015
|
-
|
|
1016
|
-
**Options:**
|
|
1017
|
-
|
|
1018
|
-
| Option | Description |
|
|
1019
|
-
| ----------- | ----------------------------------------------- |
|
|
1020
|
-
| `--preview` | Preview deploy - skip prebuild cache generation |
|
|
1021
|
-
|
|
1022
|
-
**Workflow:**
|
|
1023
|
-
|
|
1024
|
-
1. Run verifyCommand (if configured in riverbank.config.ts)
|
|
1025
|
-
2. Check working directory is clean (git status)
|
|
1026
|
-
3. Generate prebuild cache (unless `--preview`)
|
|
1027
|
-
4. Commit cache changes (squashes consecutive unpushed commits)
|
|
1028
|
-
5. Push to remote
|
|
1029
|
-
|
|
1030
|
-
**Prerequisites:**
|
|
1031
|
-
|
|
1032
|
-
- Must be in a git repository with remote configured
|
|
1033
|
-
- `RIVERBANK_REMOTE_API_KEY` required for prebuild cache generation
|
|
1034
|
-
- Clean working directory (excluding prebuild output)
|
|
1035
|
-
|
|
1036
|
-
**Configuration (riverbank.config.ts):**
|
|
1037
|
-
|
|
1038
|
-
```typescript
|
|
1039
|
-
export default defineConfig({
|
|
1040
|
-
siteId: "...",
|
|
1041
|
-
deploy: {
|
|
1042
|
-
verifyCommand: "pnpm verify", // Command to run before deploy
|
|
1043
|
-
prebuildOutput: ".riverbank-cache", // Prebuild output directory
|
|
1044
|
-
},
|
|
1045
|
-
});
|
|
1046
|
-
```
|
|
1047
|
-
|
|
1048
|
-
**Notes:**
|
|
1049
|
-
|
|
1050
|
-
- CMS failure during prebuild continues with existing cache
|
|
1051
|
-
- Uses remote environment variables for API access
|
|
1052
|
-
- Verification failure stops the deploy
|
|
1053
|
-
|
|
1054
|
-
---
|
|
1055
|
-
|
|
1056
|
-
## Bulk Operations
|
|
1057
|
-
|
|
1058
|
-
Commands for bulk content operations.
|
|
1059
|
-
|
|
1060
|
-
### publish-all
|
|
1061
|
-
|
|
1062
|
-
Publish all entries of a specific content type.
|
|
1063
|
-
|
|
1064
|
-
```bash
|
|
1065
|
-
# Publish all blog posts (local)
|
|
1066
|
-
riverbankcms publish-all blog-post
|
|
1067
|
-
|
|
1068
|
-
# Publish to remote (requires --yes)
|
|
1069
|
-
riverbankcms publish-all blog-post --env=remote --yes
|
|
1070
|
-
|
|
1071
|
-
# Publish to both environments
|
|
1072
|
-
riverbankcms publish-all blog-post --env=both --yes
|
|
1073
|
-
|
|
1074
|
-
# Preview changes
|
|
1075
|
-
riverbankcms publish-all blog-post --dry-run
|
|
1076
|
-
|
|
1077
|
-
# JSON output for scripts
|
|
1078
|
-
riverbankcms publish-all blog-post --json
|
|
1079
|
-
```
|
|
1080
|
-
|
|
1081
|
-
**Arguments:**
|
|
1082
|
-
|
|
1083
|
-
- `<content-type>`: Content type to publish (e.g., `blog-post`, `product`)
|
|
1084
|
-
|
|
1085
|
-
**Options:**
|
|
1086
|
-
|
|
1087
|
-
| Option | Description |
|
|
1088
|
-
| ----------- | --------------------------------------------------------------- |
|
|
1089
|
-
| `--yes` | Confirm publishing (required for remote environments) |
|
|
1090
|
-
| `--dry-run` | Preview which entries would be published without making changes |
|
|
1091
|
-
|
|
1092
|
-
**Behavior:**
|
|
1093
|
-
|
|
1094
|
-
- Publishes entries that are in draft status or have unpublished changes
|
|
1095
|
-
- Skips entries that are already published with no pending changes
|
|
1096
|
-
- Continues on failure and reports all results at the end
|
|
1097
|
-
- Requires `--yes` flag for remote environments (safety measure)
|
|
1098
|
-
|
|
1099
|
-
**Exit codes:**
|
|
1100
|
-
|
|
1101
|
-
- `0`: All entries published successfully
|
|
1102
|
-
- `1`: Some entries failed to publish
|
|
1103
|
-
|
|
1104
|
-
---
|
|
1105
|
-
|
|
1106
|
-
## Drafts
|
|
1107
|
-
|
|
1108
|
-
### drafts
|
|
1109
|
-
|
|
1110
|
-
Cross-type overview of every page and entry with pending (unpublished) changes.
|
|
1111
|
-
|
|
1112
|
-
```bash
|
|
1113
|
-
riverbankcms drafts # Table of everything with pending changes
|
|
1114
|
-
riverbankcms drafts --json # One JSON envelope for agents
|
|
1115
|
-
riverbankcms drafts --env=remote # Drafts on the remote site
|
|
1116
|
-
```
|
|
1117
|
-
|
|
1118
|
-
This is the correct, server-filtered replacement for `entry list --status draft` (which filters only the returned page after pagination). The overview is enumerated fully server-side — a page or entry appears here if and only if it is a draft or carries unpublished changes — and the JSON `result` includes a `summary` with `pageCount` and `entryCount`.
|
|
1119
|
-
|
|
1120
|
-
---
|
|
1121
|
-
|
|
1122
|
-
## Content Type Commands
|
|
1123
|
-
|
|
1124
|
-
Commands for inspecting content types.
|
|
1125
|
-
|
|
1126
|
-
### content-type list
|
|
1127
|
-
|
|
1128
|
-
List content types on target site.
|
|
1129
|
-
|
|
1130
|
-
```bash
|
|
1131
|
-
# List content types on local site
|
|
1132
|
-
riverbankcms content-type list
|
|
1133
|
-
|
|
1134
|
-
# List content types on remote site
|
|
1135
|
-
riverbankcms content-type list --env=remote
|
|
1136
|
-
|
|
1137
|
-
# Output as JSON
|
|
1138
|
-
riverbankcms content-type list --json
|
|
1139
|
-
```
|
|
1140
|
-
|
|
1141
|
-
**Output columns:**
|
|
1142
|
-
|
|
1143
|
-
- **Key**: Content type key (e.g., `blog-post`)
|
|
1144
|
-
- **Name**: Display name
|
|
1145
|
-
- **Has Pages**: Whether entries have associated pages
|
|
1146
|
-
- **Singleton**: Whether it's a singleton content type
|
|
1147
|
-
- **Route Pattern**: URL pattern for entry pages
|
|
1148
|
-
|
|
1149
|
-
---
|
|
1150
|
-
|
|
1151
|
-
## Common Patterns
|
|
1152
|
-
|
|
1153
|
-
### Creating New Content
|
|
1154
|
-
|
|
1155
|
-
```bash
|
|
1156
|
-
# 1. Pull latest
|
|
1157
|
-
riverbankcms pull
|
|
1158
|
-
|
|
1159
|
-
# 2. Create entry
|
|
1160
|
-
riverbankcms entry upsert blog-post new-post --data '{"title": "New Post"}'
|
|
1161
|
-
|
|
1162
|
-
# 3. Create page
|
|
1163
|
-
riverbankcms page upsert new-page --title "New Page" --path /new-page
|
|
1164
|
-
|
|
1165
|
-
# 4. Add blocks
|
|
1166
|
-
riverbankcms block upsert new-page hero --kind block.hero --data '{"heading": "Welcome"}'
|
|
1167
|
-
riverbankcms block upsert new-page body --kind block.body-text --data '{"content": "<p>...</p>"}'
|
|
1168
|
-
|
|
1169
|
-
# 5. Preview
|
|
1170
|
-
riverbankcms preview block.hero --data '{"heading": "Welcome"}' --open
|
|
1171
|
-
|
|
1172
|
-
# 6. Publish
|
|
1173
|
-
riverbankcms page publish new-page
|
|
1174
|
-
```
|
|
1175
|
-
|
|
1176
|
-
### Updating Existing Content
|
|
1177
|
-
|
|
1178
|
-
```bash
|
|
1179
|
-
# 1. Pull latest
|
|
1180
|
-
riverbankcms pull
|
|
1181
|
-
|
|
1182
|
-
# 2. Edit local JSON files in ./content/
|
|
1183
|
-
# ... make changes ...
|
|
1184
|
-
|
|
1185
|
-
# 3. Preview changes
|
|
1186
|
-
riverbankcms push --dry-run
|
|
1187
|
-
|
|
1188
|
-
# 4. Push changes
|
|
1189
|
-
riverbankcms push
|
|
1190
|
-
```
|
|
1191
|
-
|
|
1192
|
-
### Human-Readable Diff
|
|
1193
|
-
|
|
1194
|
-
```bash
|
|
1195
|
-
# Preview push changes with field-level before/after values
|
|
1196
|
-
riverbankcms push --dry-run --diff
|
|
1197
|
-
|
|
1198
|
-
# Preview pull changes with field values
|
|
1199
|
-
riverbankcms pull --dry-run --diff
|
|
1200
|
-
|
|
1201
|
-
# Push without updating .meta/ files (useful for focused content edits)
|
|
1202
|
-
riverbankcms push --no-meta
|
|
1203
|
-
|
|
1204
|
-
# Pull content only, skip metadata (stale detection will be unreliable)
|
|
1205
|
-
riverbankcms pull --no-meta
|
|
1206
|
-
```
|
|
1207
|
-
|
|
1208
|
-
### Agent-Friendly JSON Output
|
|
1209
|
-
|
|
1210
|
-
```bash
|
|
1211
|
-
# Get entry list as JSON
|
|
1212
|
-
riverbankcms entry list blog-post --json
|
|
1213
|
-
|
|
1214
|
-
# Preview push diff as JSON
|
|
1215
|
-
riverbankcms push --dry-run --json --diff-detail=summary
|
|
1216
|
-
|
|
1217
|
-
# Get page with blocks as JSON
|
|
1218
|
-
riverbankcms page get home --json
|
|
1219
|
-
```
|
|
1220
|
-
|
|
1221
|
-
### Working with Production
|
|
1222
|
-
|
|
1223
|
-
```bash
|
|
1224
|
-
# Pull from production
|
|
1225
|
-
riverbankcms pull --env=remote
|
|
1226
|
-
|
|
1227
|
-
# Preview production push (dry-run is default for remote)
|
|
1228
|
-
riverbankcms push --env=remote
|
|
1229
|
-
|
|
1230
|
-
# Push to production (requires --yes)
|
|
1231
|
-
riverbankcms push --env=remote --yes
|
|
1232
|
-
|
|
1233
|
-
# Push to both local and remote
|
|
1234
|
-
riverbankcms push --env=both --yes
|
|
1235
|
-
|
|
1236
|
-
# Push to both and verify both targets are clean afterwards
|
|
1237
|
-
riverbankcms push --env=both --yes --verify-noop
|
|
1238
|
-
```
|